Results 1 
6 of
6
Scrap your Nameplate  Functional Pearl
"... Recent research has shown how boilerplate code, or repetitive code for traversing datatypes, can be eliminated using generic programming techniques already available within some implementations of Haskell. One particularly intractable kind of boilerplate is nameplate, or code having to do with names ..."
Abstract

Cited by 17 (5 self)
 Add to MetaCart
Recent research has shown how boilerplate code, or repetitive code for traversing datatypes, can be eliminated using generic programming techniques already available within some implementations of Haskell. One particularly intractable kind of boilerplate is nameplate, or code having to do with names, namebinding, and fresh name generation. One reason for the difficulty is that operations on data structures involving names, as usually implemented, are not regular instances of standard map, fold , or zip operations. However, in nominal abstract syntax, an alternative treatment of names and binding based on swapping, operations such as #equivalence, captureavoiding substitution, and free variable set functions are much betterbehaved.
Dependent Types Ensure Partial Correctness of Theorem Provers
, 2002
"... Static type systems in programming languages allow many errors to be detected at compile time that wouldn't be detected until runtime otherwise. Dependent types are more expressive than the type systems in most programming languages, so languages that have them should allow programmers to detect mor ..."
Abstract

Cited by 12 (0 self)
 Add to MetaCart
Static type systems in programming languages allow many errors to be detected at compile time that wouldn't be detected until runtime otherwise. Dependent types are more expressive than the type systems in most programming languages, so languages that have them should allow programmers to detect more errors earlier. In this paper, using the Twelf system, we show that dependent types in the logic programming setting can be used to ensure partial correctness of programs which implement theorem provers, and thus avoid runtime errors in proof search and proof construction. We present two examples: a tacticstyle interactive theorem prover and a unionfind decision procedure.
Generating generic functions
 In WGP ’06: Proceedings of the 2006 ACM SIGPLAN workshop on Generic programming
, 2006
"... www.cs.uu.nl ..."
A machine checked model of MGU axioms: applications of finite maps and functional induction
, 2009
"... The most general unifier (MGU) of a pair of terms can be specified by four axioms. In this paper we generalize the standard presentation of the axioms to specify the MGU of a list of equational constraints and we formally verify that the unification algorithm satisfies the axioms. Our constraints ar ..."
Abstract

Cited by 1 (1 self)
 Add to MetaCart
The most general unifier (MGU) of a pair of terms can be specified by four axioms. In this paper we generalize the standard presentation of the axioms to specify the MGU of a list of equational constraints and we formally verify that the unification algorithm satisfies the axioms. Our constraints are equalities between terms in a language of simple types. We model substitutions as finite maps from the Coq library Coq.FSets.FMapInterface. Since the unification algorithm is general recursive we show termination using a lexicographic ordering on lists of constraints. Coq’s method of functional induction is the main proof technique used in proving the axioms. 1
Reflection in Agda Paul van der Walt M.Sc. thesis ICA3120805
, 2012
"... This project explores the recent addition to Agda enabling reflection, in the style of Lisp, MetaML, and Template Haskell. It illustrates several possible applications of reflection that arise in dependently typed programming, and details the limitations of the current implementation of reflection. ..."
Abstract
 Add to MetaCart
This project explores the recent addition to Agda enabling reflection, in the style of Lisp, MetaML, and Template Haskell. It illustrates several possible applications of reflection that arise in dependently typed programming, and details the limitations of the current implementation of reflection. Examples of typesafe metaprograms are given that illustrate the power of reflection coupled with a dependently typed language. Among other things the limitations inherent in having quote and unquote implemented as keywords are highlighted. The fact that lambda terms are returned without typing information is discussed, and a solution is presented. Also provided is a detailed users ’ guide to the reflection API and a library of working code examples to illustrate how various common tasks can be performed, along with suggestions for an updated reflection API in a future version of Agda. “Using Coq is like doing brain surgery over the telephone.”
Djinn, Monotonic (extended abstract)
"... Dyckhoff’s algorithm for contractionfree proof search in intuitionistic propositional logic (popularized by Augustsson as the typedirected program synthesis tool, Djinn) is a simple program with a rather tricky termination proof [4]. In this talk, I describe my efforts to reduce this program to a ..."
Abstract
 Add to MetaCart
Dyckhoff’s algorithm for contractionfree proof search in intuitionistic propositional logic (popularized by Augustsson as the typedirected program synthesis tool, Djinn) is a simple program with a rather tricky termination proof [4]. In this talk, I describe my efforts to reduce this program to a steady structural descent. On the way, I shall present an attempt at a compositional approach to explaining termination, via a uniform presentation of memoization. 1