Practical Programming with Higher-Order Encodings and Dependent Types

  • Adam Poswolsky
  • Carsten Schürmann
Part of the Lecture Notes in Computer Science book series (LNCS, volume 4960)


Higher-order abstract syntax (HOAS) refers to the technique of representing variables of an object-language using variables of a meta-language. The standard first-order alternatives force the programmer to deal with superficial concerns such as substitutions, whose implementation is often routine, tedious, and error-prone. In this paper, we describe the underlying calculus of Delphin. Delphin is a fully implemented functional-programming language supporting reasoning over higher-order encodings and dependent types, while maintaining the benefits of HOAS. More specifically, just as representations utilizing HOAS free the programmer from concerns of handling explicit contexts and substitutions, our system permits programming over such encodings without making these constructs explicit, leading to concise and elegant programs. To this end our system distinguishes bindings of variables intended for instantiation from those that will remain uninstantiated, utilizing a variation of Miller and Tiu’s \(\nabla\)-quantifier [1].


Operational Semantic Dependent Type Natural Deduction Logical Framework Practical Program 
These keywords were added by machine and not by the authors. This process is experimental and the keywords may be updated as the learning algorithm improves.


  1. 1.
    Miller, D., Tiu, A.: A proof theory for generic judgments. ACM Trans. on Computational Logic 6(4), 749–783 (2005)CrossRefMathSciNetGoogle Scholar
  2. 2.
    Harper, R., Honsell, F., Plotkin, G.: A framework for defining logics. Journal of the Association for Computing Machinery 40(1), 143–184 (1993)zbMATHMathSciNetGoogle Scholar
  3. 3.
    Poswolsky, A., Schürmann, C.: Extended report on Delphin: A functional programming language with higher-order encodings and dependent types. Technical Report YALEU/DCS/TR-1375, Yale University (2007)Google Scholar
  4. 4.
    Schürmann, C., Pfenning, F.: A coverage checking algorithm for LF. In: Basin, D., Wolff, B. (eds.) TPHOLs 2003. LNCS, vol. 2758, Springer, Heidelberg (2003)CrossRefGoogle Scholar
  5. 5.
    Dowek, G., Hardin, T., Kirchner, C., Pfenning, F.: Unification via explicit substitutions: The case of higher-order patterns. Rapport de Recherche 3591, INRIA (December 1998) Preliminary version appeared at JICSLP 1996 (1996)Google Scholar
  6. 6.
    Schürmann, C., Poswolsky, A., Sarnat, J.: The \(\nabla\)-calculus. Functional programming with higher-order encodings. In: Typed Lambda Calculus and Applications, TLCA (2005)Google Scholar
  7. 7.
    Pientka, B.: A type-theoretic foundation for programming with higher-order abstract syntax and first-class substitutions. In: Principles of Programming Languages, POPL (2008)Google Scholar
  8. 8.
    Gabbay, M., Pitts, A.M.: A new approach to abstract syntax with variable binding. Formal Aspects Computing 13(3-5), 341–363 (2002)zbMATHCrossRefGoogle Scholar
  9. 9.
    Pottier, F.: Static name control for FreshML. In: Twenty-Second Annual IEEE Symposium on Logic In Computer Science (LICS 2007), Wroclaw, Poland (July 2007)Google Scholar

Copyright information

© Springer-Verlag Berlin Heidelberg 2008

Authors and Affiliations

  • Adam Poswolsky
    • 1
  • Carsten Schürmann
    • 2
  1. 1.Yale University 
  2. 2.IT University of Copenhagen 

Personalised recommendations