当前位置: X-MOL 学术J. Autom. Reason. › 论文详情
Our official English website, www.x-mol.net, welcomes your feedback! (Note: you will need to create a separate account there.)
The MetaCoq Project
Journal of Automated Reasoning ( IF 1.1 ) Pub Date : 2020-02-18 , DOI: 10.1007/s10817-019-09540-0
Matthieu Sozeau , Abhishek Anand , Simon Boulier , Cyril Cohen , Yannick Forster , Fabian Kunze , Gregory Malecha , Nicolas Tabareau , Théo Winterhalter

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 (Extensible proof engineering in intensional type theory, Harvard University, http://gmalecha.github.io/publication/2015/02/01/extensible-proof-engineering-in-intensional-type-theory.html, 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., in: CoqPL, Paris, France, http://conf.researchr.org/event/CoqPL-2017/main-certicoq-a-verified-compiler-for-coq, 2017), as its front-end language, to derive parametricity properties (Anand and Morrisett, in: CoqPL’18, Los Angeles, CA, USA, 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, 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 certified extraction to call-by-value λ\documentclass[12pt]{minimal} \usepackage{amsmath} \usepackage{wasysym} \usepackage{amsfonts} \usepackage{amssymb} \usepackage{amsbsy} \usepackage{mathrsfs} \usepackage{upgreek} \setlength{\oddsidemargin}{-69pt} \begin{document}$$\lambda $$\end{document}-calculus. We also advocate the use of MetaCoq as a foundation for higher-level tools.

中文翻译:

MetaCoq 项目

MetaCoq 项目旨在在 Coq 中提供经过认证的元编程环境。它建立在 Template-Coq 的基础上,它是最初由 Malecha 实现的 Coq 插件(内涵类型理论中的可扩展证明工程,哈佛大学,http://gmalecha.github.io/publication/2015/02/01/extensible-proof-engineering -in-intensional-type-theory.html, 2014),它为 Coq 术语和全局声明提供了一个 reifier,如 Coq 内核中所示,以及一个指示命令。最近,它被用于 CertiCoq 认证编译器项目(Anand 等人,在:CoqPL,巴黎,法国,http://conf.researchr.org/event/CoqPL-2017/main-certicoq-a-verified-compiler -for-coq, 2017),作为其前端语言,导出参数属性(Anand 和 Morrisett,在:CoqPL'18,美国加利福尼亚州洛杉矶,2018 年)。然而,语法缺乏语义,无论是类型语义还是操作语义,作为 Coq 中的形式规范,它们应该反映 Coq 类型理论本身的语义。该工具也相当简单,仅提供基本的引用和取消引用命令。我们将其概括为处理 Coq 实现的累积归纳构造的整个多态演算,包括内核的定义和归纳声明结构,并实现一个用于对 Coq 逻辑环境进行一般操作的 monad。我们演示了这种设置如何允许 Coq 用户定义多种通用插件,它们的正确性可以很容易地在系统本身中证明,并且可以在提取后高效运行。我们给出了一些实现插件的例子,包括参数化翻译和按值调用的认证提取 λ\documentclass[12pt]{minimal} \usepackage{amsmath} \usepackage{wasysym} \usepackage{amsfonts} \usepackage{amssymb} \usepackage{amsbsy} \usepackage {mathrsfs} \usepackage{upgreek} \setlength{\oddsidemargin}{-69pt} \begin{document}$$\lambda $$\end{document}-calculus。我们还提倡使用 MetaCoq 作为更高级别工具的基础。
更新日期:2020-02-18
down
wechat
bug