PLDI '88 Proceedings of the ACM SIGPLAN 1988 conference on Programming Language design and Implementation
PX: a computational logic
Handbook of logic in computer science (vol. 2)
A variable typed logic of effects
Information and Computation
Dependent types in practical programming
Proceedings of the 26th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Primitive recursion for higher-order abstract syntax
Theoretical Computer Science
Meta-programming with names and necessity
Proceedings of the seventh ACM SIGPLAN international conference on Functional programming
Dependent Types for Program Termination Verification
Higher-Order and Symbolic Computation
Higher-Order Abstract Syntax with Induction in Coq
LPAR '94 Proceedings of the 5th International Conference on Logic Programming and Automated Reasoning
Higher-Order Abstract Syntax in Coq
TLCA '95 Proceedings of the Second International Conference on Typed Lambda Calculi and Applications
Combining Higher Order Abstract Syntax with Tactical Theorem Proving and (Co)Induction
TPHOLs '02 Proceedings of the 15th International Conference on Theorem Proving in Higher Order Logics
A Metalanguage for Programming with Bound Names Modulo Renaming
MPC '00 Proceedings of the 5th International Conference on Mathematics of Program Construction
A Logic for Reasoning with Higher-Order Abstract Syntax
LICS '97 Proceedings of the 12th Annual IEEE Symposium on Logic in Computer Science
Semantical Analysis of Higher-Order Abstract Syntax
LICS '99 Proceedings of the 14th Annual IEEE Symposium on Logic in Computer Science
A Proof Theory for Generic Judgments: An extended abstract
LICS '03 Proceedings of the 18th Annual IEEE Symposium on Logic in Computer Science
Dependent Types for Program Termination Verification
LICS '01 Proceedings of the 16th Annual IEEE Symposium on Logic in Computer Science
Dependent types in practical programming
Dependent types in practical programming
de Bruijn notation as a nested datatype
Journal of Functional Programming
A definitional approach to primitivexs recursion over higher order abstract syntax
MERLIN '03 Proceedings of the 2003 ACM SIGPLAN workshop on Mechanized reasoning about languages with variable binding
Combining programming with theorem proving
Proceedings of the tenth ACM SIGPLAN international conference on Functional programming
The Calculi of Lambda Conversion. (AM-6) (Annals of Mathematics Studies)
The Calculi of Lambda Conversion. (AM-6) (Annals of Mathematics Studies)
The ∇-calculus. functional programming with higher-order encodings
TLCA'05 Proceedings of the 7th international conference on Typed Lambda Calculi and Applications
A Formalization of Strong Normalization for Simply-Typed Lambda-Calculus and System F
Electronic Notes in Theoretical Computer Science (ENTCS)
A fresh look at programming with names and binders
Proceedings of the 15th ACM SIGPLAN international conference on Functional programming
Programming with binders and indexed data-types
POPL '12 Proceedings of the 39th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Hi-index | 0.00 |
Encodings based on higher-order abstract syntax represent the variables of an object-language as the variables of a meta-language. Such encodings allow for the reuse of α-conversion, substitution and hypothetical judgments already defined in the meta-language and thus often lead to simple and natural formalization. However, it is also well-known that there are some inherent difficulties with higher-order abstract syntax in supporting recursive definitions.We demonstrate a novel approach to explicitly combining higher-order abstract syntax with first-order abstract syntax that makes use of a (restricted) form of dependent types. With this combination, we can readily define recursive functions over first-order abstract syntax while ensuring the correctness of these functions through higher-order abstract syntax. We present an implementation of substitution and a verified evaluator for pure untyped call-by-value λ-calculus.