PLDI '88 Proceedings of the ACM SIGPLAN 1988 conference on Programming Language design and Implementation
A framework for defining logics
Journal of the ACM (JACM)
Higher-order rewriting with dependent types (lambda calculus)
Higher-order rewriting with dependent types (lambda calculus)
Nominal logic, a first order theory of names and binding
Information and Computation - TACS 2001
A Sequent Calculus for Nominal Logic
LICS '04 Proceedings of the 19th Annual IEEE Symposium on Logic in Computer Science
Theoretical Computer Science
A proof theory for generic judgments
ACM Transactions on Computational Logic (TOCL)
Mechanizing metatheory in a logical framework
Journal of Functional Programming
Nominal Techniques in Isabelle/HOL
Journal of Automated Reasoning
Combining Generic Judgments with Recursive Definitions
LICS '08 Proceedings of the 2008 23rd Annual IEEE Symposium on Logic in Computer Science
ACM Transactions on Programming Languages and Systems (TOPLAS)
The Bedwyr System for Model Checking over Syntactic Expressions
CADE-21 Proceedings of the 21st international conference on Automated Deduction: Automated Deduction
Reasoning in Abella about Structural Operational Semantics Specifications
Electronic Notes in Theoretical Computer Science (ENTCS)
A simpler proof theory for nominal logic
FOSSACS'05 Proceedings of the 8th international conference on Foundations of Software Science and Computation Structures
Avoiding equivariance in alpha-prolog
TLCA'05 Proceedings of the 7th international conference on Typed Lambda Calculi and Applications
Information and Computation
Proof pearl: abella formalization of λ-calculus cube property
CPP'12 Proceedings of the Second international conference on Certified Programs and Proofs
Hi-index | 0.00 |
Nominal abstract syntax and higher-order abstract syntax provide a means for describing binding structure which is higher-level than traditional techniques. These approaches have spawned two different communities which have developed along similar lines but with subtle differences that make them difficult to relate. The nominal abstract syntax community has devices like names, freshness, name-abstractions with variable capture, and the new-quantifier, whereas the higher-order abstract syntax community has devices like lambda-binders, lambda-conversion, raising, and the nabla-quantifier. This paper aims to unify these communities and provide a concrete correspondence between their different devices. In particular, we develop a semantics-preserving translation from alpha-Prolog, a nominal abstract syntax based logic programming language, to G-, a higher-order abstract syntax based logic programming language. We also discuss higher-order judgments, a common and powerful tool for specifications with higher-order abstract syntax, and we show how these can be incorporated into G-. This establishes G- as a language with the power of higher-order abstract syntax, the fine-grained variable control of nominal specifications, and the desirable properties of higher-order judgments.