PLDI '88 Proceedings of the ACM SIGPLAN 1988 conference on Programming Language design and Implementation
POPL '90 Proceedings of the 17th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
A framework for defining logics
Journal of the ACM (JACM)
Implementing typed intermediate languages
ICFP '98 Proceedings of the third ACM SIGPLAN international conference on Functional programming
From system F to typed assembly language
ACM Transactions on Programming Languages and Systems (TOPLAS)
Proceedings of the sixth ACM SIGPLAN international conference on Functional programming
System Description: Twelf - A Meta-Logical Framework for Deductive Systems
CADE-16 Proceedings of the 16th International Conference on Automated Deduction: Automated Deduction
Explicit substitutions in the reduction of lambda terms
Proceedings of the 5th ACM SIGPLAN international conference on Principles and practice of declaritive programming
FreshML: programming with binders made simple
ICFP '03 Proceedings of the eighth ACM SIGPLAN international conference on Functional programming
Nominal logic, a first order theory of names and binding
Information and Computation - TACS 2001
On equivalence and canonical forms in the LF type theory
ACM Transactions on Computational Logic (TOCL)
Proceedings of the 35th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Boxes go bananas: Encoding higher-order abstract syntax with parametric polymorphism*
Journal of Functional Programming
ACM Transactions on Computational Logic (TOCL)
Nominal Techniques in Isabelle/HOL
Journal of Automated Reasoning
A type-preserving compiler in Haskell
Proceedings of the 13th ACM SIGPLAN international conference on Functional programming
Parametric higher-order abstract syntax for mechanized semantics
Proceedings of the 13th ACM SIGPLAN international conference on Functional programming
Compiling pattern matching to good decision trees
Proceedings of the 2008 ACM SIGPLAN workshop on ML
Extraction in Coq: An Overview
CiE '08 Proceedings of the 4th conference on Computability in Europe: Logic and Theory of Algorithms
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)
Formal verification of a realistic compiler
Communications of the ACM - Barbara Liskov: ACM's A.M. Turing Award Winner
A universe of binding and computation
Proceedings of the 14th ACM SIGPLAN international conference on Functional programming
Singleton types here, singleton types there, singleton types everywhere
Proceedings of the 4th ACM SIGPLAN workshop on Programming languages meets program verification
TYPES'02 Proceedings of the 2002 international conference on Types for proofs and programs
A fresh look at programming with names and binders
Proceedings of the 15th ACM SIGPLAN international conference on Functional programming
Higher-order dynamic pattern unification for dependent types and records
TLCA'11 Proceedings of the 10th international conference on Typed lambda calculi and applications
Hobbits for Haskell: a library for higher-order encodings in functional programming languages
Proceedings of the 4th ACM symposium on Haskell
Journal of Automated Reasoning
Programming with binders and indexed data-types
POPL '12 Proceedings of the 39th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Beluga: a framework for programming and reasoning with deductive systems (system description)
IJCAR'10 Proceedings of the 5th international conference on Automated Reasoning
Hi-index | 0.00 |
Binders in data-structures representing code or proofs can be represented in a variety of ways, from low-level first-order representations such as de Bruijn indices to higher-order abstract syntax (HOAS), with nominal logic somewhere in-between. HOAS is arguably the cleanest and highest-level representation but comes with significant problems in expressiveness and efficiency. The Beluga language addresses this expressiveness problem by providing a powerful pattern matching facility as well as explicit control over contexts. This work aims to solve one important efficiency concern by showing how to compile Beluga down to lower-level primitives. It does so by compiling Beluga's binders into an intermediate first-order representation that abstracts over the eventual low-level representation, and by adapting ML-style pattern compilation to the more general case of Beluga's patterns. As an important side benefit, our work clarifies the connection between programming with HOAS in Beluga and programming with first-order approaches based on names.