A framework for defining logics
Journal of the ACM (JACM)
A proof theory for generic judgments
ACM Transactions on Computational Logic (TOCL)
Static Name Control for FreshML
LICS '07 Proceedings of the 22nd Annual IEEE Symposium on Logic in Computer Science
Proceedings of the 35th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages
The ∇-calculus. functional programming with higher-order encodings
TLCA'05 Proceedings of the 7th international conference on Typed Lambda Calculi and Applications
Programming with proofs and explicit contexts
Proceedings of the 10th international ACM SIGPLAN conference on Principles and practice of declarative programming
Proceedings of the 3rd workshop on Programming languages meets program verification
Electronic Notes in Theoretical Computer Science (ENTCS)
On the Role of Names in Reasoning about λ-tree Syntax Specifications
Electronic Notes in Theoretical Computer Science (ENTCS)
System Description: Delphin -- A Functional Programming Language for Deductive Systems
Electronic Notes in Theoretical Computer Science (ENTCS)
Case Analysis of Higher-Order Data
Electronic Notes in Theoretical Computer Science (ENTCS)
The calculus of nominal inductive constructions: an intensional approach to encoding name-bindings
Proceedings of the Fourth International Workshop on Logical Frameworks and Meta-Languages: Theory and Practice
A universe of binding and computation
Proceedings of the 14th ACM SIGPLAN international conference on Functional programming
Proceedings of the 37th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Dependent types and program equivalence
Proceedings of the 37th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages
A fresh look at programming with names and binders
Proceedings of the 15th ACM SIGPLAN international conference on Functional programming
VeriML: typed computation of logical terms inside a language with effects
Proceedings of the 15th ACM SIGPLAN international conference on Functional programming
Hobbits for Haskell: a library for higher-order encodings in functional programming languages
Proceedings of the 4th ACM symposium on Haskell
2-Dimensional Directed Type Theory
Electronic Notes in Theoretical Computer Science (ENTCS)
Journal of Automated Reasoning
Static and user-extensible proof checking
POPL '12 Proceedings of the 39th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Programming with binders and indexed data-types
POPL '12 Proceedings of the 39th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Beluga: programming with dependent types, contextual data, and contexts
FLOPS'10 Proceedings of the 10th international conference on Functional and Logic Programming
Curry-Style explicit substitutions for the linear and affine lambda calculus
IJCAR'10 Proceedings of the 5th international conference on Automated Reasoning
Reasoning with higher-order abstract syntax and contexts: a comparison
ITP'10 Proceedings of the First international conference on Interactive Theorem Proving
Typed syntactic meta-programming
Proceedings of the 18th ACM SIGPLAN international conference on Functional programming
First-class substitutions in contextual type theory
Proceedings of the Eighth ACM SIGPLAN international workshop on Logical frameworks & meta-languages: theory & practice
Hi-index | 0.00 |
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 ∇-quantifier [1].