mattam82/Coq-Equations: Equations 1.3 for Coq 8.16
Creators
- Matthieu Sozeau1
- Pierre-Marie Pédrot
- Cyprien Mangin
- Emilio Jesús Gallego Arias
- Gaëtan Gilbert1
- Hugo Herbelin
- Maxime Dénès
- Robin Green
- Enrico Tassi2
- Guillaume Claret3
- Siddharth4
- Anton Trunov5
- Jim Fehrle
- Joachim Breitner6
- Kenji Maillard
- antonio nikishaev
- SimonBoulier
- Søren Nørbæk
- Théo Zimmermann7
- Vincent Laporte
- Yves Bertot1
- 1. Inria
- 2. @coq @math-comp @LPCIC
- 3. Formal Land
- 4. University of Edinburgh
- 5. @Zilliqa
- 6. @dfinity-lab
- 7. @Inria
Description
This is a new major release of Equations, working with Coq 8.16. This version adds an improved syntax (less ;-separation), integration with the Coq-HoTT library and numerous bug fixes. See the reference manual for details.
This version introduces minor breaking changes along with the following features:
Enhancements of pattern interpretation
No explicit shadowing of pattern variables is allowed anymore. This fixes numerous bugs where generated implicit names introduced by the elaboration of patterns could shadow user-given names, leading to incorrect names in right-hand sides and confusing environments.
Improved syntax for "concise" clauses separated by
|, at top-level or insidewithsubprograms. We no longer require to separate them by;. For example, the following definition is now accepted:Equations foo : nat -> nat := | 0 => 1 | S n => S (foo n).The old syntax is however still supported for backwards compatibility.
- Multiple patterns can be separated by
,in addition to|, as in:Equations trans {A} {x y z : A} (e : x = y) (e' : y = z) : x = z := | 1, 1 => 1. Require Import Equations.Equations.does not work anymore. One has to useRequire Import Equations.Prop.Equationsto load the plugin's default instance where equality is inProp.From Equations Require Import Equationsis unaffected.- Use
Require Import Equations.HoTT.Allto use the HoTT variant of the library compatible with the Coq HoTT library The plugin then reuses the definition ofpathsfrom the HoTT library and all its constructions are universe polymorphic. As for the HoTT library alone, coq must be passed the arguments-noinit -indices-matterto use the library and plugin. Thecoq-equationsopam package depends optionally oncoq-hott, so ifcoq-hottis installed before it,coq-equationswill automatically install theHoTTlibrary variant in addition to the standard one. This variant of Equations allows to write very concise dependent pattern-matchings on equality:Require Import Equations.HoTT.All. Equations sym {A} {x y : A} (e : x = y) : y = x := | 1 => 1. - New attribute
#[tactic=tac]to set locally the default tactic to solve remaining holes. The goals on which the tactic applies are now always of the formΓ |- τwhere Γ is the context where the hole was introduced and τ the expected type, even when using theObligationmachinery to solve them, resulting in a possible incompatibility if the obligation tactic treated the context differently than the conclusion. By default, theprogram_simpltactic performs asimplcall before introducing the hypotheses, so you might need to add asimpl in *to your tactics. - New attributes
#[derive(equations=yes,no, eliminator=yes|no)]can be used in place of the(noeqns, noind)flags which are deprecated.
- Fix #399: allow simplification in indices when splitting a variable, to expose the head of the index.
- Fix #389: error derving EqDec in HoTT variant.
- Allow universe binder annotations @{} on Equations definitions.
- Fix "struct" parsing issue that required a reset of Coq sometimes
- POTENTIAL SOURCE OF INCOMPATIBILITY: Pattern enhancements: no explicit shadowing of pattern variables is allowed anymore. Fix numerous bugs where generated implicit names introduced by the elaboration of patterns could shadow user-given names, leading to incorrect names in right-hand sides.
- #329: improved strengthening avoiding to abstract over recursive definitions which would not pass the guardness checker. This can simplify the produced terms, avoiding unnecessary "commutative cuts".
- #321: warn rather than error when using Equations? and no subgoals are left. This will leave a proof state with no subgoals, that must be closed using a
QedorDefined(similarly to Coq's#[refine] Instancecommand). - #372, #194:
funelimapplied to a partial application failing - #354: support for building values in
SProp - #353: name capture problem in presence of modules
- #335: provide an alias Equations Derive to not conflict with QuickChick's Derive
- #325: properly inline all Equations helper constants during Extraction
Files
mattam82/Coq-Equations-v1.3-8.16.zip
Files
(1.2 MB)
| Name | Size | Download all |
|---|---|---|
|
md5:1a36a5ad783b8b3135187c901484513a
|
1.2 MB | Preview Download |
Additional details
Related works
- Is supplement to
- https://github.com/mattam82/Coq-Equations/tree/v1.3-8.16 (URL)