[go: up one dir, main page]

Article Dans Une Revue Journal of Automated Reasoning Année : 2020
The MetaCoq Project
1 PI.R2 - Design, study and implementation of languages for proofs and programs (8 Place Aurélie Nemours 75205 Paris Cedex 13 - France)
"> PI.R2 - Design, study and implementation of languages for proofs and programs
2 BedRock Systems Inc. (États-Unis)
"> BedRock Systems Inc.
3 LS2N - équipe GALLINETTE - Gallinette : vers une nouvelle génération d'assistant à la preuve (France)
"> LS2N - équipe GALLINETTE - Gallinette : vers une nouvelle génération d'assistant à la preuve
4 STAMP - Sûreté du logiciel et Preuves Mathématiques Formalisées (2004 route des Lucioles BP 93 06902 Sophia Antipolis - France)
"> STAMP - Sûreté du logiciel et Preuves Mathématiques Formalisées
5 Universität des Saarlandes [Saarbrücken] = Saarland University [Saarbrücken] (Universität des Saarlandes Campus D-66123 Saarbrücken - Allemagne) "> Universität des Saarlandes [Saarbrücken] = Saarland University [Saarbrücken]

Résumé

The MetaCoq project aims to provide a certified meta-programming environment in Coq. It builds on Template-Coq, a plugin for Coq originally implemented by Malecha (2014), which provided a reifier for Coq terms and global declarations, as represented in the Coq kernel, as well as a denotation command. Recently, it was used in the CertiCoq certified compiler project (Anand et al., 2017), as its front-end language, to derive parametricity properties (Anand and Morrisett, 2018). However, the syntax lacked semantics, be it typing semantics or operational semantics, which should reflect, as formal specifications in Coq, the semantics of Coq's type theory itself. The tool was also rather bare bones, providing only rudimentary quoting and unquoting commands. We generalize it to handle the entire Polymorphic Calculus of Cumulative Inductive Constructions (pCUIC), as implemented by Coq, including the kernel's declaration structures for definitions and inductives, and implement a monad for general manipulation of Coq's logical environment. We demonstrate how this setup allows Coq users to define many kinds of general purpose plugins, whose correctness can be readily proved in the system itself, and that can be run efficiently after extraction. We give a few examples of implemented plugins, including a parametricity translation and a certifying extraction to call-by-value λ-calculus. We also advocate the use of MetaCoq as a foundation for higher-level tools.
Fichier principal
Vignette du fichier
The_MetaCoq_Project.pdf (618) Télécharger le fichier
Origine Fichiers produits par l'(les) auteur(s)
Loading...

Dates et versions

hal-02167423 , version 1 (27-06-2019)
Identifiants

Citer

Matthieu Sozeau, Abhishek Anand, Simon Boulier, Cyril Cohen, Yannick Forster, et al.. The MetaCoq Project. Journal of Automated Reasoning, 2020, ⟨10.1007/s10817-019-09540-0⟩. ⟨hal-02167423⟩
1885 Consultations
1816 Téléchargements

Altmetric

Partager

More