on master help sign in
paper updates
commit923e19a348851ae76855637ba86138694001e1dc authorEdwin Brady <eb@cs.st-andrews.ac.uk> dateMon 16 Apr 2012, 13:25 (15 years ago) parentf23f336
7 files changed+1082−1080
impl-paper/conclusions.tex+10−11 impl-paper/elaboration.tex−2 impl-paper/hll.tex+1−1 impl-paper/impldtp.tex+4−3 impl-paper/intro.tex+6−7 impl-paper/library.bib+1057−1045 impl-paper/typechecking.tex+4−11
impl-paper/conclusions.tex+10−11
@@ -1,11 +1,6 @@
1−\section{Discussion}
1+\section{Related Work}
22
3−\label{sect:discussion}
4−
5−%Discuss performance (anecdotally, how big is the library and how long to check,
6−%and relative to previous version).
7−
8−\subsection{Related Work}
3+\label{sect:related}
94
105Dependently typed programming languages have becoming more prominent in recent
116years as tools for verifying software correctness, and several experimental
@@ -50,7 +45,9 @@ implementation of extra machinery for constructor manipulation
5045%Elaboration is effectively a type checker for the high level language, so we have
5146%a hope of providing reasonable error messages related to the original code.]
5247
53−\subsection{Conclusion}
48+\section{Conclusion}
49+
50+\label{sect:conclusion}
5451
5552In this paper, I have given an overview of the programming language \Idris{},
5653and its core type theory \TT{}, giving a detailed algorithm for translating
@@ -95,8 +92,11 @@ since we have used a tactic-based EDSL to elaborate \Idris{} to \TT{}, it is
9592possible to expose the tactic language to the programmer. This opens up the
9693possibility of implementing domain specific decision procedures, or implementing
9794user defined tactics in a style similar to Coq's \texttt{Ltac} language \cite{Delahaye2000}.
95+Although \TT{} is primarily intended as a core language for \Idris{},
96+its rich type system also allows it to capture a number of high level languages, especially
97+when augmented with primitive operators.
9898
99−In this paper we have not discussed the performance of the elaboration
99+We have not discussed the performance of the elaboration
100100algorithm, or described how \Idris{} compiles to executable code. In practice,
101101we have found performance to be acceptable --- for example, the \Idris{}
102102library (25 files, 3532 lines of code in total at the time of writing)
@@ -110,11 +110,10 @@ functions handled using command-response interaction trees \cite{Hancock2000}.
110110The objective of this implementation of \Idris{} is to provide a platform
111111for experimenting with realistic, general purpose programming with dependent
112112types, by implementing a Haskell-like language augmented with \emph{full}
113−dependent types.
113+dependent types.
114114In this paper, we have seen how such a high level language can be implemented
115115by building on top of a small, well-understood, easy to reason about type
116116theory.
117−%\todo{What makes Idris general purpose?}
118117However, a programming language implementation is not an end in itself.
119118Programming languages exist to support research and practice in many different
120119domains. In future work, therefore, we plan to apply domain specific
impl-paper/elaboration.tex−2
@@ -1443,8 +1443,6 @@ it to the current context:
14431443
14441444\subsubsection{\texttt{case} expressions}
14451445
1446−\todo{Why not have case in \TT{}?}
1447−
14481446A \texttt{case} expression allows pattern matching on intermediate values. The difficulty
14491447in elaborating \texttt{case} expressions is that \TT{} allows matching only on
14501448\emph{top level} values. To elaborate a \texttt{case} expression, therefore,
impl-paper/hll.tex+1−1
@@ -281,7 +281,7 @@ need for a run-time bounds check. The type checker guarantees that the location
281281is no larger than the length of the vector.
282282
283283Note also that there is no case for \texttt{Nil} here. It would be impossible
284−to add such a case ---
284+to apply such a case ---
285285since there is no element of \texttt{Fin O}, and the location is a
286286\texttt{Fin n}, then \texttt{n} can not be \tDC{O}. As a result, attempting to
287287look up an element in an empty vector would give a compile time type error,
impl-paper/impldtp.tex+4−3
@@ -130,15 +130,16 @@ implementation of new high level language constructs.
130130
131131This work was funded by the Scottish Informatics and Computer Science
132132Alliance (SICSA) and by EU Framework 7 Project No. 248828 (ADVANCE).
133−My thanks to Kevin Hammond for his comments on an earlier draft of this paper.
133+My thanks to Kevin Hammond and Vilhelm Sj\"{o}berg for their comments
134+on an earlier draft of this paper.
134135
135136\bibliographystyle{jfp}
136137\bibliography{library.bib}
137138
138139\appendix
139140
140−\section{TODOs}
141−\listoftodos{}
141+%\section{TODOs}
142+%\listoftodos{}
142143
143144%\section{Elaboration meta-operations}
144145
impl-paper/intro.tex+6−7
@@ -48,16 +48,14 @@ of the underlying type theory.
4848
4949\subsection{Contributions}
5050
51−\todo{Who is this paper for?}
52−
5351A dependently typed programming language relies on several components, many of
5452which are now well understood. For example, we rely on a type checker for
5553the core type theory \cite{Chapman2005epigram,loh2010tutorial}, a
5654unification algorithm \cite{Miller1992} and an evaluator. However, it is less
5755well understood how to combine these components effectively into a practical
5856programming language.
59−\todo{Anecdotal evidence for this?}
60−Therefore, the primary contribution of this paper is
57+
58+The primary contribution of this paper is
6159an EDSL based method for translating programs in a
6260high level dependently typed programming language to a small core type theory,
6361\TT{}, based on UTT \cite{luo1994}. The paper describes the structure of the
@@ -79,7 +77,8 @@ for translating \Idris{} to \TT{}, beginning with a restricted language
7977\IdrisM{} before extending to higher level features; Section
8078\ref{sect:delab} describes the process for translating back to \Idris{}
8179and properties of the translation; finally,
82−Section \ref{sect:discussion} discusses related work and concludes.
80+Section \ref{sect:related} discusses related work and Section \ref{sect:conclusion}
81+concludes.
8382
8483\subsection{Typographical conventions}
8584
@@ -89,11 +88,11 @@ which \Idris{} is elaborated. We distinguish these languages typographically as
8988follows:
9089
9190\begin{itemize}
92−\item \Idris{} programs are written in \texttt{truetype}, as they are written
91+\item \Idris{} programs are written in \texttt{typewriter} font, as they are written
9392in a conventional text editor. We use \texttt{e$_i$} to stand for non-terminal
9493expressions.
9594\item \TT{} programs are written in mathematical notation, with names arising
96−from \Idris{} expressions written in \texttt{truetype}. We use vector notation
95+from \Idris{} expressions written in \texttt{typewriter} font. We use vector notation
9796$\te$ to stand for sequences of expressions.
9897\end{itemize}
9998
impl-paper/library.bib+1057−1045
@@ -1,40 +1,54 @@
11Automatically generated by Mendeley 1.3.1
22Any changes to this file will be lost if it is regenerated by Mendeley.
33
4−@inproceedings{gibbons2011modularising,
5−author = {Gibbons, J. and Ko, H.S. and Others},
6−file = {:Users/edwin/Documents/Mendeley Desktop/Ko, Gibbons/Proceedings of the seventh ACM SIGPLAN workshop on Generic programming/Ko, Gibbons - 2011 - Modularising inductive families.pdf:pdf},
7−title = {{Modularising inductive families}},
8−url = {http://www.cs.ox.ac.uk/publications/publication5008-abstract.html},
9−year = {2011}
10−}
11−@inproceedings{czarnecki2004dsl,
12−author = {Czarnecki, K. and O’Donnell, J. and Striegnitz, J. and Taha, W.},
13−booktitle = {Domain-Specific Program Generation},
14−file = {:Users/edwin/Documents/Mendeley Desktop/Czarnecki et al/Domain-Specific Program Generation/Czarnecki et al. - 2004 - DSL implementation in MetaOCaml, Template Haskell, and C.pdf:pdf},
15−pages = {51--72},
16−publisher = {Springer},
17−title = {{DSL implementation in MetaOCaml, Template Haskell, and C++}},
18−url = {http://www.springerlink.com/index/NL620EL7N94M161H.pdf},
19−year = {2004}
4+@book{Cryptography2012,
5+author = {Anderson, Ross},
6+doi = {10.1093/intimm/dxs023},
7+file = {:home/edwin/Research/Papers/Mendeley/Anderson/Anderson - Unknown - Security Engineering Chapter 5.pdf:pdf},
8+isbn = {9780470068526},
9+issn = {1460-2377},
10+number = {4},
11+pmid = {22451589},
12+title = {{Security Engineering Chapter 5}},
13+url = {http://www.ncbi.nlm.nih.gov/pubmed/22451589},
14+volume = {24}
2015}
21−@phdthesis{Brady2005,
22−author = {Brady, Edwin},
23−file = {:Users/edwin/Documents/Mendeley Desktop/Brady/Unknown/Brady - 2005 - Practical Implementation of a Dependently Typed Functional Programming Language.pdf:pdf},
16+@inproceedings{norell2009dependently,
17+author = {Norell, Ulf},
18+booktitle = {Advanced Functional Programming},
19+file = {:home/edwin/Research/Papers/Mendeley/Norell/Norell - 2009 - Dependently typed programming in Agda.pdf:pdf},
2420keywords = {Dependent Types},
2521mendeley-tags = {Dependent Types},
26−school = {University of Durham},
27−title = {{Practical Implementation of a Dependently Typed Functional Programming Language}},
28−url = {http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.150.8284&rep=rep1&type=pdf},
29−year = {2005}
22+pages = {230--266},
23+publisher = {Springer},
24+title = {{Dependently typed programming in Agda}},
25+url = {http://www.springerlink.com/index/8X0H38858233VN26.pdf},
26+year = {2009}
3027}
31−@inproceedings{Kimmell2012,
32−author = {Kimmell, G and Stump, A and {Eades III}, HD and Fu, Peng and Sheard, Tim and Weirich, S and Casinghino, C and Sj\"{o}berg, V and Collins, N and Ahn, KY},
33−booktitle = {Programming Languages meets Program Verification},
34−file = {:Users/edwin/Documents/Mendeley Desktop/Kimmell et al/Programming Languages meets Program Verification/Kimmell et al. - 2012 - Equational reasoning about programs with general recursion and call-by-value semantics.pdf:pdf},
35−title = {{Equational reasoning about programs with general recursion and call-by-value semantics}},
36−url = {http://dl.acm.org/citation.cfm?id=2103780},
37−year = {2012}
28+@article{Mandelbaum2007,
29+abstract = {Massive amounts of useful data are stored and processed in ad hoc formats for which common tools like parsers, printers, query engines and format converters are not readily available. In this paper, we explain the design and implementation of PADS/ML , a new language and system that facilitates the generation of data processing tools for ad hoc formats. The PADS/ML design includes features such as dependent, polymorphic and recursive datatypes, which allow programmers to describe the syntax and semantics of ad hoc data in a concise, easy-to-read notation. The PADS/ML implementation compiles these descriptions into ml structures and functors that include types for parsed data, functions for parsing and printing, and auxiliary support for user-specified, format-dependent and format-independent tool generation.},
30+author = {Mandelbaum, Yitzhak and Fisher, Kathleen and Walker, David and Fernandez, Mary and Gleyzer, Artem},
31+doi = {10.1145/1190215.1190231},
32+isbn = {1595935754},
33+issn = {03621340},
34+journal = {SIGPLAN Not},
35+number = {1},
36+pages = {77--83},
37+publisher = {ACM},
38+series = {POPL '07},
39+title = {{PADS/ML: a functional data description language}},
40+url = {http://doi.acm.org/10.1145/1190216.1190231},
41+volume = {42},
42+year = {2007}
43+}
44+@misc{Abadi1997,
45+author = {Abadi, Martin and Gordon, Andrew D},
46+booktitle = {4TH ACM CONFERENCE ON COMPUTER AND COMMUNICATIONS SECURITY},
47+file = {:home/edwin/Research/Papers/Mendeley/Abadi, Gordon/Abadi, Gordon - 1997 - A calculus for cryptographic protocols The spi calculus.pdf:pdf},
48+pages = {36 -- 47},
49+title = {{A calculus for cryptographic protocols: The spi calculus}},
50+url = {http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.49.2176},
51+year = {1997}
3852}
3953@article{Epstein2011,
4054author = {Epstein, Jeff and Black, Andrew P and Peyton-jones, Simon},
@@ -46,52 +60,12 @@ title = {{Haskell for the cloud}},
4660url = {http://research.microsoft.com/en-us/um/people/simonpj/papers/parallel/remote.pdf},
4761year = {2011}
4862}
49−@article{Altenkirch2010a,
50−abstract = {We begin by revisiting the idea of using a universe of types to write generic programs in a dependently typed setting by constructing a universe for Strictly Positive Types (SPTs). Here we extend this construction to cover dependent types, i.e. Strictly Positive Families (SPFs), thereby fixing a gap left open in previous work. Using the approach presented here we are able to represent all of Epigrams datatypes within Epigram including the universe of datatypes itself.},
51−author = {Altenkirch, Thorsten and Mcbride, Conor and Morris, Peter},
52−file = {:Users/edwin/Documents/Mendeley Desktop/Altenkirch, Mcbride, Morris/Citeseer/Altenkirch, Mcbride, Morris - 2010 - Generic Programming with Dependent Types.pdf:pdf},
53−journal = {Citeseer},
54−publisher = {Citeseer},
55−title = {{Generic Programming with Dependent Types}},
56−url = {http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.129.2926&amp;rep=rep1&amp;type=pdf},
57−year = {2010}
58−}
59−@article{fisher2006next,
60−author = {Fisher, K. and Mandelbaum, Y. and Walker, D.},
61−file = {:Users/edwin/Documents/Mendeley Desktop/Fisher, Mandelbaum, Walker/Journal of the ACM/Fisher, Mandelbaum, Walker - 2010 - The next 700 data description languages.pdf:pdf},
62−journal = {Journal of the ACM},
63−number = {2},
64−pages = {1--51},
65−publisher = {ACM},
66−title = {{The next 700 data description languages}},
67−url = {http://dl.acm.org/citation.cfm?id=1111039},
68−volume = {15},
69−year = {2010}
70−}
71−@misc{The2012b,
72−author = {Brooks, Fred},
73−doi = {10.1093/epirev/mxr031},
74−file = {:Users/edwin/Documents/Mendeley Desktop/Brooks/Unknown/Brooks - Unknown - The Design of Design Chapter 1.pdf:pdf},
75−isbn = {9780321702081},
76−issn = {1478-6729},
77−pmid = {22215642},
78−title = {{The Design of Design Chapter 1}}
79−}
80−@article{Chapman2005epigram,
81−author = {Chapman, James and Altenkirch, Thorsten and McBride, Conor},
82−file = {:Users/edwin/Documents/Mendeley Desktop/Chapman, Altenkirch, McBride/Trends in Functional Programming/Chapman, Altenkirch, McBride - 2005 - Epigram Reloaded A Standalone Typechecker for {ETT}.pdf:pdf},
83−journal = {Trends in Functional Programming},
84−publisher = {Intellect Books},
85−title = {{Epigram Reloaded: A Standalone Typechecker for {ETT}}},
86−url = {http://books.google.co.uk/books?hl=en&amp;lr=&amp;id=p0yV1sHLubcC&amp;oi=fnd&amp;pg=PA79&amp;dq=epigram+reloaded&amp;ots=x50ou0VMsm&amp;sig=7TjAGohIatNLTWsHcuNcK5hEGGY},
87−year = {2005}
88−}
89−@misc{TheMendeleySupportTeam2011,
63+@misc{TheMendeleySupportTeam2011a,
9064abstract = {A quick introduction to Mendeley. Learn how Mendeley creates your personal digital library, how to organize and annotate documents, how to collaborate and share with colleagues, and how to generate citations and bibliographies.},
9165address = {London},
9266author = {{The Mendeley Support Team}},
9367booktitle = {Mendeley Desktop},
94−file = {:Users/edwin/Documents/Mendeley Desktop/The Mendeley Support Team/Mendeley Desktop/The Mendeley Support Team - 2011 - Getting Started with Mendeley.pdf:pdf},
68+file = {:home/edwin/Research/Papers/Mendeley/The Mendeley Support Team/The Mendeley Support Team - 2011 - Getting Started with Mendeley.pdf:pdf},
9569keywords = {Mendeley,how-to,user manual},
9670pages = {1--16},
9771publisher = {Mendeley Ltd.},
@@ -99,102 +73,20 @@ title = {{Getting Started with Mendeley}},
9973url = {http://www.mendeley.com},
10074year = {2011}
10175}
102−@phdthesis{Okasaki1996,
103−author = {Okasaki, Chris},
104−file = {:Users/edwin/Documents/Mendeley Desktop/Okasaki/Unknown/Okasaki - 1996 - Purely Functional Data Structures.pdf:pdf},
105−school = {Carnegie Mellon University},
106−title = {{Purely Functional Data Structures}},
107−year = {1996}
108−}
109−@article{mcbride2008functional,
110−author = {McBride, C. and Paterson, R.},
111−file = {:Users/edwin/Documents/Mendeley Desktop/McBride, Paterson/Journal of functional programming/McBride, Paterson - 2008 - Functional pearl Applicative programming with effects.pdf:pdf},
112−journal = {Journal of functional programming},
113−number = {1},
114−pages = {1--13},
115−publisher = {Cambridge Univ Press},
116−title = {{Functional pearl: Applicative programming with effects}},
117−url = {http://journals.cambridge.org/production/action/cjoGetFulltext?fulltextid=1457860},
118−volume = {18},
119−year = {2008}
120−}
121−@inproceedings{madhavapeddy2007melange,
122−author = {Madhavapeddy, A. and Ho, A. and Deegan, T. and Scott, D. and Sohan, R.},
123−booktitle = {ACM SIGOPS Operating Systems Review},
124−file = {:Users/edwin/Documents/Mendeley Desktop/Madhavapeddy et al/ACM SIGOPS Operating Systems Review/Madhavapeddy et al. - 2007 - Melange creating a functional internet.pdf:pdf},
125−number = {3},
126−pages = {101--114},
127−publisher = {ACM},
128−title = {{Melange: creating a functional internet}},
129−url = {http://dl.acm.org/citation.cfm?id=1273009},
130−volume = {41},
131−year = {2007}
132−}
133−@inproceedings{lempsink2009type,
134−author = {Lempsink, E. and Leather, S. and L\"{o}h, A.},
135−booktitle = {Proceedings of the 2009 ACM SIGPLAN workshop on Generic programming},
136−file = {:Users/edwin/Documents/Mendeley Desktop/Lempsink, Leather, L\"{o}h/Proceedings of the 2009 ACM SIGPLAN workshop on Generic programming/Lempsink, Leather, L\"{o}h - 2009 - Type-safe diff for families of datatypes.pdf:pdf},
137−pages = {61--72},
138−publisher = {ACM},
139−title = {{Type-safe diff for families of datatypes}},
140−url = {http://dl.acm.org/citation.cfm?id=1596624},
141−year = {2009}
142−}
143−@book{Approach2012,
144−author = {Hunt, Andrew and Thomas, David},
145−booktitle = {Carcinogenesis},
146−doi = {10.1093/carcin/bgs054},
147−file = {:Users/edwin/Documents/Mendeley Desktop/Hunt, Thomas/Carcinogenesis/Hunt, Thomas - Unknown - The Pragmatic Programmer Chapter 2.pdf:pdf},
148−isbn = {020161622X},
149−issn = {1460-2180},
150−number = {3},
151−pmid = {22383472},
152−title = {{The Pragmatic Programmer Chapter 2}},
153−url = {http://www.ncbi.nlm.nih.gov/pubmed/22383472},
154−volume = {33}
155−}
156−@inproceedings{stump2010resource,
157−author = {Stump, A. and Austin, E.},
158−booktitle = {Proceedings of the 4th ACM SIGPLAN workshop on Programming languages meets program verification},
159−file = {:Users/edwin/Documents/Mendeley Desktop/Stump, Austin/Proceedings of the 4th ACM SIGPLAN workshop on Programming languages meets program verification/Stump, Austin - 2010 - Resource typing in Guru.pdf:pdf},
160−pages = {27--38},
161−publisher = {ACM},
162−title = {{Resource typing in Guru}},
163−url = {http://dl.acm.org/citation.cfm?id=1707796},
164−year = {2010}
165−}
166−@article{mcbride2010ornamental,
167−author = {McBride, Conor},
168−file = {:Users/edwin/Documents/Mendeley Desktop/McBride/Journal of Functional Programming/McBride - 2010 - Ornamental algebras, algebraic ornaments.pdf:pdf},
169−journal = {Journal of Functional Programming},
170−title = {{Ornamental algebras, algebraic ornaments}},
171−url = {http://personal.cis.strath.ac.uk/$\sim$conor/pub/OAAO/Ornament.pdf},
172−year = {2010}
173−}
174−@article{Swierstra2011,
175−author = {Swierstra, W},
176−file = {:Users/edwin/Documents/Mendeley Desktop/Swierstra/Journal of Functional Programming/Swierstra - 2011 - Sorted Verifying the Problem of the {Dutch National} Flag in {Agda}.pdf:pdf},
177−journal = {Journal of Functional Programming},
178−number = {6},
179−pages = {575----583},
180−title = {{Sorted: Verifying the Problem of the {Dutch National} Flag in {Agda}}},
181−url = {http://journals.cambridge.org/abstract_S0956796811000207},
182−volume = {21},
183−year = {2011}
184−}
185−@article{McBride2002,
186−author = {McBride, C},
187−file = {:Users/edwin/Documents/Mendeley Desktop/McBride/Types for proofs and programs ({TYPES 2000})/McBride - 2000 - Elimination with a Motive.pdf:pdf},
188−journal = {Types for proofs and programs ({TYPES 2000})},
189−title = {{Elimination with a Motive}},
190−url = {http://www.springerlink.com/index/vbpg19305t46f6dm.pdf},
191−year = {2000}
76+@article{Jones1999,
77+abstract = {Haskell benefits from a sophisticated type system, but implementors, programmers, and researchers suffer because it has no formal description. To remedy this shortcoming, we present a Haskell program that implements a Haskell typechecker, thus providing a mathematically rigorous specification in a notation that is familiar to Haskell users. We expect this program to fill a serious gap in current descriptions of Haskell, both as a starting point for discussions about existing features of the type system, and as a platform from which to explore new proposals.},
78+author = {Jones, Mark P},
79+journal = {October},
80+publisher = {Citeseer},
81+title = {{Typing Haskell in Haskell}},
82+url = {http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.134.7274&amp;rep=rep1&amp;type=pdf},
83+year = {1999}
19284}
19385@article{Xi1998,
19486abstract = {We present a type-based approach to eliminating array bound checking and list tag checking by conservatively extending Standard ML with a restricted form of dependent types. This enables the programmer to capture more invariants through types while type-checking remains decidable in theory and can still be performed efficiently in practice. We illustrate our approach through concrete examples and present the result of our preliminary experiments which support support the feasibility and effectiveness of our approach.},
19587author = {Xi, Hongwei and Pfenning, Frank},
19688doi = {10.1145/277652.277732},
197−file = {:Users/edwin/Documents/Mendeley Desktop/Xi, Pfenning/ACM Sigplan Notices/Xi, Pfenning - 1998 - Eliminating array bound checking through dependent types.pdf:pdf},
89+file = {:home/edwin/Research/Papers/Mendeley/Xi, Pfenning/Xi, Pfenning - 1998 - Eliminating array bound checking through dependent types.pdf:pdf},
19890isbn = {0897919874},
19991issn = {03621340},
20092journal = {ACM Sigplan Notices},
@@ -209,102 +101,250 @@ url = {http://portal.acm.org/citation.cfm?doid=277652.277732},
209101volume = {33},
210102year = {1998}
211103}
212−@misc{idristutorial,
213−author = {Brady, Edwin},
214−file = {:Users/edwin/Documents/Mendeley Desktop/Brady/Unknown/Brady - 2012 - Programming in Idris a tutorial.pdf:pdf},
215−title = {{Programming in Idris : a tutorial}},
216−url = {http://idris-lang.org/tutorial},
217−year = {2012}
218−}
219−@inproceedings{NanevskiAAMorrisett2008,
220−abstract = {We describe an axiomatic extension to the Coq proof assistant, that supports writing, reasoning about, and extracting higher-order, dependently-typed programs with side-effects. Coq already includes a powerful functional language that supports dependent types, but that language is limited to pure, total functions. The key contribution of our extension, which we call Ynot, is the added support for computations that may have effects such as non-termination, accessing a mutable store, and throwing/catching exceptions. The axioms of Ynot form a small trusted computing base which has been formally justified in our previous work on Hoare Type Theory (HTT). We show how these axioms can be combined with the powerful type and abstraction mechanisms of Coq to build higher-level reasoning mechanisms which in turn can be used to build realistic, verified software components. To substantiate this claim, we describe here a representative series of modules that implement imperative finite maps, including support for a higher-order (effectful) iterator. The implementations range from simple (e.g., association lists) to complex (e.g., hash tables) but share a common interface which, abstracts the implementation details and ensures that the modules properly implement the finite map abstraction. Copyright 2008 ACM.},
221−author = {{Nanevski A A Morrisett}, G B Shinnar A B Govereau P B Birkedal L C},
222−booktitle = {International Conference on Functional Programming},
223−doi = {10.1145/1411204.1411237},
224−file = {:Users/edwin/Documents/Mendeley Desktop/Nanevski A A Morrisett/International Conference on Functional Programming/Nanevski A A Morrisett - 2008 - Ynot Dependent types for imperative programs.pdf:pdf},
225−isbn = {9781595939197},
226−issn = {15232867},
227−keywords = {Dependent Types},
228−mendeley-tags = {Dependent Types},
229−number = {9},
230−pages = {229--240},
231−title = {{Ynot: Dependent types for imperative programs}},
232−url = {http://www.scopus.com/inward/record.url?eid=2-s2.0-67650032847&partnerID=40&md5=7a5be3083878399cebafda33b1affa6b},
233−volume = {43},
234−year = {2008}
235−}
236−@misc{Brady2012c,
237−author = {Brooks, Fred},
238−doi = {10.1093/epirev/mxr031},
239−file = {:Users/edwin/Documents/Mendeley Desktop/Brooks/Unknown/Brooks - Unknown - The Design of Design Chapter 5.pdf:pdf},
240−isbn = {9780321702081},
241−issn = {1478-6729},
242−number = {1},
243−pages = {NP},
244−pmid = {22215642},
245−title = {{The Design of Design Chapter 5}},
246−volume = {34}
247−}
248−@inproceedings{ko2011modularising,
249−author = {Ko, H.S. and Gibbons, J.},
250−booktitle = {Proceedings of the seventh ACM SIGPLAN workshop on Generic programming},
251−file = {:Users/edwin/Documents/Mendeley Desktop/Ko, Gibbons/Proceedings of the seventh ACM SIGPLAN workshop on Generic programming/Ko, Gibbons - 2011 - Modularising inductive families.pdf:pdf},
252−pages = {13--24},
253−publisher = {ACM},
254−title = {{Modularising inductive families}},
255−url = {http://www.cs.ox.ac.uk/publications/publication5008-abstract.html http://dl.acm.org/citation.cfm?id=2036921},
256−year = {2011}
257−}
258−@book{Choosing2012,
259−author = {Fowler, Martin},
104+@book{The2012,
105+author = {Hunt, Andrew and Thomas, David},
260106booktitle = {Carcinogenesis},
261107doi = {10.1093/carcin/bgs054},
262−file = {:Users/edwin/Documents/Mendeley Desktop/Fowler/Carcinogenesis/Fowler - Unknown - Domain Specific Languages Chapter 6.pdf:pdf},
263−isbn = {9780132107549},
108+file = {:home/edwin/Research/Papers/Mendeley/Hunt, Thomas/Hunt, Thomas - Unknown - The Pragmatic Programmer Chapter 3.pdf:pdf},
109+isbn = {020161622X},
264110issn = {1460-2180},
265111number = {3},
266112pmid = {22383472},
267−title = {{Domain Specific Languages Chapter 6}},
113+title = {{The Pragmatic Programmer Chapter 3}},
268114url = {http://www.ncbi.nlm.nih.gov/pubmed/22383472},
269115volume = {33}
270116}
271−@article{marlow2006making,
272−author = {Marlow, S. and {Peyton Jones}, S.},
273−file = {:Users/edwin/Documents/Mendeley Desktop/Marlow, Peyton Jones/Journal of Functional Programming/Marlow, Peyton Jones - 2006 - Making a fast curry pushenter vs. evalapply for higher-order languages.pdf:pdf},
274−journal = {Journal of Functional Programming},
275−number = {4-5},
276−pages = {415--449},
277−publisher = {Cambridge University Press},
278−title = {{Making a fast curry: push/enter vs. eval/apply for higher-order languages}},
279−url = {http://dl.acm.org/citation.cfm?id=1166018},
280−volume = {16},
281−year = {2006}
117+@article{danielsson2011parsing,
118+author = {Danielsson, N. and Norell, U.},
119+journal = {Implementation and Application of Functional Languages},
120+pages = {80--99},
121+publisher = {Springer},
122+title = {{Parsing mixfix operators}},
123+url = {http://www.springerlink.com/index/386243257W504252.pdf},
124+year = {2011}
282125}
283−@article{Mandelbaum2007,
284−abstract = {Massive amounts of useful data are stored and processed in ad hoc formats for which common tools like parsers, printers, query engines and format converters are not readily available. In this paper, we explain the design and implementation of PADS/ML , a new language and system that facilitates the generation of data processing tools for ad hoc formats. The PADS/ML design includes features such as dependent, polymorphic and recursive datatypes, which allow programmers to describe the syntax and semantics of ad hoc data in a concise, easy-to-read notation. The PADS/ML implementation compiles these descriptions into ml structures and functors that include types for parsed data, functions for parsing and printing, and auxiliary support for user-specified, format-dependent and format-independent tool generation.},
285−author = {Mandelbaum, Yitzhak and Fisher, Kathleen and Walker, David and Fernandez, Mary and Gleyzer, Artem},
286−doi = {10.1145/1190215.1190231},
287−isbn = {1595935754},
288−issn = {03621340},
289−journal = {SIGPLAN Not},
126+@misc{Bove2008,
127+abstract = {In these lecture notes we give an introduction to functional programming with dependent types. We use the dependently typed programming language Agda which is based on ideas in Martin-L\"{o}f type theory and Martin-L\"{o}fs logical framework. We begin by showing how to do simply typed functional programming, and discuss the differences between Agdas type system and the Hindley-Milner type system, which underlies mainstream typed functional programming languages like Haskell and ML. We then show how to employ dependent types for programming with functional data structures such as vectors and binary search trees. We go on to explain the Curry-Howard identification of propositions and types, and how it makes Agda not only a programming language but also a programming logic. According to Curry-Howard, we also identify programs and proofs, something which is possible only by requiring that all program terminate. However, we show in the final section a method for encoding general and possibly partial recursive functions as total functions using dependent types.},
128+author = {Bove, Ana and Dybjer, Peter},
129+booktitle = {Notes},
130+doi = {10.1007/978-3-642-03153-3_2},
131+file = {:home/edwin/Research/Papers/Mendeley/Bove, Dybjer/Bove, Dybjer - 2008 - Dependent Types at Work.pdf:pdf},
132+number = {February},
133+pages = {57--99},
134+publisher = {Springer},
135+title = {{Dependent Types at Work}},
136+url = {http://www.springerlink.com/index/1039q8qk71257677.pdf},
137+volume = {5520},
138+year = {2008}
139+}
140+@book{luo1994,
141+author = {Luo, Z.},
142+publisher = {Oxford University Press, Inc.},
143+title = {{Computation and reasoning: a type theory for computer science}},
144+url = {http://dl.acm.org/citation.cfm?id=SERIES9893.184757},
145+year = {1994}
146+}
147+@inproceedings{Delahaye2000,
148+author = {Delahaye, D},
149+booktitle = {Logic for Programming and Automated Reasoning},
150+file = {:home/edwin/Research/Papers/Mendeley/Delahaye/Delahaye - 2000 - A tactic language for the system Coq.pdf:pdf;:home/edwin/Research/Papers/Mendeley/Delahaye/Delahaye - 2000 - A tactic language for the system Coq(2).pdf:pdf},
151+pages = {85----95},
152+publisher = {Springer},
153+title = {{A tactic language for the system Coq}},
154+url = {http://www.springerlink.com/index/EFQAH8J88K42VN8T.pdf},
155+year = {2000}
156+}
157+@misc{idristutorial,
158+author = {Brady, Edwin},
159+file = {:home/edwin/Research/Papers/Mendeley/Brady/Brady - 2012 - Programming in Idris a tutorial.pdf:pdf},
160+title = {{Programming in Idris : a tutorial}},
161+url = {http://idris-lang.org/tutorial},
162+year = {2012}
163+}
164+@inproceedings{madhavapeddy2007melange,
165+author = {Madhavapeddy, A. and Ho, A. and Deegan, T. and Scott, D. and Sohan, R.},
166+booktitle = {ACM SIGOPS Operating Systems Review},
167+file = {:home/edwin/Research/Papers/Mendeley/Madhavapeddy et al/Madhavapeddy et al. - 2007 - Melange creating a functional internet.pdf:pdf},
168+number = {3},
169+pages = {101--114},
170+publisher = {ACM},
171+title = {{Melange: creating a functional internet}},
172+url = {http://dl.acm.org/citation.cfm?id=1273009},
173+volume = {41},
174+year = {2007}
175+}
176+@inproceedings{ko2011modularising,
177+author = {Ko, H.S. and Gibbons, J.},
178+booktitle = {Proceedings of the seventh ACM SIGPLAN workshop on Generic programming},
179+file = {:home/edwin/Research/Papers/Mendeley/Ko, Gibbons/Ko, Gibbons - 2011 - Modularising inductive families.pdf:pdf},
180+pages = {13--24},
181+publisher = {ACM},
182+title = {{Modularising inductive families}},
183+url = {http://www.cs.ox.ac.uk/publications/publication5008-abstract.html http://dl.acm.org/citation.cfm?id=2036921},
184+year = {2011}
185+}
186+@inproceedings{Augustsson1998,
187+abstract = {Cayenne is a Haskell-like language. The main difference between Haskell and Cayenne is that Cayenne has dependent types, i.e., the result type of a function may depend on the argument value , and types of record components (which can be types or values) may depend on other components. Cayenne also combines the syntactic categories for value expressions and type expressions; thus reducing the number of language concepts. Having dependent types and combined type and value expressions makes the language very powerful. It is powerful enough that a special module concept is unnecessary; ordinary records suffice. It is also powerful enough to encode predicate logic at the type level, allowing types to be used as specifications of programs. However, this power comes at a cost: type checking of Cayenne is undecidable. While this may appear to be a steep price to pay, it seems to work well in practice.},
188+author = {Augustsson, Lennart},
189+booktitle = {International Conference on Functional Programming},
190+doi = {10.1097/MEG.0b013e328342f213},
191+file = {:home/edwin/Research/Papers/Mendeley/Augustsson/Augustsson - 1998 - Cayenne - a language with dependent types.pdf:pdf},
192+issn = {14735687},
193+keywords = {Depe,Dependent Types},
194+mendeley-tags = {Depe,Dependent Types},
290195number = {1},
291−pages = {77--83},
196+pages = {239--250},
197+pmid = {21139473},
198+publisher = {ACM Press},
199+title = {{Cayenne - a language with dependent types}},
200+url = {http://www.cs.chalmers.se/$\sim$augustss/cayenne/paper.ps},
201+volume = {23},
202+year = {1998}
203+}
204+@inproceedings{Altenkirch2010,
205+abstract = {The recent success of languages like Agda and Coq demonstrates the potential of using dependent types for programming. These systems rely on many high-level features like datatype definitions, pattern matching and implicit arguments to facilitate the use of the languages. However, these features complicate the metatheoretical study and are a potential source of bugs. To address these issues we introduce $\Pi$$\Sigma$, a dependently typed core language. It is small enough for metatheoretical study and the type checker is small enough to be formally verified. In this language there is only one mechanism for recursionused for types, functions and infinite objectsand an explicit mechanism to control unfolding, based on lifted types. Furthermore structural equality is used consistently for values and types; this is achieved by a new notion of $\alpha$-equality for recursive definitions. We show, by translating several high-level constructions, that $\Pi$$\Sigma$ is suitable as a core language for dependently typed programming.},
206+author = {Altenkirch, Thorsten and Danielsson, Nils Anders and L\"{o}h, Andres and Oury, Nicolas},
207+booktitle = {{FLOPS 2010}},
208+doi = {10.1007/978-3-642-12251-4_5},
209+editor = {Blume, Matthias and Kobayashi, Naoki and Vidal, Germ\'{a}n},
210+file = {:home/edwin/Research/Papers/Mendeley/Altenkirch et al/Altenkirch et al. - 2010 - Dependent Types without the Sugar.pdf:pdf},
211+isbn = {9783642122507},
212+pages = {40----55},
213+publisher = {Springer Berlin Heidelberg},
214+series = {Lecture Notes in Computer Science},
215+title = {{Dependent Types without the Sugar}},
216+url = {http://www.springerlink.com/index/91W712G2806R575H.pdf},
217+year = {2010}
218+}
219+@inproceedings{brady2011epic,
220+author = {Brady, Edwin},
221+booktitle = {Trends in Functional Programming ({TFP}’11)},
222+file = {:home/edwin/Research/Papers/Mendeley/Brady/Brady - 2011 - Epic --- A Library for Generating Compilers.pdf:pdf},
223+title = {{Epic --- A Library for Generating Compilers}},
224+url = {http://scholar.google.co.uk/scholar?cites=2588300990390214449&as_sdt=2005&sciodt=0,5&hl=en#1},
225+year = {2011}
226+}
227+@book{Bertot2004,
228+author = {Bertot, Yves and Cast\'{e}ran, Pierre},
229+publisher = {Springer},
230+title = {{Interactive theorem proving and program development: {Coq'Art}: the {Calculus of Inductive Constructions}}},
231+url = {http://books.google.co.uk/books?hl=en&amp;lr=&amp;id=m5w5PRj5Nj4C&amp;oi=fnd&amp;pg=PA1&amp;dq=coq+theorem+prover&amp;ots=VHny1IYV0h&amp;sig=-K0FC67cdkhMDkAocFla8cZyRT4},
232+year = {2004}
233+}
234+@inproceedings{ko2011modularising,
235+author = {Ko, H.S. and Gibbons, J.},
236+booktitle = {Proceedings of the seventh ACM SIGPLAN workshop on Generic programming},
237+pages = {13--24},
292238publisher = {ACM},
293−series = {POPL '07},
294−title = {{PADS/ML: a functional data description language}},
295−url = {http://doi.acm.org/10.1145/1190216.1190231},
296−volume = {42},
239+title = {{Modularising inductive families}},
240+url = {http://dl.acm.org/citation.cfm?id=2036921},
241+year = {2011}
242+}
243+@misc{altenkirch2008nσ,
244+author = {Altenkirch, T. and Oury, N.},
245+file = {:home/edwin/Research/Papers/Mendeley/Altenkirch, Oury/Altenkirch, Oury - 2008 - $Pi$$Sigma$ A Core Language for Dependently Typed Programming.pdf:pdf},
246+title = {{$\Pi$$\Sigma$: A Core Language for Dependently Typed Programming}},
247+url = {http://verse.aasemoon.com/images/6/6f/PiSigma.pdf},
248+year = {2008}
249+}
250+@inproceedings{taha1997multi,
251+author = {Taha, W. and Sheard, T.},
252+booktitle = {ACM SIGPLAN Notices},
253+number = {12},
254+pages = {203--217},
255+publisher = {ACM},
256+title = {{Multi-stage programming with explicit annotations}},
257+url = {http://dl.acm.org/citation.cfm?id=259019},
258+volume = {32},
259+year = {1997}
260+}
261+@book{Hunt,
262+author = {Hunt, Andrew and Thomas, David},
263+booktitle = {Design},
264+file = {:home/edwin/Research/Papers/Mendeley/Hunt, Thomas/Hunt, Thomas - Unknown - The Pragmatic Programmer Chapter 4.pdf:pdf},
265+isbn = {020161622X},
266+title = {{The Pragmatic Programmer Chapter 4}}
267+}
268+@inproceedings{bradyresource,
269+author = {Brady, Edwin and Hammond, Kevin},
270+booktitle = {Practical Applications of Declarative Languages ({PADL} 2012)},
271+file = {:home/edwin/Research/Papers/Mendeley/Brady, Hammond/Brady, Hammond - 2012 - Resource-safe Systems Programming with Embedded Domain Specific Languages.pdf:pdf},
272+pages = {242----257},
273+title = {{Resource-safe Systems Programming with Embedded Domain Specific Languages}},
274+url = {http://www.cs.st-andrews.ac.uk/$\sim$eb/drafts/dsl-idris.pdf},
275+year = {2012}
276+}
277+@article{McBride2007,
278+author = {McBride, Conor and Paterson, Ross},
279+file = {:home/edwin/Research/Papers/Mendeley/McBride, Paterson/McBride, Paterson - 2007 - Applicative programming with effects.pdf:pdf},
280+journal = {Journal of functional programming},
281+title = {{Applicative programming with effects}},
282+url = {http://journals.cambridge.org/abstract_S0956796807006326},
297283year = {2007}
298284}
299−@article{Abel2010,
300−abstract = {Sized types are a modular and theoretically well-understood tool for checking termination of recursive and productivity of corecursive definitions. The essential idea is to track structural descent and guardedness in the type system to make termination checking robust and suitable for strong abstractions like higher-order functions and polymorphism. To study the application of sized types to proof assistants and programming languages based on dependent type theory, we have implemented a core language, MiniAgda, with explicit handling of sizes. New considerations were necessary to soundly integrate sized types with dependencies and pattern matching, which was made possible by concepts such as inaccessible patterns and parametric function spaces. This paper provides an introduction to MiniAgda by example and informal explanations of the underlying principles.},
301−author = {Abel, Andreas},
302−file = {:Users/edwin/Documents/Mendeley Desktop/Abel/EPTCS/Abel - 2010 - MiniAgda Integrating Sized and Dependent Types.pdf:pdf},
303−journal = {EPTCS},
304−pages = {1--15},
305−title = {{MiniAgda: Integrating Sized and Dependent Types}},
306−url = {http://arxiv.org/abs/1012.4896},
307−volume = {43},
285+@article{fisher2006next,
286+author = {Fisher, K. and Mandelbaum, Y. and Walker, D.},
287+file = {:home/edwin/Research/Papers/Mendeley/Fisher, Mandelbaum, Walker/Fisher, Mandelbaum, Walker - 2010 - The next 700 data description languages.pdf:pdf},
288+journal = {Journal of the ACM},
289+number = {2},
290+pages = {1--51},
291+publisher = {ACM},
292+title = {{The next 700 data description languages}},
293+url = {http://dl.acm.org/citation.cfm?id=1111039},
294+volume = {15},
295+year = {2010}
296+}
297+@book{Bird2010,
298+author = {Bird, Richard},
299+file = {:home/edwin/Research/Papers/Mendeley/Bird/Bird - 2010 - Pearls of Functional Algorithm Design.pdf:pdf},
300+isbn = {9780521513388},
301+title = {{Pearls of Functional Algorithm Design}},
302+year = {2010}
303+}
304+@inproceedings{stump2010resource,
305+author = {Stump, A. and Austin, E.},
306+booktitle = {Proceedings of the 4th ACM SIGPLAN workshop on Programming languages meets program verification},
307+file = {:home/edwin/Research/Papers/Mendeley/Stump, Austin/Stump, Austin - 2010 - Resource typing in Guru.pdf:pdf},
308+pages = {27--38},
309+publisher = {ACM},
310+title = {{Resource typing in Guru}},
311+url = {http://dl.acm.org/citation.cfm?id=1707796},
312+year = {2010}
313+}
314+@inproceedings{barras2008implicit,
315+author = {Barras, B. and Bernardo, B.},
316+booktitle = {Foundations of Software Science and Computational Structures},
317+file = {:home/edwin/Research/Papers/Mendeley/Barras, Bernardo/Barras, Bernardo - 2008 - The implicit calculus of constructions as a programming language with dependent types.pdf:pdf},
318+pages = {365--379},
319+publisher = {Springer},
320+title = {{The implicit calculus of constructions as a programming language with dependent types}},
321+url = {http://www.springerlink.com/index/m84h82904546l265.pdf},
322+year = {2008}
323+}
324+@article{Wadler2001,
325+abstract = {The use of monads to structure functional programs is described. Monads provide a convenient framework for simulating effects found in other languages, such as global state, exception handling, output, or non-determinism. Three case studies are looked at in detail: how monads ease the modification of a simple evaluator; how monads act as the basis of a datatype of arrays subject to in-place update; and how monads can be used to build parsers.},
326+author = {Wadler, Philip},
327+doi = {10.1007/3-540-59451-5_2},
328+editor = {Jeuring, Johan and Meijer, Erik},
329+file = {:home/edwin/Research/Papers/Mendeley/Wadler/Wadler - 2001 - Monads for functional programming.pdf:pdf},
330+isbn = {3540594515},
331+issn = {03029743},
332+journal = {Advanced Functional Programming},
333+number = {August 1992},
334+pages = {24--52},
335+publisher = {Springer},
336+series = {Lecture Notes in Computer Science},
337+title = {{Monads for functional programming}},
338+url = {http://www.springerlink.com/index/715264614rh13340.pdf},
339+volume = {925},
340+year = {2001}
341+}
342+@inproceedings{Fournet2011,
343+author = {Fournet, Cedric and Bhargavan, Karthikeyan and Gordon, Andrew D},
344+booktitle = {Foundations of security analysis and design {VI}},
345+file = {:home/edwin/Research/Papers/Mendeley/Fournet, Bhargavan, Gordon/Fournet, Bhargavan, Gordon - 2010 - Cryptographic verification by typing for a sample protocol implementation.pdf:pdf},
346+title = {{Cryptographic verification by typing for a sample protocol implementation}},
347+url = {http://www.springerlink.com/index/V168041M46658R73.pdf},
308348year = {2010}
309349}
310350@article{Hoare1978,
@@ -312,7 +352,7 @@ abstract = {This paper suggests that input and output are basic primitives of pr
312352author = {Hoare, C A R},
313353doi = {10.1016/0167-6423(87)90028-1},
314354editor = {McKeag, R M and Macnaghten, A M},
315−file = {:Users/edwin/Documents/Mendeley Desktop/Hoare/Communications of the ACM/Hoare - 1978 - Communicating sequential processes.pdf:pdf},
355+file = {:home/edwin/Research/Papers/Mendeley/Hoare/Hoare - 1978 - Communicating sequential processes.pdf:pdf},
316356isbn = {0131532715},
317357issn = {01676423},
318358journal = {Communications of the ACM},
@@ -326,17 +366,174 @@ url = {http://linkinghub.elsevier.com/retrieve/pii/0167642387900281},
326366volume = {21},
327367year = {1978}
328368}
329−@book{Bird2010,
330−author = {Bird, Richard},
331−file = {:Users/edwin/Documents/Mendeley Desktop/Bird/Unknown/Bird - 2010 - Pearls of Functional Algorithm Design.pdf:pdf},
332−isbn = {9780521513388},
333−title = {{Pearls of Functional Algorithm Design}},
334−year = {2010}
369+@book{While2012,
370+author = {Hunt, Andrew and Thomas, David},
371+booktitle = {Carcinogenesis},
372+doi = {10.1093/carcin/bgs054},
373+file = {:home/edwin/Research/Papers/Mendeley/Hunt, Thomas/Hunt, Thomas - Unknown - The Pragmatic Programmer Chapter 6.pdf:pdf},
374+isbn = {020161622X},
375+issn = {1460-2180},
376+number = {3},
377+pmid = {22383472},
378+title = {{The Pragmatic Programmer Chapter 6}},
379+url = {http://www.ncbi.nlm.nih.gov/pubmed/22383472},
380+volume = {33}
381+}
382+@inproceedings{Brady2010,
383+author = {Brady, Edwin and Hammond, Kevin},
384+booktitle = {Proceedings of the 15th ACM SIGPLAN international conference on Functional programming},
385+file = {:home/edwin/Research/Papers/Mendeley/Brady, Hammond/Brady, Hammond - 2010 - Scrapping your inefficient engine using partial evaluation to improve domain-specific language implementation.pdf:pdf},
386+isbn = {9781605587943},
387+keywords = {Dependent Types,code generation gives,contrast,dependent types,efficient,harder,however,implementation,likely efficient,ness interpreter,partial evaluation,resulting implementation,un,verify its correctness},
388+mendeley-tags = {Dependent Types},
389+pages = {297--308},
390+publisher = {ACM},
391+title = {{Scrapping your inefficient engine: using partial evaluation to improve domain-specific language implementation}},
392+url = {http://portal.acm.org/citation.cfm?id=1863587},
393+year = {2010}
394+}
395+@inproceedings{Visser2008,
396+author = {Visser, E},
397+booktitle = {Generative and Transformational Techniques in Software Engineering},
398+title = {{WebDSL: A case study in domain-specific language engineering}},
399+url = {http://www.springerlink.com/index/A3213003X6268032.pdf},
400+year = {2008}
401+}
402+@inproceedings{Brady2005a,
403+author = {Brady, E and Hammond, K},
404+booktitle = {Implementation and Application of Functional \ldots},
405+file = {:home/edwin/Research/Papers/Mendeley/Brady, Hammond/Brady, Hammond - 2005 - A dependently typed framework for static analysis of program execution costs.pdf:pdf},
406+keywords = {Dependent Types},
407+mendeley-tags = {Dependent Types},
408+title = {{A dependently typed framework for static analysis of program execution costs}},
409+url = {http://www.springerlink.com/index/P446P2HH70107759.pdf},
410+year = {2005}
411+}
412+@inproceedings{madhavapeddy2010turning,
413+author = {Madhavapeddy, A. and Mortier, R. and Sohan, R. and Gazagnaire, T. and Hand, S. and Deegan, T. and McAuley, D. and Crowcroft, J.},
414+booktitle = {Proceedings of the 2nd USENIX conference on Hot topics in cloud computing},
415+file = {:home/edwin/Research/Papers/Mendeley/Madhavapeddy et al/Madhavapeddy et al. - 2010 - Turning down the LAMP software specialisation for the cloud.pdf:pdf},
416+publisher = {USENIX Association},
417+title = {{Turning down the LAMP: software specialisation for the cloud}},
418+url = {http://dl.acm.org/citation.cfm?id=1863114},
419+year = {2010}
420+}
421+@inproceedings{bhargavan2010modular,
422+author = {Bhargavan, K. and Fournet, C. and Gordon, A.D.},
423+booktitle = {ACM Sigplan Notices},
424+number = {1},
425+pages = {445--456},
426+publisher = {ACM},
427+title = {{Modular verification of security protocol code by typing}},
428+url = {http://dl.acm.org/citation.cfm?id=1707801.1706350},
429+volume = {45},
430+year = {2010}
431+}
432+@article{Huet1997,
433+author = {Huet, G},
434+file = {:home/edwin/Research/Papers/Mendeley/Huet/Huet - 1997 - The zipper.pdf:pdf},
435+journal = {{Journal of Functional Programming}},
436+number = {5},
437+pages = {549----554},
438+title = {{The zipper}},
439+url = {http://journals.cambridge.org/abstract_S0956796897002864},
440+volume = {7},
441+year = {1997}
442+}
443+@book{Philosophy2012,
444+author = {Hunt, Andrew and Thomas, David},
445+booktitle = {Carcinogenesis},
446+doi = {10.1093/carcin/bgs054},
447+file = {:home/edwin/Research/Papers/Mendeley/Hunt, Thomas/Hunt, Thomas - Unknown - The Pragmatic Programmer Chapter 1.pdf:pdf},
448+isbn = {020161622X},
449+issn = {1460-2180},
450+number = {3},
451+pmid = {22383472},
452+title = {{The Pragmatic Programmer Chapter 1}},
453+url = {http://www.ncbi.nlm.nih.gov/pubmed/22383472},
454+volume = {33}
455+}
456+@inproceedings{coquand1986analysis,
457+author = {Coquand, T.},
458+booktitle = {{Proceedings of the First IEEE Symposium on Logic in Computer Science}},
459+file = {:home/edwin/Research/Papers/Mendeley/Coquand/Coquand - 1986 - An analysis of Girard's paradox.pdf:pdf},
460+pages = {227----246},
461+title = {{An analysis of Girard's paradox}},
462+url = {http://hal.inria.fr/docs/00/07/60/23/PDF/RR-0531.pdf},
463+year = {1986}
464+}
465+@inproceedings{Augustsson1985,
466+address = {Berlin, Heidelberg},
467+author = {Augustsson, Lennart},
468+booktitle = {Functional Programming Languages and Computer Architecture},
469+doi = {10.1007/3-540-15975-4},
470+editor = {Jouannaud, Jean-Pierre},
471+isbn = {978-3-540-15975-9},
472+keywords = {Computer Science},
473+pages = {368----381},
474+publisher = {Springer Berlin Heidelberg},
475+series = {Lecture Notes in Computer Science},
476+title = {{Compiling Pattern Matching}},
477+url = {http://www.springerlink.com/content/y647423656557505/},
478+volume = {201},
479+year = {1985}
480+}
481+@misc{Bloat,
482+author = {Brooks, Fred},
483+file = {:home/edwin/Research/Papers/Mendeley/Brooks/Brooks - Unknown - The Design of Design Chapter 4.pdf:pdf},
484+isbn = {9780321702081},
485+title = {{The Design of Design Chapter 4}}
486+}
487+@misc{Brady2012c,
488+author = {Brooks, Fred},
489+doi = {10.1093/epirev/mxr031},
490+file = {:home/edwin/Research/Papers/Mendeley/Brooks/Brooks - Unknown - The Design of Design Chapter 5.pdf:pdf},
491+isbn = {9780321702081},
492+issn = {1478-6729},
493+number = {1},
494+pages = {NP},
495+pmid = {22215642},
496+title = {{The Design of Design Chapter 5}},
497+volume = {34}
498+}
499+@book{Choosing2012,
500+author = {Fowler, Martin},
501+booktitle = {Carcinogenesis},
502+doi = {10.1093/carcin/bgs054},
503+file = {:home/edwin/Research/Papers/Mendeley/Fowler/Fowler - Unknown - Domain Specific Languages Chapter 6.pdf:pdf},
504+isbn = {9780132107549},
505+issn = {1460-2180},
506+number = {3},
507+pmid = {22383472},
508+title = {{Domain Specific Languages Chapter 6}},
509+url = {http://www.ncbi.nlm.nih.gov/pubmed/22383472},
510+volume = {33}
511+}
512+@article{mcbride2008functional,
513+author = {McBride, C. and Paterson, R.},
514+file = {:home/edwin/Research/Papers/Mendeley/McBride, Paterson/McBride, Paterson - 2008 - Functional pearl Applicative programming with effects.pdf:pdf},
515+journal = {Journal of functional programming},
516+number = {1},
517+pages = {1--13},
518+publisher = {Cambridge Univ Press},
519+title = {{Functional pearl: Applicative programming with effects}},
520+url = {http://journals.cambridge.org/production/action/cjoGetFulltext?fulltextid=1457860},
521+volume = {18},
522+year = {2008}
523+}
524+@inproceedings{pollack1990implicit,
525+author = {Pollack, R.},
526+booktitle = {{Informal Proceedings of First Workshop on Logical Frameworks, Antibes}},
527+file = {:home/edwin/Research/Papers/Mendeley/Pollack/Pollack - 1990 - Implicit syntax.pdf:pdf},
528+publisher = {Citeseer},
529+title = {{Implicit syntax}},
530+url = {http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.30.7361&amp;rep=rep1&amp;type=pdf},
531+year = {1990}
335532}
336533@inproceedings{oury2008power,
337534author = {Oury, N. and Swierstra, W.},
338535booktitle = {International Conference on Functional Programming},
339−file = {:Users/edwin/Documents/Mendeley Desktop/Oury, Swierstra/International Conference on Functional Programming/Oury, Swierstra - 2008 - The power of Pi.pdf:pdf},
536+file = {:home/edwin/Research/Papers/Mendeley/Oury, Swierstra/Oury, Swierstra - 2008 - The power of Pi.pdf:pdf},
340537keywords = {Dependent Types},
341538mendeley-tags = {Dependent Types},
342539number = {9},
@@ -347,196 +544,195 @@ url = {http://dl.acm.org/citation.cfm?id=1411213},
347544volume = {43},
348545year = {2008}
349546}
350−@inproceedings{madhavapeddy2010turning,
351−author = {Madhavapeddy, A. and Mortier, R. and Sohan, R. and Gazagnaire, T. and Hand, S. and Deegan, T. and McAuley, D. and Crowcroft, J.},
352−booktitle = {Proceedings of the 2nd USENIX conference on Hot topics in cloud computing},
353−file = {:Users/edwin/Documents/Mendeley Desktop/Madhavapeddy et al/Proceedings of the 2nd USENIX conference on Hot topics in cloud computing/Madhavapeddy et al. - 2010 - Turning down the LAMP software specialisation for the cloud.pdf:pdf},
354−publisher = {USENIX Association},
355−title = {{Turning down the LAMP: software specialisation for the cloud}},
356−url = {http://dl.acm.org/citation.cfm?id=1863114},
357−year = {2010}
547+@article{gordon2003authenticity,
548+author = {Gordon, A.D. and Jeffrey, A.},
549+file = {:home/edwin/Research/Papers/Mendeley/Gordon, Jeffrey/Gordon, Jeffrey - 2003 - Authenticity by typing for security protocols.pdf:pdf},
550+journal = {Journal of computer security},
551+number = {4},
552+pages = {451--520},
553+publisher = {IOS Press},
554+title = {{Authenticity by typing for security protocols}},
555+url = {http://iospress.metapress.com/index/BHQQUFRA1C7W8TLY.pdf},
556+volume = {11},
557+year = {2003}
358558}
359−@book{peyton1987implementation,
360−author = {{Peyton Jones}, S.L.},
361−publisher = {Prentice-Hall, Inc.},
362−title = {{The implementation of functional programming languages (prentice-hall international series in computer science)}},
363−url = {http://dl.acm.org/citation.cfm?id=1096899},
364−year = {1987}
559+@misc{pollack1997believe,
560+author = {Pollack, R.},
561+file = {:home/edwin/Research/Papers/Mendeley/Pollack/Pollack - 1997 - How to believe a machine-checked proof.pdf:pdf},
562+title = {{How to believe a machine-checked proof}},
563+url = {http://books.google.co.uk/books?hl=en&amp;lr=&amp;id=pLnKggT_In4C&amp;oi=fnd&amp;pg=PA205&amp;dq=how+to+believe+a+machine+checked+proof&amp;ots=c2OI8krqqA&amp;sig=EF3QonGFVdOpYdKO1KmW6ljCkjY},
564+year = {1997}
365565}
366−@inproceedings{Pasalic2002,
367−author = {Pa\v{s}alic, Emir and Taha, Walid and Sheard, Tim},
368−booktitle = {International Conference on Functional Programming},
369−doi = {10.1145/583852.581499},
370−file = {:Users/edwin/Documents/Mendeley Desktop/Pa\v{s}alic, Taha, Sheard/International Conference on Functional Programming/Pa\v{s}alic, Taha, Sheard - 2002 - Tagless staged interpreters for typed languages.pdf:pdf},
371−isbn = {1-58113-487-8},
372−issn = {03621340},
373−keywords = {calculus of constructions,definitional interpreters,domain-specific languages,multi-stage programming},
374−month = sep,
375−number = {9},
376−pages = {218--229},
377−title = {{Tagless staged interpreters for typed languages}},
378−url = {http://dl.acm.org/citation.cfm?id=583852.581499},
379−volume = {37},
380−year = {2002}
566+@misc{Attacks2012a,
567+author = {Anderson, Ross},
568+doi = {10.1093/epirev/mxr031},
569+file = {:home/edwin/Research/Papers/Mendeley/Anderson/Anderson - Unknown - Security Engineering Chapter 18.pdf:pdf},
570+isbn = {9780470068526},
571+issn = {1478-6729},
572+number = {1},
573+pages = {NP},
574+pmid = {22215642},
575+title = {{Security Engineering Chapter 18}},
576+volume = {34}
381577}
382−@inproceedings{Brady2010,
383−author = {Brady, Edwin and Hammond, Kevin},
384−booktitle = {Proceedings of the 15th ACM SIGPLAN international conference on Functional programming},
385−file = {:Users/edwin/Documents/Mendeley Desktop/Brady, Hammond/Proceedings of the 15th ACM SIGPLAN international conference on Functional programming/Brady, Hammond - 2010 - Scrapping your inefficient engine using partial evaluation to improve domain-specific language implementation.pdf:pdf},
386−isbn = {9781605587943},
387−keywords = {Dependent Types,code generation gives,contrast,dependent types,efficient,harder,however,implementation,likely efficient,ness interpreter,partial evaluation,resulting implementation,un,verify its correctness},
388−mendeley-tags = {Dependent Types},
389−pages = {297--308},
578+@inproceedings{atkey2009unembedding,
579+author = {Atkey, R. and Lindley, S. and Yallop, J.},
580+booktitle = {Proceedings of the 2nd ACM SIGPLAN symposium on Haskell},
581+pages = {37--48},
390582publisher = {ACM},
391−title = {{Scrapping your inefficient engine: using partial evaluation to improve domain-specific language implementation}},
392−url = {http://portal.acm.org/citation.cfm?id=1863587},
393−year = {2010}
583+title = {{Unembedding domain-specific languages}},
584+url = {http://dl.acm.org/citation.cfm?id=1596644},
585+year = {2009}
394586}
395−@inproceedings{Fournet2011,
396−author = {Fournet, Cedric and Bhargavan, Karthikeyan and Gordon, Andrew D},
397−booktitle = {Foundations of security analysis and design {VI}},
398−file = {:Users/edwin/Documents/Mendeley Desktop/Fournet, Bhargavan, Gordon/Foundations of security analysis and design {VI}/Fournet, Bhargavan, Gordon - 2010 - Cryptographic verification by typing for a sample protocol implementation.pdf:pdf},
399−title = {{Cryptographic verification by typing for a sample protocol implementation}},
400−url = {http://www.springerlink.com/index/V168041M46658R73.pdf},
587+@article{loh2010tutorial,
588+author = {L\"{o}h, A. and McBride, C. and Swierstra, W.},
589+file = {:home/edwin/Research/Papers/Mendeley/L\"{o}h, McBride, Swierstra/L\"{o}h, McBride, Swierstra - 2010 - A tutorial implementation of a dependently typed lambda calculus.pdf:pdf},
590+journal = {Fundamenta Informaticae},
591+number = {2},
592+pages = {177--207},
593+publisher = {IOS Press},
594+title = {{A tutorial implementation of a dependently typed lambda calculus}},
595+url = {http://iospress.metapress.com/index/976W4716TM79M6U8.pdf},
596+volume = {102},
401597year = {2010}
402598}
403−@article{landin1966next,
404−author = {Landin, P.J.},
405−file = {:Users/edwin/Documents/Mendeley Desktop/Landin/Communications of the ACM/Landin - 1966 - The next 700 programming languages.pdf:pdf},
406−journal = {Communications of the ACM},
407−number = {3},
408−pages = {157--166},
409−publisher = {ACM},
410−title = {{The next 700 programming languages}},
411−url = {http://dl.acm.org/citation.cfm?id=365257 )},
412−volume = {9},
413−year = {1966}
599+@inproceedings{czarnecki2004dsl,
600+author = {Czarnecki, K. and O’Donnell, J. and Striegnitz, J. and Taha, W.},
601+booktitle = {Domain-Specific Program Generation},
602+file = {:home/edwin/Research/Papers/Mendeley/Czarnecki et al/Czarnecki et al. - 2004 - DSL implementation in MetaOCaml, Template Haskell, and C.pdf:pdf},
603+pages = {51--72},
604+publisher = {Springer},
605+title = {{DSL implementation in MetaOCaml, Template Haskell, and C++}},
606+url = {http://www.springerlink.com/index/NL620EL7N94M161H.pdf},
607+year = {2004}
414608}
415−@inproceedings{bhargavan2010modular,
416−author = {Bhargavan, K. and Fournet, C. and Gordon, A.D.},
417−booktitle = {ACM Sigplan Notices},
418−number = {1},
419−pages = {445--456},
609+@inproceedings{NanevskiAAMorrisett2008,
610+abstract = {We describe an axiomatic extension to the Coq proof assistant, that supports writing, reasoning about, and extracting higher-order, dependently-typed programs with side-effects. Coq already includes a powerful functional language that supports dependent types, but that language is limited to pure, total functions. The key contribution of our extension, which we call Ynot, is the added support for computations that may have effects such as non-termination, accessing a mutable store, and throwing/catching exceptions. The axioms of Ynot form a small trusted computing base which has been formally justified in our previous work on Hoare Type Theory (HTT). We show how these axioms can be combined with the powerful type and abstraction mechanisms of Coq to build higher-level reasoning mechanisms which in turn can be used to build realistic, verified software components. To substantiate this claim, we describe here a representative series of modules that implement imperative finite maps, including support for a higher-order (effectful) iterator. The implementations range from simple (e.g., association lists) to complex (e.g., hash tables) but share a common interface which, abstracts the implementation details and ensures that the modules properly implement the finite map abstraction. Copyright 2008 ACM.},
611+author = {{Nanevski A A Morrisett}, G B Shinnar A B Govereau P B Birkedal L C},
612+booktitle = {International Conference on Functional Programming},
613+doi = {10.1145/1411204.1411237},
614+file = {:home/edwin/Research/Papers/Mendeley/Nanevski A A Morrisett/Nanevski A A Morrisett - 2008 - Ynot Dependent types for imperative programs.pdf:pdf},
615+isbn = {9781595939197},
616+issn = {15232867},
617+keywords = {Dependent Types},
618+mendeley-tags = {Dependent Types},
619+number = {9},
620+pages = {229--240},
621+title = {{Ynot: Dependent types for imperative programs}},
622+url = {http://www.scopus.com/inward/record.url?eid=2-s2.0-67650032847&partnerID=40&md5=7a5be3083878399cebafda33b1affa6b},
623+volume = {43},
624+year = {2008}
625+}
626+@inproceedings{fisher2005pads,
627+author = {Fisher, K. and Gruber, R.},
628+booktitle = {ACM SIGPLAN Notices},
629+number = {6},
630+pages = {295--304},
420631publisher = {ACM},
421−title = {{Modular verification of security protocol code by typing}},
422−url = {http://dl.acm.org/citation.cfm?id=1707801.1706350},
423−volume = {45},
424−year = {2010}
632+title = {{PADS: a domain-specific language for processing ad hoc data}},
633+url = {http://dl.acm.org/citation.cfm?id=1065046},
634+volume = {40},
635+year = {2005}
425636}
426−@article{Haskell2012a,
427−author = {Biancuzzi, F and Warden, S},
637+@inproceedings{McBride2004b,
638+author = {McBride, Conor and McKinna, James},
639+booktitle = {Haskell Workshop},
640+file = {:home/edwin/Research/Papers/Mendeley/McBride, McKinna/McBride, McKinna - 2004 - I am not a number I am a free variable.pdf:pdf},
641+title = {{I am not a number : I am a free variable}},
642+year = {2004}
643+}
644+@article{marlow2006making,
645+author = {Marlow, S. and {Peyton Jones}, S.},
646+file = {:home/edwin/Research/Papers/Mendeley/Marlow, Peyton Jones/Marlow, Peyton Jones - 2006 - Making a fast curry pushenter vs. evalapply for higher-order languages.pdf:pdf},
647+journal = {Journal of Functional Programming},
648+number = {4-5},
649+pages = {415--449},
650+publisher = {Cambridge University Press},
651+title = {{Making a fast curry: push/enter vs. eval/apply for higher-order languages}},
652+url = {http://dl.acm.org/citation.cfm?id=1166018},
653+volume = {16},
654+year = {2006}
655+}
656+@misc{Protocols2012a,
657+author = {Anderson, Ross},
428658doi = {10.1093/epirev/mxr031},
429−file = {:Users/edwin/Documents/Mendeley Desktop/Biancuzzi, Warden/Unknown/Biancuzzi, Warden - Unknown - Masterminds of Programming Chapter 8.pdf:pdf},
430−isbn = {9780596801670},
659+file = {:home/edwin/Research/Papers/Mendeley/Anderson/Anderson - Unknown - Security Engineering Chapter 3.pdf:pdf},
660+isbn = {9780470068526},
431661issn = {1478-6729},
432662pmid = {22215642},
433−title = {{Masterminds of Programming Chapter 8}}
434−}
435−@book{Brady2012,
436−author = {Hunt, Andrew and Thomas, David},
437−booktitle = {Carcinogenesis},
438−doi = {10.1093/carcin/bgs054},
439−file = {:Users/edwin/Documents/Mendeley Desktop/Hunt, Thomas/Carcinogenesis/Hunt, Thomas - Unknown - The Pragmatic Programmer Chapter 5.pdf:pdf},
440−isbn = {020161622X},
441−issn = {1460-2180},
442−number = {3},
443−pmid = {22383472},
444−title = {{The Pragmatic Programmer Chapter 5}},
445−url = {http://www.ncbi.nlm.nih.gov/pubmed/22383472},
446−volume = {33}
447−}
448−@article{McBride2007,
449−author = {McBride, Conor and Paterson, Ross},
450−file = {:Users/edwin/Documents/Mendeley Desktop/McBride, Paterson/Journal of functional programming/McBride, Paterson - 2007 - Applicative programming with effects.pdf:pdf},
451−journal = {Journal of functional programming},
452−title = {{Applicative programming with effects}},
453−url = {http://journals.cambridge.org/abstract_S0956796807006326},
454−year = {2007}
663+title = {{Security Engineering Chapter 3}}
455664}
456−@inproceedings{Altenkirch2010,
457−abstract = {The recent success of languages like Agda and Coq demonstrates the potential of using dependent types for programming. These systems rely on many high-level features like datatype definitions, pattern matching and implicit arguments to facilitate the use of the languages. However, these features complicate the metatheoretical study and are a potential source of bugs. To address these issues we introduce $\Pi$$\Sigma$, a dependently typed core language. It is small enough for metatheoretical study and the type checker is small enough to be formally verified. In this language there is only one mechanism for recursionused for types, functions and infinite objectsand an explicit mechanism to control unfolding, based on lifted types. Furthermore structural equality is used consistently for values and types; this is achieved by a new notion of $\alpha$-equality for recursive definitions. We show, by translating several high-level constructions, that $\Pi$$\Sigma$ is suitable as a core language for dependently typed programming.},
458−author = {Altenkirch, Thorsten and Danielsson, Nils Anders and L\"{o}h, Andres and Oury, Nicolas},
459−booktitle = {{FLOPS 2010}},
460−doi = {10.1007/978-3-642-12251-4_5},
461−editor = {Blume, Matthias and Kobayashi, Naoki and Vidal, Germ\'{a}n},
462−file = {:Users/edwin/Documents/Mendeley Desktop/Altenkirch et al/{FLOPS 2010}/Altenkirch et al. - 2010 - Dependent Types without the Sugar.pdf:pdf},
463−isbn = {9783642122507},
464−pages = {40----55},
465−publisher = {Springer Berlin Heidelberg},
466−series = {Lecture Notes in Computer Science},
467−title = {{Dependent Types without the Sugar}},
468−url = {http://www.springerlink.com/index/91W712G2806R575H.pdf},
469−year = {2010}
665+@inproceedings{McBride2006,
666+author = {McBride, C and Goguen, H and McKinna, J},
667+booktitle = {Types for Proofs and Programs {(TYPES 2006)}},
668+title = {{A few constructions on constructors}},
669+url = {http://www.springerlink.com/index/P4863U0M41396254.pdf},
670+year = {2006}
470671}
471−@article{McBride2005,
472−author = {McBride, Conor},
473−editor = {Vene, Varmo and Uustalu, Tarmo},
474−isbn = {3540285407},
475−journal = {Advanced Functional Programming},
476−keywords = {Dependent Types},
477−mendeley-tags = {Dependent Types},
478−pages = {130--170},
479−publisher = {Springer},
480−series = {Lecture Notes in Computer Science},
481−title = {{Epigram: Practical programming with dependent types}},
482−url = {http://www.springerlink.com/index/96j7v5vn8tyebeky.pdf},
483−volume = {3622},
484−year = {2005}
672+@article{McBride2002,
673+author = {McBride, C},
674+file = {:home/edwin/Research/Papers/Mendeley/McBride/McBride - 2000 - Elimination with a Motive.pdf:pdf},
675+journal = {Types for proofs and programs ({TYPES 2000})},
676+title = {{Elimination with a Motive}},
677+url = {http://www.springerlink.com/index/vbpg19305t46f6dm.pdf},
678+year = {2000}
485679}
486−@article{Huet1997,
487−author = {Huet, G},
488−file = {:Users/edwin/Documents/Mendeley Desktop/Huet/{Journal of Functional Programming}/Huet - 1997 - The zipper.pdf:pdf},
489−journal = {{Journal of Functional Programming}},
490−number = {5},
491−pages = {549----554},
492−title = {{The zipper}},
493−url = {http://journals.cambridge.org/abstract_S0956796897002864},
494−volume = {7},
495−year = {1997}
680+@inproceedings{Sculthorpe2009,
681+author = {Sculthorpe, Neil and Nilsson, Henrik},
682+booktitle = {International Conference on Functional Programming ({ICFP} '09)},
683+file = {:home/edwin/Research/Papers/Mendeley/Sculthorpe, Nilsson/Sculthorpe, Nilsson - 2009 - Safe functional reactive programming through dependent types.pdf:pdf;:home/edwin/Research/Papers/Mendeley/Sculthorpe, Nilsson/Sculthorpe, Nilsson - 2009 - Safe functional reactive programming through dependent types(2).pdf:pdf},
684+title = {{Safe functional reactive programming through dependent types}},
685+url = {http://dl.acm.org/citation.cfm?id=1596558},
686+year = {2009}
496687}
497−@misc{Bloat,
498−author = {Brooks, Fred},
499−file = {:Users/edwin/Documents/Mendeley Desktop/Brooks/Unknown/Brooks - Unknown - The Design of Design Chapter 4.pdf:pdf},
500−isbn = {9780321702081},
501−title = {{The Design of Design Chapter 4}}
688+@book{Fowler,
689+author = {Fowler, Martin},
690+booktitle = {Language},
691+file = {:home/edwin/Research/Papers/Mendeley/Fowler/Fowler - Unknown - Domain Specific Languages Chapter 2.pdf:pdf},
692+isbn = {9780132107549},
693+title = {{Domain Specific Languages Chapter 2}}
502694}
503−@misc{Protocols2012a,
504−author = {Anderson, Ross},
505−doi = {10.1093/epirev/mxr031},
506−file = {:Users/edwin/Documents/Mendeley Desktop/Anderson/Unknown/Anderson - Unknown - Security Engineering Chapter 3.pdf:pdf},
507−isbn = {9780470068526},
508−issn = {1478-6729},
509−pmid = {22215642},
510−title = {{Security Engineering Chapter 3}}
695+@inproceedings{Sheard2005,
696+address = {New York, New York, USA},
697+author = {Sheard, Tim},
698+booktitle = {Proceedings of the 2005 ACM SIGPLAN workshop on Haskell - Haskell '05},
699+doi = {10.1145/1088348.1088356},
700+file = {:home/edwin/Research/Papers/Mendeley/Sheard/Sheard - 2005 - Putting curry-howard to work.pdf:pdf},
701+isbn = {159593071X},
702+keywords = {GADT,curry-howard isomorphism,extensional kind system,haskell,logic},
703+month = sep,
704+pages = {74--85},
705+publisher = {ACM Press},
706+title = {{Putting curry-howard to work}},
707+url = {http://dl.acm.org/citation.cfm?id=1088348.1088356},
708+year = {2005}
511709}
512−@inproceedings{Augustsson1998,
513−abstract = {Cayenne is a Haskell-like language. The main difference between Haskell and Cayenne is that Cayenne has dependent types, i.e., the result type of a function may depend on the argument value , and types of record components (which can be types or values) may depend on other components. Cayenne also combines the syntactic categories for value expressions and type expressions; thus reducing the number of language concepts. Having dependent types and combined type and value expressions makes the language very powerful. It is powerful enough that a special module concept is unnecessary; ordinary records suffice. It is also powerful enough to encode predicate logic at the type level, allowing types to be used as specifications of programs. However, this power comes at a cost: type checking of Cayenne is undecidable. While this may appear to be a steep price to pay, it seems to work well in practice.},
514−author = {Augustsson, Lennart},
515−booktitle = {International Conference on Functional Programming},
516−doi = {10.1097/MEG.0b013e328342f213},
517−file = {:Users/edwin/Documents/Mendeley Desktop/Augustsson/International Conference on Functional Programming/Augustsson - 1998 - Cayenne - a language with dependent types.pdf:pdf},
518−issn = {14735687},
519−keywords = {Depe,Dependent Types},
520−mendeley-tags = {Depe,Dependent Types},
710+@article{Jones2003,
711+abstract = {Haskell is the world's leading lazy functional programming language and is widely used in teaching, research, and applications. The language continues to develop rapidly, but in 1998 the programming community decided to capture a stable snapshot of the language by introducing Haskell 98. This book constitutes the agreed definition of Haskell 98, the language itself as well as its supporting libraries, and should be a standard reference work for anyone involved in research, teaching, or applications. All Haskell compilers support Haskell 98, so professioanls and educators have a stable base for their work.},
712+author = {Jones, Simon Peyton},
713+editor = {Jones, Simon Peyton},
714+isbn = {0521826144},
715+journal = {Language},
521716number = {1},
522−pages = {239--250},
523−pmid = {21139473},
524−publisher = {ACM Press},
525−title = {{Cayenne - a language with dependent types}},
526−url = {http://www.cs.chalmers.se/$\sim$augustss/cayenne/paper.ps},
527−volume = {23},
528−year = {1998}
717+publisher = {Cambridge University Press},
718+title = {{Haskell 98 Language and Libraries The Revised Report}},
719+url = {http://www.amazon.ca/exec/obidos/redirect?tag=citeulike09-20&amp;path=ASIN/0521826144},
720+volume = {13},
721+year = {2003}
529722}
530−@book{Hunt,
531−author = {Hunt, Andrew and Thomas, David},
532−booktitle = {Design},
533−file = {:Users/edwin/Documents/Mendeley Desktop/Hunt, Thomas/Design/Hunt, Thomas - Unknown - The Pragmatic Programmer Chapter 4.pdf:pdf},
534−isbn = {020161622X},
535−title = {{The Pragmatic Programmer Chapter 4}}
723+@article{Brady2006a,
724+author = {Brady, E and Hammond, K},
725+file = {:home/edwin/Research/Papers/Mendeley/Brady, Hammond/Brady, Hammond - 2006 - A verified staged interpreter is a verified compiler.pdf:pdf},
726+journal = {\ldots of the 5th international conference on \ldots},
727+keywords = {Dependent Types},
728+mendeley-tags = {Dependent Types},
729+title = {{A verified staged interpreter is a verified compiler}},
730+url = {http://portal.acm.org/citation.cfm?id=1173706.1173724},
731+year = {2006}
536732}
537733@article{burrows1990,
538734author = {Burrows, Michael and Abadi, Martin and Needham, Roger},
539−file = {:Users/edwin/Documents/Mendeley Desktop/Burrows, Abadi, Needham/ACM Transactions on Computer Systems/Burrows, Abadi, Needham - 1990 - A logic of authentication.pdf:pdf},
735+file = {:home/edwin/Research/Papers/Mendeley/Burrows, Abadi, Needham/Burrows, Abadi, Needham - 1990 - A logic of authentication.pdf:pdf},
540736journal = {ACM Transactions on Computer Systems},
541737pages = {18----36},
542738title = {{A logic of authentication}},
@@ -544,113 +740,98 @@ url = {http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.115.3569},
544740volume = {8},
545741year = {1990}
546742}
547−@inproceedings{atkey2009unembedding,
548−author = {Atkey, R. and Lindley, S. and Yallop, J.},
549−booktitle = {Proceedings of the 2nd ACM SIGPLAN symposium on Haskell},
550−pages = {37--48},
551−publisher = {ACM},
552−title = {{Unembedding domain-specific languages}},
553−url = {http://dl.acm.org/citation.cfm?id=1596644},
554−year = {2009}
555−}
556−@inproceedings{Brady2011a,
557−address = {New York, New York, USA},
558−author = {Brady, Edwin},
559−booktitle = {Proceedings of the 5th {ACM} workshop on Programming languages meets program verification - {PLPV} '11},
560−doi = {10.1145/1929529.1929536},
561−file = {:Users/edwin/Documents/Mendeley Desktop/Brady/Proceedings of the 5th {ACM} workshop on Programming languages meets program verification - {PLPV} '11/Brady - 2011 - Idris --- Systems Programming Meets Full Dependent Types.pdf:pdf},
562−isbn = {9781450304870},
563−keywords = {Dependent Types,data description,dependent types},
743+@phdthesis{McBride1999,
744+author = {McBride, Conor},
745+file = {:home/edwin/Research/Papers/Mendeley/McBride/McBride - 1999 - Dependently typed functional programs and their proofs.pdf:pdf},
746+keywords = {Dependent Types},
564747mendeley-tags = {Dependent Types},
565−month = jan,
566−publisher = {ACM Press},
567−title = {{Idris --- Systems Programming Meets Full Dependent Types}},
568−url = {http://dl.acm.org/citation.cfm?id=1929529.1929536},
569−year = {2011}
570−}
571−@book{An2012,
572−author = {Fowler, Martin},
573−booktitle = {Carcinogenesis},
574−doi = {10.1093/carcin/bgs054},
575−file = {:Users/edwin/Documents/Mendeley Desktop/Fowler/Carcinogenesis/Fowler - Unknown - Domain Specific Languages Chapter 1.pdf:pdf},
576−isbn = {9780132107549},
577−issn = {1460-2180},
578−number = {3},
579−pmid = {22383472},
580−title = {{Domain Specific Languages Chapter 1}},
581−url = {http://www.ncbi.nlm.nih.gov/pubmed/22383472},
582−volume = {33}
583−}
584−@inproceedings{coquand1986analysis,
585−author = {Coquand, T.},
586−booktitle = {{Proceedings of the First IEEE Symposium on Logic in Computer Science}},
587−file = {:Users/edwin/Documents/Mendeley Desktop/Coquand/{Proceedings of the First IEEE Symposium on Logic in Computer Science}/Coquand - 1986 - An analysis of Girard's paradox.pdf:pdf},
588−pages = {227----246},
589−title = {{An analysis of Girard's paradox}},
590−url = {http://hal.inria.fr/docs/00/07/60/23/PDF/RR-0531.pdf},
591−year = {1986}
592−}
593−@misc{altenkirch2008nσ,
594−author = {Altenkirch, T. and Oury, N.},
595−file = {:Users/edwin/Documents/Mendeley Desktop/Altenkirch, Oury/Unknown/Altenkirch, Oury - 2008 - $Pi$$Sigma$ A Core Language for Dependently Typed Programming.pdf:pdf},
596−title = {{$\Pi$$\Sigma$: A Core Language for Dependently Typed Programming}},
597−url = {http://verse.aasemoon.com/images/6/6f/PiSigma.pdf},
598−year = {2008}
599−}
600−@inproceedings{barras2008implicit,
601−author = {Barras, B. and Bernardo, B.},
602−booktitle = {Foundations of Software Science and Computational Structures},
603−file = {:Users/edwin/Documents/Mendeley Desktop/Barras, Bernardo/Foundations of Software Science and Computational Structures/Barras, Bernardo - 2008 - The implicit calculus of constructions as a programming language with dependent types.pdf:pdf},
604−pages = {365--379},
605−publisher = {Springer},
606−title = {{The implicit calculus of constructions as a programming language with dependent types}},
607−url = {http://www.springerlink.com/index/m84h82904546l265.pdf},
608−year = {2008}
748+school = {University of Edinburgh},
749+title = {{Dependently typed functional programs and their proofs}},
750+url = {http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.26.4785&rep=rep1&type=pdf},
751+year = {1999}
609752}
610−@book{While2012,
611−author = {Hunt, Andrew and Thomas, David},
612−booktitle = {Carcinogenesis},
613−doi = {10.1093/carcin/bgs054},
614−file = {:Users/edwin/Documents/Mendeley Desktop/Hunt, Thomas/Carcinogenesis/Hunt, Thomas - Unknown - The Pragmatic Programmer Chapter 6.pdf:pdf},
615−isbn = {020161622X},
616−issn = {1460-2180},
617−number = {3},
618−pmid = {22383472},
619−title = {{The Pragmatic Programmer Chapter 6}},
620−url = {http://www.ncbi.nlm.nih.gov/pubmed/22383472},
621−volume = {33}
753+@article{mcbride2010ornamental,
754+author = {McBride, Conor},
755+file = {:home/edwin/Research/Papers/Mendeley/McBride/McBride - 2010 - Ornamental algebras, algebraic ornaments.pdf:pdf},
756+journal = {Journal of Functional Programming},
757+title = {{Ornamental algebras, algebraic ornaments}},
758+url = {http://personal.cis.strath.ac.uk/$\sim$conor/pub/OAAO/Ornament.pdf},
759+year = {2010}
622760}
623−@inproceedings{bradyresource,
624−author = {Brady, Edwin and Hammond, Kevin},
625−booktitle = {Practical Applications of Declarative Languages ({PADL} 2012)},
626−file = {:Users/edwin/Documents/Mendeley Desktop/Brady, Hammond/Practical Applications of Declarative Languages ({PADL} 2012)/Brady, Hammond - 2012 - Resource-safe Systems Programming with Embedded Domain Specific Languages.pdf:pdf},
627−pages = {242----257},
628−title = {{Resource-safe Systems Programming with Embedded Domain Specific Languages}},
629−url = {http://www.cs.st-andrews.ac.uk/$\sim$eb/drafts/dsl-idris.pdf},
630−year = {2012}
761+@article{Chapman2005epigram,
762+author = {Chapman, James and Altenkirch, Thorsten and McBride, Conor},
763+file = {:home/edwin/Research/Papers/Mendeley/Chapman, Altenkirch, McBride/Chapman, Altenkirch, McBride - 2005 - Epigram Reloaded A Standalone Typechecker for {ETT}.pdf:pdf},
764+journal = {Trends in Functional Programming},
765+publisher = {Intellect Books},
766+title = {{Epigram Reloaded: A Standalone Typechecker for {ETT}}},
767+url = {http://books.google.co.uk/books?hl=en&amp;lr=&amp;id=p0yV1sHLubcC&amp;oi=fnd&amp;pg=PA79&amp;dq=epigram+reloaded&amp;ots=x50ou0VMsm&amp;sig=7TjAGohIatNLTWsHcuNcK5hEGGY},
768+year = {2005}
631769}
632−@book{luo1994,
633−author = {Luo, Z.},
634−publisher = {Oxford University Press, Inc.},
635−title = {{Computation and reasoning: a type theory for computer science}},
636−url = {http://dl.acm.org/citation.cfm?id=SERIES9893.184757},
637−year = {1994}
770+@inproceedings{Levitation2010,
771+author = {Chapman, James and Dagand, Pierre-Evariste and McBride, Conor and Morris, Peter},
772+booktitle = {{15th ACM SIGPLAN International Conference on Functional programming (ICFP '10)}},
773+doi = {10.1145/1932681.1863547},
774+file = {:home/edwin/Research/Papers/Mendeley/Chapman et al/Chapman et al. - 2010 - The gentle art of levitation.pdf:pdf},
775+isbn = {978-1-60558-794-3},
776+issn = {03621340},
777+keywords = {Dependent Types,data structure,metaprogramming,monads,proof assistants,type systems},
778+mendeley-tags = {Dependent Types},
779+month = sep,
780+number = {9},
781+title = {{The gentle art of levitation}},
782+url = {http://dl.acm.org/citation.cfm?id=1932681.1863547},
783+volume = {45},
784+year = {2010}
638785}
639−@phdthesis{norell2007thesis,
640−author = {Norell, Ulf},
641−file = {:Users/edwin/Documents/Mendeley Desktop/Norell/Unknown/Norell - 2007 - Towards a practical programming language based on dependent type theory.pdf:pdf},
786+@article{McBride2004a,
787+abstract = {ABSTRACT Pattern matching has proved an extremely powerful and durable notion in functional programming. This paper contributes a new programming notation for type theory which elaborates the notion in various ways. First, as is by now quite well-known in the type theory community, definition by pattern matching becomes a more discriminating tool in the presence of dependent types, since it refines the explanation of types as well as values. This becomes all the more true in the presence of the rich class of datatypes known as inductive families (Dybjer, 1991). Secondly, as proposed by Peyton Jones (1997) for Haskell, and independently rediscovered by us, subsidiary case analyses on the results of intermediate computations, which commonly take place on the right-hand side of definitions by pattern matching, should rather be handled on the left. In simply-typed languages, this subsumes the trivial case of Boolean guards; in our setting it becomes yet more powerful. Thirdly, elementary pattern matching decompositions have a well-defined interface given by a dependent type; they correspond to the statement of an induction principle for the datatype. More general, user-definable decompositions may be defined which also have types of the same general form. Elementary pattern matching may therefore be recast in abstract form, with a semantics given by translation. Such abstract decompositions of data generalize Wadler&apos;s (1987) notion of &lsquo;view&rsquo;. The programmer wishing to introduce a new view of a type mathitT, and exploit it directly in pattern matching, may do so via a standard programming idiom. The type theorist, looking through the Curry&ndash;Howard lens, may see this as proving a theorem, one which establishes the validity of a new induction principle for mathitT. We develop enough syntax and semantics to account for this high-level style of programming in dependent type theory. We close with the development of a typechecker for the simply-typed lambda calculus, which furnishes a view of raw terms as either being well-typed, or containing an error. The implementation of this view is ipso facto a proof that typechecking is decidable.},
788+author = {McBride, Conor and McKinna, James},
789+doi = {10.1017/S0956796803004829},
790+file = {:home/edwin/Research/Papers/Mendeley/McBride, McKinna/McBride, McKinna - 2004 - The view from the left.pdf:pdf},
791+issn = {09567968},
792+journal = {Journal of Functional Programming},
642793keywords = {Dependent Types},
643794mendeley-tags = {Dependent Types},
795+number = {1},
796+pages = {69--111},
797+publisher = {Cambridge University Press},
798+title = {{The view from the left}},
799+url = {http://www.journals.cambridge.org/abstract_S0956796803004829},
800+volume = {14},
801+year = {2004}
802+}
803+@article{Altenkirch2010a,
804+abstract = {We begin by revisiting the idea of using a universe of types to write generic programs in a dependently typed setting by constructing a universe for Strictly Positive Types (SPTs). Here we extend this construction to cover dependent types, i.e. Strictly Positive Families (SPFs), thereby fixing a gap left open in previous work. Using the approach presented here we are able to represent all of Epigrams datatypes within Epigram including the universe of datatypes itself.},
805+author = {Altenkirch, Thorsten and Mcbride, Conor and Morris, Peter},
806+file = {:home/edwin/Research/Papers/Mendeley/Altenkirch, Mcbride, Morris/Altenkirch, Mcbride, Morris - 2010 - Generic Programming with Dependent Types.pdf:pdf},
807+journal = {Citeseer},
644808publisher = {Citeseer},
645−school = {Chalmers University of Technology},
646−title = {{Towards a practical programming language based on dependent type theory}},
647−url = {http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.65.7934&amp;rep=rep1&amp;type=pdf},
648−year = {2007}
809+title = {{Generic Programming with Dependent Types}},
810+url = {http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.129.2926&amp;rep=rep1&amp;type=pdf},
811+year = {2010}
812+}
813+@phdthesis{Okasaki1996,
814+author = {Okasaki, Chris},
815+file = {:home/edwin/Research/Papers/Mendeley/Okasaki/Okasaki - 1996 - Purely Functional Data Structures.pdf:pdf},
816+school = {Carnegie Mellon University},
817+title = {{Purely Functional Data Structures}},
818+year = {1996}
819+}
820+@article{Abel2010,
821+abstract = {Sized types are a modular and theoretically well-understood tool for checking termination of recursive and productivity of corecursive definitions. The essential idea is to track structural descent and guardedness in the type system to make termination checking robust and suitable for strong abstractions like higher-order functions and polymorphism. To study the application of sized types to proof assistants and programming languages based on dependent type theory, we have implemented a core language, MiniAgda, with explicit handling of sizes. New considerations were necessary to soundly integrate sized types with dependencies and pattern matching, which was made possible by concepts such as inaccessible patterns and parametric function spaces. This paper provides an introduction to MiniAgda by example and informal explanations of the underlying principles.},
822+author = {Abel, Andreas},
823+file = {:home/edwin/Research/Papers/Mendeley/Abel/Abel - 2010 - MiniAgda Integrating Sized and Dependent Types.pdf:pdf},
824+journal = {EPTCS},
825+pages = {1--15},
826+title = {{MiniAgda: Integrating Sized and Dependent Types}},
827+url = {http://arxiv.org/abs/1012.4896},
828+volume = {43},
829+year = {2010}
649830}
650831@inproceedings{Brady2006b,
651832author = {Brady, Edwin},
652833booktitle = {Implementation and Application of Functional Languages ({IFL}'06)},
653−file = {:Users/edwin/Documents/Mendeley Desktop/Brady/Implementation and Application of Functional Languages ({IFL}'06)/Brady - 2006 - Ivor, a proof engine.pdf:pdf},
834+file = {:home/edwin/Research/Papers/Mendeley/Brady/Brady - 2006 - Ivor, a proof engine.pdf:pdf},
654835isbn = {978-3-540-74129-9},
655836month = sep,
656837pages = {145----162},
@@ -658,79 +839,110 @@ title = {{Ivor, a proof engine}},
658839url = {http://dl.acm.org/citation.cfm?id=1757028.1757037},
659840year = {2006}
660841}
661−@inproceedings{chlipala2010ur,
662−author = {Chlipala, Adam},
663−booktitle = {ACM SIGPLAN Notices},
664−file = {:Users/edwin/Documents/Mendeley Desktop/Chlipala/ACM SIGPLAN Notices/Chlipala - 2010 - Ur statically-typed metaprogramming with type-level record computation.pdf:pdf},
665−number = {6},
666−pages = {122--133},
667−publisher = {ACM},
668−title = {{Ur: statically-typed metaprogramming with type-level record computation}},
669−url = {http://dl.acm.org/citation.cfm?id=1806612},
670−volume = {45},
671−year = {2010}
672−}
673−@misc{Abadi1997,
674−author = {Abadi, Martin and Gordon, Andrew D},
675−booktitle = {4TH ACM CONFERENCE ON COMPUTER AND COMMUNICATIONS SECURITY},
676−file = {:Users/edwin/Documents/Mendeley Desktop/Abadi, Gordon/4TH ACM CONFERENCE ON COMPUTER AND COMMUNICATIONS SECURITY/Abadi, Gordon - 1997 - A calculus for cryptographic protocols The spi calculus.pdf:pdf},
677−pages = {36 -- 47},
678−title = {{A calculus for cryptographic protocols: The spi calculus}},
679−url = {http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.49.2176},
680−year = {1997}
842+@misc{TheMendeleySupportTeam2011,
843+abstract = {A quick introduction to Mendeley. Learn how Mendeley creates your personal digital library, how to organize and annotate documents, how to collaborate and share with colleagues, and how to generate citations and bibliographies.},
844+address = {London},
845+author = {{The Mendeley Support Team}},
846+booktitle = {Mendeley Desktop},
847+file = {:home/edwin/Research/Papers/Mendeley/The Mendeley Support Team/The Mendeley Support Team - 2011 - Getting Started with Mendeley.pdf:pdf},
848+keywords = {Mendeley,how-to,user manual},
849+pages = {1--16},
850+publisher = {Mendeley Ltd.},
851+title = {{Getting Started with Mendeley}},
852+url = {http://www.mendeley.com},
853+year = {2011}
681854}
682−@inproceedings{McBride2006,
683−author = {McBride, C and Goguen, H and McKinna, J},
684−booktitle = {Types for Proofs and Programs {(TYPES 2006)}},
685−title = {{A few constructions on constructors}},
686−url = {http://www.springerlink.com/index/P4863U0M41396254.pdf},
687−year = {2006}
855+@article{mccann2000packet,
856+author = {McCann, P.J. and Chandra, S.},
857+journal = {ACM SIGCOMM Computer Communication Review},
858+number = {4},
859+pages = {321--333},
860+publisher = {ACM},
861+title = {{Packet types: abstract specification of network protocol messages}},
862+url = {http://dl.acm.org/citation.cfm?id=347563},
863+volume = {30},
864+year = {2000}
688865}
689−@article{Jones2003,
690−abstract = {Haskell is the world's leading lazy functional programming language and is widely used in teaching, research, and applications. The language continues to develop rapidly, but in 1998 the programming community decided to capture a stable snapshot of the language by introducing Haskell 98. This book constitutes the agreed definition of Haskell 98, the language itself as well as its supporting libraries, and should be a standard reference work for anyone involved in research, teaching, or applications. All Haskell compilers support Haskell 98, so professioanls and educators have a stable base for their work.},
691−author = {Jones, Simon Peyton},
692−editor = {Jones, Simon Peyton},
693−isbn = {0521826144},
694−journal = {Language},
695−number = {1},
696−publisher = {Cambridge University Press},
697−title = {{Haskell 98 Language and Libraries The Revised Report}},
698−url = {http://www.amazon.ca/exec/obidos/redirect?tag=citeulike09-20&amp;path=ASIN/0521826144},
699−volume = {13},
700−year = {2003}
866+@article{Steiner1988,
867+author = {Steiner, JG},
868+file = {:home/edwin/Research/Papers/Mendeley/Steiner/Steiner - 1988 - Kerberos An authentication service for open network systems.pdf:pdf},
869+journal = {Proc. Winter USENIX Conference},
870+title = {{Kerberos: An authentication service for open network systems}},
871+url = {http://www.cse.nd.edu/$\sim$dthain/courses/cse598z/fall2004/papers/kerberos.pdf},
872+year = {1988}
701873}
702−@inproceedings{Visser2008,
703−author = {Visser, E},
704−booktitle = {Generative and Transformational Techniques in Software Engineering},
705−title = {{WebDSL: A case study in domain-specific language engineering}},
706−url = {http://www.springerlink.com/index/A3213003X6268032.pdf},
707−year = {2008}
874+@article{Hughes1989,
875+abstract = {As software becomes more and more complex, it is more and more important to structure it well. Well-structured software is easy to write, easy to debug, and provides a collection of modules that can be re-used to reduce future programming costs. Conventional languages place conceptual limits on the way problems can be modularised. Functional languages push those limits back. In this paper we show that two features of functional languages in particular, higher-order functions and lazy evaluation, can contribute greatly to modularity. As examples, we manipulate lists and trees, program several numerical algorithms, and implement the alpha-beta heuristic (an algorithm from Artificial Intelligence used in game-playing programs). Since modularity is the key to successful programming, functional languages are vitally important to the real world.},
876+author = {Hughes, J},
877+chapter = {2},
878+doi = {10.1093/comjnl/32.2.98},
879+editor = {Turner, David A},
880+file = {:home/edwin/Research/Papers/Mendeley/Hughes/Hughes - 1989 - Why Functional Programming Matters.pdf:pdf},
881+institution = {Programming Methodology Group, University of {G\"{o}teborg} and Chalmers Institute of Technology, Sweden},
882+isbn = {0201172364},
883+issn = {00104620},
884+journal = {The Computer Journal},
885+number = {2},
886+pages = {98--107},
887+publisher = {Br Computer Soc},
888+title = {{Why Functional Programming Matters}},
889+url = {http://comjnl.oupjournals.org/cgi/doi/10.1093/comjnl/32.2.98},
890+volume = {32},
891+year = {1989}
708892}
709−@inproceedings{ko2011modularising,
710−author = {Ko, H.S. and Gibbons, J.},
711−booktitle = {Proceedings of the seventh ACM SIGPLAN workshop on Generic programming},
712−pages = {13--24},
713−publisher = {ACM},
893+@inproceedings{gibbons2011modularising,
894+author = {Gibbons, J. and Ko, H.S. and Others},
895+file = {:home/edwin/Research/Papers/Mendeley/Ko, Gibbons/Ko, Gibbons - 2011 - Modularising inductive families.pdf:pdf},
714896title = {{Modularising inductive families}},
715−url = {http://dl.acm.org/citation.cfm?id=2036921},
897+url = {http://www.cs.ox.ac.uk/publications/publication5008-abstract.html},
716898year = {2011}
717899}
718−@misc{Attacks2012a,
719−author = {Anderson, Ross},
900+@article{Okasaki1993,
901+author = {Okasaki, Chris},
902+file = {:home/edwin/Research/Papers/Mendeley/Okasaki/Okasaki - 1993 - Red-Black Trees in A Functional Setting.pdf:pdf},
903+journal = {Journal of functional programming},
904+title = {{Red-Black Trees in A Functional Setting}},
905+year = {1993}
906+}
907+@misc{Brady2012b,
908+author = {Brooks, Fred},
720909doi = {10.1093/epirev/mxr031},
721−file = {:Users/edwin/Documents/Mendeley Desktop/Anderson/Unknown/Anderson - Unknown - Security Engineering Chapter 18.pdf:pdf},
722−isbn = {9780470068526},
910+file = {:home/edwin/Research/Papers/Mendeley/Brooks/Brooks - Unknown - The Design of Design Chapter 2.pdf:pdf},
911+isbn = {9780321702081},
723912issn = {1478-6729},
724−number = {1},
725−pages = {NP},
726913pmid = {22215642},
727−title = {{Security Engineering Chapter 18}},
728−volume = {34}
914+title = {{The Design of Design Chapter 2}}
915+}
916+@inproceedings{Wadler1989,
917+abstract = {From the type of a polymorphic function we can derive a theorem that it satisfies. Every function of the same type satisfies the same theorem. This provides a free source of useful theorems, courtesy of Reynolds' abstraction theorem for the polymorphic lambda calculus.},
918+author = {Wadler, Philip},
919+booktitle = {Proceedings of the fourth international conference on Functional programming languages and computer architecture},
920+doi = {10.1145/99370.99404},
921+file = {:home/edwin/Research/Papers/Mendeley/Wadler/Wadler - 1989 - Theorems for free!.pdf:pdf},
922+isbn = {0897913280},
923+number = {June},
924+pages = {347--359},
925+publisher = {ACM},
926+series = {FPCA '89},
927+title = {{Theorems for free!}},
928+url = {http://portal.acm.org/citation.cfm?id=99404},
929+year = {1989}
930+}
931+@inproceedings{Hancock2000,
932+author = {Hancock, Peter and Setzer, Anton},
933+booktitle = {{Proceedings of the 14th Annual Conference of the EACSL on Computer Science Logic}},
934+file = {:home/edwin/Research/Papers/Mendeley/Hancock, Setzer/Hancock, Setzer - 2000 - Interactive Programs in Dependent Type Theory.pdf:pdf},
935+isbn = {3-540-67895-6},
936+month = aug,
937+pages = {317--331},
938+title = {{Interactive Programs in Dependent Type Theory}},
939+url = {http://dl.acm.org/citation.cfm?id=647850.737221},
940+year = {2000}
729941}
730942@inproceedings{l,
731943author = {L\"{a}mmel, R. and Jones, S.P.},
732944booktitle = {ACM SIGPLAN Notices},
733−file = {:Users/edwin/Documents/Mendeley Desktop/L\"{a}mmel, Jones/ACM SIGPLAN Notices/L\"{a}mmel, Jones - 2003 - Scrap your boilerplate a practical design pattern for generic programming.pdf:pdf},
945+file = {:home/edwin/Research/Papers/Mendeley/L\"{a}mmel, Jones/L\"{a}mmel, Jones - 2003 - Scrap your boilerplate a practical design pattern for generic programming.pdf:pdf},
734946number = {3},
735947pages = {26--37},
736948publisher = {ACM},
@@ -739,175 +951,75 @@ url = {http://dl.acm.org/citation.cfm?id=640136.604179},
739951volume = {38},
740952year = {2003}
741953}
742−@inproceedings{Delahaye2000,
743−author = {Delahaye, D},
744−booktitle = {Logic for Programming and Automated Reasoning},
745−file = {:Users/edwin/Documents/Mendeley Desktop/Delahaye/Logic for Programming and Automated Reasoning/Delahaye - 2000 - A tactic language for the system Coq.pdf:pdf;:Users/edwin/Documents/Mendeley Desktop/Delahaye/Logic for Programming and Automated Reasoning/Delahaye - 2000 - A tactic language for the system Coq(2).pdf:pdf},
746−pages = {85----95},
747−publisher = {Springer},
748−title = {{A tactic language for the system Coq}},
749−url = {http://www.springerlink.com/index/EFQAH8J88K42VN8T.pdf},
750−year = {2000}
751−}
752−@misc{pollack1997believe,
753−author = {Pollack, R.},
754−file = {:Users/edwin/Documents/Mendeley Desktop/Pollack/Unknown/Pollack - 1997 - How to believe a machine-checked proof.pdf:pdf},
755−title = {{How to believe a machine-checked proof}},
756−url = {http://books.google.co.uk/books?hl=en&amp;lr=&amp;id=pLnKggT_In4C&amp;oi=fnd&amp;pg=PA205&amp;dq=how+to+believe+a+machine+checked+proof&amp;ots=c2OI8krqqA&amp;sig=EF3QonGFVdOpYdKO1KmW6ljCkjY},
757−year = {1997}
758−}
759−@book{Bertot2004,
760−author = {Bertot, Yves and Cast\'{e}ran, Pierre},
761−publisher = {Springer},
762−title = {{Interactive theorem proving and program development: {Coq'Art}: the {Calculus of Inductive Constructions}}},
763−url = {http://books.google.co.uk/books?hl=en&amp;lr=&amp;id=m5w5PRj5Nj4C&amp;oi=fnd&amp;pg=PA1&amp;dq=coq+theorem+prover&amp;ots=VHny1IYV0h&amp;sig=-K0FC67cdkhMDkAocFla8cZyRT4},
764−year = {2004}
765−}
766−@inproceedings{brady2011epic,
767−author = {Brady, Edwin},
768−booktitle = {Trends in Functional Programming ({TFP}’11)},
769−file = {:Users/edwin/Documents/Mendeley Desktop/Brady/Trends in Functional Programming ({TFP}’11)/Brady - 2011 - Epic --- A Library for Generating Compilers.pdf:pdf},
770−title = {{Epic --- A Library for Generating Compilers}},
771−url = {http://scholar.google.co.uk/scholar?cites=2588300990390214449&as_sdt=2005&sciodt=0,5&hl=en#1},
772−year = {2011}
773−}
774−@article{dybjer1994inductive,
775−author = {Dybjer, P.},
776−journal = {Formal aspects of computing},
777−number = {4},
778−pages = {440--465},
779−publisher = {Springer},
780−title = {{Inductive families}},
781−url = {http://www.springerlink.com/index/J17824H467X6J288.pdf},
782−volume = {6},
783−year = {1994}
784−}
785−@inproceedings{McBride2004b,
786−author = {McBride, Conor and McKinna, James},
787−booktitle = {Haskell Workshop},
788−file = {:Users/edwin/Documents/Mendeley Desktop/McBride, McKinna/Haskell Workshop/McBride, McKinna - 2004 - I am not a number I am a free variable.pdf:pdf},
789−title = {{I am not a number : I am a free variable}},
790−year = {2004}
954+@inproceedings{Xi1999,
955+abstract = {Note: OCR errors may be found in this Reference List extracted from the full text article. ACM has opted to expose the complete List rather than only correct and linked references.},
956+author = {Xi, Hongwei and Pfenning, Frank},
957+booktitle = {Proceedings of the 26th ACM SIGPLANSIGACT symposium on Principles of programming languages POPL 99},
958+doi = {10.1145/292540.292560},
959+file = {:home/edwin/Research/Papers/Mendeley/Xi, Pfenning/Xi, Pfenning - 1999 - Dependent types in practical programming.pdf:pdf},
960+isbn = {1581130953},
961+issn = {07439016},
962+keywords = {Dependent Types},
963+mendeley-tags = {Dependent Types},
964+organization = {Carnegie Mellon University},
965+pages = {214--227},
966+publisher = {ACM Press},
967+series = {POPL '99},
968+title = {{Dependent types in practical programming}},
969+url = {http://portal.acm.org/citation.cfm?doid=292540.292560},
970+volume = {26},
971+year = {1999}
791972}
792−@article{Wadler2001,
793−abstract = {The use of monads to structure functional programs is described. Monads provide a convenient framework for simulating effects found in other languages, such as global state, exception handling, output, or non-determinism. Three case studies are looked at in detail: how monads ease the modification of a simple evaluator; how monads act as the basis of a datatype of arrays subject to in-place update; and how monads can be used to build parsers.},
794−author = {Wadler, Philip},
795−doi = {10.1007/3-540-59451-5_2},
796−editor = {Jeuring, Johan and Meijer, Erik},
797−file = {:Users/edwin/Documents/Mendeley Desktop/Wadler/Advanced Functional Programming/Wadler - 2001 - Monads for functional programming.pdf:pdf},
798−isbn = {3540594515},
799−issn = {03029743},
800−journal = {Advanced Functional Programming},
801−number = {August 1992},
802−pages = {24--52},
973+@inproceedings{morris2006exploring,
974+author = {Morris, P. and Altenkirch, T. and McBride, C.},
975+booktitle = {Types for Proofs and Programs},
976+file = {:home/edwin/Research/Papers/Mendeley/Morris, Altenkirch, McBride/Morris, Altenkirch, McBride - 2006 - Exploring the regular tree types.pdf:pdf},
977+pages = {252--267},
803978publisher = {Springer},
804−series = {Lecture Notes in Computer Science},
805−title = {{Monads for functional programming}},
806−url = {http://www.springerlink.com/index/715264614rh13340.pdf},
807−volume = {925},
808−year = {2001}
809−}
810−@inproceedings{taha1997multi,
811−author = {Taha, W. and Sheard, T.},
812−booktitle = {ACM SIGPLAN Notices},
813−number = {12},
814−pages = {203--217},
815−publisher = {ACM},
816−title = {{Multi-stage programming with explicit annotations}},
817−url = {http://dl.acm.org/citation.cfm?id=259019},
818−volume = {32},
819−year = {1997}
820−}
821−@article{loh2010tutorial,
822−author = {L\"{o}h, A. and McBride, C. and Swierstra, W.},
823−file = {:Users/edwin/Documents/Mendeley Desktop/L\"{o}h, McBride, Swierstra/Fundamenta Informaticae/L\"{o}h, McBride, Swierstra - 2010 - A tutorial implementation of a dependently typed lambda calculus.pdf:pdf},
824−journal = {Fundamenta Informaticae},
825−number = {2},
826−pages = {177--207},
827−publisher = {IOS Press},
828−title = {{A tutorial implementation of a dependently typed lambda calculus}},
829−url = {http://iospress.metapress.com/index/976W4716TM79M6U8.pdf},
830−volume = {102},
831−year = {2010}
979+title = {{Exploring the regular tree types}},
980+url = {http://www.springerlink.com/index/f9p1317716614834.pdf},
981+year = {2006}
832982}
833−@book{Philosophy2012,
983+@book{Approach2012,
834984author = {Hunt, Andrew and Thomas, David},
835985booktitle = {Carcinogenesis},
836986doi = {10.1093/carcin/bgs054},
837−file = {:Users/edwin/Documents/Mendeley Desktop/Hunt, Thomas/Carcinogenesis/Hunt, Thomas - Unknown - The Pragmatic Programmer Chapter 1.pdf:pdf},
987+file = {:home/edwin/Research/Papers/Mendeley/Hunt, Thomas/Hunt, Thomas - Unknown - The Pragmatic Programmer Chapter 2.pdf:pdf},
838988isbn = {020161622X},
839989issn = {1460-2180},
840990number = {3},
841991pmid = {22383472},
842−title = {{The Pragmatic Programmer Chapter 1}},
992+title = {{The Pragmatic Programmer Chapter 2}},
843993url = {http://www.ncbi.nlm.nih.gov/pubmed/22383472},
844994volume = {33}
845995}
846−@inproceedings{pollack1990implicit,
847−author = {Pollack, R.},
848−booktitle = {{Informal Proceedings of First Workshop on Logical Frameworks, Antibes}},
849−file = {:Users/edwin/Documents/Mendeley Desktop/Pollack/{Informal Proceedings of First Workshop on Logical Frameworks, Antibes}/Pollack - 1990 - Implicit syntax.pdf:pdf},
850−publisher = {Citeseer},
851−title = {{Implicit syntax}},
852−url = {http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.30.7361&amp;rep=rep1&amp;type=pdf},
853−year = {1990}
854−}
855−@article{gordon2003authenticity,
856−author = {Gordon, A.D. and Jeffrey, A.},
857−file = {:Users/edwin/Documents/Mendeley Desktop/Gordon, Jeffrey/Journal of computer security/Gordon, Jeffrey - 2003 - Authenticity by typing for security protocols.pdf:pdf},
858−journal = {Journal of computer security},
859−number = {4},
860−pages = {451--520},
861−publisher = {IOS Press},
862−title = {{Authenticity by typing for security protocols}},
863−url = {http://iospress.metapress.com/index/BHQQUFRA1C7W8TLY.pdf},
864−volume = {11},
865−year = {2003}
866−}
867−@inproceedings{Wadler1989,
868−abstract = {From the type of a polymorphic function we can derive a theorem that it satisfies. Every function of the same type satisfies the same theorem. This provides a free source of useful theorems, courtesy of Reynolds' abstraction theorem for the polymorphic lambda calculus.},
869−author = {Wadler, Philip},
870−booktitle = {Proceedings of the fourth international conference on Functional programming languages and computer architecture},
871−doi = {10.1145/99370.99404},
872−file = {:Users/edwin/Documents/Mendeley Desktop/Wadler/Proceedings of the fourth international conference on Functional programming languages and computer architecture/Wadler - 1989 - Theorems for free!.pdf:pdf},
873−isbn = {0897913280},
874−number = {June},
875−pages = {347--359},
876−publisher = {ACM},
877−series = {FPCA '89},
878−title = {{Theorems for free!}},
879−url = {http://portal.acm.org/citation.cfm?id=99404},
880−year = {1989}
881−}
882−@inproceedings{Augustsson1985,
883−address = {Berlin, Heidelberg},
884−author = {Augustsson, Lennart},
885−booktitle = {Functional Programming Languages and Computer Architecture},
886−doi = {10.1007/3-540-15975-4},
887−editor = {Jouannaud, Jean-Pierre},
888−isbn = {978-3-540-15975-9},
889−keywords = {Computer Science},
890−pages = {368----381},
891−publisher = {Springer Berlin Heidelberg},
892−series = {Lecture Notes in Computer Science},
893−title = {{Compiling Pattern Matching}},
894−url = {http://www.springerlink.com/content/y647423656557505/},
895−volume = {201},
896−year = {1985}
996+@misc{Abel1998,
997+author = {Abel, Andreas},
998+booktitle = {Language},
999+file = {:home/edwin/Research/Papers/Mendeley/Abel/Abel - 1998 - foetus - Termination Checker for Simple Functional Programs.pdf:pdf},
1000+title = {{foetus - Termination Checker for Simple Functional Programs}},
1001+year = {1998}
8971002}
898−@inproceedings{Brady2005a,
899−author = {Brady, E and Hammond, K},
900−booktitle = {Implementation and Application of Functional \ldots},
901−file = {:Users/edwin/Documents/Mendeley Desktop/Brady, Hammond/Implementation and Application of Functional \ldots/Brady, Hammond - 2005 - A dependently typed framework for static analysis of program execution costs.pdf:pdf},
902−keywords = {Dependent Types},
903−mendeley-tags = {Dependent Types},
904−title = {{A dependently typed framework for static analysis of program execution costs}},
905−url = {http://www.springerlink.com/index/P446P2HH70107759.pdf},
906−year = {2005}
1003+@article{Miller1992,
1004+author = {Miller, Dale},
1005+file = {:home/edwin/Research/Papers/Mendeley/Miller/Miller - 1992 - Unification under a mixed prefix.pdf:pdf},
1006+journal = {Journal of Symbolic Computation},
1007+title = {{Unification under a mixed prefix}},
1008+url = {http://www.sciencedirect.com/science/article/pii/074771719290011R},
1009+year = {1992}
1010+}
1011+@misc{Interface2012a,
1012+author = {Kreibich, Jay A.},
1013+doi = {10.1093/epirev/mxr031},
1014+file = {:home/edwin/Research/Papers/Mendeley/Kreibich/Kreibich - Unknown - Using SQLite Chapter 7.pdf:pdf},
1015+isbn = {9781449394592},
1016+issn = {1478-6729},
1017+pmid = {22215642},
1018+title = {{Using SQLite Chapter 7}}
9071019}
9081020@article{Vytiniotis2011,
9091021author = {Vytiniotis, Dimitrios and {Peyton Jones}, Simon and Schrijvers, Tom and Sulzmann, Martin},
910−file = {:Users/edwin/Documents/Mendeley Desktop/Vytiniotis et al/{Journal of Functional Programming}/Vytiniotis et al. - 2011 - textsc{OutsideIn}(X) Modular type inference with local assumptions.pdf:pdf;:Users/edwin/Documents/Mendeley Desktop/Vytiniotis et al/{Journal of Functional Programming}/Vytiniotis et al. - 2011 - textsc{OutsideIn}(X) Modular type inference with local assumptions(2).pdf:pdf},
1022+file = {:home/edwin/Research/Papers/Mendeley/Vytiniotis et al/Vytiniotis et al. - 2011 - textsc{OutsideIn}(X) Modular type inference with local assumptions.pdf:pdf;:home/edwin/Research/Papers/Mendeley/Vytiniotis et al/Vytiniotis et al. - 2011 - textsc{OutsideIn}(X) Modular type inference with local assumptions(2).pdf:pdf},
9111023journal = {{Journal of Functional Programming}},
9121024number = {4--5},
9131025pages = {333----412},
@@ -916,162 +1028,104 @@ url = {http://journals.cambridge.org/abstract_S0956796811000098},
9161028volume = {21},
9171029year = {2011}
9181030}
919−@article{mccann2000packet,
920−author = {McCann, P.J. and Chandra, S.},
921−journal = {ACM SIGCOMM Computer Communication Review},
922−number = {4},
923−pages = {321--333},
924−publisher = {ACM},
925−title = {{Packet types: abstract specification of network protocol messages}},
926−url = {http://dl.acm.org/citation.cfm?id=347563},
927−volume = {30},
928−year = {2000}
929−}
930−@article{Miller1992,
931−author = {Miller, Dale},
932−file = {:Users/edwin/Documents/Mendeley Desktop/Miller/Journal of Symbolic Computation/Miller - 1992 - Unification under a mixed prefix.pdf:pdf},
933−journal = {Journal of Symbolic Computation},
934−title = {{Unification under a mixed prefix}},
935−url = {http://www.sciencedirect.com/science/article/pii/074771719290011R},
936−year = {1992}
937−}
938−@inproceedings{norell2009dependently,
939−author = {Norell, Ulf},
940−booktitle = {Advanced Functional Programming},
941−file = {:Users/edwin/Documents/Mendeley Desktop/Norell/Advanced Functional Programming/Norell - 2009 - Dependently typed programming in Agda.pdf:pdf},
1031+@inproceedings{Brady2003,
1032+author = {Brady, Edwin and McBride, Conor and McKinna, James},
1033+booktitle = {Types for Proofs and Programs {(TYPES 2003)}},
1034+file = {:home/edwin/Research/Papers/Mendeley/Brady, McBride, McKinna/Brady, McBride, McKinna - 2003 - Inductive families need not store their indices.pdf:pdf},
9421035keywords = {Dependent Types},
9431036mendeley-tags = {Dependent Types},
944−pages = {230--266},
945−publisher = {Springer},
946−title = {{Dependently typed programming in Agda}},
947−url = {http://www.springerlink.com/index/8X0H38858233VN26.pdf},
948−year = {2009}
949−}
950−@article{Hughes1989,
951−abstract = {As software becomes more and more complex, it is more and more important to structure it well. Well-structured software is easy to write, easy to debug, and provides a collection of modules that can be re-used to reduce future programming costs. Conventional languages place conceptual limits on the way problems can be modularised. Functional languages push those limits back. In this paper we show that two features of functional languages in particular, higher-order functions and lazy evaluation, can contribute greatly to modularity. As examples, we manipulate lists and trees, program several numerical algorithms, and implement the alpha-beta heuristic (an algorithm from Artificial Intelligence used in game-playing programs). Since modularity is the key to successful programming, functional languages are vitally important to the real world.},
952−author = {Hughes, J},
953−chapter = {2},
954−doi = {10.1093/comjnl/32.2.98},
955−editor = {Turner, David A},
956−file = {:Users/edwin/Documents/Mendeley Desktop/Hughes/The Computer Journal/Hughes - 1989 - Why Functional Programming Matters.pdf:pdf},
957−institution = {Programming Methodology Group, University of {G\"{o}teborg} and Chalmers Institute of Technology, Sweden},
958−isbn = {0201172364},
959−issn = {00104620},
960−journal = {The Computer Journal},
961−number = {2},
962−pages = {98--107},
963−publisher = {Br Computer Soc},
964−title = {{Why Functional Programming Matters}},
965−url = {http://comjnl.oupjournals.org/cgi/doi/10.1093/comjnl/32.2.98},
966−volume = {32},
967−year = {1989}
968−}
969−@article{Steiner1988,
970−author = {Steiner, JG},
971−file = {:Users/edwin/Documents/Mendeley Desktop/Steiner/Proc. Winter USENIX Conference/Steiner - 1988 - Kerberos An authentication service for open network systems.pdf:pdf},
972−journal = {Proc. Winter USENIX Conference},
973−title = {{Kerberos: An authentication service for open network systems}},
974−url = {http://www.cse.nd.edu/$\sim$dthain/courses/cse598z/fall2004/papers/kerberos.pdf},
975−year = {1988}
1037+title = {{Inductive families need not store their indices}},
1038+url = {http://www.springerlink.com/index/WBXJJG717N2W3NU2.pdf},
1039+year = {2003}
9761040}
977−@phdthesis{McBride1999,
978−author = {McBride, Conor},
979−file = {:Users/edwin/Documents/Mendeley Desktop/McBride/Unknown/McBride - 1999 - Dependently typed functional programs and their proofs.pdf:pdf},
980−keywords = {Dependent Types},
981−mendeley-tags = {Dependent Types},
982−school = {University of Edinburgh},
983−title = {{Dependently typed functional programs and their proofs}},
984−url = {http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.26.4785&rep=rep1&type=pdf},
985−year = {1999}
1041+@inproceedings{swierstra2007beauty,
1042+author = {Swierstra, W. and Altenkirch, T.},
1043+booktitle = {Proceedings of the ACM SIGPLAN workshop on Haskell workshop},
1044+file = {:home/edwin/Research/Papers/Mendeley/Swierstra, Altenkirch/Swierstra, Altenkirch - 2007 - Beauty in the beast.pdf:pdf},
1045+pages = {25--36},
1046+publisher = {ACM},
1047+title = {{Beauty in the beast}},
1048+url = {http://dl.acm.org/citation.cfm?id=1291206},
1049+year = {2007}
9861050}
987−@inproceedings{augustsson1999exercise,
988−author = {Augustsson, L. and Carlsson, M.},
989−booktitle = {In Workshop on Dependent Types in Programming, Gothenburg},
990−keywords = {Depe},
991−mendeley-tags = {Depe},
992−publisher = {Citeseer},
993−title = {{An exercise in dependent types: A well-typed interpreter}},
994−url = {http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.39.2895},
995−year = {1999}
1051+@book{peyton1987implementation,
1052+author = {{Peyton Jones}, S.L.},
1053+publisher = {Prentice-Hall, Inc.},
1054+title = {{The implementation of functional programming languages (prentice-hall international series in computer science)}},
1055+url = {http://dl.acm.org/citation.cfm?id=1096899},
1056+year = {1987}
9961057}
997−@inproceedings{taha2004gentle,
998−author = {Taha, W.},
999−booktitle = {Domain-Specific Program Generation},
1000−pages = {30--50},
1058+@article{dybjer1994inductive,
1059+author = {Dybjer, P.},
1060+journal = {Formal aspects of computing},
1061+number = {4},
1062+pages = {440--465},
10011063publisher = {Springer},
1002−title = {{A gentle introduction to multi-stage programming}},
1003−url = {http://www.springerlink.com/index/JEMT0D8VYN5JB2L8.pdf},
1004−year = {2004}
1064+title = {{Inductive families}},
1065+url = {http://www.springerlink.com/index/J17824H467X6J288.pdf},
1066+volume = {6},
1067+year = {1994}
10051068}
1006−@inproceedings{Sculthorpe2009,
1007−author = {Sculthorpe, Neil and Nilsson, Henrik},
1008−booktitle = {International Conference on Functional Programming ({ICFP} '09)},
1009−file = {:Users/edwin/Documents/Mendeley Desktop/Sculthorpe, Nilsson/International Conference on Functional Programming ({ICFP} '09)/Sculthorpe, Nilsson - 2009 - Safe functional reactive programming through dependent types.pdf:pdf;:Users/edwin/Documents/Mendeley Desktop/Sculthorpe, Nilsson/International Conference on Functional Programming ({ICFP} '09)/Sculthorpe, Nilsson - 2009 - Safe functional reactive programming through dependent types(2).pdf:pdf},
1010−title = {{Safe functional reactive programming through dependent types}},
1011−url = {http://dl.acm.org/citation.cfm?id=1596558},
1069+@inproceedings{lempsink2009type,
1070+author = {Lempsink, E. and Leather, S. and L\"{o}h, A.},
1071+booktitle = {Proceedings of the 2009 ACM SIGPLAN workshop on Generic programming},
1072+file = {:home/edwin/Research/Papers/Mendeley/Lempsink, Leather, L\"{o}h/Lempsink, Leather, L\"{o}h - 2009 - Type-safe diff for families of datatypes.pdf:pdf},
1073+pages = {61--72},
1074+publisher = {ACM},
1075+title = {{Type-safe diff for families of datatypes}},
1076+url = {http://dl.acm.org/citation.cfm?id=1596624},
10121077year = {2009}
10131078}
1014−@misc{TheMendeleySupportTeam2011a,
1015−abstract = {A quick introduction to Mendeley. Learn how Mendeley creates your personal digital library, how to organize and annotate documents, how to collaborate and share with colleagues, and how to generate citations and bibliographies.},
1016−address = {London},
1017−author = {{The Mendeley Support Team}},
1018−booktitle = {Mendeley Desktop},
1019−file = {:Users/edwin/Documents/Mendeley Desktop/The Mendeley Support Team/Mendeley Desktop/The Mendeley Support Team - 2011 - Getting Started with Mendeley.pdf:pdf},
1020−keywords = {Mendeley,how-to,user manual},
1021−pages = {1--16},
1022−publisher = {Mendeley Ltd.},
1023−title = {{Getting Started with Mendeley}},
1024−url = {http://www.mendeley.com},
1025−year = {2011}
1079+@misc{The2012b,
1080+author = {Brooks, Fred},
1081+doi = {10.1093/epirev/mxr031},
1082+file = {:home/edwin/Research/Papers/Mendeley/Brooks/Brooks - Unknown - The Design of Design Chapter 1.pdf:pdf},
1083+isbn = {9780321702081},
1084+issn = {1478-6729},
1085+pmid = {22215642},
1086+title = {{The Design of Design Chapter 1}}
10261087}
1027−@article{danielsson2011parsing,
1028−author = {Danielsson, N. and Norell, U.},
1029−journal = {Implementation and Application of Functional Languages},
1030−pages = {80--99},
1031−publisher = {Springer},
1032−title = {{Parsing mixfix operators}},
1033−url = {http://www.springerlink.com/index/386243257W504252.pdf},
1034−year = {2011}
1088+@misc{The2012c,
1089+author = {Robbins, A and Hannah, E and Lamb, L},
1090+doi = {10.1093/epirev/mxr031},
1091+file = {:home/edwin/Research/Papers/Mendeley/Robbins, Hannah, Lamb/Robbins, Hannah, Lamb - Unknown - Learning the vi and Vim Editors.pdf:pdf},
1092+isbn = {9780596529833},
1093+issn = {1478-6729},
1094+pmid = {22215642},
1095+title = {{Learning the vi and Vim Editors}}
1096+}
1097+@inproceedings{chlipala2010ur,
1098+author = {Chlipala, Adam},
1099+booktitle = {ACM SIGPLAN Notices},
1100+file = {:home/edwin/Research/Papers/Mendeley/Chlipala/Chlipala - 2010 - Ur statically-typed metaprogramming with type-level record computation.pdf:pdf},
1101+number = {6},
1102+pages = {122--133},
1103+publisher = {ACM},
1104+title = {{Ur: statically-typed metaprogramming with type-level record computation}},
1105+url = {http://dl.acm.org/citation.cfm?id=1806612},
1106+volume = {45},
1107+year = {2010}
10351108}
10361109@misc{dagand2011transporting,
10371110author = {Dagand, Pierre-Evariste and McBride, Conor},
1038−file = {:Users/edwin/Documents/Mendeley Desktop/Dagand, McBride/Unknown/Dagand, McBride - 2011 - Transporting Functions across Ornaments.pdf:pdf},
1111+file = {:home/edwin/Research/Papers/Mendeley/Dagand, McBride/Dagand, McBride - 2011 - Transporting Functions across Ornaments.pdf:pdf},
10391112title = {{Transporting Functions across Ornaments}},
10401113url = {http://personal.cis.strath.ac.uk/$\sim$dagand/stuffs/paper-2011-patch/paper.pdf},
10411114year = {2011}
10421115}
1043−@book{Fowler,
1044−author = {Fowler, Martin},
1045−booktitle = {Language},
1046−file = {:Users/edwin/Documents/Mendeley Desktop/Fowler/Language/Fowler - Unknown - Domain Specific Languages Chapter 2.pdf:pdf},
1047−isbn = {9780132107549},
1048−title = {{Domain Specific Languages Chapter 2}}
1049−}
1050−@misc{Bove2008,
1051−abstract = {In these lecture notes we give an introduction to functional programming with dependent types. We use the dependently typed programming language Agda which is based on ideas in Martin-L\"{o}f type theory and Martin-L\"{o}fs logical framework. We begin by showing how to do simply typed functional programming, and discuss the differences between Agdas type system and the Hindley-Milner type system, which underlies mainstream typed functional programming languages like Haskell and ML. We then show how to employ dependent types for programming with functional data structures such as vectors and binary search trees. We go on to explain the Curry-Howard identification of propositions and types, and how it makes Agda not only a programming language but also a programming logic. According to Curry-Howard, we also identify programs and proofs, something which is possible only by requiring that all program terminate. However, we show in the final section a method for encoding general and possibly partial recursive functions as total functions using dependent types.},
1052−author = {Bove, Ana and Dybjer, Peter},
1053−booktitle = {Notes},
1054−doi = {10.1007/978-3-642-03153-3_2},
1055−file = {:Users/edwin/Documents/Mendeley Desktop/Bove, Dybjer/Notes/Bove, Dybjer - 2008 - Dependent Types at Work.pdf:pdf},
1056−number = {February},
1057−pages = {57--99},
1116+@inproceedings{taha2004gentle,
1117+author = {Taha, W.},
1118+booktitle = {Domain-Specific Program Generation},
1119+pages = {30--50},
10581120publisher = {Springer},
1059−title = {{Dependent Types at Work}},
1060−url = {http://www.springerlink.com/index/1039q8qk71257677.pdf},
1061−volume = {5520},
1062−year = {2008}
1063−}
1064−@article{Okasaki1993,
1065−author = {Okasaki, Chris},
1066−file = {:Users/edwin/Documents/Mendeley Desktop/Okasaki/Journal of functional programming/Okasaki - 1993 - Red-Black Trees in A Functional Setting.pdf:pdf},
1067−journal = {Journal of functional programming},
1068−title = {{Red-Black Trees in A Functional Setting}},
1069−year = {1993}
1121+title = {{A gentle introduction to multi-stage programming}},
1122+url = {http://www.springerlink.com/index/JEMT0D8VYN5JB2L8.pdf},
1123+year = {2004}
10701124}
10711125@inproceedings{pj2006gadts,
10721126author = {{Peyton Jones}, S. and Vytiniotis, D. and Weirich, S. and Washburn, G.},
10731127booktitle = {{International Conference on Functional Programming} ({ICFP} '06)},
1074−file = {:Users/edwin/Documents/Mendeley Desktop/Peyton Jones et al/{International Conference on Functional Programming} ({ICFP} '06)/Peyton Jones et al. - 2006 - Simple unification-based type inference for GADTs.pdf:pdf},
1128+file = {:home/edwin/Research/Papers/Mendeley/Peyton Jones et al/Peyton Jones et al. - 2006 - Simple unification-based type inference for GADTs.pdf:pdf},
10751129number = {9},
10761130pages = {50--61},
10771131publisher = {ACM},
@@ -1080,92 +1134,149 @@ url = {http://dl.acm.org/citation.cfm?id=1159811},
10801134volume = {41},
10811135year = {2006}
10821136}
1083−@misc{altenkirch2005dependent,
1084−author = {Altenkirch, T. and McBride, C. and McKinna, J.},
1085−booktitle = {Manuscript, available online},
1086−file = {:Users/edwin/Documents/Mendeley Desktop/Altenkirch, McBride, McKinna/Manuscript, available online/Altenkirch, McBride, McKinna - 2005 - Why dependent types matter.pdf:pdf},
1087−title = {{Why dependent types matter}},
1088−url = {http://www.cs.nott.ac.uk/$\sim$txa/talks/splst11.pdf},
1089−year = {2005}
1137+@book{Brady2012,
1138+author = {Hunt, Andrew and Thomas, David},
1139+booktitle = {Carcinogenesis},
1140+doi = {10.1093/carcin/bgs054},
1141+file = {:home/edwin/Research/Papers/Mendeley/Hunt, Thomas/Hunt, Thomas - Unknown - The Pragmatic Programmer Chapter 5.pdf:pdf},
1142+isbn = {020161622X},
1143+issn = {1460-2180},
1144+number = {3},
1145+pmid = {22383472},
1146+title = {{The Pragmatic Programmer Chapter 5}},
1147+url = {http://www.ncbi.nlm.nih.gov/pubmed/22383472},
1148+volume = {33}
1149+}
1150+@inproceedings{Pasalic2002,
1151+author = {Pa\v{s}alic, Emir and Taha, Walid and Sheard, Tim},
1152+booktitle = {International Conference on Functional Programming},
1153+doi = {10.1145/583852.581499},
1154+file = {:home/edwin/Research/Papers/Mendeley/Pa\v{s}alic, Taha, Sheard/Pa\v{s}alic, Taha, Sheard - 2002 - Tagless staged interpreters for typed languages.pdf:pdf},
1155+isbn = {1-58113-487-8},
1156+issn = {03621340},
1157+keywords = {calculus of constructions,definitional interpreters,domain-specific languages,multi-stage programming},
1158+month = sep,
1159+number = {9},
1160+pages = {218--229},
1161+title = {{Tagless staged interpreters for typed languages}},
1162+url = {http://dl.acm.org/citation.cfm?id=583852.581499},
1163+volume = {37},
1164+year = {2002}
1165+}
1166+@misc{Nodes2012a,
1167+author = {Brooks, Fred},
1168+doi = {10.1093/epirev/mxr031},
1169+file = {:home/edwin/Research/Papers/Mendeley/Brooks/Brooks - Unknown - The Design of Design Chapter 3.pdf:pdf},
1170+isbn = {9780321702081},
1171+issn = {1478-6729},
1172+pmid = {22215642},
1173+title = {{The Design of Design Chapter 3}}
10901174}
1091−@misc{The2012c,
1092−author = {Robbins, A and Hannah, E and Lamb, L},
1175+@book{An2012,
1176+author = {Fowler, Martin},
1177+booktitle = {Carcinogenesis},
1178+doi = {10.1093/carcin/bgs054},
1179+file = {:home/edwin/Research/Papers/Mendeley/Fowler/Fowler - Unknown - Domain Specific Languages Chapter 1.pdf:pdf},
1180+isbn = {9780132107549},
1181+issn = {1460-2180},
1182+number = {3},
1183+pmid = {22383472},
1184+title = {{Domain Specific Languages Chapter 1}},
1185+url = {http://www.ncbi.nlm.nih.gov/pubmed/22383472},
1186+volume = {33}
1187+}
1188+@article{Haskell2012a,
1189+author = {Biancuzzi, F and Warden, S},
10931190doi = {10.1093/epirev/mxr031},
1094−file = {:Users/edwin/Documents/Mendeley Desktop/Robbins, Hannah, Lamb/Unknown/Robbins, Hannah, Lamb - Unknown - Learning the vi and Vim Editors.pdf:pdf},
1095−isbn = {9780596529833},
1191+file = {:home/edwin/Research/Papers/Mendeley/Biancuzzi, Warden/Biancuzzi, Warden - Unknown - Masterminds of Programming Chapter 8.pdf:pdf},
1192+isbn = {9780596801670},
10961193issn = {1478-6729},
10971194pmid = {22215642},
1098−title = {{Learning the vi and Vim Editors}}
1195+title = {{Masterminds of Programming Chapter 8}}
1196+}
1197+@article{McBride2005,
1198+author = {McBride, Conor},
1199+editor = {Vene, Varmo and Uustalu, Tarmo},
1200+isbn = {3540285407},
1201+journal = {Advanced Functional Programming},
1202+keywords = {Dependent Types},
1203+mendeley-tags = {Dependent Types},
1204+pages = {130--170},
1205+publisher = {Springer},
1206+series = {Lecture Notes in Computer Science},
1207+title = {{Epigram: Practical programming with dependent types}},
1208+url = {http://www.springerlink.com/index/96j7v5vn8tyebeky.pdf},
1209+volume = {3622},
1210+year = {2005}
1211+}
1212+@article{landin1966next,
1213+author = {Landin, P.J.},
1214+file = {:home/edwin/Research/Papers/Mendeley/Landin/Landin - 1966 - The next 700 programming languages.pdf:pdf},
1215+journal = {Communications of the ACM},
1216+number = {3},
1217+pages = {157--166},
1218+publisher = {ACM},
1219+title = {{The next 700 programming languages}},
1220+url = {http://dl.acm.org/citation.cfm?id=365257 )},
1221+volume = {9},
1222+year = {1966}
10991223}
11001224@misc{Resolution2012a,
11011225author = {Fall, Kevin R and Stevens, W. Richard},
11021226doi = {10.1093/epirev/mxr031},
1103−file = {:Users/edwin/Documents/Mendeley Desktop/Fall, Stevens/Unknown/Fall, Stevens - Unknown - TCPIP Illustrated Volume 1 Chapter 11.pdf:pdf},
1227+file = {:home/edwin/Research/Papers/Mendeley/Fall, Stevens/Fall, Stevens - Unknown - TCPIP Illustrated Volume 1 Chapter 11.pdf:pdf},
11041228issn = {1478-6729},
11051229pmid = {22215642},
11061230title = {{TCP/IP Illustrated Volume 1 Chapter 11}}
11071231}
1108−@article{Brady2006a,
1109−author = {Brady, E and Hammond, K},
1110−file = {:Users/edwin/Documents/Mendeley Desktop/Brady, Hammond/\ldots of the 5th international conference on \ldots/Brady, Hammond - 2006 - A verified staged interpreter is a verified compiler.pdf:pdf},
1111−journal = {\ldots of the 5th international conference on \ldots},
1232+@phdthesis{Brady2005,
1233+author = {Brady, Edwin},
1234+file = {:home/edwin/Research/Papers/Mendeley/Brady/Brady - 2005 - Practical Implementation of a Dependently Typed Functional Programming Language.pdf:pdf},
11121235keywords = {Dependent Types},
11131236mendeley-tags = {Dependent Types},
1114−title = {{A verified staged interpreter is a verified compiler}},
1115−url = {http://portal.acm.org/citation.cfm?id=1173706.1173724},
1116−year = {2006}
1117−}
1118−@inproceedings{swierstra2007beauty,
1119−author = {Swierstra, W. and Altenkirch, T.},
1120−booktitle = {Proceedings of the ACM SIGPLAN workshop on Haskell workshop},
1121−file = {:Users/edwin/Documents/Mendeley Desktop/Swierstra, Altenkirch/Proceedings of the ACM SIGPLAN workshop on Haskell workshop/Swierstra, Altenkirch - 2007 - Beauty in the beast.pdf:pdf},
1122−pages = {25--36},
1123−publisher = {ACM},
1124−title = {{Beauty in the beast}},
1125−url = {http://dl.acm.org/citation.cfm?id=1291206},
1126−year = {2007}
1237+school = {University of Durham},
1238+title = {{Practical Implementation of a Dependently Typed Functional Programming Language}},
1239+url = {http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.150.8284&rep=rep1&type=pdf},
1240+year = {2005}
11271241}
1128−@article{McBride2004a,
1129−abstract = {ABSTRACT Pattern matching has proved an extremely powerful and durable notion in functional programming. This paper contributes a new programming notation for type theory which elaborates the notion in various ways. First, as is by now quite well-known in the type theory community, definition by pattern matching becomes a more discriminating tool in the presence of dependent types, since it refines the explanation of types as well as values. This becomes all the more true in the presence of the rich class of datatypes known as inductive families (Dybjer, 1991). Secondly, as proposed by Peyton Jones (1997) for Haskell, and independently rediscovered by us, subsidiary case analyses on the results of intermediate computations, which commonly take place on the right-hand side of definitions by pattern matching, should rather be handled on the left. In simply-typed languages, this subsumes the trivial case of Boolean guards; in our setting it becomes yet more powerful. Thirdly, elementary pattern matching decompositions have a well-defined interface given by a dependent type; they correspond to the statement of an induction principle for the datatype. More general, user-definable decompositions may be defined which also have types of the same general form. Elementary pattern matching may therefore be recast in abstract form, with a semantics given by translation. Such abstract decompositions of data generalize Wadler&apos;s (1987) notion of &lsquo;view&rsquo;. The programmer wishing to introduce a new view of a type mathitT, and exploit it directly in pattern matching, may do so via a standard programming idiom. The type theorist, looking through the Curry&ndash;Howard lens, may see this as proving a theorem, one which establishes the validity of a new induction principle for mathitT. We develop enough syntax and semantics to account for this high-level style of programming in dependent type theory. We close with the development of a typechecker for the simply-typed lambda calculus, which furnishes a view of raw terms as either being well-typed, or containing an error. The implementation of this view is ipso facto a proof that typechecking is decidable.},
1130−author = {McBride, Conor and McKinna, James},
1131−doi = {10.1017/S0956796803004829},
1132−file = {:Users/edwin/Documents/Mendeley Desktop/McBride, McKinna/Journal of Functional Programming/McBride, McKinna - 2004 - The view from the left.pdf:pdf},
1133−issn = {09567968},
1134−journal = {Journal of Functional Programming},
1242+@phdthesis{norell2007thesis,
1243+author = {Norell, Ulf},
1244+file = {:home/edwin/Research/Papers/Mendeley/Norell/Norell - 2007 - Towards a practical programming language based on dependent type theory.pdf:pdf},
11351245keywords = {Dependent Types},
11361246mendeley-tags = {Dependent Types},
1137−number = {1},
1138−pages = {69--111},
1139−publisher = {Cambridge University Press},
1140−title = {{The view from the left}},
1141−url = {http://www.journals.cambridge.org/abstract_S0956796803004829},
1142−volume = {14},
1143−year = {2004}
1247+publisher = {Citeseer},
1248+school = {Chalmers University of Technology},
1249+title = {{Towards a practical programming language based on dependent type theory}},
1250+url = {http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.65.7934&amp;rep=rep1&amp;type=pdf},
1251+year = {2007}
11441252}
1145−@misc{Nodes2012a,
1146−author = {Brooks, Fred},
1147−doi = {10.1093/epirev/mxr031},
1148−file = {:Users/edwin/Documents/Mendeley Desktop/Brooks/Unknown/Brooks - Unknown - The Design of Design Chapter 3.pdf:pdf},
1149−isbn = {9780321702081},
1150−issn = {1478-6729},
1151−pmid = {22215642},
1152−title = {{The Design of Design Chapter 3}}
1253+@inproceedings{Brady2011a,
1254+address = {New York, New York, USA},
1255+author = {Brady, Edwin},
1256+booktitle = {Proceedings of the 5th {ACM} workshop on Programming languages meets program verification - {PLPV} '11},
1257+doi = {10.1145/1929529.1929536},
1258+file = {:home/edwin/Research/Papers/Mendeley/Brady/Brady - 2011 - Idris --- Systems Programming Meets Full Dependent Types.pdf:pdf},
1259+isbn = {9781450304870},
1260+keywords = {Dependent Types,data description,dependent types},
1261+mendeley-tags = {Dependent Types},
1262+month = jan,
1263+publisher = {ACM Press},
1264+title = {{Idris --- Systems Programming Meets Full Dependent Types}},
1265+url = {http://dl.acm.org/citation.cfm?id=1929529.1929536},
1266+year = {2011}
11531267}
1154−@inproceedings{Hancock2000,
1155−author = {Hancock, Peter and Setzer, Anton},
1156−booktitle = {{Proceedings of the 14th Annual Conference of the EACSL on Computer Science Logic}},
1157−file = {:Users/edwin/Documents/Mendeley Desktop/Hancock, Setzer/{Proceedings of the 14th Annual Conference of the EACSL on Computer Science Logic}/Hancock, Setzer - 2000 - Interactive Programs in Dependent Type Theory.pdf:pdf},
1158−isbn = {3-540-67895-6},
1159−month = aug,
1160−pages = {317--331},
1161−title = {{Interactive Programs in Dependent Type Theory}},
1162−url = {http://dl.acm.org/citation.cfm?id=647850.737221},
1163−year = {2000}
1268+@inproceedings{Kimmell2012,
1269+author = {Kimmell, G and Stump, A and {Eades III}, HD and Fu, Peng and Sheard, Tim and Weirich, S and Casinghino, C and Sj\"{o}berg, V and Collins, N and Ahn, KY},
1270+booktitle = {Programming Languages meets Program Verification},
1271+file = {:home/edwin/Research/Papers/Mendeley/Kimmell et al/Kimmell et al. - 2012 - Equational reasoning about programs with general recursion and call-by-value semantics.pdf:pdf},
1272+title = {{Equational reasoning about programs with general recursion and call-by-value semantics}},
1273+url = {http://dl.acm.org/citation.cfm?id=2103780},
1274+year = {2012}
11641275}
11651276@inproceedings{augustsson2008paradise,
11661277author = {Augustsson, L. and Mansell, H. and Sittampalam, G.},
11671278booktitle = {International Conference on Functional Programming},
1168−file = {:Users/edwin/Documents/Mendeley Desktop/Augustsson, Mansell, Sittampalam/International Conference on Functional Programming/Augustsson, Mansell, Sittampalam - 2008 - Paradise a two-stage DSL embedded in Haskell.pdf:pdf},
1279+file = {:home/edwin/Research/Papers/Mendeley/Augustsson, Mansell, Sittampalam/Augustsson, Mansell, Sittampalam - 2008 - Paradise a two-stage DSL embedded in Haskell.pdf:pdf},
11691280number = {9},
11701281pages = {225--228},
11711282publisher = {ACM},
@@ -1174,131 +1285,32 @@ url = {http://dl.acm.org/citation.cfm?id=1411203.1411236},
11741285volume = {43},
11751286year = {2008}
11761287}
1177−@misc{Abel1998,
1178−author = {Abel, Andreas},
1179−booktitle = {Language},
1180−file = {:Users/edwin/Documents/Mendeley Desktop/Abel/Language/Abel - 1998 - foetus - Termination Checker for Simple Functional Programs.pdf:pdf},
1181−title = {{foetus - Termination Checker for Simple Functional Programs}},
1182−year = {1998}
1183−}
1184−@article{Jones1999,
1185−abstract = {Haskell benefits from a sophisticated type system, but implementors, programmers, and researchers suffer because it has no formal description. To remedy this shortcoming, we present a Haskell program that implements a Haskell typechecker, thus providing a mathematically rigorous specification in a notation that is familiar to Haskell users. We expect this program to fill a serious gap in current descriptions of Haskell, both as a starting point for discussions about existing features of the type system, and as a platform from which to explore new proposals.},
1186−author = {Jones, Mark P},
1187−journal = {October},
1188−publisher = {Citeseer},
1189−title = {{Typing Haskell in Haskell}},
1190−url = {http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.134.7274&amp;rep=rep1&amp;type=pdf},
1191−year = {1999}
1192−}
1193−@inproceedings{morris2006exploring,
1194−author = {Morris, P. and Altenkirch, T. and McBride, C.},
1195−booktitle = {Types for Proofs and Programs},
1196−file = {:Users/edwin/Documents/Mendeley Desktop/Morris, Altenkirch, McBride/Types for Proofs and Programs/Morris, Altenkirch, McBride - 2006 - Exploring the regular tree types.pdf:pdf},
1197−pages = {252--267},
1198−publisher = {Springer},
1199−title = {{Exploring the regular tree types}},
1200−url = {http://www.springerlink.com/index/f9p1317716614834.pdf},
1201−year = {2006}
1202−}
1203−@inproceedings{Sheard2005,
1204−address = {New York, New York, USA},
1205−author = {Sheard, Tim},
1206−booktitle = {Proceedings of the 2005 ACM SIGPLAN workshop on Haskell - Haskell '05},
1207−doi = {10.1145/1088348.1088356},
1208−file = {:Users/edwin/Documents/Mendeley Desktop/Sheard/Proceedings of the 2005 ACM SIGPLAN workshop on Haskell - Haskell '05/Sheard - 2005 - Putting curry-howard to work.pdf:pdf},
1209−isbn = {159593071X},
1210−keywords = {GADT,curry-howard isomorphism,extensional kind system,haskell,logic},
1211−month = sep,
1212−pages = {74--85},
1213−publisher = {ACM Press},
1214−title = {{Putting curry-howard to work}},
1215−url = {http://dl.acm.org/citation.cfm?id=1088348.1088356},
1288+@misc{altenkirch2005dependent,
1289+author = {Altenkirch, T. and McBride, C. and McKinna, J.},
1290+booktitle = {Manuscript, available online},
1291+file = {:home/edwin/Research/Papers/Mendeley/Altenkirch, McBride, McKinna/Altenkirch, McBride, McKinna - 2005 - Why dependent types matter.pdf:pdf},
1292+title = {{Why dependent types matter}},
1293+url = {http://www.cs.nott.ac.uk/$\sim$txa/talks/splst11.pdf},
12161294year = {2005}
12171295}
1218−@misc{Interface2012a,
1219−author = {Kreibich, Jay A.},
1220−doi = {10.1093/epirev/mxr031},
1221−file = {:Users/edwin/Documents/Mendeley Desktop/Kreibich/Unknown/Kreibich - Unknown - Using SQLite Chapter 7.pdf:pdf},
1222−isbn = {9781449394592},
1223−issn = {1478-6729},
1224−pmid = {22215642},
1225−title = {{Using SQLite Chapter 7}}
1226−}
1227−@book{The2012,
1228−author = {Hunt, Andrew and Thomas, David},
1229−booktitle = {Carcinogenesis},
1230−doi = {10.1093/carcin/bgs054},
1231−file = {:Users/edwin/Documents/Mendeley Desktop/Hunt, Thomas/Carcinogenesis/Hunt, Thomas - Unknown - The Pragmatic Programmer Chapter 3.pdf:pdf},
1232−isbn = {020161622X},
1233−issn = {1460-2180},
1234−number = {3},
1235−pmid = {22383472},
1236−title = {{The Pragmatic Programmer Chapter 3}},
1237−url = {http://www.ncbi.nlm.nih.gov/pubmed/22383472},
1238−volume = {33}
1239−}
1240−@misc{Brady2012b,
1241−author = {Brooks, Fred},
1242−doi = {10.1093/epirev/mxr031},
1243−file = {:Users/edwin/Documents/Mendeley Desktop/Brooks/Unknown/Brooks - Unknown - The Design of Design Chapter 2.pdf:pdf},
1244−isbn = {9780321702081},
1245−issn = {1478-6729},
1246−pmid = {22215642},
1247−title = {{The Design of Design Chapter 2}}
1248−}
1249−@inproceedings{Levitation2010,
1250−author = {Chapman, James and Dagand, Pierre-Evariste and McBride, Conor and Morris, Peter},
1251−booktitle = {{15th ACM SIGPLAN International Conference on Functional programming (ICFP '10)}},
1252−doi = {10.1145/1932681.1863547},
1253−file = {:Users/edwin/Documents/Mendeley Desktop/Chapman et al/{15th ACM SIGPLAN International Conference on Functional programming (ICFP '10)}/Chapman et al. - 2010 - The gentle art of levitation.pdf:pdf},
1254−isbn = {978-1-60558-794-3},
1255−issn = {03621340},
1256−keywords = {Dependent Types,data structure,metaprogramming,monads,proof assistants,type systems},
1257−mendeley-tags = {Dependent Types},
1258−month = sep,
1259−number = {9},
1260−title = {{The gentle art of levitation}},
1261−url = {http://dl.acm.org/citation.cfm?id=1932681.1863547},
1262−volume = {45},
1263−year = {2010}
1264−}
1265−@inproceedings{Xi1999,
1266−abstract = {Note: OCR errors may be found in this Reference List extracted from the full text article. ACM has opted to expose the complete List rather than only correct and linked references.},
1267−author = {Xi, Hongwei and Pfenning, Frank},
1268−booktitle = {Proceedings of the 26th ACM SIGPLANSIGACT symposium on Principles of programming languages POPL 99},
1269−doi = {10.1145/292540.292560},
1270−file = {:Users/edwin/Documents/Mendeley Desktop/Xi, Pfenning/Proceedings of the 26th ACM SIGPLANSIGACT symposium on Principles of programming languages POPL 99/Xi, Pfenning - 1999 - Dependent types in practical programming.pdf:pdf},
1271−isbn = {1581130953},
1272−issn = {07439016},
1273−keywords = {Dependent Types},
1274−mendeley-tags = {Dependent Types},
1275−organization = {Carnegie Mellon University},
1276−pages = {214--227},
1277−publisher = {ACM Press},
1278−series = {POPL '99},
1279−title = {{Dependent types in practical programming}},
1280−url = {http://portal.acm.org/citation.cfm?doid=292540.292560},
1281−volume = {26},
1296+@inproceedings{augustsson1999exercise,
1297+author = {Augustsson, L. and Carlsson, M.},
1298+booktitle = {In Workshop on Dependent Types in Programming, Gothenburg},
1299+keywords = {Depe},
1300+mendeley-tags = {Depe},
1301+publisher = {Citeseer},
1302+title = {{An exercise in dependent types: A well-typed interpreter}},
1303+url = {http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.39.2895},
12821304year = {1999}
12831305}
1284−@inproceedings{Brady2003,
1285−author = {Brady, Edwin and McBride, Conor and McKinna, James},
1286−booktitle = {Types for Proofs and Programs {(TYPES 2003)}},
1287−file = {:Users/edwin/Documents/Mendeley Desktop/Brady, McBride, McKinna/Types for Proofs and Programs {(TYPES 2003)}/Brady, McBride, McKinna - 2003 - Inductive families need not store their indices.pdf:pdf},
1288−keywords = {Dependent Types},
1289−mendeley-tags = {Dependent Types},
1290−title = {{Inductive families need not store their indices}},
1291−url = {http://www.springerlink.com/index/WBXJJG717N2W3NU2.pdf},
1292−year = {2003}
1293−}
1294−@inproceedings{fisher2005pads,
1295−author = {Fisher, K. and Gruber, R.},
1296−booktitle = {ACM SIGPLAN Notices},
1306+@article{Swierstra2011,
1307+author = {Swierstra, W},
1308+file = {:home/edwin/Research/Papers/Mendeley/Swierstra/Swierstra - 2011 - Sorted Verifying the Problem of the {Dutch National} Flag in {Agda}.pdf:pdf},
1309+journal = {Journal of Functional Programming},
12971310number = {6},
1298−pages = {295--304},
1299−publisher = {ACM},
1300−title = {{PADS: a domain-specific language for processing ad hoc data}},
1301−url = {http://dl.acm.org/citation.cfm?id=1065046},
1302−volume = {40},
1303−year = {2005}
1311+pages = {575----583},
1312+title = {{Sorted: Verifying the Problem of the {Dutch National} Flag in {Agda}}},
1313+url = {http://journals.cambridge.org/abstract_S0956796811000207},
1314+volume = {21},
1315+year = {2011}
13041316}
impl-paper/typechecking.tex+4−11
@@ -320,7 +320,8 @@ consisting of a type declaration followed by one or more pattern clauses:
320320}
321321}
322322
323−A pattern clause consists of a list of pattern variable bindings,
323+A pattern clause consists of a list of pattern variable bindings, introduced by
324+$\RW{var}$,
324325and a left and right hand side, both of which
325326are \TT{} expressions. Each side is type checked relative to the variable bindings,
326327and the types of each side must be convertible. Additionally, the
@@ -462,7 +463,7 @@ a tree of case expressions~\cite{Augustsson1985}.
462463
463464\subsection{Totality checking}
464465
465−In order to ensure termination of type checking, and therefore its decidability,
466+In order to ensure termination of type checking
466467we must distinguish terms for which evaluation definitely terminates, and
467468those which may diverge. \TT{} takes a simple but pragmatic and
468469effective approach to termination
@@ -473,20 +474,12 @@ partial. The syntactic constraint we use is that a recursive call in a pattern
473474clause must have an argument which is structurally smaller than an input argument
474475in the same position. \TT{} also marks functions which do not cover all possible
475476inputs as partial. This totality checking is independent of the rest of the type
476−theory, and can be extended in future.
477+theory, and can be extended.
477478
478479This approach, separating the termination requirement from the type theory, means that
479480an \Idris{} programmer makes the decision about the importance of totality for each
480481function rather than having the totality requirement imposed by the type theory.
481482
482−\subsection{\TT{} examples}
483−
484−\todo[inline]{
485−\TT{} as a more general purpose intermediate language --- superset of System $\mathcal{F}$
486−for example. Primitive operators. A couple of example programs (derived from high
487−level examples in e.g. ML?).
488−}
489−
490483\subsection{From \Idris{} to \TT{}}
491484
492485\TT{} is a very small language, consisting only of data declarations and pattern matching