MetaCoq 1.2 for Coq 8.16
Creators
- 1. Inria
- 2. Concordium
- 3. @microsoft
- 4. Massachusetts Institute of Technology
- 5. University of Cambridge
Description
We are happy to announce release 1.2 of the MetaCoq project for Coq 8.16, available both as source and through opam. See the website for a detailed overview of the project, introductory material and related articles and presentations.
The main changes in this new version are (w.r.t. v1.1.1):
- A cleaned-up abstract environment structure for the implementation of the verified type-checker and cleaned-up canonicity and consistency theorems by @tabareau.
- A new
quotationlibrary with a work-in-progress proof of Löb's theorem by @JasonGross. - An integration of the typed erasure phase of the ConCert project by @annenkov and @mattam82. Beware, adaptation of the correctness proof is not finished and it is not integrated in the extracted pipeline of
MetaCoq Eraseyet. - Reorganization of the packages, separating plugins from theories by @tabareau.
MetaCoq integrates Template-Coq, a reification and denotation plugin for Coq terms and global declarations, a Template monad for metaprogramming (including the ability to extract these metaprograms to OCaml for efficiency), a formalisation of Coq's calculus PCUIC in Coq, a relatively efficient, sound and complete type checker for PCUIC, a verified type and proof erasure procedure from PCUIC to untyped lambda calculus and a quotation library. MetaCoq provides a low-level interface to develop certified plugins like translations, compilers or tactics in Coq itself.
You can install MetaCoq directly from sources or using opam install coq-metacoq. This release will be included in an upcoming Coq Platform.
The current release includes several subpackages, which can be compiled and installed separately if desired:
- the utils library contains extensions to the standard library (notably for reasoning with All/All-n type-valued predicates) (in directory
utils, and ascoq-metacoq-utils). - the common libraries of basic definitions for the abstract syntax trees shared by multiple languages (
common,coq-metacoq-common) - the Template-Coq quoting library and plugin (
template-coq/coq-metacoq-template) - a formalisation of meta-theoretical properties of PCUIC, the calculus underlying Coq (
pcuic/coq-metacoq-pcuic) - a verified equivalence between Template-Coq and PCUIC typing (in directory
template-pcuicand ascoq-metacoq-template-pcuic) - a total verified type-checker for Coq (
safechecker/coq-metacoq-safechecker), usable inside Coq. - a plugin interfacing with the extracted type-checker in OCaml, providing the
MetaCoq SafeCheck <term>command (safechecker-plugin,coq-metacoq-safechecker-plugin) - a verified type and proof erasure function for Coq (
erasure/coq-metacoq-erasure), usable inside Coq. - a plugin interfacing with the extracted erasure pipeline in OCaml, providing the
MetaCoq Erase <term>command (erasure-plugin,coq-metacoq-erasure-plugin) - a quoting library, allowing the quotation of terms and type derivations along with associated data structures as ASTs/terms (
quotation/coq-metacoq-quotation). - a set of example translations from Type Theory to Type Theory (
translation/coq-metacoq-translations).
A good place to start are the files demo.v, safechecker_test.v, erasure_test.v in the test-suite directory.
MetaCoq is developed by Abhishek Anand, Danil Annenkov, Jakob Botsch Nielsen, Simon Boulier, Cyril Cohen, Yannick Forster, Jason Gross, Meven Lennon-Bertrand, Kenji Maillard, Gregory Malecha, Matthieu Sozeau, Nicolas Tabareau, and Théo Winterhalter. You are welcome to contribute by opening issues and PRs. A MetaCoq Zulip stream is also available.
The MetaCoq Team
What's Changed
- Add
monad_option_mapby @JasonGross in https://github.com/MetaCoq/metacoq/pull/774 - Bring back ReflectEq instances in ReflectAst by @JasonGross in https://github.com/MetaCoq/metacoq/pull/782
- Add some template monad mapping utils by @JasonGross in https://github.com/MetaCoq/metacoq/pull/783
- Add Module Type DeclarationTypingSig by @JasonGross in https://github.com/MetaCoq/metacoq/pull/781
- isSort and isArity return bool now by @JasonGross in https://github.com/MetaCoq/metacoq/pull/785
- Move Template.TypingWf.on_option to Template.utils.MCOption.on_some_or_none by @JasonGross in https://github.com/MetaCoq/metacoq/pull/786
- Remove trailing whitespace by @JasonGross in https://github.com/MetaCoq/metacoq/pull/773
- Use
matchinon_ind_bodyby @JasonGross in https://github.com/MetaCoq/metacoq/pull/778 - Automatically trim whitespace in vscode by @yforster in https://github.com/MetaCoq/metacoq/pull/788
- Helper combinators and lemmas to typecheck pattern matches by @kyoDralliam in https://github.com/MetaCoq/metacoq/pull/787
- remove direct access to the environment and more compact interface by @tabareau in https://github.com/MetaCoq/metacoq/pull/793
- add abstract_env_leqb_level_n by @tabareau in https://github.com/MetaCoq/metacoq/pull/799
- remove need for abstract_env_ext_wf_universeb by @tabareau in https://github.com/MetaCoq/metacoq/pull/800
- Add
weakening_env_coredby @JasonGross in https://github.com/MetaCoq/metacoq/pull/801 - Add
hd_error_skipn_iff_Inby @JasonGross in https://github.com/MetaCoq/metacoq/pull/803 make -C erasure/ uninstallno longer builds code first by @JasonGross in https://github.com/MetaCoq/metacoq/pull/805- simplify abstract_env_is_consistent_correct by @tabareau in https://github.com/MetaCoq/metacoq/pull/807
- notation <# _ #> for quoting programs (global_env + term) by @kyoDralliam in https://github.com/MetaCoq/metacoq/pull/796
- remove the need for leqb_level_n_spec0_gen by @tabareau in https://github.com/MetaCoq/metacoq/pull/814
make -C safechecker/ uninstallno longer builds code first by @JasonGross in https://github.com/MetaCoq/metacoq/pull/810make uninstallno longer builds code first by @JasonGross in https://github.com/MetaCoq/metacoq/pull/811make -C pcuic/ uninstallno longer builds code first by @JasonGross in https://github.com/MetaCoq/metacoq/pull/812- Minor reorganization around
extends,fresh_globalby @JasonGross in https://github.com/MetaCoq/metacoq/pull/802 tmFixpoint combinator (without unsettingGuard Checking) by @JasonGross in https://github.com/MetaCoq/metacoq/pull/790- Turn
normalisationinto a typeclass by @JasonGross in https://github.com/MetaCoq/metacoq/pull/792 - Add
trans_one_inductive_entryby @JasonGross in https://github.com/MetaCoq/metacoq/pull/789 - Trim trailing whitespace, this time enabled instead of disabled by @yforster in https://github.com/MetaCoq/metacoq/pull/795
- use In instead of mem in abstract_env_level_mem_correct by @tabareau in https://github.com/MetaCoq/metacoq/pull/817
- Add
(only parsing)to<# x #>notation by @JasonGross in https://github.com/MetaCoq/metacoq/pull/819 - better spec for abstract_env_lookup_correct by @tabareau in https://github.com/MetaCoq/metacoq/pull/820
- Add PCUIC versions of
tmQuoteand related template monad definitions by @JasonGross in https://github.com/MetaCoq/metacoq/pull/776 - Change specification of declared constant and co by @tabareau in https://github.com/MetaCoq/metacoq/pull/822
- Allow environment weakening to reorder declarations by @JasonGross in https://github.com/MetaCoq/metacoq/pull/816
- Fail if a patch is not applicable by @yforster in https://github.com/MetaCoq/metacoq/pull/818
- Add some more utility lemmas in
All_Forallby @JasonGross in https://github.com/MetaCoq/metacoq/pull/821 - Add consistency and normalization and reorganize by @tabareau in https://github.com/MetaCoq/metacoq/pull/825
- add PCUICCasesHelper to be compiled by @kyoDralliam in https://github.com/MetaCoq/metacoq/pull/826
- the main change is reordering of context in urenaming by @tabareau in https://github.com/MetaCoq/metacoq/pull/828
- Add utils and common initial folders and reorganize code and plugins by @tabareau in https://github.com/MetaCoq/metacoq/pull/829
- Named semantics with environments for lambda box by @yforster in https://github.com/MetaCoq/metacoq/pull/832
- Don't use Type inductives for Props by @JasonGross in https://github.com/MetaCoq/metacoq/pull/836
- Allow weakening of typing across different checker configs by @JasonGross in https://github.com/MetaCoq/metacoq/pull/848
- Add some
Proof usingannotations by @JasonGross in https://github.com/MetaCoq/metacoq/pull/849 - Add WeightedGraphSig by @JasonGross in https://github.com/MetaCoq/metacoq/pull/854
- Add
tmLocateModuleandtmLocateModTypeby @JasonGross in https://github.com/MetaCoq/metacoq/pull/855 - Generalize
tmExistingInstanceacross localities by @JasonGross in https://github.com/MetaCoq/metacoq/pull/857 - Fix and generalize module quotation by @JasonGross in https://github.com/MetaCoq/metacoq/pull/856
- Add LevelSetOrdProp by @JasonGross in https://github.com/MetaCoq/metacoq/pull/858
- Add KernameSetOrdProp by @JasonGross in https://github.com/MetaCoq/metacoq/pull/859
- Fix safechecker plugin install by @4ever2 in https://github.com/MetaCoq/metacoq/pull/868
- Bump install-nix-action by @JasonGross in https://github.com/MetaCoq/metacoq/pull/866
- Add
.github/dependabot.ymlby @JasonGross in https://github.com/MetaCoq/metacoq/pull/867 - fix CI issue by running chown -R coq:coq earlier by @yforster in https://github.com/MetaCoq/metacoq/pull/870
- Rework Progress, Standardization, Canonicity and Consistency by @tabareau in https://github.com/MetaCoq/metacoq/pull/872
- Bump actions/checkout from 2 to 3 by @dependabot in https://github.com/MetaCoq/metacoq/pull/869
- Typed erasure integration by @mattam82 in https://github.com/MetaCoq/metacoq/pull/834
- Add
DeclarationTypingSigby @JasonGross in https://github.com/MetaCoq/metacoq/pull/873 - Add {LevelExpr,Constraint}SetOrdProp, LevelExprSetDecide by @JasonGross in https://github.com/MetaCoq/metacoq/pull/863
- Add some utility tactics and decidability properties by @JasonGross in https://github.com/MetaCoq/metacoq/pull/837
- Fix nix CI: erasure needs to come after template-pcuic by @JasonGross in https://github.com/MetaCoq/metacoq/pull/877
- Actually fix dependency order of packages on nix by @JasonGross in https://github.com/MetaCoq/metacoq/pull/891
- Add target to update template-coq _PluginProject.in by @JasonGross in https://github.com/MetaCoq/metacoq/pull/892
- Add modules for the eq decision routines for term and associated constants by @JasonGross in https://github.com/MetaCoq/metacoq/pull/887
- Fix ordering of template-pcuic in cachedMake by @JasonGross in https://github.com/MetaCoq/metacoq/pull/885
- Add template-pcuic as dep of erasure by @JasonGross in https://github.com/MetaCoq/metacoq/pull/884
- Make Monad a cumulative inductive type by @JasonGross in https://github.com/MetaCoq/metacoq/pull/883
- Add
Monadinstance for identity monad by @JasonGross in https://github.com/MetaCoq/metacoq/pull/881 - Generalize
Monad{Basic,}Astto work in any monad by @JasonGross in https://github.com/MetaCoq/metacoq/pull/880 - Add
Set MetaCoq Template Monad Debugby @JasonGross in https://github.com/MetaCoq/metacoq/pull/879 - Also run nix ci on the coq-8.16 branch by @JasonGross in https://github.com/MetaCoq/metacoq/pull/890
- Rename Informative to Subsingleton by @yforster in https://github.com/MetaCoq/metacoq/pull/889
- Decidability of
consistent_extension_onby @JasonGross in https://github.com/MetaCoq/metacoq/pull/838 - Add UniverseMap, UniverseMapFact by @JasonGross in https://github.com/MetaCoq/metacoq/pull/882
- Make
option_instanceuniverse polymorphic by @JasonGross in https://github.com/MetaCoq/metacoq/pull/893 - Make
on_some{,_or_none}universe polymorphic by @JasonGross in https://github.com/MetaCoq/metacoq/pull/896 - Make MonadAst universe polymorphic by @JasonGross in https://github.com/MetaCoq/metacoq/pull/897
- Disambiguate
Requires among the MetaCoq modules by @JasonGross in https://github.com/MetaCoq/metacoq/pull/899 - Add MCMSets by @JasonGross in https://github.com/MetaCoq/metacoq/pull/900
- Add
Utils.MCFSetsforFSets.FMap*utils by @JasonGross in https://github.com/MetaCoq/metacoq/pull/901 - Gallina quotation functions for Template by @JasonGross in https://github.com/MetaCoq/metacoq/pull/894
- rework extraction by @tabareau in https://github.com/MetaCoq/metacoq/pull/902
- Make proofs more robust for eventually making
All_Forallpolymorphic by @JasonGross in https://github.com/MetaCoq/metacoq/pull/903 - Update descriptions and dependencies of the quotation module by @JasonGross in https://github.com/MetaCoq/metacoq/pull/904
- Populate some early MSets and FSets modules by @JasonGross in https://github.com/MetaCoq/metacoq/pull/905
- Remove some duplicate code in quotation by @JasonGross in https://github.com/MetaCoq/metacoq/pull/906
- Refactor quotation of
MSets,FMapsto useMC{MSets,FSets}by @JasonGross in https://github.com/MetaCoq/metacoq/pull/907 - Use a more systematic mangling of universe names by @JasonGross in https://github.com/MetaCoq/metacoq/pull/908
- Finish Gallina quotation to Template, inlcuding TypingWf by @JasonGross in https://github.com/MetaCoq/metacoq/pull/898
- [quotation] Fuse Template Monad loops by @JasonGross in https://github.com/MetaCoq/metacoq/pull/909
- [CI] Add
concurrencyandcancel-in-progress: trueby @JasonGross in https://github.com/MetaCoq/metacoq/pull/910 - [Quotation] Add
quote_redby @JasonGross in https://github.com/MetaCoq/metacoq/pull/912 - Remove dead commented code in Quotation by @JasonGross in https://github.com/MetaCoq/metacoq/pull/914
- Add missing tests to
test-suite/_CoqProject.inby @JasonGross in https://github.com/MetaCoq/metacoq/pull/915 - Move template-pcuic part of Loader where it belongs by @JasonGross in https://github.com/MetaCoq/metacoq/pull/917
- Add
PCUIC.PCUICMonadAstby @JasonGross in https://github.com/MetaCoq/metacoq/pull/918 - [Quotation.ToTemplate] Minor adjustments by @JasonGross in https://github.com/MetaCoq/metacoq/pull/919
- [Quotation.ToTemplate] Remove dead imports by @JasonGross in https://github.com/MetaCoq/metacoq/pull/920
- [PCUIC] Add convenience notations for
tInt,tFloatby @JasonGross in https://github.com/MetaCoq/metacoq/pull/921 - Improve performance of PCUIC Template Monad by @JasonGross in https://github.com/MetaCoq/metacoq/pull/922
- Add DirPath{Set,Map} by @JasonGross in https://github.com/MetaCoq/metacoq/pull/923
- [PCUIC] Have
isArityreturnboolby @JasonGross in https://github.com/MetaCoq/metacoq/pull/924 - [Quotation.ToTemplate] Remove dead code by @JasonGross in https://github.com/MetaCoq/metacoq/pull/925
- Add an optimized version of
tmBindby @JasonGross in https://github.com/MetaCoq/metacoq/pull/926 - Revert "CI:Add
concurrencyandcancel-in-progress:true" by @JasonGross in https://github.com/MetaCoq/metacoq/pull/929 - Add example for #926 to test-suite by @JasonGross in https://github.com/MetaCoq/metacoq/pull/927
- Add
Trel_sigby @JasonGross in https://github.com/MetaCoq/metacoq/pull/931 - remove one hypothesis in erase_correct_strong by @tabareau in https://github.com/MetaCoq/metacoq/pull/911
- Adjust naming of optimized template monad by @JasonGross in https://github.com/MetaCoq/metacoq/pull/928
- Add
conv_pb_leqbby @JasonGross in https://github.com/MetaCoq/metacoq/pull/932 - Fix
update-_PluginProject.intarget by @JasonGross in https://github.com/MetaCoq/metacoq/pull/934 - Rename level and var by @tabareau in https://github.com/MetaCoq/metacoq/pull/935
- Take 2: Revert "Revert "CI:Add
concurrencyandcancel-in-progress:true"" by @JasonGross in https://github.com/MetaCoq/metacoq/pull/937 - Add
_depversions ofForall2,All2, etc by @JasonGross in https://github.com/MetaCoq/metacoq/pull/930 - Fix
tmOptimizedBindto avoid quadratic blowup by @JasonGross in https://github.com/MetaCoq/metacoq/pull/936 - [Quotation.ToTemplate] Add
quote_{All,Forall}2_depby @JasonGross in https://github.com/MetaCoq/metacoq/pull/938 - Typed Erasure depends on TemplatePCUIC by @JasonGross in https://github.com/MetaCoq/metacoq/pull/941
- Add support for dependency in
cumulSpec0_ind_allby @JasonGross in https://github.com/MetaCoq/metacoq/pull/933 - Parameterize reduction in PCUIC quotation with a typeclass by @JasonGross in https://github.com/MetaCoq/metacoq/pull/939
- [Quotation] Swap ordering in quotation for performance by @JasonGross in https://github.com/MetaCoq/metacoq/pull/942
- Update _PluginProject by @JasonGross in https://github.com/MetaCoq/metacoq/pull/943
- [Quotation] Add quotation for some Equations defs by @JasonGross in https://github.com/MetaCoq/metacoq/pull/944
- Gallina Quotation for PCUIC terms and typing by @JasonGross in https://github.com/MetaCoq/metacoq/pull/940
- Update README and create Quotation README by @JasonGross in https://github.com/MetaCoq/metacoq/pull/945
- Change notation for wcbv eval by @yforster in https://github.com/MetaCoq/metacoq/pull/946
- prove canonicity by @tabareau in https://github.com/MetaCoq/metacoq/pull/947
- consistency makes use of canonicity by @tabareau in https://github.com/MetaCoq/metacoq/pull/948
New Contributors
- @JasonGross made their first contribution in https://github.com/MetaCoq/metacoq/pull/774
- @4ever2 made their first contribution in https://github.com/MetaCoq/metacoq/pull/868
Full Changelog: https://github.com/MetaCoq/metacoq/compare/v1.1.1-8.16...v1.2-8.16
Files
MetaCoq/metacoq-v1.2-8.16.zip
Files
(4.2 MB)
| Name | Size | Download all |
|---|---|---|
|
md5:4a5675c5b63999069e932790b200bc5e
|
4.2 MB | Preview Download |
Additional details
Related works
- Is supplement to
- https://github.com/MetaCoq/metacoq/tree/v1.2-8.16 (URL)