Delphin (Dolphin)Delphin

 

horizontal rule

Home
Downloads
Publications
Contact Us

Software

Source Code:  Available Here

bulletLatest Version: Version 1.5.1, April 2008
bulletTermination-Checker included (lexicographic order of all explicit inputs)
bulletCoverage Checker implements rules in Dissertation below.
bulletCompare:  Converted examples involving First-order Logic from  Twelf (fol.elf)  into Delphin Version (fol.d).
bulletcompiled in SML/NJ v110.65
bulletDelphin Examples
bulletCompare to Elphin Examples
bulletNew:  July 30th, 2007An example of Hindley-Milner type inference is available using parameters instead of the typical references. 
bulletAvailable here.
bulletWarning:  This is an advanced example.

 

Papers

bullet Dissertation (includes Delphin user manual) (Amazon link)
bulletSimply-Typed Examples
bulletDependently-Typed Examples
bulletAdvanced Example
bullet

Adam Poswolsky and Carsten Schürmann.  System Description: Delphin -- A Functional Programmling Language for Deductive Systems (LFMTP 2008)

bulletAdam Poswolsky and Carsten Schürmann.  Programming with Higher-Order Encodings and Dependent Types.  (ESOP 2008)
bullet

Example file from Paper: esop08.d

bullet

Extended Technical Report (TR-1375) (PDF)

 

 

Previous Design of Delphin

An alternative recent design has been studied based on Temporal Logic both utilizing a modal operator and a three-tiered hierarchical system.  The simply-typed version has been formally verified in Twelf.

bullet

Adam Poswolsky.  A Temporal-Logic Approach to Functional Calculi for Dependent Types and Higher-Order Encodings.
bullet

Concise Version (PDF)

bullet

Extended Technical Report. YALEU/DCS/TR-1364  (PDF)

bullet

Twelf Code (.tar.gz)

 

Related

bullet

Miller and Tiu, A Proof Theory for Generic Judgments: An extended abstract. (PDF)
bullet

Here they present their own ∇ constructor which they use to distinguish between eigenvariables intended for instantiation from those representing scoped constants.  Their reasoning occurs over formulas with an explicit local context of scoped constants.  In our setting there is only a global context, which renders it more useful for functional programming.

bulletBrigitte Pientka. A type-theoretic foundation for programming with higher-order abstract syntax and first-class substitutions (POPL 2008)
bullet

Here they present a simply-typed system also designed to reason over higher-order encodings.  Their approach is quite opposite to our approach.  Whereas we aim to keep meta-level constructs such as context and substitution implicit, they make them explicit objects that the programmer must use.  For example, they introduce the abstraction and application of explicit context variables.  Our approach avoids this by only addressing the "relative" difference in the context using our type constructor.  They acknowledge the problem of having explicit context variables and defer the reconstruction of context variables to future work.

bullet

Dependent Types:
bullet

There are many other systems that have addressed programming with some form of Dependent Types.  Please see the paper here for a more detailed explanation.  However, they stop short of supporting higher-order encodings. 

bullet

Freshness:
bullet

Our work is also related to programming languages with freshness, such as FreshML.  They allow for limited support of higher-order abstract syntax as substitution must still be explicit, albeit easier to write.  In their work the creation of a fresh parameter is a global effect.  Interestingly, there is recent work by Pottier used to prove that names do not escape their scope.  However, in our system the creation of parameters is not a global effect and scoping is guaranteed by typing.
bullet

François Pottier.  Static name control for FreshML.  In LICS'07.

Delphin Elphin CVS Repository

horizontal rule

Home | Downloads | Publications | Contact Us

For problems or questions regarding this web contact poswolsky@cs.yale.edu.
Last updated: 02/09/09.