UPDATE: Zenodo migration postponed to Oct 13 from 06:00-08:00 UTC. Read the announcement.
There is a newer version of this record available.

Software Open Access

mattam82/Coq-Equations: Equations 1.3 for Coq 8.14

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


MARC21 XML Export

<?xml version='1.0' encoding='UTF-8'?>
<record xmlns="http://www.loc.gov/MARC21/slim">
  <leader>00000nmm##2200000uu#4500</leader>
  <controlfield tag="005">20230109105344.0</controlfield>
  <controlfield tag="001">5529713</controlfield>
  <datafield tag="700" ind1=" " ind2=" ">
    <subfield code="a">Pierre-Marie Pédrot</subfield>
  </datafield>
  <datafield tag="700" ind1=" " ind2=" ">
    <subfield code="a">Cyprien Mangin</subfield>
  </datafield>
  <datafield tag="700" ind1=" " ind2=" ">
    <subfield code="a">Emilio Jesús Gallego Arias</subfield>
  </datafield>
  <datafield tag="700" ind1=" " ind2=" ">
    <subfield code="u">Inria</subfield>
    <subfield code="a">Gaëtan Gilbert</subfield>
  </datafield>
  <datafield tag="700" ind1=" " ind2=" ">
    <subfield code="a">Hugo Herbelin</subfield>
  </datafield>
  <datafield tag="700" ind1=" " ind2=" ">
    <subfield code="a">Maxime Dénès</subfield>
  </datafield>
  <datafield tag="700" ind1=" " ind2=" ">
    <subfield code="a">Robin Green</subfield>
  </datafield>
  <datafield tag="700" ind1=" " ind2=" ">
    <subfield code="u">foobar.land</subfield>
    <subfield code="a">Guillaume Claret</subfield>
  </datafield>
  <datafield tag="700" ind1=" " ind2=" ">
    <subfield code="u">@coq @math-comp @LPCIC</subfield>
    <subfield code="a">Enrico Tassi</subfield>
  </datafield>
  <datafield tag="700" ind1=" " ind2=" ">
    <subfield code="u">IIIT Hyderabad</subfield>
    <subfield code="a">Siddharth</subfield>
  </datafield>
  <datafield tag="700" ind1=" " ind2=" ">
    <subfield code="u">@Zilliqa</subfield>
    <subfield code="a">Anton Trunov</subfield>
  </datafield>
  <datafield tag="700" ind1=" " ind2=" ">
    <subfield code="a">Jim Fehrle</subfield>
  </datafield>
  <datafield tag="700" ind1=" " ind2=" ">
    <subfield code="u">@dfinity-lab</subfield>
    <subfield code="a">Joachim Breitner</subfield>
  </datafield>
  <datafield tag="700" ind1=" " ind2=" ">
    <subfield code="a">Antonio Nikishaev</subfield>
  </datafield>
  <datafield tag="700" ind1=" " ind2=" ">
    <subfield code="a">SimonBoulier</subfield>
  </datafield>
  <datafield tag="700" ind1=" " ind2=" ">
    <subfield code="a">Søren Nørbæk</subfield>
  </datafield>
  <datafield tag="700" ind1=" " ind2=" ">
    <subfield code="u">@Inria / Université de Paris</subfield>
    <subfield code="a">Théo Zimmermann</subfield>
  </datafield>
  <datafield tag="700" ind1=" " ind2=" ">
    <subfield code="a">Vincent Laporte</subfield>
  </datafield>
  <datafield tag="700" ind1=" " ind2=" ">
    <subfield code="u">Inria</subfield>
    <subfield code="a">Yves Bertot</subfield>
  </datafield>
  <datafield tag="856" ind1="4" ind2=" ">
    <subfield code="s">1231315</subfield>
    <subfield code="z">md5:9e144619514043e57556c9b4c0f770ab</subfield>
    <subfield code="u">https://zenodo.org/record/5529713/files/mattam82/Coq-Equations-v1.3-8.14.zip</subfield>
  </datafield>
  <datafield tag="542" ind1=" " ind2=" ">
    <subfield code="l">open</subfield>
  </datafield>
  <datafield tag="260" ind1=" " ind2=" ">
    <subfield code="c">2021-09-27</subfield>
  </datafield>
  <datafield tag="909" ind1="C" ind2="O">
    <subfield code="p">software</subfield>
    <subfield code="o">oai:zenodo.org:5529713</subfield>
  </datafield>
  <datafield tag="100" ind1=" " ind2=" ">
    <subfield code="u">Inria</subfield>
    <subfield code="a">Matthieu Sozeau</subfield>
  </datafield>
  <datafield tag="245" ind1=" " ind2=" ">
    <subfield code="a">mattam82/Coq-Equations: Equations 1.3 for Coq 8.14</subfield>
  </datafield>
  <datafield tag="540" ind1=" " ind2=" ">
    <subfield code="a">Other (Open)</subfield>
  </datafield>
  <datafield tag="650" ind1="1" ind2="7">
    <subfield code="a">cc-by</subfield>
    <subfield code="2">opendefinition.org</subfield>
  </datafield>
  <datafield tag="520" ind1=" " ind2=" ">
    <subfield code="a">Equations 1.3
