Information and Computation - Semantics of Data Types
PLDI '88 Proceedings of the ACM SIGPLAN 1988 conference on Programming Language design and Implementation
Notions of computation and monads
Information and Computation
The essence of compiling with continuations
PLDI '93 Proceedings of the ACM SIGPLAN 1993 conference on Programming language design and implementation
Basic proof theory
Coinductive axiomatization of recursive type equality and subtyping
Fundamenta Informaticae - Special issue: typed lambda-calculi and applications, selected papers
ICFP '00 Proceedings of the fifth ACM SIGPLAN international conference on Functional programming
Primitive recursion for higher-order abstract syntax
Theoretical Computer Science
MFCS '93 Proceedings of the 18th International Symposium on Mathematical Foundations of Computer Science
Higher-Order Abstract Syntax in Coq
TLCA '95 Proceedings of the Second International Conference on Typed Lambda Calculi and Applications
A Lambda-Calculus Structure Isomorphic to Gentzen-Style Sequent Calculus Structure
CSL '94 Selected Papers from the 8th International Workshop on Computer Science Logic
Definitional interpreters for higher-order programming languages
ACM '72 Proceedings of the ACM annual conference - Volume 2
Call-by-value is dual to call-by-name
ICFP '03 Proceedings of the eighth ACM SIGPLAN international conference on Functional programming
A judgmental reconstruction of modal logic
Mathematical Structures in Computer Science
Locus Solum: From the rules of logic to the logic of rules
Mathematical Structures in Computer Science
Control categories and duality: on the categorical semantics of the lambda-mu calculus
Mathematical Structures in Computer Science
Pattern matching as cut elimination
Theoretical Computer Science
Classical isomorphisms of types
Mathematical Structures in Computer Science
Proceedings of the 35th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages
ACM Transactions on Computational Logic (TOCL)
LJQ: a strongly focused calculus for intuitionistic logic
CiE'06 Proceedings of the Second conference on Computability in Europe: logical Approaches to Computational Barriers
Focusing and polarization in intuitionistic logic
CSL'07/EACSL'07 Proceedings of the 21st international conference, and Proceedings of the 16th annuall conference on Computer Science Logic
Proceedings of the 36th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Proceedings of the 3rd workshop on Programming languages meets program verification
Refinement types and computational duality
Proceedings of the 3rd workshop on Programming languages meets program verification
Focusing Strategies in the Sequent Calculus of Synthetic Connectives
LPAR '08 Proceedings of the 15th International Conference on Logic for Programming, Artificial Intelligence, and Reasoning
A Pronominal Approach to Binding and Computation
TLCA '09 Proceedings of the 9th International Conference on Typed Lambda Calculi and Applications
Efficient Intuitionistic Theorem Proving with the Polarized Inverse Method
CADE-22 Proceedings of the 22nd International Conference on Automated Deduction
LPAR'10 Proceedings of the 17th international conference on Logic for programming, artificial intelligence, and reasoning
Copatterns: programming infinite structures by observations
POPL '13 Proceedings of the 40th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Hi-index | 0.00 |
Focusing is a proof-search strategy, originating in linear logic, that elegantly eliminates inessential nondeterminism, with one byproduct being a correspondence between focusing proofs and programs with explicit evaluation order. Higher-order abstract syntax (HOAS) is a technique for representing higher-order programming language constructs (e.g., λ's) by higher-order terms at the"meta-level", thereby avoiding some of the bureaucratic headaches of first-order representations (e.g., capture-avoiding substitution). This paper begins with a fresh, judgmental analysis of focusing for intuitionistic logic (with a full suite of propositional connectives), recasting the "derived rules" of focusing as iterated inductive definitions. This leads to a uniform presentation, allowing concise, modular proofs of the identity and cut principles. Then we show how this formulation of focusing induces, through the Curry-Howard isomorphism, a new kind of higher-order encoding of abstract syntax: functions are encoded by maps from patterns to expressions. Dually, values are encoded as patterns together with explicit substitutions. This gives us pattern-matching "for free", and lets us reason about a rich type system with minimal syntactic overhead. We describe how to translate the language and proof of type safety almost directly into Coq using HOAS, and finally, show how the system's modular design pays off in enabling a very simple extension with recursion and recursive types.