There is a newer version of this record available.

Software Open Access

mattam82/Coq-Equations: Equations 1.3 for Coq 8.15

Matthieu Sozeau; Pierre-Marie Pédrot; Cyprien Mangin; Gaëtan Gilbert; Emilio Jesús Gallego Arias; Hugo Herbelin; Maxime Dénès; Robin Green; Enrico Tassi; Guillaume Claret; Siddharth; Anton Trunov; Jim Fehrle; Joachim Breitner; Antonio Nikishaev; SimonBoulier; Søren Nørbæk; Théo Zimmermann; Vincent Laporte; Yves Bertot


Citation Style Language JSON Export

{
  "publisher": "Zenodo", 
  "DOI": "10.5281/zenodo.5878837", 
  "title": "mattam82/Coq-Equations: Equations 1.3 for Coq 8.15", 
  "issued": {
    "date-parts": [
      [
        2022, 
        1, 
        19
      ]
    ]
  }, 
  "abstract": "Equations 1.3\n<p>This is a new major release of Equations, working with Coq 8.15. This version adds an improved syntax (less <code>;</code>-separation), integration with the Coq-HoTT library and numerous bug fixes. See the <a href=\"https://github.com/mattam82/Coq-Equations/raw/v1.3-8.15/doc/equations.pdf\">reference manual</a> for details.</p>\n<p>This version introduces minor breaking changes along with the following features:</p>\n<ul>\n<li><p>Enhancements of pattern interpretation</p>\n<p>No explicit shadowing of pattern variables is allowed anymore. This fixes numerous bugs where \ngenerated implicit names introduced by the elaboration of patterns could shadow user-given names, \nleading to incorrect names in right-hand sides and confusing environments.</p>\n</li>\n<li><p>Improved syntax for \"concise\" clauses separated by <code>|</code>, at top-level or inside <code>with</code> subprograms. \nWe no longer require to separate them by <code>;</code>. For example, the following definition is now accepted:</p>\n<pre><code class=\"lang-coq\">Equations foo : nat -&gt; nat := \n  | 0 =&gt; 1\n  | S n =&gt; S (foo n).\n</code></pre>\n<p>The old syntax is however still supported for backwards compatibility.</p>\n</li>\n<li>Multiple patterns can be separated by <code>,</code> in addition to <code>|</code>, as in:<pre><code class=\"lang-coq\">Equations trans {A} {x y z : A} (e : x = y) (e&#39; : y = z) : x = z := | 1, 1 =&gt; 1.\n</code></pre>\n</li>\n<li><code>Require Import Equations.Equations.</code> does not work anymore.\nOne has to use <code>Require Import Equations.Prop.Equations</code> to load the plugin's default instance where equality is in <code>Prop</code>. <code>From Equations Require Import Equations</code> is unaffected.</li>\n<li>Use <code>Require Import Equations.HoTT.All</code> to use the HoTT variant of the library compatible with the <a href=\"https://github.com/HoTT/HoTT\">Coq HoTT</a> library\nThe plugin then reuses the definition of <code>paths</code> from the HoTT library and all its constructions are universe polymorphic. As for the HoTT library alone, coq must be passed the arguments <code>-noinit -indices-matter</code> to use the library and plugin. The <code>coq-equations</code> opam package depends optionally on <code>coq-hott</code>, so if <code>coq-hott</code> is installed before it, <code>coq-equations</code> will automatically install the <code>HoTT</code> library variant in addition to the standard one. This variant of Equations allows to write very concise dependent pattern-matchings on equality: <pre><code class=\"lang-coq\">Require Import Equations.HoTT.All.\nEquations sym {A} {x y : A} (e : x = y) : y = x := | 1 =&gt; 1.\n</code></pre>\n</li>\n<li>New attribute <code>#[tactic=tac]</code> to set locally the default tactic to solve remaining holes. \nThe goals on which the tactic applies are now always of the form <code>\u0393 |- \u03c4</code> where \u0393 is the context where the hole was introduced and \u03c4 the expected type, <em>even</em> when using the <code>Obligation</code> machinery to solve them, resulting in a possible incompatibility if the obligation tactic treated the context differently than the conclusion. By default, the <code>program_simpl</code> tactic performs a <code>simpl</code> call before introducing the hypotheses, so you might need to add a <code>simpl in *</code> to your tactics.</li>\n<li>New attributes <code>#[derive(equations=yes,no, eliminator=yes|no)]</code> can be used in place of the <code>(noeqns, noind)</code> flags which are deprecated.</li>\n</ul>\nFixed in v1.3beta2:\n<ul>\n<li>Fix #399: allow simplification in indices when splitting a variable, to expose the head of the index.</li>\n<li>Fix #389: error derving EqDec in HoTT variant.</li>\n<li>Allow universe binder annotations @{} on Equations definitions.</li>\n<li>Fix \"struct\" parsing issue that required a reset of Coq sometimes</li>\n<li>POTENTIAL SOURCE OF INCOMPATIBILITY:\nPattern 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.</li>\n</ul>\nFixed in 1.3beta1:\n<ul>\n<li>#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\".</li>\n<li>#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 <code>Qed</code> or <code>Defined</code> (similarly to Coq's <code>#[refine] Instance</code> command).</li>\n<li>#372, #194: <code>funelim</code> applied to a partial application failing</li>\n<li>#354: support for building values in <code>SProp</code></li>\n<li>#353: name capture problem in presence of modules</li>\n<li>#335: provide an alias Equations Derive to not conflict with QuickChick's Derive</li>\n<li>#325: properly inline all Equations helper constants during Extraction</li>\n</ul>", 
  "author": [
    {
      "family": "Matthieu Sozeau"
    }, 
    {
      "family": "Pierre-Marie P\u00e9drot"
    }, 
    {
      "family": "Cyprien Mangin"
    }, 
    {
      "family": "Ga\u00ebtan Gilbert"
    }, 
    {
      "family": "Emilio Jes\u00fas Gallego Arias"
    }, 
    {
      "family": "Hugo Herbelin"
    }, 
    {
      "family": "Maxime D\u00e9n\u00e8s"
    }, 
    {
      "family": "Robin Green"
    }, 
    {
      "family": "Enrico Tassi"
    }, 
    {
      "family": "Guillaume Claret"
    }, 
    {
      "family": "Siddharth"
    }, 
    {
      "family": "Anton Trunov"
    }, 
    {
      "family": "Jim Fehrle"
    }, 
    {
      "family": "Joachim Breitner"
    }, 
    {
      "family": "Antonio Nikishaev"
    }, 
    {
      "family": "SimonBoulier"
    }, 
    {
      "family": "S\u00f8ren N\u00f8rb\u00e6k"
    }, 
    {
      "family": "Th\u00e9o Zimmermann"
    }, 
    {
      "family": "Vincent Laporte"
    }, 
    {
      "family": "Yves Bertot"
    }
  ], 
  "version": "v1.3-8.15", 
  "type": "article", 
  "id": "5878837"
}
540
53
views
downloads
All versions This version
Views 54032
Downloads 532
Data volume 69.0 MB2.5 MB
Unique views 47925
Unique downloads 312

Share

Cite as