A mechanical proof of the Church-Rosser theorem
Journal of the ACM (JACM)
Theoretical Computer Science
PLDI '88 Proceedings of the ACM SIGPLAN 1988 conference on Programming Language design and Implementation
An algorithm for testing conversion in type theory
Logical frameworks
A framework for defining logics
Journal of the ACM (JACM)
Lambda-calculus, types and models
Lambda-calculus, types and models
Closure under alpha-conversion
TYPES '93 Proceedings of the international workshop on Types for proofs and programs
Some Lambda Calculus and Type Theory Formalized
Journal of Automated Reasoning
Journal of Automated Reasoning
Toward a foundational typed assembly language
POPL '03 Proceedings of the 30th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Proceedings of the International Conference on Typed Lambda Calculi and Applications
TLCA '93 Proceedings of the International Conference on Typed Lambda Calculi and Applications
A Formalization of the Strong Normalization Proof for System F in LEGO
TLCA '93 Proceedings of the International Conference on Typed Lambda Calculi and Applications
Higher-Order Abstract Syntax in Coq
TLCA '95 Proceedings of the Second International Conference on Typed Lambda Calculi and Applications
A Mechanisation of Name-Carrying Syntax up to Alpha-Conversion
HUG '93 Proceedings of the 6th International Workshop on Higher Order Logic Theorem Proving and its Applications
Five Axioms of Alpha-Conversion
TPHOLs '96 Proceedings of the 9th International Conference on Theorem Proving in Higher Order Logics
TLCA '93 Proceedings of the International Conference on Typed Lambda Calculi and Applications
A formalised first-order confluence proof for the λ-calculus using one-sorted variable names
Information and Computation - RTA 2001
Foundational Proof-Carrying Code
LICS '01 Proceedings of the 16th Annual IEEE Symposium on Logic in Computer Science
Nominal logic, a first order theory of names and binding
Information and Computation - TACS 2001
Functional pearl: i am not a number--i am a free variable
Haskell '04 Proceedings of the 2004 ACM SIGPLAN workshop on Haskell
Formal certification of a compiler back-end or: programming a compiler with a proof assistant
Conference record of the 33rd ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Consistency of the theory of contexts
Journal of Functional Programming
A machine-checked model for a Java-like language, virtual machine, and compiler
ACM Transactions on Programming Languages and Systems (TOPLAS)
Towards a mechanized metatheory of standard ML
Proceedings of the 34th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Ott: effective tool support for the working semanticist
ICFP '07 Proceedings of the 12th ACM SIGPLAN international conference on Functional programming
Mechanizing metatheory in a logical framework
Journal of Functional Programming
Nominal Techniques in Isabelle/HOL
Journal of Automated Reasoning
Barendregt's Variable Convention in Rule Inductions
CADE-21 Proceedings of the 21st international conference on Automated Deduction: Automated Deduction
Mechanized metatheory for the masses: the PoplMark challenge
TPHOLs'05 Proceedings of the 18th international conference on Theorem Proving in Higher Order Logics
Ott: effective tool support for the working semanticist
ICFP '07 Proceedings of the 12th ACM SIGPLAN international conference on Functional programming
Nominal Techniques in Isabelle/HOL
Journal of Automated Reasoning
Verified enforcement of stateful information release policies
Proceedings of the third ACM SIGPLAN workshop on Programming languages and analysis for security
AURA: a programming language for authorization and audit
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
SASyLF: an educational proof assistant for language theory
Proceedings of the 2008 international workshop on Functional and declarative programming in education
Implementation and Application of Functional Languages
Revisiting Cut-Elimination: One Difficult Proof Is Really a Proof
RTA '08 Proceedings of the 19th international conference on Rewriting Techniques and Applications
TPHOLs '08 Proceedings of the 21st International Conference on Theorem Proving in Higher Order Logics
Formalizing Soundness of Contextual Effects
TPHOLs '08 Proceedings of the 21st International Conference on Theorem Proving in Higher Order Logics
Reasoning in Abella about Structural Operational Semantics Specifications
Electronic Notes in Theoretical Computer Science (ENTCS)
Verified enforcement of stateful information release policies
ACM SIGPLAN Notices
Proceedings of the 2009 ACM SIGPLAN conference on Programming language design and implementation
Syntax for Free: Representing Syntax with Binding Using Parametricity
TLCA '09 Proceedings of the 9th International Conference on Typed Lambda Calculi and Applications
Proceedings of the Fourth International Workshop on Logical Frameworks and Meta-Languages: Theory and Practice
Formal SOS-Proofs for the Lambda-Calculus
Electronic Notes in Theoretical Computer Science (ENTCS)
A universe of binding and computation
Proceedings of the 14th ACM SIGPLAN international conference on Functional programming
QML: explicit first-class polymorphism for ML
Proceedings of the 2009 ACM SIGPLAN workshop on ML
TPHOLs '09 Proceedings of the 22nd International Conference on Theorem Proving in Higher Order Logics
Functional Active Objects: Typing and Formalisation
Electronic Notes in Theoretical Computer Science (ENTCS)
A verified compiler for an impure functional language
Proceedings of the 37th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages
A relational modal logic for higher-order stateful ADTs
Proceedings of the 37th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Proceedings of the 5th ACM SIGPLAN workshop on Types in language design and implementation
Ott: Effective tool support for the working semanticist
Journal of Functional Programming
External and internal syntax of the λ-calculus
Journal of Symbolic Computation
Composing safely: a type system for aspects
SC'08 Proceedings of the 7th international conference on Software composition
Higher-order representation of substructural logics
Proceedings of the 15th ACM SIGPLAN international conference on Functional programming
Mechanizing the metatheory of LF
ACM Transactions on Computational Logic (TOCL)
ECOOP'10 Proceedings of the 24th European conference on Object-oriented programming
Refinement types for secure implementations
ACM Transactions on Programming Languages and Systems (TOPLAS)
Reasoning about computations using two-levels of logic
APLAS'10 Proceedings of the 8th Asian conference on Programming languages and systems
Relational parametricity for a polymorphic linear lambda calculus
APLAS'10 Proceedings of the 8th Asian conference on Programming languages and systems
A certified implementation of ML with structural polymorphism
APLAS'10 Proceedings of the 8th Asian conference on Programming languages and systems
Electronic Notes in Theoretical Computer Science (ENTCS)
Proceedings of the 16th ACM SIGPLAN international conference on Functional programming
Recursion principles for syntax with bindings and substitution
Proceedings of the 16th ACM SIGPLAN international conference on Functional programming
Journal of Automated Reasoning
Formalizing the LLVM intermediate representation for verified program transformations
POPL '12 Proceedings of the 39th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Self-certification: bootstrapping certified typecheckers in F* with Coq
POPL '12 Proceedings of the 39th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages
ITP'10 Proceedings of the First international conference on Interactive Theorem Proving
Mechanizing the metatheory of mini-XQuery
CPP'11 Proceedings of the First international conference on Certified Programs and Proofs
ASPfun: A typed functional active object calculus
Science of Computer Programming
A church-style intermediate language for MLF
Theoretical Computer Science
GMETA: a generic formal metatheory framework for first-order representations
ESOP'12 Proceedings of the 21st European conference on Programming Languages and Systems
NFM'12 Proceedings of the 4th international conference on NASA Formal Methods
A Canonical Locally Named Representation of Binding
Journal of Automated Reasoning
A Two-Level Logic Approach to Reasoning About Computations
Journal of Automated Reasoning
ACM Transactions on Programming Languages and Systems (TOPLAS)
A locally nameless representation for a natural semantics for lazy evaluation
ICTAC'12 Proceedings of the 9th international conference on Theoretical Aspects of Computing
Mechanized semantics for compiler verification
CPP'12 Proceedings of the Second international conference on Certified Programs and Proofs
POPL '13 Proceedings of the 40th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Automatically generated infrastructure for de bruijn syntaxes
ITP'13 Proceedings of the 4th international conference on Interactive Theorem Proving
Mechanizing Metatheory Without Typing Contexts
Journal of Automated Reasoning
Journal of Computer Security - Foundational Aspects of Security
Hi-index | 0.00 |
Machine-checked proofs of properties of programming languages have become acritical need, both for increased confidence in large and complex designsand as a foundation for technologies such as proof-carrying code. However, constructing these proofs remains a black art, involving many choices in the formulation of definitions and theorems that make a huge cumulative difference in the difficulty of carrying out large formal developments. There presentation and manipulation of terms with variable binding is a key issue. We propose a novel style for formalizing metatheory, combining locally nameless representation of terms and cofinite quantification of free variable names in inductivedefinitions of relations on terms (typing, reduction, ...). The key technical insight is that our use of cofinite quantification obviates the need for reasoning about equivariance (the fact that free names can be renamed in derivations); in particular, the structural induction principles of relations defined using cofinite quantification are strong enough for metatheoretic reasoning, and need not be explicitly strengthened. Strong inversion principles follow (automatically, in Coq) from the induction principles. Although many of the underlying ingredients of our technique have been used before, their combination here yields a significant improvement over other methodologies using first-order representations, leading to developments that are faithful to informal practice, yet require noexternal tool support and little infrastructure within the proof assistant. We have carried out several large developments in this style using the Coq proof assistant and have made them publicly available. Our developments include type soundness for System F sub; and core ML (with references, exceptions, datatypes, recursion, and patterns) and subject reduction for the Calculus of Constructions. Not only do these developments demonstrate the comprehensiveness of our approach; they have also been optimized for clarity and robustness, making them good templates for future extension.