&lt;p&gt;This is a new major release of Equations, working with Coq 8.14. This version adds an improved syntax (less &lt;code&gt;;&lt;/code&gt;-separation), integration with the Coq-HoTT library and numerous bug fixes. See the &lt;a href="https://github.com/mattam82/Coq-Equations/raw/v1.3-8.14/doc/equations.pdf"&gt;reference manual&lt;/a&gt; for details.&lt;/p&gt;
&lt;p&gt;This version introduces minor breaking changes along with the following features:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Enhancements of pattern interpretation&lt;/p&gt;
&lt;p&gt;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.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Improved syntax for "concise" clauses separated by &lt;code&gt;|&lt;/code&gt;, at top-level or inside &lt;code&gt;with&lt;/code&gt; subprograms. 
We no longer require to separate them by &lt;code&gt;;&lt;/code&gt;. For example, the following definition is now accepted:&lt;/p&gt;
&lt;pre&gt;&lt;code class="lang-coq"&gt;Equations foo : nat -&amp;gt; nat := 
  | 0 =&amp;gt; 1
  | S n =&amp;gt; S (foo n).
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;The old syntax is however still supported for backwards compatibility.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;Multiple patterns can be separated by &lt;code&gt;,&lt;/code&gt; in addition to &lt;code&gt;|&lt;/code&gt;, as in:&lt;pre&gt;&lt;code class="lang-coq"&gt;Equations trans {A} {x y z : A} (e : x = y) (e&amp;#39; : y = z) : x = z := | 1, 1 =&amp;gt; 1.
&lt;/code&gt;&lt;/pre&gt;
&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Require Import Equations.Equations.&lt;/code&gt; does not work anymore.
One has to use &lt;code&gt;Require Import Equations.Prop.Equations&lt;/code&gt; to load the plugin's default instance where equality is in &lt;code&gt;Prop&lt;/code&gt;. &lt;code&gt;From Equations Require Import Equations&lt;/code&gt; is unaffected.&lt;/li&gt;
&lt;li&gt;Use &lt;code&gt;Require Import Equations.HoTT.All&lt;/code&gt; to use the HoTT variant of the library compatible with the &lt;a href="https://github.com/HoTT/HoTT"&gt;Coq HoTT&lt;/a&gt; library
The plugin then reuses the definition of &lt;code&gt;paths&lt;/code&gt; from the HoTT library and all its constructions are universe polymorphic. As for the HoTT library alone, coq must be passed the arguments &lt;code&gt;-noinit -indices-matter&lt;/code&gt; to use the library and plugin. The &lt;code&gt;coq-equations&lt;/code&gt; opam package depends optionally on &lt;code&gt;coq-hott&lt;/code&gt;, so if &lt;code&gt;coq-hott&lt;/code&gt; is installed before it, &lt;code&gt;coq-equations&lt;/code&gt; will automatically install the &lt;code&gt;HoTT&lt;/code&gt; library variant in addition to the standard one. This variant of Equations allows to write very concise dependent pattern-matchings on equality: &lt;pre&gt;&lt;code class="lang-coq"&gt;Require Import Equations.HoTT.All.
Equations sym {A} {x y : A} (e : x = y) : y = x := | 1 =&amp;gt; 1.
&lt;/code&gt;&lt;/pre&gt;
&lt;/li&gt;
&lt;li&gt;New attribute &lt;code&gt;#[tactic=tac]&lt;/code&gt; to set locally the default tactic to solve remaining holes. 
The goals on which the tactic applies are now always of the form &lt;code&gt;Γ |- τ&lt;/code&gt; where Γ is the context where the hole was introduced and τ the expected type, &lt;em&gt;even&lt;/em&gt; when using the &lt;code&gt;Obligation&lt;/code&gt; machinery to solve them, resulting in a possible incompatibility if the obligation tactic treated the context differently than the conclusion. By default, the &lt;code&gt;program_simpl&lt;/code&gt; tactic performs a &lt;code&gt;simpl&lt;/code&gt; call before introducing the hypotheses, so you might need to add a &lt;code&gt;simpl in *&lt;/code&gt; to your tactics.&lt;/li&gt;
&lt;li&gt;New attributes &lt;code&gt;#[derive(equations=yes,no, eliminator=yes|no)]&lt;/code&gt; can be used in place of the &lt;code&gt;(noeqns, noind)&lt;/code&gt; flags which are deprecated.&lt;/li&gt;
&lt;/ul&gt;
Fixed in v1.3beta2:
&lt;ul&gt;
&lt;li&gt;Fix #399: allow simplification in indices when splitting a variable, to expose the head of the index.&lt;/li&gt;
&lt;li&gt;Fix #389: error derving EqDec in HoTT variant.&lt;/li&gt;
&lt;li&gt;Allow universe binder annotations @{} on Equations definitions.&lt;/li&gt;
&lt;li&gt;Fix "struct" parsing issue that required a reset of Coq sometimes&lt;/li&gt;
&lt;li&gt;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.&lt;/li&gt;
&lt;/ul&gt;
Fixed in 1.3beta1:
&lt;ul&gt;
&lt;li&gt;#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".&lt;/li&gt;
&lt;li&gt;#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 &lt;code&gt;Qed&lt;/code&gt; or &lt;code&gt;Defined&lt;/code&gt; (similarly to Coq's &lt;code&gt;#[refine] Instance&lt;/code&gt; command).&lt;/li&gt;
&lt;li&gt;#372, #194: &lt;code&gt;funelim&lt;/code&gt; applied to a partial application failing&lt;/li&gt;
&lt;li&gt;#354: support for building values in &lt;code&gt;SProp&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;#353: name capture problem in presence of modules&lt;/li&gt;
&lt;li&gt;#335: provide an alias Equations Derive to not conflict with QuickChick's Derive&lt;/li&gt;
&lt;li&gt;#325: properly inline all Equations helper constants during Extraction&lt;/li&gt;
&lt;/ul&gt;</subfield>
  </datafield>
  <datafield tag="773" ind1=" " ind2=" ">
    <subfield code="n">url</subfield>
    <subfield code="i">isSupplementTo</subfield>
    <subfield code="a">https://github.com/mattam82/Coq-Equations/tree/v1.3-8.14</subfield>
  </datafield>
  <datafield tag="773" ind1=" " ind2=" ">
    <subfield code="n">doi</subfield>
    <subfield code="i">isVersionOf</subfield>
    <subfield code="a">10.5281/zenodo.1117296</subfield>
  </datafield>
  <datafield tag="024" ind1=" " ind2=" ">
    <subfield code="a">10.5281/zenodo.5529713</subfield>
    <subfield code="2">doi</subfield>
  </datafield>
  <datafield tag="980" ind1=" " ind2=" ">
    <subfield code="a">software</subfield>
  </datafield>
</record>
776
54
views
downloads
All versions This version
Views 77635
Downloads 540
Data volume 70.6 MB0 Bytes
Unique views 70035
Unique downloads 320

Share

Cite as