Releases: MetaCoq/metacoq
MetaCoq 1.2.1 for Coq 8.17
This is a minor release synchronising the state of coq-8.17
and coq-8.18
to allow publishing an opam package for Coq 8.18. See https://github.com/MetaCoq/metacoq/releases/tag/v1.2-8.17 for detailed release notes.
What's Changed
- Fix monad_map_branches_k name by @JasonGross in #953
- Add boolean versions of the varieties of
extends
by @JasonGross in #954 - Add union and inter checker flags by @JasonGross in #957
- Add MCListable class for enumerating finite types by @JasonGross in #962
- Close computational obligations with defined in erase_global_decls by @yforster in #961
- Invariants in named recursion rule by @yforster in #967
- Add a merge operation for the global env by @JasonGross in #955
- improve strengthening to get cumul info on type by @tabareau in #985
- remove parameters in firstorder inductive types by @tabareau in #986
- Drastically speed up ByteCompareSpec by @JasonGross in #988
- Verified erasure pipeline by @mattam82 in #987
- add not_isErasable lemma in EArities by @tabareau in #990
- Merge 8.16 into 8.17 by @yforster in #992
- use names in EAst.t by @tabareau in #997
- Add a let in front of case in
implement_box
by @yforster in #999 - Qualify imports to disable race condition for opam builds by @yforster in #1001
Full Changelog: v1.2-8.17...v1.2.1-8.17
MetaCoq 1.2 for Coq 8.17
We are happy to announce release 1.2 of the MetaCoq project for Coq 8.17, 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
quotation
library 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 ofMetaCoq Erase
yet. - Reorganization of the packages, separating plugins from theories by @tabareau.
The preprint "Correct and Complete Type Checking and Certified Erasure for Coq, in Coq" presents the development of the sound and complete type checker based on bidirectional typing, the meta-theoretical results (subject reduction, standardization, canonicity and consistency) and the verified erasure procedure of this version of MetaCoq.
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-pcuic
and 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_map
by @JasonGross in #774 - Bring back ReflectEq instances in ReflectAst by @JasonGross in #782
- Add some template monad mapping utils by @JasonGross in #783
- Add Module Type DeclarationTypingSig by @JasonGross in #781
- isSort and isArity return bool now by @JasonGross in #785
- Move Template.TypingWf.on_option to Template.utils.MCOption.on_some_or_none by @JasonGross in #786
- Remove trailing whitespace by @JasonGross in #773
- Use
match
inon_ind_body
by @JasonGross in #778 - Automatically trim whitespace in vscode by @yforster in #788
- Helper combinators and lemmas to typecheck pattern matches by @kyoDralliam in #787
- remove direct access to the environment and more compact interface by @tabareau in #793
- add abstract_env_leqb_level_n by @tabareau in #799
- remove need for abstract_env_ext_wf_universeb by @tabareau in #800
- Add
weakening_env_cored
by @JasonGross in #801 - Add
hd_error_skipn_iff_In
by @JasonGross in #803 make -C erasure/ uninstall
no longer builds code first by @JasonGross in #805- simplify abstract_env_is_consistent_correct by @tabareau in #807
- notation <# _ #> for quoting programs (global_env + term) by @kyoDralliam in #796
- remove the need for leqb_level_n_spec0_gen by @tabareau in #814
make -C safechecker/ uninstall
no longer builds code first by @JasonGross in #810make uninstall
no longer builds code first by @JasonGross in #811make -C pcuic/ uninstall
no longer builds code first by @JasonGross in #812- Minor reorganization around
extends
,fresh_global
by @JasonGross in #802 tmFix
point combinator (without unsettingGuard Checking
) by @JasonGross in #790- Turn
normalisation
into a typeclass by @JasonGross in #792 - Add
trans_one_inductive_entry
by @JasonGross in #789 - Trim trailing whitespace, this time enabled instead of disabled by @yforster in #795
- use In instead of mem in abstract_env_level_mem_correct by @tabareau in #817
- Add
(only parsing)
to<# x #>
notation by @JasonGross in #819 - better spec for abstract_env_lookup_correct by @tabareau in #820
- Add PCUIC versions of
tmQuote
and related template monad definitions by @JasonGross in #776 - Change specification of declared constant and co by @tabareau in #822
- Allow environment weakening to reorder declarations by @JasonGross in #816
- Fail if a patch is not applicable by @yforster in #818
- Add some more utility lemmas in
All_Forall
by @JasonGross in #821 - Add consistency and normalization and reorganize by @tabareau in #825
- add PCUICCasesHelper to be compiled by @kyoDralliam in #826
- the main change is reordering of context in urenaming by @tabareau in #828
- Add utils and common initial folders and reorganize code and plugins by @tabareau in #829
- Named semantics with environments for lambda box by @yforster in #832
- Don't use Type inductives for Props by @JasonGross in #836
- Allow weakening of typing across different checker configs by @JasonGross in #848
- Add some
Proof using
annotations by @JasonGross in #849 - Add WeightedGraphSig by @JasonGross in #854
- Add
tmLocateModule
andtmLocateModType
by @JasonGross in #855 - Generalize
tmExistingInstance
across localities by @JasonGross in #857 - Fix and generalize module quotation by @JasonGross in #856
- Add LevelSetOrdProp by @JasonGross in #858
- Add KernameSetOrdProp by @JasonGross in #859
- Fix safechecker plugin install by @4ever2 in #868
- Bump install-nix-action by @JasonGross in #866
- Add
.github/dependabot.yml
by @JasonGross in #867 - fix CI issue ...
MetaCoq 1.2 for Coq 8.16
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
quotation
library 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 ofMetaCoq Erase
yet. - Reorganization of the packages, separating plugins from theories by @tabareau.
The preprint "Correct and Complete Type Checking and Certified Erasure for Coq, in Coq" presents the development of the sound and complete type checker based on bidirectional typing, the meta-theoretical results (subject reduction, standardization, canonicity and consistency) and the verified erasure procedure of this version of MetaCoq.
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-pcuic
and 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_map
by @JasonGross in #774 - Bring back ReflectEq instances in ReflectAst by @JasonGross in #782
- Add some template monad mapping utils by @JasonGross in #783
- Add Module Type DeclarationTypingSig by @JasonGross in #781
- isSort and isArity return bool now by @JasonGross in #785
- Move Template.TypingWf.on_option to Template.utils.MCOption.on_some_or_none by @JasonGross in #786
- Remove trailing whitespace by @JasonGross in #773
- Use
match
inon_ind_body
by @JasonGross in #778 - Automatically trim whitespace in vscode by @yforster in #788
- Helper combinators and lemmas to typecheck pattern matches by @kyoDralliam in #787
- remove direct access to the environment and more compact interface by @tabareau in #793
- add abstract_env_leqb_level_n by @tabareau in #799
- remove need for abstract_env_ext_wf_universeb by @tabareau in #800
- Add
weakening_env_cored
by @JasonGross in #801 - Add
hd_error_skipn_iff_In
by @JasonGross in #803 make -C erasure/ uninstall
no longer builds code first by @JasonGross in #805- simplify abstract_env_is_consistent_correct by @tabareau in #807
- notation <# _ #> for quoting programs (global_env + term) by @kyoDralliam in #796
- remove the need for leqb_level_n_spec0_gen by @tabareau in #814
make -C safechecker/ uninstall
no longer builds code first by @JasonGross in #810make uninstall
no longer builds code first by @JasonGross in #811make -C pcuic/ uninstall
no longer builds code first by @JasonGross in #812- Minor reorganization around
extends
,fresh_global
by @JasonGross in #802 tmFix
point combinator (without unsettingGuard Checking
) by @JasonGross in #790- Turn
normalisation
into a typeclass by @JasonGross in #792 - Add
trans_one_inductive_entry
by @JasonGross in #789 - Trim trailing whitespace, this time enabled instead of disabled by @yforster in #795
- use In instead of mem in abstract_env_level_mem_correct by @tabareau in #817
- Add
(only parsing)
to<# x #>
notation by @JasonGross in #819 - better spec for abstract_env_lookup_correct by @tabareau in #820
- Add PCUIC versions of
tmQuote
and related template monad definitions by @JasonGross in #776 - Change specification of declared constant and co by @tabareau in #822
- Allow environment weakening to reorder declarations by @JasonGross in #816
- Fail if a patch is not applicable by @yforster in #818
- Add some more utility lemmas in
All_Forall
by @JasonGross in #821 - Add consistency and normalization and reorganize by @tabareau in #825
- add PCUICCasesHelper to be compiled by @kyoDralliam in #826
- the main change is reordering of context in urenaming by @tabareau in #828
- Add utils and common initial folders and reorganize code and plugins by @tabareau in #829
- Named semantics with environments for lambda box by @yforster in #832
- Don't use Type inductives for Props by @JasonGross in #836
- Allow weakening of typing across different checker configs by @JasonGross in #848
- Add some
Proof using
annotations by @JasonGross in #849 - Add WeightedGraphSig by @JasonGross in #854
- Add
tmLocateModule
andtmLocateModType
by @JasonGross in #855 - Generalize
tmExistingInstance
across localities by @JasonGross in #857 - Fix and generalize module quotation by @JasonGross in #856
- Add LevelSetOrdProp by @JasonGross in #858
- Add KernameSetOrdProp by @JasonGross in #859
- Fix safechecker plugin install by @4ever2 in #868
- Bump install-nix-action by @JasonGross in #866
- Add
.github/dependabot.yml
by @JasonGross in #867 - fix CI issue ...
MetaCoq 1.1.1 for Coq 8.16
MetaCoq 1.1.1 is a patch release of MetaCoq 1.1 removing unsafe extraction directives and with support for printing floating point values.
See https://github.com/MetaCoq/metacoq/releases/tag/v1.1-8.16 for the 1.1 release notes.
MetaCoq 1.1.1 for Coq 8.15
MetaCoq 1.1.1 is a patch release of MetaCoq 1.1 removing unsafe extraction directives and with support for printing floating point values.
See https://github.com/MetaCoq/metacoq/releases/tag/v1.1-8.15 for the 1.1 release notes.
MetaCoq 1.1.1 for Coq 8.14
MetaCoq 1.1.1 is a patch release of MetaCoq 1.1 removing unsafe extraction directives and with support for printing floating point values.
See https://github.com/MetaCoq/metacoq/releases/tag/v1.1-8.14 for the 1.1 release notes.
MetaCoq 1.1 for Coq 8.14
We are happy to announce release 1.1 of the MetaCoq project for Coq 8.14, available both as source and through opam. See the website for a detailed overview of the project, introductory material and related articles and presentations.
This new version integrates:
- Support for primitive integers and floating point values, using the same typechecking mechanism as Coq's kernel, up to the erased lambda-box language.
- Better computational behavior of the safe checker.
- Support for nix and cachix (useful for CI, allows to reuse remotely compiled components)
- Registering of projections for inductive types defined as records
- More efficient eta-expansion transformation using environment maps instead of association lists.
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, correct and complete type checker for PCUIC, and a verified type and proof erasure procedure from PCUIC to untyped lambda calculus. 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 by typing opam install coq-metacoq
.
This release will also be included in an upcoming Coq Platform.
The current release includes several subpackages, which can be compiled and installed separately if desired:
- the Template-Coq quoting library (in directory
template-coq
and ascoq-metacoq-template
) - a formalisation of meta-theoretical properties of PCUIC, the calculus underlying Coq (
pcuic
/coq-metacoq-pcuic
) - a total verified type-checker for Coq (
safechecker
/coq-metacoq-safechecker
), usable inside Coq or extracted to OCaml asMetaCoq SafeCheck <term>
- a verified type and proof erasure function for Coq (
erasure
/coq-metacoq-erasure
), usable inside Coq or extracted to OCaml asMetaCoq Erase <term>
- 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, 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
MetaCoq 1.1 for Coq 8.16
We are happy to announce release 1.1 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.
This new version integrates:
- Support for primitive integers and floating point values, using the same typechecking mechanism as Coq's kernel, up to the erased lambda-box language.
- Better computational behavior of the safe checker.
- Support for nix and cachix (useful for CI, allows to reuse remotely compiled components)
- Registering of projections for inductive types defined as records
- More efficient eta-expansion transformation using environment maps instead of association lists.
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, correct and complete type checker for PCUIC, and a verified type and proof erasure procedure from PCUIC to untyped lambda calculus. 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 by typing opam install coq-metacoq
.
This release will also be included in an upcoming Coq Platform.
The current release includes several subpackages, which can be compiled and installed separately if desired:
- the Template-Coq quoting library (in directory
template-coq
and ascoq-metacoq-template
) - a formalisation of meta-theoretical properties of PCUIC, the calculus underlying Coq (
pcuic
/coq-metacoq-pcuic
) - a total verified type-checker for Coq (
safechecker
/coq-metacoq-safechecker
), usable inside Coq or extracted to OCaml asMetaCoq SafeCheck <term>
- a verified type and proof erasure function for Coq (
erasure
/coq-metacoq-erasure
), usable inside Coq or extracted to OCaml asMetaCoq Erase <term>
- 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, 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
MetaCoq 1.1 for Coq 8.15
We are happy to announce release 1.1 of the MetaCoq project for Coq 8.15, available both as source and through opam. See the website for a detailed overview of the project, introductory material and related articles and presentations.
This new version integrates:
- Support for primitive integers and floating point values, using the same typechecking mechanism as Coq's kernel, up to the erased lambda-box language.
- Better computational behavior of the safe checker.
- Support for nix and cachix (useful for CI, allows to reuse remotely compiled components)
- Registering of projections for inductive types defined as records
- More efficient eta-expansion transformation using environment maps instead of association lists.
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, correct and complete type checker for PCUIC, and a verified type and proof erasure procedure from PCUIC to untyped lambda calculus. 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 by typing opam install coq-metacoq
.
This release will also be included in an upcoming Coq Platform.
The current release includes several subpackages, which can be compiled and installed separately if desired:
- the Template-Coq quoting library (in directory
template-coq
and ascoq-metacoq-template
) - a formalisation of meta-theoretical properties of PCUIC, the calculus underlying Coq (
pcuic
/coq-metacoq-pcuic
) - a total verified type-checker for Coq (
safechecker
/coq-metacoq-safechecker
), usable inside Coq or extracted to OCaml asMetaCoq SafeCheck <term>
- a verified type and proof erasure function for Coq (
erasure
/coq-metacoq-erasure
), usable inside Coq or extracted to OCaml asMetaCoq Erase <term>
- 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, 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
MetaCoq 1.0 for Coq 8.15
We are happy to announce release 1.0 of the MetaCoq project for Coq 8.14, 8.15, and 8.16, available both as sources and as opam packages. See the website for a detailed overview of the project, introductory material and related articles and presentations.
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, correct and complete type checker for PCUIC, and a verified type and proof erasure procedure from PCUIC to untyped lambda calculus. 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 by typing opam install coq-metacoq
.
This release will also be included in an upcoming Coq Platform.
The current release includes several subpackages, which can be compiled and installed separately if desired:
- the Template-Coq quoting library (in directory
template-coq
and ascoq-metacoq-template
) - a formalisation of meta-theoretical properties of PCUIC, the calculus underlying Coq (
pcuic
/coq-metacoq-pcuic
) - a total verified type-checker for Coq (
safechecker
/coq-metacoq-safechecker
), usable inside Coq or extracted to OCaml asMetaCoq SafeCheck <term>
- a verified type and proof erasure function for Coq (
erasure
/coq-metacoq-erasure
), usable inside Coq or extracted to OCaml asMetaCoq Erase <term>
- 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, 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