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


DataCite XML Export

<?xml version='1.0' encoding='utf-8'?>
<resource xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://datacite.org/schema/kernel-4" xsi:schemaLocation="http://datacite.org/schema/kernel-4 http://schema.datacite.org/meta/kernel-4.1/metadata.xsd">
  <identifier identifierType="DOI">10.5281/zenodo.5878837</identifier>
  <creators>
    <creator>
      <creatorName>Matthieu Sozeau</creatorName>
      <affiliation>Inria</affiliation>
    </creator>
    <creator>
      <creatorName>Pierre-Marie Pédrot</creatorName>
    </creator>
    <creator>
      <creatorName>Cyprien Mangin</creatorName>
    </creator>
    <creator>
      <creatorName>Gaëtan Gilbert</creatorName>
      <affiliation>Inria</affiliation>
    </creator>
    <creator>
      <creatorName>Emilio Jesús Gallego Arias</creatorName>
    </creator>
    <creator>
      <creatorName>Hugo Herbelin</creatorName>
    </creator>
    <creator>
      <creatorName>Maxime Dénès</creatorName>
    </creator>
    <creator>
      <creatorName>Robin Green</creatorName>
    </creator>
    <creator>
      <creatorName>Enrico Tassi</creatorName>
      <affiliation>@coq @math-comp @LPCIC</affiliation>
    </creator>
    <creator>
      <creatorName>Guillaume Claret</creatorName>
      <affiliation>foobar.land</affiliation>
    </creator>
    <creator>
      <creatorName>Siddharth</creatorName>
      <affiliation>IIIT Hyderabad</affiliation>
    </creator>
    <creator>
      <creatorName>Anton Trunov</creatorName>
      <affiliation>@Zilliqa</affiliation>
    </creator>
    <creator>
      <creatorName>Jim Fehrle</creatorName>
    </creator>
    <creator>
      <creatorName>Joachim Breitner</creatorName>
      <affiliation>@dfinity-lab</affiliation>
    </creator>
    <creator>
      <creatorName>Antonio Nikishaev</creatorName>
    </creator>
    <creator>
      <creatorName>SimonBoulier</creatorName>
    </creator>
    <creator>
      <creatorName>Søren Nørbæk</creatorName>
    </creator>
    <creator>
      <creatorName>Théo Zimmermann</creatorName>
      <affiliation>@Inria / Université de Paris</affiliation>
    </creator>
    <creator>
      <creatorName>Vincent Laporte</creatorName>
    </creator>
    <creator>
      <creatorName>Yves Bertot</creatorName>
      <affiliation>Inria</affiliation>
    </creator>
  </creators>
  <titles>
    <title>mattam82/Coq-Equations: Equations 1.3 for Coq 8.15</title>
  </titles>
  <publisher>Zenodo</publisher>
  <publicationYear>2022</publicationYear>
  <dates>
    <date dateType="Issued">2022-01-19</date>
  </dates>
  <resourceType resourceTypeGeneral="Software"/>
  <alternateIdentifiers>
    <alternateIdentifier alternateIdentifierType="url">https://zenodo.org/record/5878837</alternateIdentifier>
  </alternateIdentifiers>
  <relatedIdentifiers>
    <relatedIdentifier relatedIdentifierType="URL" relationType="IsSupplementTo">https://github.com/mattam82/Coq-Equations/tree/v1.3-8.15</relatedIdentifier>
    <relatedIdentifier relatedIdentifierType="DOI" relationType="IsVersionOf">10.5281/zenodo.1117296</relatedIdentifier>
  </relatedIdentifiers>
  <version>v1.3-8.15</version>
  <rightsList>
    <rights rightsURI="info:eu-repo/semantics/openAccess">Open Access</rights>
  </rightsList>
  <descriptions>
    <description descriptionType="Abstract">Equations 1.3
&lt;p&gt;This is a new major release of Equations, working with Coq 8.15. 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.15/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;</description>
  </descriptions>
</resource>
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