Coq à la Carte - A Practical Approach to Modular Syntax with Binders
The mechanisation of the meta-theory of programming languages is still considered hard and requires considerable effort. When formalising properties of the extension of a language, one hence wants to reuse definitions and proofs. But type-theoretic proof assistants use inductive types and predicates to formalise syntax and type systems, and these definitions are closed to extensions. Available approaches for modular syntax are either inapplicable to type theory or add a layer of indirectness by requiring complicated encodings of types.
We present a concise, transparent, and accessible approach to modular syntax with binders by adapting Swierstra’s Data Types à la Carte approach to the Coq proof assistant in an ad-hoc way. Our approach relies on two phases of code generation: We extend the Autosubst~2 tool and allow users to specify modular syntax with binders in a HOAS-like input language. To state and automatically compose modular functions and lemmas, we implement commands based on MetaCoq. We support modular syntax, functions, predicates, and theorems.
We demonstrate the practicality of our approach by modular proofs of preservation, weak head normalisation, and strong normalisation for several variants of mini-ML.
Tue 21 JanDisplayed time zone: Saskatchewan, Central America change
10:30 - 11:35 | |||
10:30 21mTalk | Coq à la Carte - A Practical Approach to Modular Syntax with Binders CPP DOI Pre-print Media Attached | ||
10:51 21mTalk | A Mechanized Formalization of GraphQL CPP Tomás Díaz IMFD Chile, Federico Olmedo University of Chile & IMFD Chile, Éric Tanter University of Chile DOI Pre-print Media Attached File Attached | ||
11:13 21mTalk | ConCert: A Smart Contract Certification Framework in Coq CPP Danil Annenkov Concordium Blockchain Research Center, Aarhus University, Jakob Botsch Nielsen Concordium Blockchain Research Center, Aarhus University, Bas Spitters Concordium Blockchain Research Center, Aarhus University DOI Pre-print Media Attached File Attached |