diff options
| author | Enrico Tassi | 2019-05-22 13:43:08 +0200 |
|---|---|---|
| committer | Enrico Tassi | 2019-05-22 15:34:14 +0200 |
| commit | 748d716efb2f2f75946c8386e441ce1789806a39 (patch) | |
| tree | fe7bb1c5235550410c64e968f4a4d69b7f10a047 /docs/htmldoc/mathcomp.ssreflect.eqtype.html | |
| parent | 415be3b908daadabf178a292c885db78e5b2c9a4 (diff) | |
htmldoc regenerated
Diffstat (limited to 'docs/htmldoc/mathcomp.ssreflect.eqtype.html')
| -rw-r--r-- | docs/htmldoc/mathcomp.ssreflect.eqtype.html | 625 |
1 files changed, 378 insertions, 247 deletions
diff --git a/docs/htmldoc/mathcomp.ssreflect.eqtype.html b/docs/htmldoc/mathcomp.ssreflect.eqtype.html index 3da9fc8..b02a8fb 100644 --- a/docs/htmldoc/mathcomp.ssreflect.eqtype.html +++ b/docs/htmldoc/mathcomp.ssreflect.eqtype.html @@ -21,7 +21,6 @@ <div class="code"> <span class="comment">(* (c) Copyright 2006-2016 Microsoft Corporation and Inria. <br/> Distributed under the terms of CeCILL-B. *)</span><br/> -<span class="id" title="keyword">Require</span> <span class="id" title="keyword">Import</span> <a class="idref" href="mathcomp.ssreflect.ssreflect.html#"><span class="id" title="library">mathcomp.ssreflect.ssreflect</span></a>.<br/> <br/> </div> @@ -29,20 +28,40 @@ <div class="doc"> This file defines two "base" combinatorial interfaces: eqType == the structure for types with a decidable equality. - Equality mixins can be made Canonical to allow generic - folding of equality predicates. - subType p == the structure for types isomorphic to {x : T | p x} with - p : pred T for some type T. - The eqType interface supports the following operations: - x == y <=> x compares equal to y (this is a boolean test). - x == y :> T <=> x == y at type T. - x != y <=> x and y compare unequal. - x != y :> T <=> " " " " at type T. - x =P y :: a proof of reflect (x = y) (x == y); this coerces - to x == y -> x = y. - comparable T <-> equality on T is decidable + subType P == the structure for types isomorphic to {x : T | P x} with + P : pred T for some type T. + The following are used to construct eqType instances: + EqType T m == the packed eqType class for type T and mixin m. +> As eqType is a root class, equality mixins and classes coincide. + Equality.axiom e <-> e : rel T is a valid comparison decision procedure + for type T: reflect (x = y) (e x y) for all x y : T. + EqMixin eP == the equality mixin for eP : Equality.axiom e. +> Such manifest equality mixins should be declared Canonical to allow + for generic folding of equality predicates (see lemma eqE below). + [eqType of T for eT] == clone for T of eT, where eT is an eqType for a + type convertible, but usually not identical, to T. + [eqType of T] == clone for T of the eqType inferred for T, possibly + after unfolding some definitions. + [eqMixin of T] == mixin of the eqType inferred for T. + comparable T <-> equality on T is decidable. := forall x y : T, decidable (x = y) - comparableClass compT == eqType mixin/class for compT : comparable T. + comparableMixin compT == equality mixin for compT : comparable T. + InjEqMixin injf == an Equality mixin for T, using an f : T -> U where + U has an eqType structure and injf : injective f. + PcanEqMixin fK == an Equality mixin similarly derived from f and a left + inverse partial function g and fK : pcancel f g. + CanEqMixin fK == an Equality mixin similarly derived from f and a left + inverse function g and fK : cancel f g. +> Equality mixins derived by the above should never be made Canonical as + they provide only comparisons with a generic head constant. + The eqType interface supports the following operations: + x == y <=> x compares equal to y (this is a boolean test). + x == y :> T <=> x == y at type T. + x != y <=> x and y compare unequal. + x != y :> T <=> x and y compare unequal at type T. + x =P y :: a proof of reflect (x = y) (x == y); x =P y coerces + to x == y -> x = y. + eq_op == the boolean relation behing the == notation. pred1 a == the singleton predicate [pred x | x == a]. pred2, pred3, pred4 == pair, triple, quad predicates. predC1 a == [pred x | x != a]. @@ -90,7 +109,7 @@ a proof of x0 \in A. insub_eq x == transparent version of insub x that expands to Some/None when P x can evaluate. - The subType P interface is most often implemented using one of: + The subType P interface is most often implemented using one of: [subType for S_val] where S_val : S -> T is the first projection of a type S isomorphic to {x : T | P}. @@ -111,16 +130,9 @@ Subtypes inherit the eqType structure of their base types; the generic structure should be explicitly instantiated using the [eqMixin of S by <: ] - construct to declare the Equality mixin; this pattern is repeated for all - the combinatorial interfaces (Choice, Countable, Finite). - More generally, the eqType structure can be transfered by (partial) - injections, using: - InjEqMixin injf == an Equality mixin for T, using an f : T -> eT where - eT has an eqType structure and injf : injective f. - PcanEqMixin fK == an Equality mixin similarly derived from f and a left - inverse partial function g and fK : pcancel f g. - CanEqMixin fK == an Equality mixin similarly derived from f and a left - inverse function g and fK : cancel f g. + construct to declare the equality mixin; this pattern is repeated for all + the combinatorial interfaces (Choice, Countable, Finite). As noted above, + such mixins should not be made Canonical. We add the following to the standard suffixes documented in ssrbool.v: 1, 2, 3, 4 -- explicit enumeration predicate for 1 (singleton), 2, 3, or 4 values. @@ -134,25 +146,24 @@ <span class="id" title="keyword">Module</span> <a name="Equality"><span class="id" title="module">Equality</span></a>.<br/> <br/> -<span class="id" title="keyword">Definition</span> <a name="Equality.axiom"><span class="id" title="definition">axiom</span></a> <span class="id" title="var">T</span> (<span class="id" title="var">e</span> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#rel"><span class="id" title="definition">rel</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#T"><span class="id" title="variable">T</span></a>) := <span class="id" title="keyword">∀</span> <span class="id" title="var">x</span> <span class="id" title="var">y</span>, <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#reflect"><span class="id" title="abbreviation">reflect</span></a> (<a class="idref" href="mathcomp.ssreflect.eqtype.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#y"><span class="id" title="variable">y</span></a>) (<a class="idref" href="mathcomp.ssreflect.eqtype.html#e"><span class="id" title="variable">e</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#y"><span class="id" title="variable">y</span></a>).<br/> +<span class="id" title="keyword">Definition</span> <a name="Equality.axiom"><span class="id" title="definition">axiom</span></a> <span class="id" title="var">T</span> (<span class="id" title="var">e</span> : <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#rel"><span class="id" title="definition">rel</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#T"><span class="id" title="variable">T</span></a>) := <span class="id" title="keyword">∀</span> <span class="id" title="var">x</span> <span class="id" title="var">y</span>, <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#reflect"><span class="id" title="abbreviation">reflect</span></a> (<a class="idref" href="mathcomp.ssreflect.eqtype.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#6cd0f7b28b6092304087c7049437bb1a"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#y"><span class="id" title="variable">y</span></a>) (<a class="idref" href="mathcomp.ssreflect.eqtype.html#e"><span class="id" title="variable">e</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#y"><span class="id" title="variable">y</span></a>).<br/> <br/> -<span class="id" title="keyword">Structure</span> <a name="Equality.mixin_of"><span class="id" title="record">mixin_of</span></a> <span class="id" title="var">T</span> := <a name="Equality.Mixin"><span class="id" title="constructor">Mixin</span></a> {<a name="Equality.op"><span class="id" title="projection">op</span></a> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#rel"><span class="id" title="definition">rel</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#T"><span class="id" title="variable">T</span></a>; <span class="id" title="var">_</span> : <a class="idref" href="mathcomp.ssreflect.eqtype.html#Equality.axiom"><span class="id" title="definition">axiom</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#op"><span class="id" title="method">op</span></a>}.<br/> +<span class="id" title="keyword">Structure</span> <a name="Equality.mixin_of"><span class="id" title="record">mixin_of</span></a> <span class="id" title="var">T</span> := <a name="Equality.Mixin"><span class="id" title="constructor">Mixin</span></a> {<a name="Equality.op"><span class="id" title="projection">op</span></a> : <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#rel"><span class="id" title="definition">rel</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#T"><span class="id" title="variable">T</span></a>; <span class="id" title="var">_</span> : <a class="idref" href="mathcomp.ssreflect.eqtype.html#Equality.axiom"><span class="id" title="definition">axiom</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#op"><span class="id" title="method">op</span></a>}.<br/> <span class="id" title="keyword">Notation</span> <a name="Equality.class_of"><span class="id" title="abbreviation">class_of</span></a> := <a class="idref" href="mathcomp.ssreflect.eqtype.html#Equality.mixin_of"><span class="id" title="record">mixin_of</span></a> (<span class="id" title="var">only</span> <span class="id" title="var">parsing</span>).<br/> <br/> <span class="id" title="keyword">Section</span> <a name="Equality.ClassDef"><span class="id" title="section">ClassDef</span></a>.<br/> <br/> -<span class="id" title="keyword">Structure</span> <a name="Equality.type"><span class="id" title="record">type</span></a> := <a name="Equality.Pack"><span class="id" title="constructor">Pack</span></a> {<a name="Equality.sort"><span class="id" title="projection">sort</span></a>; <span class="id" title="var">_</span> : <a class="idref" href="mathcomp.ssreflect.eqtype.html#Equality.class_of"><span class="id" title="abbreviation">class_of</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#sort"><span class="id" title="method">sort</span></a>; <span class="id" title="var">_</span> : <span class="id" title="keyword">Type</span>}.<br/> +<span class="id" title="keyword">Structure</span> <a name="Equality.type"><span class="id" title="record">type</span></a> := <a name="Equality.Pack"><span class="id" title="constructor">Pack</span></a> {<a name="Equality.sort"><span class="id" title="projection">sort</span></a>; <span class="id" title="var">_</span> : <a class="idref" href="mathcomp.ssreflect.eqtype.html#Equality.class_of"><span class="id" title="abbreviation">class_of</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#sort"><span class="id" title="method">sort</span></a>}.<br/> <span class="id" title="keyword">Variables</span> (<a name="Equality.ClassDef.T"><span class="id" title="variable">T</span></a> : <span class="id" title="keyword">Type</span>) (<a name="Equality.ClassDef.cT"><span class="id" title="variable">cT</span></a> : <a class="idref" href="mathcomp.ssreflect.eqtype.html#Equality.type"><span class="id" title="record">type</span></a>).<br/> <br/> -<span class="id" title="keyword">Definition</span> <a name="Equality.class"><span class="id" title="definition">class</span></a> := <span class="id" title="keyword">let</span>: <a class="idref" href="mathcomp.ssreflect.eqtype.html#Equality.Pack"><span class="id" title="constructor">Pack</span></a> <span class="id" title="var">_</span> <span class="id" title="var">c</span> <span class="id" title="var">_</span> := <a class="idref" href="mathcomp.ssreflect.eqtype.html#Equality.ClassDef.cT"><span class="id" title="variable">cT</span></a> <span class="id" title="keyword">return</span> <a class="idref" href="mathcomp.ssreflect.eqtype.html#Equality.class_of"><span class="id" title="abbreviation">class_of</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#cT"><span class="id" title="variable">cT</span></a> <span class="id" title="tactic">in</span> <span class="id" title="var">c</span>.<br/> +<span class="id" title="keyword">Definition</span> <a name="Equality.class"><span class="id" title="definition">class</span></a> := <span class="id" title="keyword">let</span>: <a class="idref" href="mathcomp.ssreflect.eqtype.html#Equality.Pack"><span class="id" title="constructor">Pack</span></a> <span class="id" title="var">_</span> <span class="id" title="var">c</span> := <a class="idref" href="mathcomp.ssreflect.eqtype.html#Equality.ClassDef.cT"><span class="id" title="variable">cT</span></a> <span class="id" title="keyword">return</span> <a class="idref" href="mathcomp.ssreflect.eqtype.html#Equality.class_of"><span class="id" title="abbreviation">class_of</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#cT"><span class="id" title="variable">cT</span></a> <span class="id" title="tactic">in</span> <span class="id" title="var">c</span>.<br/> <br/> -<span class="id" title="keyword">Definition</span> <a name="Equality.pack"><span class="id" title="definition">pack</span></a> <span class="id" title="var">c</span> := @<a class="idref" href="mathcomp.ssreflect.eqtype.html#Equality.Pack"><span class="id" title="constructor">Pack</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#Equality.ClassDef.T"><span class="id" title="variable">T</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#c"><span class="id" title="variable">c</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#Equality.ClassDef.T"><span class="id" title="variable">T</span></a>.<br/> -<span class="id" title="keyword">Definition</span> <a name="Equality.clone"><span class="id" title="definition">clone</span></a> := <span class="id" title="keyword">fun</span> <span class="id" title="var">c</span> & <a class="idref" href="mathcomp.ssreflect.eqtype.html#Equality.ClassDef.cT"><span class="id" title="variable">cT</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#Equality.ClassDef.T"><span class="id" title="variable">T</span></a> & <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#phant_id"><span class="id" title="definition">phant_id</span></a> (<a class="idref" href="mathcomp.ssreflect.eqtype.html#Equality.pack"><span class="id" title="definition">pack</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#c"><span class="id" title="variable">c</span></a>) <a class="idref" href="mathcomp.ssreflect.eqtype.html#Equality.ClassDef.cT"><span class="id" title="variable">cT</span></a> ⇒ <a class="idref" href="mathcomp.ssreflect.eqtype.html#Equality.pack"><span class="id" title="definition">pack</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#c"><span class="id" title="variable">c</span></a>.<br/> +<span class="id" title="keyword">Definition</span> <a name="Equality.clone"><span class="id" title="definition">clone</span></a> := <span class="id" title="keyword">fun</span> <span class="id" title="var">c</span> & <a class="idref" href="mathcomp.ssreflect.eqtype.html#Equality.ClassDef.cT"><span class="id" title="variable">cT</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#1c93e43e07fbeaeb6a625cb6614beb5d"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#Equality.ClassDef.T"><span class="id" title="variable">T</span></a> & <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#phant_id"><span class="id" title="definition">phant_id</span></a> (@<a class="idref" href="mathcomp.ssreflect.eqtype.html#Equality.Pack"><span class="id" title="constructor">Pack</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#Equality.ClassDef.T"><span class="id" title="variable">T</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#c"><span class="id" title="variable">c</span></a>) <a class="idref" href="mathcomp.ssreflect.eqtype.html#Equality.ClassDef.cT"><span class="id" title="variable">cT</span></a> ⇒ <a class="idref" href="mathcomp.ssreflect.eqtype.html#Equality.Pack"><span class="id" title="constructor">Pack</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#c"><span class="id" title="variable">c</span></a>.<br/> <br/> <span class="id" title="keyword">End</span> <a class="idref" href="mathcomp.ssreflect.eqtype.html#Equality.ClassDef"><span class="id" title="section">ClassDef</span></a>.<br/> @@ -162,12 +173,12 @@ <span class="id" title="keyword">Coercion</span> <a class="idref" href="mathcomp.ssreflect.eqtype.html#Equality.sort"><span class="id" title="projection">sort</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#Equality.sort"><span class="id" title="projection">:</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#Equality.sort"><span class="id" title="projection">type</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#Equality.sort"><span class="id" title="projection">>-></span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#Equality.sort"><span class="id" title="projection">Sortclass</span></a>.<br/> <span class="id" title="keyword">Notation</span> <a name="Equality.Exports.eqType"><span class="id" title="abbreviation">eqType</span></a> := <a class="idref" href="mathcomp.ssreflect.eqtype.html#Equality.type"><span class="id" title="record">type</span></a>.<br/> <span class="id" title="keyword">Notation</span> <a name="Equality.Exports.EqMixin"><span class="id" title="abbreviation">EqMixin</span></a> := <a class="idref" href="mathcomp.ssreflect.eqtype.html#Equality.Mixin"><span class="id" title="constructor">Mixin</span></a>.<br/> -<span class="id" title="keyword">Notation</span> <a name="Equality.Exports.EqType"><span class="id" title="abbreviation">EqType</span></a> <span class="id" title="var">T</span> <span class="id" title="var">m</span> := (@<a class="idref" href="mathcomp.ssreflect.eqtype.html#Equality.pack"><span class="id" title="definition">pack</span></a> <span class="id" title="var">T</span> <span class="id" title="var">m</span>).<br/> -<span class="id" title="keyword">Notation</span> <a name="78287ce0666bcaa587a668e46d5a01f3"><span class="id" title="notation">"</span></a>[ 'eqMixin' 'of' T ]" := (<a class="idref" href="mathcomp.ssreflect.eqtype.html#Equality.class"><span class="id" title="definition">class</span></a> <span class="id" title="var">_</span> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssreflect.html#4509b22bf26e3d6d771897e22bd8bc8f"><span class="id" title="notation">:</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#Equality.mixin_of"><span class="id" title="record">mixin_of</span></a> <span class="id" title="var">T</span>)<br/> +<span class="id" title="keyword">Notation</span> <a name="Equality.Exports.EqType"><span class="id" title="abbreviation">EqType</span></a> <span class="id" title="var">T</span> <span class="id" title="var">m</span> := (@<a class="idref" href="mathcomp.ssreflect.eqtype.html#Equality.Pack"><span class="id" title="constructor">Pack</span></a> <span class="id" title="var">T</span> <span class="id" title="var">m</span>).<br/> +<span class="id" title="keyword">Notation</span> <a name="537cd9d3521b1a9c172f81d0628e3d40"><span class="id" title="notation">"</span></a>[ 'eqMixin' 'of' T ]" := (<a class="idref" href="mathcomp.ssreflect.eqtype.html#Equality.class"><span class="id" title="definition">class</span></a> <span class="id" title="var">_</span> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssreflect.html#aed478b27f23b4f753c27c8ac393febc"><span class="id" title="notation">:</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#Equality.mixin_of"><span class="id" title="record">mixin_of</span></a> <span class="id" title="var">T</span>)<br/> (<span class="id" title="tactic">at</span> <span class="id" title="keyword">level</span> 0, <span class="id" title="var">format</span> "[ 'eqMixin' 'of' T ]") : <span class="id" title="var">form_scope</span>.<br/> -<span class="id" title="keyword">Notation</span> <a name="ea28a4d33dfb78a62dc4071e70f3d5db"><span class="id" title="notation">"</span></a>[ 'eqType' 'of' T 'for' C ]" := (@<a class="idref" href="mathcomp.ssreflect.eqtype.html#Equality.clone"><span class="id" title="definition">clone</span></a> <span class="id" title="var">T</span> <span class="id" title="var">C</span> <span class="id" title="var">_</span> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#idfun"><span class="id" title="abbreviation">idfun</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#id"><span class="id" title="abbreviation">id</span></a>)<br/> +<span class="id" title="keyword">Notation</span> <a name="81ec7b251f2007d39c38861f2d0a8253"><span class="id" title="notation">"</span></a>[ 'eqType' 'of' T 'for' C ]" := (@<a class="idref" href="mathcomp.ssreflect.eqtype.html#Equality.clone"><span class="id" title="definition">clone</span></a> <span class="id" title="var">T</span> <span class="id" title="var">C</span> <span class="id" title="var">_</span> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#idfun"><span class="id" title="abbreviation">idfun</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#id"><span class="id" title="abbreviation">id</span></a>)<br/> (<span class="id" title="tactic">at</span> <span class="id" title="keyword">level</span> 0, <span class="id" title="var">format</span> "[ 'eqType' 'of' T 'for' C ]") : <span class="id" title="var">form_scope</span>.<br/> -<span class="id" title="keyword">Notation</span> <a name="cb062fd562aed512787df99359c6e3f2"><span class="id" title="notation">"</span></a>[ 'eqType' 'of' T ]" := (@<a class="idref" href="mathcomp.ssreflect.eqtype.html#Equality.clone"><span class="id" title="definition">clone</span></a> <span class="id" title="var">T</span> <span class="id" title="var">_</span> <span class="id" title="var">_</span> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#id"><span class="id" title="abbreviation">id</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#id"><span class="id" title="abbreviation">id</span></a>)<br/> +<span class="id" title="keyword">Notation</span> <a name="2b9222c46a529018a8ebb5be6355801c"><span class="id" title="notation">"</span></a>[ 'eqType' 'of' T ]" := (@<a class="idref" href="mathcomp.ssreflect.eqtype.html#Equality.clone"><span class="id" title="definition">clone</span></a> <span class="id" title="var">T</span> <span class="id" title="var">_</span> <span class="id" title="var">_</span> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#id"><span class="id" title="abbreviation">id</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#id"><span class="id" title="abbreviation">id</span></a>)<br/> (<span class="id" title="tactic">at</span> <span class="id" title="keyword">level</span> 0, <span class="id" title="var">format</span> "[ 'eqType' 'of' T ]") : <span class="id" title="var">form_scope</span>.<br/> <span class="id" title="keyword">End</span> <a class="idref" href="mathcomp.ssreflect.eqtype.html#Equality.Exports"><span class="id" title="module">Exports</span></a>.<br/> @@ -179,7 +190,27 @@ <span class="id" title="keyword">Definition</span> <a name="eq_op"><span class="id" title="definition">eq_op</span></a> <span class="id" title="var">T</span> := <a class="idref" href="mathcomp.ssreflect.eqtype.html#op"><span class="id" title="projection">Equality.op</span></a> (<a class="idref" href="mathcomp.ssreflect.eqtype.html#class"><span class="id" title="definition">Equality.class</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#T"><span class="id" title="variable">T</span></a>).<br/> <br/> -<span class="id" title="keyword">Lemma</span> <a name="eqE"><span class="id" title="lemma">eqE</span></a> <span class="id" title="var">T</span> <span class="id" title="var">x</span> : <a class="idref" href="mathcomp.ssreflect.eqtype.html#eq_op"><span class="id" title="definition">eq_op</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#op"><span class="id" title="projection">Equality.op</span></a> (<a class="idref" href="mathcomp.ssreflect.eqtype.html#class"><span class="id" title="definition">Equality.class</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#T"><span class="id" title="variable">T</span></a>) <a class="idref" href="mathcomp.ssreflect.eqtype.html#x"><span class="id" title="variable">x</span></a>.<br/> +</div> + +<div class="doc"> + eqE is a generic lemma that can be used to fold back recursive comparisons + after using partial evaluation to simplify comparisons on concrete + instances. The eqE lemma can be used e.g. like so: rewrite !eqE /= -!eqE. + For instance, with the above rewrite, n.+1 == n.+1 gets simplified to + n == n. For this to work, we need to declare equality <i>mixins</i> + as canonical. Canonical declarations remove the need for specific + inverses to eqE (like eqbE, eqnE, eqseqE, etc.) for new recursive + comparisons, but can only be used for manifest mixing with a bespoke + comparison function, and so is incompatible with PcanEqMixin and the like +<ul class="doclist"> +<li> this is why the tree_eqMixin for GenTree.tree in library choice is not + +</li> +</ul> + declared Canonical. +</div> +<div class="code"> +<span class="id" title="keyword">Lemma</span> <a name="eqE"><span class="id" title="lemma">eqE</span></a> <span class="id" title="var">T</span> <span class="id" title="var">x</span> : <a class="idref" href="mathcomp.ssreflect.eqtype.html#eq_op"><span class="id" title="definition">eq_op</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#6cd0f7b28b6092304087c7049437bb1a"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#op"><span class="id" title="projection">Equality.op</span></a> (<a class="idref" href="mathcomp.ssreflect.eqtype.html#class"><span class="id" title="definition">Equality.class</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#T"><span class="id" title="variable">T</span></a>) <a class="idref" href="mathcomp.ssreflect.eqtype.html#x"><span class="id" title="variable">x</span></a>.<br/> <br/> <span class="id" title="keyword">Lemma</span> <a name="eqP"><span class="id" title="lemma">eqP</span></a> <span class="id" title="var">T</span> : <a class="idref" href="mathcomp.ssreflect.eqtype.html#axiom"><span class="id" title="definition">Equality.axiom</span></a> (@<a class="idref" href="mathcomp.ssreflect.eqtype.html#eq_op"><span class="id" title="definition">eq_op</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#T"><span class="id" title="variable">T</span></a>).<br/> @@ -189,82 +220,97 @@ <span class="id" title="keyword">Open</span> <span class="id" title="keyword">Scope</span> <span class="id" title="var">eq_scope</span>.<br/> <br/> -<span class="id" title="keyword">Notation</span> <a name="17d28d004d0863cb022d4ce832ddaaae"><span class="id" title="notation">"</span></a>x == y" := (<a class="idref" href="mathcomp.ssreflect.eqtype.html#eq_op"><span class="id" title="definition">eq_op</span></a> <span class="id" title="var">x</span> <span class="id" title="var">y</span>)<br/> +<span class="id" title="keyword">Notation</span> <a name="df45e8c2e8370fd4f0f7c4fdaf208180"><span class="id" title="notation">"</span></a>x == y" := (<a class="idref" href="mathcomp.ssreflect.eqtype.html#eq_op"><span class="id" title="definition">eq_op</span></a> <span class="id" title="var">x</span> <span class="id" title="var">y</span>)<br/> (<span class="id" title="tactic">at</span> <span class="id" title="keyword">level</span> 70, <span class="id" title="keyword">no</span> <span class="id" title="keyword">associativity</span>) : <span class="id" title="var">bool_scope</span>.<br/> -<span class="id" title="keyword">Notation</span> <a name="340b60eb5a3e9913f807040630cb8d43"><span class="id" title="notation">"</span></a>x == y :> T" := (<a class="idref" href="mathcomp.ssreflect.eqtype.html#17d28d004d0863cb022d4ce832ddaaae"><span class="id" title="notation">(</span></a><span class="id" title="var">x</span> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssreflect.html#4509b22bf26e3d6d771897e22bd8bc8f"><span class="id" title="notation">:</span></a> <span class="id" title="var">T</span><a class="idref" href="mathcomp.ssreflect.eqtype.html#17d28d004d0863cb022d4ce832ddaaae"><span class="id" title="notation">)</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#17d28d004d0863cb022d4ce832ddaaae"><span class="id" title="notation">==</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#17d28d004d0863cb022d4ce832ddaaae"><span class="id" title="notation">(</span></a><span class="id" title="var">y</span> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssreflect.html#4509b22bf26e3d6d771897e22bd8bc8f"><span class="id" title="notation">:</span></a> <span class="id" title="var">T</span><a class="idref" href="mathcomp.ssreflect.eqtype.html#17d28d004d0863cb022d4ce832ddaaae"><span class="id" title="notation">)</span></a>)<br/> +<span class="id" title="keyword">Notation</span> <a name="28a3089bb29d95d7bdc98c2c73b31552"><span class="id" title="notation">"</span></a>x == y :> T" := (<a class="idref" href="mathcomp.ssreflect.eqtype.html#df45e8c2e8370fd4f0f7c4fdaf208180"><span class="id" title="notation">(</span></a><span class="id" title="var">x</span> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssreflect.html#aed478b27f23b4f753c27c8ac393febc"><span class="id" title="notation">:</span></a> <span class="id" title="var">T</span><a class="idref" href="mathcomp.ssreflect.eqtype.html#df45e8c2e8370fd4f0f7c4fdaf208180"><span class="id" title="notation">)</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#df45e8c2e8370fd4f0f7c4fdaf208180"><span class="id" title="notation">==</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#df45e8c2e8370fd4f0f7c4fdaf208180"><span class="id" title="notation">(</span></a><span class="id" title="var">y</span> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssreflect.html#aed478b27f23b4f753c27c8ac393febc"><span class="id" title="notation">:</span></a> <span class="id" title="var">T</span><a class="idref" href="mathcomp.ssreflect.eqtype.html#df45e8c2e8370fd4f0f7c4fdaf208180"><span class="id" title="notation">)</span></a>)<br/> (<span class="id" title="tactic">at</span> <span class="id" title="keyword">level</span> 70, <span class="id" title="var">y</span> <span class="id" title="tactic">at</span> <span class="id" title="var">next</span> <span class="id" title="keyword">level</span>) : <span class="id" title="var">bool_scope</span>.<br/> -<span class="id" title="keyword">Notation</span> <a name="b1eeadc2feabc7422252baa895418c7b"><span class="id" title="notation">"</span></a>x != y" := (<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#4b80c70cdb231351c5e129ba61f7f956"><span class="id" title="notation">~~</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#4b80c70cdb231351c5e129ba61f7f956"><span class="id" title="notation">(</span></a><span class="id" title="var">x</span> <a class="idref" href="mathcomp.ssreflect.eqtype.html#17d28d004d0863cb022d4ce832ddaaae"><span class="id" title="notation">==</span></a> <span class="id" title="var">y</span><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#4b80c70cdb231351c5e129ba61f7f956"><span class="id" title="notation">)</span></a>)<br/> +<span class="id" title="keyword">Notation</span> <a name="c385a484ee9d1b4e0615924561a9b75e"><span class="id" title="notation">"</span></a>x != y" := (<a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#b3ebd0deddd84fd60e149cb5ef719351"><span class="id" title="notation">~~</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#b3ebd0deddd84fd60e149cb5ef719351"><span class="id" title="notation">(</span></a><span class="id" title="var">x</span> <a class="idref" href="mathcomp.ssreflect.eqtype.html#df45e8c2e8370fd4f0f7c4fdaf208180"><span class="id" title="notation">==</span></a> <span class="id" title="var">y</span><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#b3ebd0deddd84fd60e149cb5ef719351"><span class="id" title="notation">)</span></a>)<br/> (<span class="id" title="tactic">at</span> <span class="id" title="keyword">level</span> 70, <span class="id" title="keyword">no</span> <span class="id" title="keyword">associativity</span>) : <span class="id" title="var">bool_scope</span>.<br/> -<span class="id" title="keyword">Notation</span> <a name="9e45f909d1732d6d9e153b650829bccf"><span class="id" title="notation">"</span></a>x != y :> T" := (<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#4b80c70cdb231351c5e129ba61f7f956"><span class="id" title="notation">~~</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#4b80c70cdb231351c5e129ba61f7f956"><span class="id" title="notation">(</span></a><span class="id" title="var">x</span> <a class="idref" href="mathcomp.ssreflect.eqtype.html#340b60eb5a3e9913f807040630cb8d43"><span class="id" title="notation">==</span></a> <span class="id" title="var">y</span> <a class="idref" href="mathcomp.ssreflect.eqtype.html#340b60eb5a3e9913f807040630cb8d43"><span class="id" title="notation">:></span></a> <span class="id" title="var">T</span><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#4b80c70cdb231351c5e129ba61f7f956"><span class="id" title="notation">)</span></a>)<br/> +<span class="id" title="keyword">Notation</span> <a name="228e85e3c31a939cba019f255574c875"><span class="id" title="notation">"</span></a>x != y :> T" := (<a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#b3ebd0deddd84fd60e149cb5ef719351"><span class="id" title="notation">~~</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#b3ebd0deddd84fd60e149cb5ef719351"><span class="id" title="notation">(</span></a><span class="id" title="var">x</span> <a class="idref" href="mathcomp.ssreflect.eqtype.html#28a3089bb29d95d7bdc98c2c73b31552"><span class="id" title="notation">==</span></a> <span class="id" title="var">y</span> <a class="idref" href="mathcomp.ssreflect.eqtype.html#28a3089bb29d95d7bdc98c2c73b31552"><span class="id" title="notation">:></span></a> <span class="id" title="var">T</span><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#b3ebd0deddd84fd60e149cb5ef719351"><span class="id" title="notation">)</span></a>)<br/> (<span class="id" title="tactic">at</span> <span class="id" title="keyword">level</span> 70, <span class="id" title="var">y</span> <span class="id" title="tactic">at</span> <span class="id" title="var">next</span> <span class="id" title="keyword">level</span>) : <span class="id" title="var">bool_scope</span>.<br/> -<span class="id" title="keyword">Notation</span> <a name="ab7a7bc39754581ab8f205db64711d57"><span class="id" title="notation">"</span></a>x =P y" := (<a class="idref" href="mathcomp.ssreflect.eqtype.html#eqP"><span class="id" title="lemma">eqP</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssreflect.html#4509b22bf26e3d6d771897e22bd8bc8f"><span class="id" title="notation">:</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#reflect"><span class="id" title="abbreviation">reflect</span></a> (<span class="id" title="var">x</span> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <span class="id" title="var">y</span>) (<span class="id" title="var">x</span> <a class="idref" href="mathcomp.ssreflect.eqtype.html#17d28d004d0863cb022d4ce832ddaaae"><span class="id" title="notation">==</span></a> <span class="id" title="var">y</span>))<br/> +<span class="id" title="keyword">Notation</span> <a name="699be9384eca4d7537361910a9a14afe"><span class="id" title="notation">"</span></a>x =P y" := (<a class="idref" href="mathcomp.ssreflect.eqtype.html#eqP"><span class="id" title="lemma">eqP</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssreflect.html#aed478b27f23b4f753c27c8ac393febc"><span class="id" title="notation">:</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#reflect"><span class="id" title="abbreviation">reflect</span></a> (<span class="id" title="var">x</span> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#6cd0f7b28b6092304087c7049437bb1a"><span class="id" title="notation">=</span></a> <span class="id" title="var">y</span>) (<span class="id" title="var">x</span> <a class="idref" href="mathcomp.ssreflect.eqtype.html#df45e8c2e8370fd4f0f7c4fdaf208180"><span class="id" title="notation">==</span></a> <span class="id" title="var">y</span>))<br/> (<span class="id" title="tactic">at</span> <span class="id" title="keyword">level</span> 70, <span class="id" title="keyword">no</span> <span class="id" title="keyword">associativity</span>) : <span class="id" title="var">eq_scope</span>.<br/> -<span class="id" title="keyword">Notation</span> <a name="57fb9faa34beea4ffe4cd740203a17ea"><span class="id" title="notation">"</span></a>x =P y :> T" := (<a class="idref" href="mathcomp.ssreflect.eqtype.html#eqP"><span class="id" title="lemma">eqP</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssreflect.html#4509b22bf26e3d6d771897e22bd8bc8f"><span class="id" title="notation">:</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#reflect"><span class="id" title="abbreviation">reflect</span></a> (<span class="id" title="var">x</span> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#8f9364556521ebb498093f28eea2240f"><span class="id" title="notation">=</span></a> <span class="id" title="var">y</span> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#8f9364556521ebb498093f28eea2240f"><span class="id" title="notation">:></span></a> <span class="id" title="var">T</span>) (<span class="id" title="var">x</span> <a class="idref" href="mathcomp.ssreflect.eqtype.html#340b60eb5a3e9913f807040630cb8d43"><span class="id" title="notation">==</span></a> <span class="id" title="var">y</span> <a class="idref" href="mathcomp.ssreflect.eqtype.html#340b60eb5a3e9913f807040630cb8d43"><span class="id" title="notation">:></span></a> <span class="id" title="var">T</span>))<br/> +<span class="id" title="keyword">Notation</span> <a name="4bd3c31686439006664c658ab8fdfe4e"><span class="id" title="notation">"</span></a>x =P y :> T" := (<a class="idref" href="mathcomp.ssreflect.eqtype.html#eqP"><span class="id" title="lemma">eqP</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssreflect.html#aed478b27f23b4f753c27c8ac393febc"><span class="id" title="notation">:</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#reflect"><span class="id" title="abbreviation">reflect</span></a> (<span class="id" title="var">x</span> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#b8b2ebc8e1a8b9aa935c0702efb5dccf"><span class="id" title="notation">=</span></a> <span class="id" title="var">y</span> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#b8b2ebc8e1a8b9aa935c0702efb5dccf"><span class="id" title="notation">:></span></a> <span class="id" title="var">T</span>) (<span class="id" title="var">x</span> <a class="idref" href="mathcomp.ssreflect.eqtype.html#28a3089bb29d95d7bdc98c2c73b31552"><span class="id" title="notation">==</span></a> <span class="id" title="var">y</span> <a class="idref" href="mathcomp.ssreflect.eqtype.html#28a3089bb29d95d7bdc98c2c73b31552"><span class="id" title="notation">:></span></a> <span class="id" title="var">T</span>))<br/> (<span class="id" title="tactic">at</span> <span class="id" title="keyword">level</span> 70, <span class="id" title="var">y</span> <span class="id" title="tactic">at</span> <span class="id" title="var">next</span> <span class="id" title="keyword">level</span>, <span class="id" title="keyword">no</span> <span class="id" title="keyword">associativity</span>) : <span class="id" title="var">eq_scope</span>.<br/> <br/> <br/> -<span class="id" title="keyword">Lemma</span> <a name="eq_refl"><span class="id" title="lemma">eq_refl</span></a> (<span class="id" title="var">T</span> : <a class="idref" href="mathcomp.ssreflect.eqtype.html#eqType"><span class="id" title="abbreviation">eqType</span></a>) (<span class="id" title="var">x</span> : <a class="idref" href="mathcomp.ssreflect.eqtype.html#T"><span class="id" title="variable">T</span></a>) : <a class="idref" href="mathcomp.ssreflect.eqtype.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#17d28d004d0863cb022d4ce832ddaaae"><span class="id" title="notation">==</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#x"><span class="id" title="variable">x</span></a>. <br/> +<span class="id" title="keyword">Lemma</span> <a name="eq_refl"><span class="id" title="lemma">eq_refl</span></a> (<span class="id" title="var">T</span> : <a class="idref" href="mathcomp.ssreflect.eqtype.html#eqType"><span class="id" title="abbreviation">eqType</span></a>) (<span class="id" title="var">x</span> : <a class="idref" href="mathcomp.ssreflect.eqtype.html#T"><span class="id" title="variable">T</span></a>) : <a class="idref" href="mathcomp.ssreflect.eqtype.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#df45e8c2e8370fd4f0f7c4fdaf208180"><span class="id" title="notation">==</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#x"><span class="id" title="variable">x</span></a>. <br/> <span class="id" title="keyword">Notation</span> <a name="eqxx"><span class="id" title="abbreviation">eqxx</span></a> := <a class="idref" href="mathcomp.ssreflect.eqtype.html#eq_refl"><span class="id" title="lemma">eq_refl</span></a>.<br/> <br/> -<span class="id" title="keyword">Lemma</span> <a name="eq_sym"><span class="id" title="lemma">eq_sym</span></a> (<span class="id" title="var">T</span> : <a class="idref" href="mathcomp.ssreflect.eqtype.html#eqType"><span class="id" title="abbreviation">eqType</span></a>) (<span class="id" title="var">x</span> <span class="id" title="var">y</span> : <a class="idref" href="mathcomp.ssreflect.eqtype.html#T"><span class="id" title="variable">T</span></a>) : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.ssreflect.eqtype.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#17d28d004d0863cb022d4ce832ddaaae"><span class="id" title="notation">==</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#y"><span class="id" title="variable">y</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">)</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.ssreflect.eqtype.html#y"><span class="id" title="variable">y</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#17d28d004d0863cb022d4ce832ddaaae"><span class="id" title="notation">==</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#x"><span class="id" title="variable">x</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">)</span></a>.<br/> +<span class="id" title="keyword">Lemma</span> <a name="eq_sym"><span class="id" title="lemma">eq_sym</span></a> (<span class="id" title="var">T</span> : <a class="idref" href="mathcomp.ssreflect.eqtype.html#eqType"><span class="id" title="abbreviation">eqType</span></a>) (<span class="id" title="var">x</span> <span class="id" title="var">y</span> : <a class="idref" href="mathcomp.ssreflect.eqtype.html#T"><span class="id" title="variable">T</span></a>) : <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#6cd0f7b28b6092304087c7049437bb1a"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.ssreflect.eqtype.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#df45e8c2e8370fd4f0f7c4fdaf208180"><span class="id" title="notation">==</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#y"><span class="id" title="variable">y</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#6cd0f7b28b6092304087c7049437bb1a"><span class="id" title="notation">)</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#6cd0f7b28b6092304087c7049437bb1a"><span class="id" title="notation">=</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#6cd0f7b28b6092304087c7049437bb1a"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.ssreflect.eqtype.html#y"><span class="id" title="variable">y</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#df45e8c2e8370fd4f0f7c4fdaf208180"><span class="id" title="notation">==</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#x"><span class="id" title="variable">x</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#6cd0f7b28b6092304087c7049437bb1a"><span class="id" title="notation">)</span></a>.<br/> <br/> -<span class="id" title="keyword">Hint Resolve</span> <span class="id" title="var">eq_refl</span> <span class="id" title="var">eq_sym</span>.<br/> +<span class="id" title="keyword">Hint Resolve</span> <span class="id" title="var">eq_refl</span> <span class="id" title="var">eq_sym</span> : <span class="id" title="var">core</span>.<br/> <br/> <span class="id" title="keyword">Section</span> <a name="Contrapositives"><span class="id" title="section">Contrapositives</span></a>.<br/> <br/> <span class="id" title="keyword">Variables</span> (<a name="Contrapositives.T1"><span class="id" title="variable">T1</span></a> <a name="Contrapositives.T2"><span class="id" title="variable">T2</span></a> : <a class="idref" href="mathcomp.ssreflect.eqtype.html#eqType"><span class="id" title="abbreviation">eqType</span></a>).<br/> -<span class="id" title="keyword">Implicit</span> <span class="id" title="keyword">Types</span> (<span class="id" title="var">A</span> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#pred"><span class="id" title="definition">pred</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#Contrapositives.T1"><span class="id" title="variable">T1</span></a>) (<span class="id" title="var">b</span> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#bool"><span class="id" title="inductive">bool</span></a>) (<span class="id" title="var">x</span> : <a class="idref" href="mathcomp.ssreflect.eqtype.html#Contrapositives.T1"><span class="id" title="variable">T1</span></a>) (<span class="id" title="var">z</span> : <a class="idref" href="mathcomp.ssreflect.eqtype.html#Contrapositives.T2"><span class="id" title="variable">T2</span></a>).<br/> +<span class="id" title="keyword">Implicit</span> <span class="id" title="keyword">Types</span> (<span class="id" title="var">A</span> : <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#pred"><span class="id" title="definition">pred</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#Contrapositives.T1"><span class="id" title="variable">T1</span></a>) (<span class="id" title="var">b</span> : <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Datatypes.html#bool"><span class="id" title="inductive">bool</span></a>) (<span class="id" title="var">x</span> : <a class="idref" href="mathcomp.ssreflect.eqtype.html#Contrapositives.T1"><span class="id" title="variable">T1</span></a>) (<span class="id" title="var">z</span> : <a class="idref" href="mathcomp.ssreflect.eqtype.html#Contrapositives.T2"><span class="id" title="variable">T2</span></a>).<br/> <br/> -<span class="id" title="keyword">Lemma</span> <a name="contraTeq"><span class="id" title="lemma">contraTeq</span></a> <span class="id" title="var">b</span> <span class="id" title="var">x</span> <span class="id" title="var">y</span> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.ssreflect.eqtype.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#b1eeadc2feabc7422252baa895418c7b"><span class="id" title="notation">!=</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#y"><span class="id" title="variable">y</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#4b80c70cdb231351c5e129ba61f7f956"><span class="id" title="notation">~~</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#b"><span class="id" title="variable">b</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">)</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#b"><span class="id" title="variable">b</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#y"><span class="id" title="variable">y</span></a>.<br/> +<span class="id" title="keyword">Lemma</span> <a name="contraTeq"><span class="id" title="lemma">contraTeq</span></a> <span class="id" title="var">b</span> <span class="id" title="var">x</span> <span class="id" title="var">y</span> : <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#1c93e43e07fbeaeb6a625cb6614beb5d"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.ssreflect.eqtype.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#c385a484ee9d1b4e0615924561a9b75e"><span class="id" title="notation">!=</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#y"><span class="id" title="variable">y</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#1c93e43e07fbeaeb6a625cb6614beb5d"><span class="id" title="notation">→</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#b3ebd0deddd84fd60e149cb5ef719351"><span class="id" title="notation">~~</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#b"><span class="id" title="variable">b</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#1c93e43e07fbeaeb6a625cb6614beb5d"><span class="id" title="notation">)</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#1c93e43e07fbeaeb6a625cb6614beb5d"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#b"><span class="id" title="variable">b</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#1c93e43e07fbeaeb6a625cb6614beb5d"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#6cd0f7b28b6092304087c7049437bb1a"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#y"><span class="id" title="variable">y</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="contraNeq"><span class="id" title="lemma">contraNeq</span></a> <span class="id" title="var">b</span> <span class="id" title="var">x</span> <span class="id" title="var">y</span> : <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#1c93e43e07fbeaeb6a625cb6614beb5d"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.ssreflect.eqtype.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#c385a484ee9d1b4e0615924561a9b75e"><span class="id" title="notation">!=</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#y"><span class="id" title="variable">y</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#1c93e43e07fbeaeb6a625cb6614beb5d"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#b"><span class="id" title="variable">b</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#1c93e43e07fbeaeb6a625cb6614beb5d"><span class="id" title="notation">)</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#1c93e43e07fbeaeb6a625cb6614beb5d"><span class="id" title="notation">→</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#b3ebd0deddd84fd60e149cb5ef719351"><span class="id" title="notation">~~</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#b"><span class="id" title="variable">b</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#1c93e43e07fbeaeb6a625cb6614beb5d"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#6cd0f7b28b6092304087c7049437bb1a"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#y"><span class="id" title="variable">y</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="contraFeq"><span class="id" title="lemma">contraFeq</span></a> <span class="id" title="var">b</span> <span class="id" title="var">x</span> <span class="id" title="var">y</span> : <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#1c93e43e07fbeaeb6a625cb6614beb5d"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.ssreflect.eqtype.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#c385a484ee9d1b4e0615924561a9b75e"><span class="id" title="notation">!=</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#y"><span class="id" title="variable">y</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#1c93e43e07fbeaeb6a625cb6614beb5d"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#b"><span class="id" title="variable">b</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#1c93e43e07fbeaeb6a625cb6614beb5d"><span class="id" title="notation">)</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#1c93e43e07fbeaeb6a625cb6614beb5d"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#b"><span class="id" title="variable">b</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#6cd0f7b28b6092304087c7049437bb1a"><span class="id" title="notation">=</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Datatypes.html#false"><span class="id" title="constructor">false</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#1c93e43e07fbeaeb6a625cb6614beb5d"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#6cd0f7b28b6092304087c7049437bb1a"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#y"><span class="id" title="variable">y</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="contraTneq"><span class="id" title="lemma">contraTneq</span></a> <span class="id" title="var">b</span> <span class="id" title="var">x</span> <span class="id" title="var">y</span> : <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#1c93e43e07fbeaeb6a625cb6614beb5d"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.ssreflect.eqtype.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#6cd0f7b28b6092304087c7049437bb1a"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#y"><span class="id" title="variable">y</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#1c93e43e07fbeaeb6a625cb6614beb5d"><span class="id" title="notation">→</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#b3ebd0deddd84fd60e149cb5ef719351"><span class="id" title="notation">~~</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#b"><span class="id" title="variable">b</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#1c93e43e07fbeaeb6a625cb6614beb5d"><span class="id" title="notation">)</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#1c93e43e07fbeaeb6a625cb6614beb5d"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#b"><span class="id" title="variable">b</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#1c93e43e07fbeaeb6a625cb6614beb5d"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#c385a484ee9d1b4e0615924561a9b75e"><span class="id" title="notation">!=</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#y"><span class="id" title="variable">y</span></a>.<br/> <br/> -<span class="id" title="keyword">Lemma</span> <a name="contraNeq"><span class="id" title="lemma">contraNeq</span></a> <span class="id" title="var">b</span> <span class="id" title="var">x</span> <span class="id" title="var">y</span> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.ssreflect.eqtype.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#b1eeadc2feabc7422252baa895418c7b"><span class="id" title="notation">!=</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#y"><span class="id" title="variable">y</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#b"><span class="id" title="variable">b</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">)</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#4b80c70cdb231351c5e129ba61f7f956"><span class="id" title="notation">~~</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#b"><span class="id" title="variable">b</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#y"><span class="id" title="variable">y</span></a>.<br/> +<span class="id" title="keyword">Lemma</span> <a name="contraNneq"><span class="id" title="lemma">contraNneq</span></a> <span class="id" title="var">b</span> <span class="id" title="var">x</span> <span class="id" title="var">y</span> : <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#1c93e43e07fbeaeb6a625cb6614beb5d"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.ssreflect.eqtype.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#6cd0f7b28b6092304087c7049437bb1a"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#y"><span class="id" title="variable">y</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#1c93e43e07fbeaeb6a625cb6614beb5d"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#b"><span class="id" title="variable">b</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#1c93e43e07fbeaeb6a625cb6614beb5d"><span class="id" title="notation">)</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#1c93e43e07fbeaeb6a625cb6614beb5d"><span class="id" title="notation">→</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#b3ebd0deddd84fd60e149cb5ef719351"><span class="id" title="notation">~~</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#b"><span class="id" title="variable">b</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#1c93e43e07fbeaeb6a625cb6614beb5d"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#c385a484ee9d1b4e0615924561a9b75e"><span class="id" title="notation">!=</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#y"><span class="id" title="variable">y</span></a>.<br/> <br/> -<span class="id" title="keyword">Lemma</span> <a name="contraFeq"><span class="id" title="lemma">contraFeq</span></a> <span class="id" title="var">b</span> <span class="id" title="var">x</span> <span class="id" title="var">y</span> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.ssreflect.eqtype.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#b1eeadc2feabc7422252baa895418c7b"><span class="id" title="notation">!=</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#y"><span class="id" title="variable">y</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#b"><span class="id" title="variable">b</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">)</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#b"><span class="id" title="variable">b</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#false"><span class="id" title="constructor">false</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#y"><span class="id" title="variable">y</span></a>.<br/> +<span class="id" title="keyword">Lemma</span> <a name="contraFneq"><span class="id" title="lemma">contraFneq</span></a> <span class="id" title="var">b</span> <span class="id" title="var">x</span> <span class="id" title="var">y</span> : <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#1c93e43e07fbeaeb6a625cb6614beb5d"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.ssreflect.eqtype.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#6cd0f7b28b6092304087c7049437bb1a"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#y"><span class="id" title="variable">y</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#1c93e43e07fbeaeb6a625cb6614beb5d"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#b"><span class="id" title="variable">b</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#1c93e43e07fbeaeb6a625cb6614beb5d"><span class="id" title="notation">)</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#1c93e43e07fbeaeb6a625cb6614beb5d"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#b"><span class="id" title="variable">b</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#6cd0f7b28b6092304087c7049437bb1a"><span class="id" title="notation">=</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Datatypes.html#false"><span class="id" title="constructor">false</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#1c93e43e07fbeaeb6a625cb6614beb5d"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#c385a484ee9d1b4e0615924561a9b75e"><span class="id" title="notation">!=</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#y"><span class="id" title="variable">y</span></a>.<br/> <br/> -<span class="id" title="keyword">Lemma</span> <a name="contraTneq"><span class="id" title="lemma">contraTneq</span></a> <span class="id" title="var">b</span> <span class="id" title="var">x</span> <span class="id" title="var">y</span> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.ssreflect.eqtype.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#y"><span class="id" title="variable">y</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#4b80c70cdb231351c5e129ba61f7f956"><span class="id" title="notation">~~</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#b"><span class="id" title="variable">b</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">)</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#b"><span class="id" title="variable">b</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#b1eeadc2feabc7422252baa895418c7b"><span class="id" title="notation">!=</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#y"><span class="id" title="variable">y</span></a>.<br/> +<span class="id" title="keyword">Lemma</span> <a name="contra_eqN"><span class="id" title="lemma">contra_eqN</span></a> <span class="id" title="var">b</span> <span class="id" title="var">x</span> <span class="id" title="var">y</span> : <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#1c93e43e07fbeaeb6a625cb6614beb5d"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.ssreflect.eqtype.html#b"><span class="id" title="variable">b</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#1c93e43e07fbeaeb6a625cb6614beb5d"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#c385a484ee9d1b4e0615924561a9b75e"><span class="id" title="notation">!=</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#y"><span class="id" title="variable">y</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#1c93e43e07fbeaeb6a625cb6614beb5d"><span class="id" title="notation">)</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#1c93e43e07fbeaeb6a625cb6614beb5d"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#6cd0f7b28b6092304087c7049437bb1a"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#y"><span class="id" title="variable">y</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#1c93e43e07fbeaeb6a625cb6614beb5d"><span class="id" title="notation">→</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#b3ebd0deddd84fd60e149cb5ef719351"><span class="id" title="notation">~~</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#b"><span class="id" title="variable">b</span></a>.<br/> <br/> -<span class="id" title="keyword">Lemma</span> <a name="contraNneq"><span class="id" title="lemma">contraNneq</span></a> <span class="id" title="var">b</span> <span class="id" title="var">x</span> <span class="id" title="var">y</span> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.ssreflect.eqtype.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#y"><span class="id" title="variable">y</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#b"><span class="id" title="variable">b</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">)</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#4b80c70cdb231351c5e129ba61f7f956"><span class="id" title="notation">~~</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#b"><span class="id" title="variable">b</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#b1eeadc2feabc7422252baa895418c7b"><span class="id" title="notation">!=</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#y"><span class="id" title="variable">y</span></a>.<br/> +<span class="id" title="keyword">Lemma</span> <a name="contra_eqF"><span class="id" title="lemma">contra_eqF</span></a> <span class="id" title="var">b</span> <span class="id" title="var">x</span> <span class="id" title="var">y</span> : <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#1c93e43e07fbeaeb6a625cb6614beb5d"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.ssreflect.eqtype.html#b"><span class="id" title="variable">b</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#1c93e43e07fbeaeb6a625cb6614beb5d"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#c385a484ee9d1b4e0615924561a9b75e"><span class="id" title="notation">!=</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#y"><span class="id" title="variable">y</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#1c93e43e07fbeaeb6a625cb6614beb5d"><span class="id" title="notation">)</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#1c93e43e07fbeaeb6a625cb6614beb5d"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#6cd0f7b28b6092304087c7049437bb1a"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#y"><span class="id" title="variable">y</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#1c93e43e07fbeaeb6a625cb6614beb5d"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#b"><span class="id" title="variable">b</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#6cd0f7b28b6092304087c7049437bb1a"><span class="id" title="notation">=</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Datatypes.html#false"><span class="id" title="constructor">false</span></a>.<br/> <br/> -<span class="id" title="keyword">Lemma</span> <a name="contraFneq"><span class="id" title="lemma">contraFneq</span></a> <span class="id" title="var">b</span> <span class="id" title="var">x</span> <span class="id" title="var">y</span> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.ssreflect.eqtype.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#y"><span class="id" title="variable">y</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#b"><span class="id" title="variable">b</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">)</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#b"><span class="id" title="variable">b</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#false"><span class="id" title="constructor">false</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#b1eeadc2feabc7422252baa895418c7b"><span class="id" title="notation">!=</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#y"><span class="id" title="variable">y</span></a>.<br/> +<span class="id" title="keyword">Lemma</span> <a name="contra_eqT"><span class="id" title="lemma">contra_eqT</span></a> <span class="id" title="var">b</span> <span class="id" title="var">x</span> <span class="id" title="var">y</span> : <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#1c93e43e07fbeaeb6a625cb6614beb5d"><span class="id" title="notation">(</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#b3ebd0deddd84fd60e149cb5ef719351"><span class="id" title="notation">~~</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#b"><span class="id" title="variable">b</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#1c93e43e07fbeaeb6a625cb6614beb5d"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#c385a484ee9d1b4e0615924561a9b75e"><span class="id" title="notation">!=</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#y"><span class="id" title="variable">y</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#1c93e43e07fbeaeb6a625cb6614beb5d"><span class="id" title="notation">)</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#1c93e43e07fbeaeb6a625cb6614beb5d"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#6cd0f7b28b6092304087c7049437bb1a"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#y"><span class="id" title="variable">y</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#1c93e43e07fbeaeb6a625cb6614beb5d"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#b"><span class="id" title="variable">b</span></a>.<br/> <br/> -<span class="id" title="keyword">Lemma</span> <a name="contra_eqN"><span class="id" title="lemma">contra_eqN</span></a> <span class="id" title="var">b</span> <span class="id" title="var">x</span> <span class="id" title="var">y</span> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.ssreflect.eqtype.html#b"><span class="id" title="variable">b</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#b1eeadc2feabc7422252baa895418c7b"><span class="id" title="notation">!=</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#y"><span class="id" title="variable">y</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">)</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#y"><span class="id" title="variable">y</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#4b80c70cdb231351c5e129ba61f7f956"><span class="id" title="notation">~~</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#b"><span class="id" title="variable">b</span></a>.<br/> +<span class="id" title="keyword">Lemma</span> <a name="contra_neqN"><span class="id" title="lemma">contra_neqN</span></a> <span class="id" title="var">b</span> <span class="id" title="var">x</span> <span class="id" title="var">y</span> : <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#1c93e43e07fbeaeb6a625cb6614beb5d"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.ssreflect.eqtype.html#b"><span class="id" title="variable">b</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#1c93e43e07fbeaeb6a625cb6614beb5d"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#6cd0f7b28b6092304087c7049437bb1a"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#y"><span class="id" title="variable">y</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#1c93e43e07fbeaeb6a625cb6614beb5d"><span class="id" title="notation">)</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#1c93e43e07fbeaeb6a625cb6614beb5d"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#c385a484ee9d1b4e0615924561a9b75e"><span class="id" title="notation">!=</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#y"><span class="id" title="variable">y</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#1c93e43e07fbeaeb6a625cb6614beb5d"><span class="id" title="notation">→</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#b3ebd0deddd84fd60e149cb5ef719351"><span class="id" title="notation">~~</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#b"><span class="id" title="variable">b</span></a>.<br/> <br/> -<span class="id" title="keyword">Lemma</span> <a name="contra_eqF"><span class="id" title="lemma">contra_eqF</span></a> <span class="id" title="var">b</span> <span class="id" title="var">x</span> <span class="id" title="var">y</span> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.ssreflect.eqtype.html#b"><span class="id" title="variable">b</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#b1eeadc2feabc7422252baa895418c7b"><span class="id" title="notation">!=</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#y"><span class="id" title="variable">y</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">)</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#y"><span class="id" title="variable">y</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#b"><span class="id" title="variable">b</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#false"><span class="id" title="constructor">false</span></a>.<br/> +<span class="id" title="keyword">Lemma</span> <a name="contra_neqF"><span class="id" title="lemma">contra_neqF</span></a> <span class="id" title="var">b</span> <span class="id" title="var">x</span> <span class="id" title="var">y</span> : <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#1c93e43e07fbeaeb6a625cb6614beb5d"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.ssreflect.eqtype.html#b"><span class="id" title="variable">b</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#1c93e43e07fbeaeb6a625cb6614beb5d"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#6cd0f7b28b6092304087c7049437bb1a"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#y"><span class="id" title="variable">y</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#1c93e43e07fbeaeb6a625cb6614beb5d"><span class="id" title="notation">)</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#1c93e43e07fbeaeb6a625cb6614beb5d"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#c385a484ee9d1b4e0615924561a9b75e"><span class="id" title="notation">!=</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#y"><span class="id" title="variable">y</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#1c93e43e07fbeaeb6a625cb6614beb5d"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#b"><span class="id" title="variable">b</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#6cd0f7b28b6092304087c7049437bb1a"><span class="id" title="notation">=</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Datatypes.html#false"><span class="id" title="constructor">false</span></a>.<br/> <br/> -<span class="id" title="keyword">Lemma</span> <a name="contra_eqT"><span class="id" title="lemma">contra_eqT</span></a> <span class="id" title="var">b</span> <span class="id" title="var">x</span> <span class="id" title="var">y</span> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">(</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#4b80c70cdb231351c5e129ba61f7f956"><span class="id" title="notation">~~</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#b"><span class="id" title="variable">b</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#b1eeadc2feabc7422252baa895418c7b"><span class="id" title="notation">!=</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#y"><span class="id" title="variable">y</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">)</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#y"><span class="id" title="variable">y</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#b"><span class="id" title="variable">b</span></a>.<br/> +<span class="id" title="keyword">Lemma</span> <a name="contra_neqT"><span class="id" title="lemma">contra_neqT</span></a> <span class="id" title="var">b</span> <span class="id" title="var">x</span> <span class="id" title="var">y</span> : <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#1c93e43e07fbeaeb6a625cb6614beb5d"><span class="id" title="notation">(</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#b3ebd0deddd84fd60e149cb5ef719351"><span class="id" title="notation">~~</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#b"><span class="id" title="variable">b</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#1c93e43e07fbeaeb6a625cb6614beb5d"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#6cd0f7b28b6092304087c7049437bb1a"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#y"><span class="id" title="variable">y</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#1c93e43e07fbeaeb6a625cb6614beb5d"><span class="id" title="notation">)</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#1c93e43e07fbeaeb6a625cb6614beb5d"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#c385a484ee9d1b4e0615924561a9b75e"><span class="id" title="notation">!=</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#y"><span class="id" title="variable">y</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#1c93e43e07fbeaeb6a625cb6614beb5d"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#b"><span class="id" title="variable">b</span></a>.<br/> <br/> -<span class="id" title="keyword">Lemma</span> <a name="contra_eq"><span class="id" title="lemma">contra_eq</span></a> <span class="id" title="var">z1</span> <span class="id" title="var">z2</span> <span class="id" title="var">x1</span> <span class="id" title="var">x2</span> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.ssreflect.eqtype.html#x1"><span class="id" title="variable">x1</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#b1eeadc2feabc7422252baa895418c7b"><span class="id" title="notation">!=</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#x2"><span class="id" title="variable">x2</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#z1"><span class="id" title="variable">z1</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#b1eeadc2feabc7422252baa895418c7b"><span class="id" title="notation">!=</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#z2"><span class="id" title="variable">z2</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">)</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#z1"><span class="id" title="variable">z1</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#z2"><span class="id" title="variable">z2</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#x1"><span class="id" title="variable">x1</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#x2"><span class="id" title="variable">x2</span></a>.<br/> +<span class="id" title="keyword">Lemma</span> <a name="contra_eq"><span class="id" title="lemma">contra_eq</span></a> <span class="id" title="var">z1</span> <span class="id" title="var">z2</span> <span class="id" title="var">x1</span> <span class="id" title="var">x2</span> : <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#1c93e43e07fbeaeb6a625cb6614beb5d"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.ssreflect.eqtype.html#x1"><span class="id" title="variable">x1</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#c385a484ee9d1b4e0615924561a9b75e"><span class="id" title="notation">!=</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#x2"><span class="id" title="variable">x2</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#1c93e43e07fbeaeb6a625cb6614beb5d"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#z1"><span class="id" title="variable">z1</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#c385a484ee9d1b4e0615924561a9b75e"><span class="id" title="notation">!=</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#z2"><span class="id" title="variable">z2</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#1c93e43e07fbeaeb6a625cb6614beb5d"><span class="id" title="notation">)</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#1c93e43e07fbeaeb6a625cb6614beb5d"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#z1"><span class="id" title="variable">z1</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#6cd0f7b28b6092304087c7049437bb1a"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#z2"><span class="id" title="variable">z2</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#1c93e43e07fbeaeb6a625cb6614beb5d"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#x1"><span class="id" title="variable">x1</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#6cd0f7b28b6092304087c7049437bb1a"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#x2"><span class="id" title="variable">x2</span></a>.<br/> <br/> -<span class="id" title="keyword">Lemma</span> <a name="contra_neq"><span class="id" title="lemma">contra_neq</span></a> <span class="id" title="var">z1</span> <span class="id" title="var">z2</span> <span class="id" title="var">x1</span> <span class="id" title="var">x2</span> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.ssreflect.eqtype.html#x1"><span class="id" title="variable">x1</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#x2"><span class="id" title="variable">x2</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#z1"><span class="id" title="variable">z1</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#z2"><span class="id" title="variable">z2</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">)</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#z1"><span class="id" title="variable">z1</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#b1eeadc2feabc7422252baa895418c7b"><span class="id" title="notation">!=</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#z2"><span class="id" title="variable">z2</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#x1"><span class="id" title="variable">x1</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#b1eeadc2feabc7422252baa895418c7b"><span class="id" title="notation">!=</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#x2"><span class="id" title="variable">x2</span></a>.<br/> +<span class="id" title="keyword">Lemma</span> <a name="contra_neq"><span class="id" title="lemma">contra_neq</span></a> <span class="id" title="var">z1</span> <span class="id" title="var">z2</span> <span class="id" title="var">x1</span> <span class="id" title="var">x2</span> : <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#1c93e43e07fbeaeb6a625cb6614beb5d"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.ssreflect.eqtype.html#x1"><span class="id" title="variable">x1</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#6cd0f7b28b6092304087c7049437bb1a"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#x2"><span class="id" title="variable">x2</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#1c93e43e07fbeaeb6a625cb6614beb5d"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#z1"><span class="id" title="variable">z1</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#6cd0f7b28b6092304087c7049437bb1a"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#z2"><span class="id" title="variable">z2</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#1c93e43e07fbeaeb6a625cb6614beb5d"><span class="id" title="notation">)</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#1c93e43e07fbeaeb6a625cb6614beb5d"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#z1"><span class="id" title="variable">z1</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#c385a484ee9d1b4e0615924561a9b75e"><span class="id" title="notation">!=</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#z2"><span class="id" title="variable">z2</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#1c93e43e07fbeaeb6a625cb6614beb5d"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#x1"><span class="id" title="variable">x1</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#c385a484ee9d1b4e0615924561a9b75e"><span class="id" title="notation">!=</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#x2"><span class="id" title="variable">x2</span></a>.<br/> <br/> -<span class="id" title="keyword">Lemma</span> <a name="memPn"><span class="id" title="lemma">memPn</span></a> <span class="id" title="var">A</span> <span class="id" title="var">x</span> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#reflect"><span class="id" title="abbreviation">reflect</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#5c59b35a0b51db520cf1fba473ecf127"><span class="id" title="notation">{</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#5c59b35a0b51db520cf1fba473ecf127"><span class="id" title="notation">in</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#A"><span class="id" title="variable">A</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#5c59b35a0b51db520cf1fba473ecf127"><span class="id" title="notation">,</span></a> <span class="id" title="keyword">∀</span> <span class="id" title="var">y</span>, <a class="idref" href="mathcomp.ssreflect.eqtype.html#y"><span class="id" title="variable">y</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#b1eeadc2feabc7422252baa895418c7b"><span class="id" title="notation">!=</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#x"><span class="id" title="variable">x</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#5c59b35a0b51db520cf1fba473ecf127"><span class="id" title="notation">}</span></a> (<a class="idref" href="mathcomp.ssreflect.eqtype.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#ad6d23746eb1a3b62e52010d3945a1db"><span class="id" title="notation">\</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#ad6d23746eb1a3b62e52010d3945a1db"><span class="id" title="notation">notin</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#A"><span class="id" title="variable">A</span></a>).<br/> +<span class="id" title="keyword">Lemma</span> <a name="contra_neq_eq"><span class="id" title="lemma">contra_neq_eq</span></a> <span class="id" title="var">z1</span> <span class="id" title="var">z2</span> <span class="id" title="var">x1</span> <span class="id" title="var">x2</span> : <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#1c93e43e07fbeaeb6a625cb6614beb5d"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.ssreflect.eqtype.html#x1"><span class="id" title="variable">x1</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#c385a484ee9d1b4e0615924561a9b75e"><span class="id" title="notation">!=</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#x2"><span class="id" title="variable">x2</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#1c93e43e07fbeaeb6a625cb6614beb5d"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#z1"><span class="id" title="variable">z1</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#6cd0f7b28b6092304087c7049437bb1a"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#z2"><span class="id" title="variable">z2</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#1c93e43e07fbeaeb6a625cb6614beb5d"><span class="id" title="notation">)</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#1c93e43e07fbeaeb6a625cb6614beb5d"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#z1"><span class="id" title="variable">z1</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#c385a484ee9d1b4e0615924561a9b75e"><span class="id" title="notation">!=</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#z2"><span class="id" title="variable">z2</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#1c93e43e07fbeaeb6a625cb6614beb5d"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#x1"><span class="id" title="variable">x1</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#6cd0f7b28b6092304087c7049437bb1a"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#x2"><span class="id" title="variable">x2</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="contra_eq_neq"><span class="id" title="lemma">contra_eq_neq</span></a> <span class="id" title="var">z1</span> <span class="id" title="var">z2</span> <span class="id" title="var">x1</span> <span class="id" title="var">x2</span> : <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#1c93e43e07fbeaeb6a625cb6614beb5d"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.ssreflect.eqtype.html#z1"><span class="id" title="variable">z1</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#6cd0f7b28b6092304087c7049437bb1a"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#z2"><span class="id" title="variable">z2</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#1c93e43e07fbeaeb6a625cb6614beb5d"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#x1"><span class="id" title="variable">x1</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#c385a484ee9d1b4e0615924561a9b75e"><span class="id" title="notation">!=</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#x2"><span class="id" title="variable">x2</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#1c93e43e07fbeaeb6a625cb6614beb5d"><span class="id" title="notation">)</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#1c93e43e07fbeaeb6a625cb6614beb5d"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#x1"><span class="id" title="variable">x1</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#6cd0f7b28b6092304087c7049437bb1a"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#x2"><span class="id" title="variable">x2</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#1c93e43e07fbeaeb6a625cb6614beb5d"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#z1"><span class="id" title="variable">z1</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#c385a484ee9d1b4e0615924561a9b75e"><span class="id" title="notation">!=</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#z2"><span class="id" title="variable">z2</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="memPn"><span class="id" title="lemma">memPn</span></a> <span class="id" title="var">A</span> <span class="id" title="var">x</span> : <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#reflect"><span class="id" title="abbreviation">reflect</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#8c08d4203604dbed63e7afa9b689d858"><span class="id" title="notation">{</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#8c08d4203604dbed63e7afa9b689d858"><span class="id" title="notation">in</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#A"><span class="id" title="variable">A</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#8c08d4203604dbed63e7afa9b689d858"><span class="id" title="notation">,</span></a> <span class="id" title="keyword">∀</span> <span class="id" title="var">y</span>, <a class="idref" href="mathcomp.ssreflect.eqtype.html#y"><span class="id" title="variable">y</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#c385a484ee9d1b4e0615924561a9b75e"><span class="id" title="notation">!=</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#x"><span class="id" title="variable">x</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#8c08d4203604dbed63e7afa9b689d858"><span class="id" title="notation">}</span></a> (<a class="idref" href="mathcomp.ssreflect.eqtype.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#c1ad6bcc76a6221225111f87bc3b0c3d"><span class="id" title="notation">\</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#c1ad6bcc76a6221225111f87bc3b0c3d"><span class="id" title="notation">notin</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#A"><span class="id" title="variable">A</span></a>).<br/> <br/> -<span class="id" title="keyword">Lemma</span> <a name="memPnC"><span class="id" title="lemma">memPnC</span></a> <span class="id" title="var">A</span> <span class="id" title="var">x</span> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#reflect"><span class="id" title="abbreviation">reflect</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#5c59b35a0b51db520cf1fba473ecf127"><span class="id" title="notation">{</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#5c59b35a0b51db520cf1fba473ecf127"><span class="id" title="notation">in</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#A"><span class="id" title="variable">A</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#5c59b35a0b51db520cf1fba473ecf127"><span class="id" title="notation">,</span></a> <span class="id" title="keyword">∀</span> <span class="id" title="var">y</span>, <a class="idref" href="mathcomp.ssreflect.eqtype.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#b1eeadc2feabc7422252baa895418c7b"><span class="id" title="notation">!=</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#y"><span class="id" title="variable">y</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#5c59b35a0b51db520cf1fba473ecf127"><span class="id" title="notation">}</span></a> (<a class="idref" href="mathcomp.ssreflect.eqtype.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#ad6d23746eb1a3b62e52010d3945a1db"><span class="id" title="notation">\</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#ad6d23746eb1a3b62e52010d3945a1db"><span class="id" title="notation">notin</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#A"><span class="id" title="variable">A</span></a>).<br/> +<span class="id" title="keyword">Lemma</span> <a name="memPnC"><span class="id" title="lemma">memPnC</span></a> <span class="id" title="var">A</span> <span class="id" title="var">x</span> : <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#reflect"><span class="id" title="abbreviation">reflect</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#8c08d4203604dbed63e7afa9b689d858"><span class="id" title="notation">{</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#8c08d4203604dbed63e7afa9b689d858"><span class="id" title="notation">in</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#A"><span class="id" title="variable">A</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#8c08d4203604dbed63e7afa9b689d858"><span class="id" title="notation">,</span></a> <span class="id" title="keyword">∀</span> <span class="id" title="var">y</span>, <a class="idref" href="mathcomp.ssreflect.eqtype.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#c385a484ee9d1b4e0615924561a9b75e"><span class="id" title="notation">!=</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#y"><span class="id" title="variable">y</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#8c08d4203604dbed63e7afa9b689d858"><span class="id" title="notation">}</span></a> (<a class="idref" href="mathcomp.ssreflect.eqtype.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#c1ad6bcc76a6221225111f87bc3b0c3d"><span class="id" title="notation">\</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#c1ad6bcc76a6221225111f87bc3b0c3d"><span class="id" title="notation">notin</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#A"><span class="id" title="variable">A</span></a>).<br/> <br/> -<span class="id" title="keyword">Lemma</span> <a name="ifN_eq"><span class="id" title="lemma">ifN_eq</span></a> <span class="id" title="var">R</span> <span class="id" title="var">x</span> <span class="id" title="var">y</span> <span class="id" title="var">vT</span> <span class="id" title="var">vF</span> : <a class="idref" href="mathcomp.ssreflect.eqtype.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#b1eeadc2feabc7422252baa895418c7b"><span class="id" title="notation">!=</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#y"><span class="id" title="variable">y</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#8f9364556521ebb498093f28eea2240f"><span class="id" title="notation">(</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssreflect.html#0348819abaa88c2cd747e8fa60dde7ae"><span class="id" title="notation">if</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#17d28d004d0863cb022d4ce832ddaaae"><span class="id" title="notation">==</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#y"><span class="id" title="variable">y</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssreflect.html#0348819abaa88c2cd747e8fa60dde7ae"><span class="id" title="notation">then</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#vT"><span class="id" title="variable">vT</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssreflect.html#0348819abaa88c2cd747e8fa60dde7ae"><span class="id" title="notation">else</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#vF"><span class="id" title="variable">vF</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#8f9364556521ebb498093f28eea2240f"><span class="id" title="notation">)</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#8f9364556521ebb498093f28eea2240f"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#vF"><span class="id" title="variable">vF</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#8f9364556521ebb498093f28eea2240f"><span class="id" title="notation">:></span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#R"><span class="id" title="variable">R</span></a>.<br/> +<span class="id" title="keyword">Lemma</span> <a name="ifN_eq"><span class="id" title="lemma">ifN_eq</span></a> <span class="id" title="var">R</span> <span class="id" title="var">x</span> <span class="id" title="var">y</span> <span class="id" title="var">vT</span> <span class="id" title="var">vF</span> : <a class="idref" href="mathcomp.ssreflect.eqtype.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#c385a484ee9d1b4e0615924561a9b75e"><span class="id" title="notation">!=</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#y"><span class="id" title="variable">y</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#1c93e43e07fbeaeb6a625cb6614beb5d"><span class="id" title="notation">→</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#b8b2ebc8e1a8b9aa935c0702efb5dccf"><span class="id" title="notation">(</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssreflect.html#00a1a5b58aac8f1e3f1abff064a39f9d"><span class="id" title="notation">if</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#df45e8c2e8370fd4f0f7c4fdaf208180"><span class="id" title="notation">==</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#y"><span class="id" title="variable">y</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssreflect.html#00a1a5b58aac8f1e3f1abff064a39f9d"><span class="id" title="notation">then</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#vT"><span class="id" title="variable">vT</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssreflect.html#00a1a5b58aac8f1e3f1abff064a39f9d"><span class="id" title="notation">else</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#vF"><span class="id" title="variable">vF</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#b8b2ebc8e1a8b9aa935c0702efb5dccf"><span class="id" title="notation">)</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#b8b2ebc8e1a8b9aa935c0702efb5dccf"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#vF"><span class="id" title="variable">vF</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#b8b2ebc8e1a8b9aa935c0702efb5dccf"><span class="id" title="notation">:></span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#R"><span class="id" title="variable">R</span></a>.<br/> <br/> -<span class="id" title="keyword">Lemma</span> <a name="ifN_eqC"><span class="id" title="lemma">ifN_eqC</span></a> <span class="id" title="var">R</span> <span class="id" title="var">x</span> <span class="id" title="var">y</span> <span class="id" title="var">vT</span> <span class="id" title="var">vF</span> : <a class="idref" href="mathcomp.ssreflect.eqtype.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#b1eeadc2feabc7422252baa895418c7b"><span class="id" title="notation">!=</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#y"><span class="id" title="variable">y</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#8f9364556521ebb498093f28eea2240f"><span class="id" title="notation">(</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssreflect.html#0348819abaa88c2cd747e8fa60dde7ae"><span class="id" title="notation">if</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#y"><span class="id" title="variable">y</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#17d28d004d0863cb022d4ce832ddaaae"><span class="id" title="notation">==</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssreflect.html#0348819abaa88c2cd747e8fa60dde7ae"><span class="id" title="notation">then</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#vT"><span class="id" title="variable">vT</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssreflect.html#0348819abaa88c2cd747e8fa60dde7ae"><span class="id" title="notation">else</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#vF"><span class="id" title="variable">vF</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#8f9364556521ebb498093f28eea2240f"><span class="id" title="notation">)</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#8f9364556521ebb498093f28eea2240f"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#vF"><span class="id" title="variable">vF</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#8f9364556521ebb498093f28eea2240f"><span class="id" title="notation">:></span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#R"><span class="id" title="variable">R</span></a>.<br/> +<span class="id" title="keyword">Lemma</span> <a name="ifN_eqC"><span class="id" title="lemma">ifN_eqC</span></a> <span class="id" title="var">R</span> <span class="id" title="var">x</span> <span class="id" title="var">y</span> <span class="id" title="var">vT</span> <span class="id" title="var">vF</span> : <a class="idref" href="mathcomp.ssreflect.eqtype.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#c385a484ee9d1b4e0615924561a9b75e"><span class="id" title="notation">!=</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#y"><span class="id" title="variable">y</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#1c93e43e07fbeaeb6a625cb6614beb5d"><span class="id" title="notation">→</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#b8b2ebc8e1a8b9aa935c0702efb5dccf"><span class="id" title="notation">(</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssreflect.html#00a1a5b58aac8f1e3f1abff064a39f9d"><span class="id" title="notation">if</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#y"><span class="id" title="variable">y</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#df45e8c2e8370fd4f0f7c4fdaf208180"><span class="id" title="notation">==</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssreflect.html#00a1a5b58aac8f1e3f1abff064a39f9d"><span class="id" title="notation">then</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#vT"><span class="id" title="variable">vT</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssreflect.html#00a1a5b58aac8f1e3f1abff064a39f9d"><span class="id" title="notation">else</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#vF"><span class="id" title="variable">vF</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#b8b2ebc8e1a8b9aa935c0702efb5dccf"><span class="id" title="notation">)</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#b8b2ebc8e1a8b9aa935c0702efb5dccf"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#vF"><span class="id" title="variable">vF</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#b8b2ebc8e1a8b9aa935c0702efb5dccf"><span class="id" title="notation">:></span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#R"><span class="id" title="variable">R</span></a>.<br/> <br/> <span class="id" title="keyword">End</span> <a class="idref" href="mathcomp.ssreflect.eqtype.html#Contrapositives"><span class="id" title="section">Contrapositives</span></a>.<br/> @@ -272,10 +318,10 @@ <br/> <br/> -<span class="id" title="keyword">Theorem</span> <a name="eq_irrelevance"><span class="id" title="lemma">eq_irrelevance</span></a> (<span class="id" title="var">T</span> : <a class="idref" href="mathcomp.ssreflect.eqtype.html#eqType"><span class="id" title="abbreviation">eqType</span></a>) <span class="id" title="var">x</span> <span class="id" title="var">y</span> : <span class="id" title="keyword">∀</span> <span class="id" title="var">e1</span> <span class="id" title="var">e2</span> : <a class="idref" href="mathcomp.ssreflect.eqtype.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#8f9364556521ebb498093f28eea2240f"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#y"><span class="id" title="variable">y</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#8f9364556521ebb498093f28eea2240f"><span class="id" title="notation">:></span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#T"><span class="id" title="variable">T</span></a>, <a class="idref" href="mathcomp.ssreflect.eqtype.html#e1"><span class="id" title="variable">e1</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#e2"><span class="id" title="variable">e2</span></a>.<br/> +<span class="id" title="keyword">Theorem</span> <a name="eq_irrelevance"><span class="id" title="lemma">eq_irrelevance</span></a> (<span class="id" title="var">T</span> : <a class="idref" href="mathcomp.ssreflect.eqtype.html#eqType"><span class="id" title="abbreviation">eqType</span></a>) <span class="id" title="var">x</span> <span class="id" title="var">y</span> : <span class="id" title="keyword">∀</span> <span class="id" title="var">e1</span> <span class="id" title="var">e2</span> : <a class="idref" href="mathcomp.ssreflect.eqtype.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#b8b2ebc8e1a8b9aa935c0702efb5dccf"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#y"><span class="id" title="variable">y</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#b8b2ebc8e1a8b9aa935c0702efb5dccf"><span class="id" title="notation">:></span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#T"><span class="id" title="variable">T</span></a>, <a class="idref" href="mathcomp.ssreflect.eqtype.html#e1"><span class="id" title="variable">e1</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#6cd0f7b28b6092304087c7049437bb1a"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#e2"><span class="id" title="variable">e2</span></a>.<br/> <br/> -<span class="id" title="keyword">Corollary</span> <a name="eq_axiomK"><span class="id" title="lemma">eq_axiomK</span></a> (<span class="id" title="var">T</span> : <a class="idref" href="mathcomp.ssreflect.eqtype.html#eqType"><span class="id" title="abbreviation">eqType</span></a>) (<span class="id" title="var">x</span> : <a class="idref" href="mathcomp.ssreflect.eqtype.html#T"><span class="id" title="variable">T</span></a>) : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#all_equal_to"><span class="id" title="definition">all_equal_to</span></a> (<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#erefl"><span class="id" title="abbreviation">erefl</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#x"><span class="id" title="variable">x</span></a>).<br/> +<span class="id" title="keyword">Corollary</span> <a name="eq_axiomK"><span class="id" title="lemma">eq_axiomK</span></a> (<span class="id" title="var">T</span> : <a class="idref" href="mathcomp.ssreflect.eqtype.html#eqType"><span class="id" title="abbreviation">eqType</span></a>) (<span class="id" title="var">x</span> : <a class="idref" href="mathcomp.ssreflect.eqtype.html#T"><span class="id" title="variable">T</span></a>) : <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#all_equal_to"><span class="id" title="definition">all_equal_to</span></a> (<a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#erefl"><span class="id" title="abbreviation">erefl</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#x"><span class="id" title="variable">x</span></a>).<br/> <br/> </div> @@ -286,7 +332,7 @@ </div> <div class="code"> <span class="id" title="keyword">Module</span> <span class="id" title="keyword">Type</span> <a name="EqTypePredSig"><span class="id" title="module">EqTypePredSig</span></a>.<br/> -<span class="id" title="keyword">Parameter</span> <a name="EqTypePredSig.sort"><span class="id" title="axiom">sort</span></a> : <a class="idref" href="mathcomp.ssreflect.eqtype.html#Equality.Exports.eqType"><span class="id" title="abbreviation">eqType</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#predArgType"><span class="id" title="definition">predArgType</span></a>.<br/> +<span class="id" title="keyword">Parameter</span> <a name="EqTypePredSig.sort"><span class="id" title="axiom">sort</span></a> : <a class="idref" href="mathcomp.ssreflect.eqtype.html#Equality.Exports.eqType"><span class="id" title="abbreviation">eqType</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#1c93e43e07fbeaeb6a625cb6614beb5d"><span class="id" title="notation">→</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#predArgType"><span class="id" title="definition">predArgType</span></a>.<br/> <span class="id" title="keyword">End</span> <a class="idref" href="mathcomp.ssreflect.eqtype.html#EqTypePredSig"><span class="id" title="module">EqTypePredSig</span></a>.<br/> <span class="id" title="keyword">Module</span> <a name="MakeEqTypePred"><span class="id" title="module">MakeEqTypePred</span></a> (<span class="id" title="var">eqmod</span> : <a class="idref" href="mathcomp.ssreflect.eqtype.html#EqTypePredSig"><span class="id" title="module">EqTypePredSig</span></a>).<br/> <span class="id" title="keyword">Coercion</span> <a class="idref" href="mathcomp.ssreflect.eqtype.html#eqmod.sort"><span class="id" title="axiom">eqmod.sort</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#eqmod.sort"><span class="id" title="axiom">:</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#eqmod.sort"><span class="id" title="axiom">eqType</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#eqmod.sort"><span class="id" title="axiom">>-></span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#eqmod.sort"><span class="id" title="axiom">predArgType</span></a>.<br/> @@ -294,11 +340,11 @@ <span class="id" title="keyword">Module</span> <span class="id" title="keyword">Export</span> <a name="EqTypePred"><span class="id" title="module">EqTypePred</span></a> := <a class="idref" href="mathcomp.ssreflect.eqtype.html#MakeEqTypePred"><span class="id" title="module">MakeEqTypePred</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#Equality"><span class="id" title="module">Equality</span></a>.<br/> <br/> -<span class="id" title="keyword">Lemma</span> <a name="unit_eqP"><span class="id" title="lemma">unit_eqP</span></a> : <a class="idref" href="mathcomp.ssreflect.eqtype.html#axiom"><span class="id" title="definition">Equality.axiom</span></a> (<span class="id" title="keyword">fun</span> <span class="id" title="var">_</span> <span class="id" title="var">_</span> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#unit"><span class="id" title="inductive">unit</span></a> ⇒ <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#true"><span class="id" title="constructor">true</span></a>).<br/> +<span class="id" title="keyword">Lemma</span> <a name="unit_eqP"><span class="id" title="lemma">unit_eqP</span></a> : <a class="idref" href="mathcomp.ssreflect.eqtype.html#axiom"><span class="id" title="definition">Equality.axiom</span></a> (<span class="id" title="keyword">fun</span> <span class="id" title="var">_</span> <span class="id" title="var">_</span> : <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Datatypes.html#unit"><span class="id" title="inductive">unit</span></a> ⇒ <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Datatypes.html#true"><span class="id" title="constructor">true</span></a>).<br/> <br/> <span class="id" title="keyword">Definition</span> <a name="unit_eqMixin"><span class="id" title="definition">unit_eqMixin</span></a> := <a class="idref" href="mathcomp.ssreflect.eqtype.html#EqMixin"><span class="id" title="abbreviation">EqMixin</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#unit_eqP"><span class="id" title="lemma">unit_eqP</span></a>.<br/> -<span class="id" title="keyword">Canonical</span> <span class="id" title="var">unit_eqType</span> := <span class="id" title="keyword">Eval</span> <span class="id" title="tactic">hnf</span> <span class="id" title="tactic">in</span> <a class="idref" href="mathcomp.ssreflect.eqtype.html#EqType"><span class="id" title="abbreviation">EqType</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#unit"><span class="id" title="inductive">unit</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#unit_eqMixin"><span class="id" title="definition">unit_eqMixin</span></a>.<br/> +<span class="id" title="keyword">Canonical</span> <span class="id" title="var">unit_eqType</span> := <span class="id" title="keyword">Eval</span> <span class="id" title="tactic">hnf</span> <span class="id" title="tactic">in</span> <a class="idref" href="mathcomp.ssreflect.eqtype.html#EqType"><span class="id" title="abbreviation">EqType</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Datatypes.html#unit"><span class="id" title="inductive">unit</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#unit_eqMixin"><span class="id" title="definition">unit_eqMixin</span></a>.<br/> <br/> </div> @@ -310,35 +356,35 @@ This is extensionally equal, but not convertible to Bool.eqb. </div> <div class="code"> -<span class="id" title="keyword">Definition</span> <a name="eqb"><span class="id" title="definition">eqb</span></a> <span class="id" title="var">b</span> := <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#addb"><span class="id" title="definition">addb</span></a> (<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#4b80c70cdb231351c5e129ba61f7f956"><span class="id" title="notation">~~</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#b"><span class="id" title="variable">b</span></a>).<br/> +<span class="id" title="keyword">Definition</span> <a name="eqb"><span class="id" title="definition">eqb</span></a> <span class="id" title="var">b</span> := <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#addb"><span class="id" title="definition">addb</span></a> (<a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#b3ebd0deddd84fd60e149cb5ef719351"><span class="id" title="notation">~~</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#b"><span class="id" title="variable">b</span></a>).<br/> <br/> <span class="id" title="keyword">Lemma</span> <a name="eqbP"><span class="id" title="lemma">eqbP</span></a> : <a class="idref" href="mathcomp.ssreflect.eqtype.html#axiom"><span class="id" title="definition">Equality.axiom</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#eqb"><span class="id" title="definition">eqb</span></a>.<br/> <br/> <span class="id" title="keyword">Canonical</span> <span class="id" title="var">bool_eqMixin</span> := <a class="idref" href="mathcomp.ssreflect.eqtype.html#EqMixin"><span class="id" title="abbreviation">EqMixin</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#eqbP"><span class="id" title="lemma">eqbP</span></a>.<br/> -<span class="id" title="keyword">Canonical</span> <span class="id" title="var">bool_eqType</span> := <span class="id" title="keyword">Eval</span> <span class="id" title="tactic">hnf</span> <span class="id" title="tactic">in</span> <a class="idref" href="mathcomp.ssreflect.eqtype.html#EqType"><span class="id" title="abbreviation">EqType</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#bool"><span class="id" title="inductive">bool</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#bool_eqMixin"><span class="id" title="definition">bool_eqMixin</span></a>.<br/> +<span class="id" title="keyword">Canonical</span> <span class="id" title="var">bool_eqType</span> := <span class="id" title="keyword">Eval</span> <span class="id" title="tactic">hnf</span> <span class="id" title="tactic">in</span> <a class="idref" href="mathcomp.ssreflect.eqtype.html#EqType"><span class="id" title="abbreviation">EqType</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Datatypes.html#bool"><span class="id" title="inductive">bool</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#bool_eqMixin"><span class="id" title="definition">bool_eqMixin</span></a>.<br/> <br/> -<span class="id" title="keyword">Lemma</span> <a name="eqbE"><span class="id" title="lemma">eqbE</span></a> : <a class="idref" href="mathcomp.ssreflect.eqtype.html#eqb"><span class="id" title="definition">eqb</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#eq_op"><span class="id" title="definition">eq_op</span></a>. <br/> +<span class="id" title="keyword">Lemma</span> <a name="eqbE"><span class="id" title="lemma">eqbE</span></a> : <a class="idref" href="mathcomp.ssreflect.eqtype.html#eqb"><span class="id" title="definition">eqb</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#6cd0f7b28b6092304087c7049437bb1a"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#eq_op"><span class="id" title="definition">eq_op</span></a>. <br/> <br/> -<span class="id" title="keyword">Lemma</span> <a name="bool_irrelevance"><span class="id" title="lemma">bool_irrelevance</span></a> (<span class="id" title="var">x</span> <span class="id" title="var">y</span> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#bool"><span class="id" title="inductive">bool</span></a>) (<span class="id" title="var">E</span> <span class="id" title="var">E'</span> : <a class="idref" href="mathcomp.ssreflect.eqtype.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#y"><span class="id" title="variable">y</span></a>) : <a class="idref" href="mathcomp.ssreflect.eqtype.html#E"><span class="id" title="variable">E</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#E'"><span class="id" title="variable">E'</span></a>.<br/> +<span class="id" title="keyword">Lemma</span> <a name="bool_irrelevance"><span class="id" title="lemma">bool_irrelevance</span></a> (<span class="id" title="var">b</span> : <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Datatypes.html#bool"><span class="id" title="inductive">bool</span></a>) (<span class="id" title="var">p1</span> <span class="id" title="var">p2</span> : <a class="idref" href="mathcomp.ssreflect.eqtype.html#b"><span class="id" title="variable">b</span></a>) : <a class="idref" href="mathcomp.ssreflect.eqtype.html#p1"><span class="id" title="variable">p1</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#6cd0f7b28b6092304087c7049437bb1a"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#p2"><span class="id" title="variable">p2</span></a>.<br/> <br/> -<span class="id" title="keyword">Lemma</span> <a name="negb_add"><span class="id" title="lemma">negb_add</span></a> <span class="id" title="var">b1</span> <span class="id" title="var">b2</span> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#4b80c70cdb231351c5e129ba61f7f956"><span class="id" title="notation">~~</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#4b80c70cdb231351c5e129ba61f7f956"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.ssreflect.eqtype.html#b1"><span class="id" title="variable">b1</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#ef177bde7d01ae97c98f9cba81f6c95b"><span class="id" title="notation">(+)</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#b2"><span class="id" title="variable">b2</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#4b80c70cdb231351c5e129ba61f7f956"><span class="id" title="notation">)</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.ssreflect.eqtype.html#b1"><span class="id" title="variable">b1</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#17d28d004d0863cb022d4ce832ddaaae"><span class="id" title="notation">==</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#b2"><span class="id" title="variable">b2</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">)</span></a>.<br/> +<span class="id" title="keyword">Lemma</span> <a name="negb_add"><span class="id" title="lemma">negb_add</span></a> <span class="id" title="var">b1</span> <span class="id" title="var">b2</span> : <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#b3ebd0deddd84fd60e149cb5ef719351"><span class="id" title="notation">~~</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#b3ebd0deddd84fd60e149cb5ef719351"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.ssreflect.eqtype.html#b1"><span class="id" title="variable">b1</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#a60537c464e134477471443dd91ae651"><span class="id" title="notation">(+)</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#b2"><span class="id" title="variable">b2</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#b3ebd0deddd84fd60e149cb5ef719351"><span class="id" title="notation">)</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#6cd0f7b28b6092304087c7049437bb1a"><span class="id" title="notation">=</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#6cd0f7b28b6092304087c7049437bb1a"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.ssreflect.eqtype.html#b1"><span class="id" title="variable">b1</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#df45e8c2e8370fd4f0f7c4fdaf208180"><span class="id" title="notation">==</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#b2"><span class="id" title="variable">b2</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#6cd0f7b28b6092304087c7049437bb1a"><span class="id" title="notation">)</span></a>.<br/> <br/> -<span class="id" title="keyword">Lemma</span> <a name="negb_eqb"><span class="id" title="lemma">negb_eqb</span></a> <span class="id" title="var">b1</span> <span class="id" title="var">b2</span> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.ssreflect.eqtype.html#b1"><span class="id" title="variable">b1</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#b1eeadc2feabc7422252baa895418c7b"><span class="id" title="notation">!=</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#b2"><span class="id" title="variable">b2</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">)</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#b1"><span class="id" title="variable">b1</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#ef177bde7d01ae97c98f9cba81f6c95b"><span class="id" title="notation">(+)</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#b2"><span class="id" title="variable">b2</span></a>.<br/> +<span class="id" title="keyword">Lemma</span> <a name="negb_eqb"><span class="id" title="lemma">negb_eqb</span></a> <span class="id" title="var">b1</span> <span class="id" title="var">b2</span> : <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#6cd0f7b28b6092304087c7049437bb1a"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.ssreflect.eqtype.html#b1"><span class="id" title="variable">b1</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#c385a484ee9d1b4e0615924561a9b75e"><span class="id" title="notation">!=</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#b2"><span class="id" title="variable">b2</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#6cd0f7b28b6092304087c7049437bb1a"><span class="id" title="notation">)</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#6cd0f7b28b6092304087c7049437bb1a"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#b1"><span class="id" title="variable">b1</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#a60537c464e134477471443dd91ae651"><span class="id" title="notation">(+)</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#b2"><span class="id" title="variable">b2</span></a>.<br/> <br/> -<span class="id" title="keyword">Lemma</span> <a name="eqb_id"><span class="id" title="lemma">eqb_id</span></a> <span class="id" title="var">b</span> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.ssreflect.eqtype.html#b"><span class="id" title="variable">b</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#17d28d004d0863cb022d4ce832ddaaae"><span class="id" title="notation">==</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#true"><span class="id" title="constructor">true</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">)</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#b"><span class="id" title="variable">b</span></a>.<br/> +<span class="id" title="keyword">Lemma</span> <a name="eqb_id"><span class="id" title="lemma">eqb_id</span></a> <span class="id" title="var">b</span> : <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#6cd0f7b28b6092304087c7049437bb1a"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.ssreflect.eqtype.html#b"><span class="id" title="variable">b</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#df45e8c2e8370fd4f0f7c4fdaf208180"><span class="id" title="notation">==</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Datatypes.html#true"><span class="id" title="constructor">true</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#6cd0f7b28b6092304087c7049437bb1a"><span class="id" title="notation">)</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#6cd0f7b28b6092304087c7049437bb1a"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#b"><span class="id" title="variable">b</span></a>.<br/> <br/> -<span class="id" title="keyword">Lemma</span> <a name="eqbF_neg"><span class="id" title="lemma">eqbF_neg</span></a> <span class="id" title="var">b</span> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.ssreflect.eqtype.html#b"><span class="id" title="variable">b</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#17d28d004d0863cb022d4ce832ddaaae"><span class="id" title="notation">==</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#false"><span class="id" title="constructor">false</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">)</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#4b80c70cdb231351c5e129ba61f7f956"><span class="id" title="notation">~~</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#b"><span class="id" title="variable">b</span></a>.<br/> +<span class="id" title="keyword">Lemma</span> <a name="eqbF_neg"><span class="id" title="lemma">eqbF_neg</span></a> <span class="id" title="var">b</span> : <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#6cd0f7b28b6092304087c7049437bb1a"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.ssreflect.eqtype.html#b"><span class="id" title="variable">b</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#df45e8c2e8370fd4f0f7c4fdaf208180"><span class="id" title="notation">==</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Datatypes.html#false"><span class="id" title="constructor">false</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#6cd0f7b28b6092304087c7049437bb1a"><span class="id" title="notation">)</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#6cd0f7b28b6092304087c7049437bb1a"><span class="id" title="notation">=</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#b3ebd0deddd84fd60e149cb5ef719351"><span class="id" title="notation">~~</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#b"><span class="id" title="variable">b</span></a>.<br/> <br/> -<span class="id" title="keyword">Lemma</span> <a name="eqb_negLR"><span class="id" title="lemma">eqb_negLR</span></a> <span class="id" title="var">b1</span> <span class="id" title="var">b2</span> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">(</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#4b80c70cdb231351c5e129ba61f7f956"><span class="id" title="notation">~~</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#b1"><span class="id" title="variable">b1</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#17d28d004d0863cb022d4ce832ddaaae"><span class="id" title="notation">==</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#b2"><span class="id" title="variable">b2</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">)</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.ssreflect.eqtype.html#b1"><span class="id" title="variable">b1</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#17d28d004d0863cb022d4ce832ddaaae"><span class="id" title="notation">==</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#4b80c70cdb231351c5e129ba61f7f956"><span class="id" title="notation">~~</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#b2"><span class="id" title="variable">b2</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">)</span></a>.<br/> +<span class="id" title="keyword">Lemma</span> <a name="eqb_negLR"><span class="id" title="lemma">eqb_negLR</span></a> <span class="id" title="var">b1</span> <span class="id" title="var">b2</span> : <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#6cd0f7b28b6092304087c7049437bb1a"><span class="id" title="notation">(</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#b3ebd0deddd84fd60e149cb5ef719351"><span class="id" title="notation">~~</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#b1"><span class="id" title="variable">b1</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#df45e8c2e8370fd4f0f7c4fdaf208180"><span class="id" title="notation">==</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#b2"><span class="id" title="variable">b2</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#6cd0f7b28b6092304087c7049437bb1a"><span class="id" title="notation">)</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#6cd0f7b28b6092304087c7049437bb1a"><span class="id" title="notation">=</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#6cd0f7b28b6092304087c7049437bb1a"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.ssreflect.eqtype.html#b1"><span class="id" title="variable">b1</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#df45e8c2e8370fd4f0f7c4fdaf208180"><span class="id" title="notation">==</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#b3ebd0deddd84fd60e149cb5ef719351"><span class="id" title="notation">~~</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#b2"><span class="id" title="variable">b2</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#6cd0f7b28b6092304087c7049437bb1a"><span class="id" title="notation">)</span></a>.<br/> <br/> </div> @@ -349,14 +395,14 @@ <div class="code"> <br/> -<span class="id" title="keyword">Notation</span> <a name="xpred1"><span class="id" title="abbreviation">xpred1</span></a> := (<span class="id" title="keyword">fun</span> <span class="id" title="var">a1</span> <span class="id" title="var">x</span> ⇒ <a class="idref" href="mathcomp.ssreflect.eqtype.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#17d28d004d0863cb022d4ce832ddaaae"><span class="id" title="notation">==</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#a1"><span class="id" title="variable">a1</span></a>).<br/> -<span class="id" title="keyword">Notation</span> <a name="xpred2"><span class="id" title="abbreviation">xpred2</span></a> := (<span class="id" title="keyword">fun</span> <span class="id" title="var">a1</span> <span class="id" title="var">a2</span> <span class="id" title="var">x</span> ⇒ <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#14a7a9c7dc61f86bfb664d400fabaf8a"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.ssreflect.eqtype.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#17d28d004d0863cb022d4ce832ddaaae"><span class="id" title="notation">==</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#a1"><span class="id" title="variable">a1</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#14a7a9c7dc61f86bfb664d400fabaf8a"><span class="id" title="notation">)</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#14a7a9c7dc61f86bfb664d400fabaf8a"><span class="id" title="notation">||</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#14a7a9c7dc61f86bfb664d400fabaf8a"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.ssreflect.eqtype.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#17d28d004d0863cb022d4ce832ddaaae"><span class="id" title="notation">==</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#a2"><span class="id" title="variable">a2</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#14a7a9c7dc61f86bfb664d400fabaf8a"><span class="id" title="notation">)</span></a>).<br/> -<span class="id" title="keyword">Notation</span> <a name="xpred3"><span class="id" title="abbreviation">xpred3</span></a> := (<span class="id" title="keyword">fun</span> <span class="id" title="var">a1</span> <span class="id" title="var">a2</span> <span class="id" title="var">a3</span> <span class="id" title="var">x</span> ⇒ <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#61dc88e70df6fc30a5b49c217ac7b79d"><span class="id" title="notation">[||</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#17d28d004d0863cb022d4ce832ddaaae"><span class="id" title="notation">==</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#a1"><span class="id" title="variable">a1</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#61dc88e70df6fc30a5b49c217ac7b79d"><span class="id" title="notation">,</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#17d28d004d0863cb022d4ce832ddaaae"><span class="id" title="notation">==</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#a2"><span class="id" title="variable">a2</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#61dc88e70df6fc30a5b49c217ac7b79d"><span class="id" title="notation">|</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#17d28d004d0863cb022d4ce832ddaaae"><span class="id" title="notation">==</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#a3"><span class="id" title="variable">a3</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#61dc88e70df6fc30a5b49c217ac7b79d"><span class="id" title="notation">]</span></a>).<br/> +<span class="id" title="keyword">Notation</span> <a name="xpred1"><span class="id" title="abbreviation">xpred1</span></a> := (<span class="id" title="keyword">fun</span> <span class="id" title="var">a1</span> <span class="id" title="var">x</span> ⇒ <a class="idref" href="mathcomp.ssreflect.eqtype.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#df45e8c2e8370fd4f0f7c4fdaf208180"><span class="id" title="notation">==</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#a1"><span class="id" title="variable">a1</span></a>).<br/> +<span class="id" title="keyword">Notation</span> <a name="xpred2"><span class="id" title="abbreviation">xpred2</span></a> := (<span class="id" title="keyword">fun</span> <span class="id" title="var">a1</span> <span class="id" title="var">a2</span> <span class="id" title="var">x</span> ⇒ <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Datatypes.html#081ff67d3116402bb680e8692aa39185"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.ssreflect.eqtype.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#df45e8c2e8370fd4f0f7c4fdaf208180"><span class="id" title="notation">==</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#a1"><span class="id" title="variable">a1</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Datatypes.html#081ff67d3116402bb680e8692aa39185"><span class="id" title="notation">)</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Datatypes.html#081ff67d3116402bb680e8692aa39185"><span class="id" title="notation">||</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Datatypes.html#081ff67d3116402bb680e8692aa39185"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.ssreflect.eqtype.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#df45e8c2e8370fd4f0f7c4fdaf208180"><span class="id" title="notation">==</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#a2"><span class="id" title="variable">a2</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Datatypes.html#081ff67d3116402bb680e8692aa39185"><span class="id" title="notation">)</span></a>).<br/> +<span class="id" title="keyword">Notation</span> <a name="xpred3"><span class="id" title="abbreviation">xpred3</span></a> := (<span class="id" title="keyword">fun</span> <span class="id" title="var">a1</span> <span class="id" title="var">a2</span> <span class="id" title="var">a3</span> <span class="id" title="var">x</span> ⇒ <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#6e3f5b731a46299b833a2834f381d536"><span class="id" title="notation">[||</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#df45e8c2e8370fd4f0f7c4fdaf208180"><span class="id" title="notation">==</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#a1"><span class="id" title="variable">a1</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#6e3f5b731a46299b833a2834f381d536"><span class="id" title="notation">,</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#df45e8c2e8370fd4f0f7c4fdaf208180"><span class="id" title="notation">==</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#a2"><span class="id" title="variable">a2</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#6e3f5b731a46299b833a2834f381d536"><span class="id" title="notation">|</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#df45e8c2e8370fd4f0f7c4fdaf208180"><span class="id" title="notation">==</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#a3"><span class="id" title="variable">a3</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#6e3f5b731a46299b833a2834f381d536"><span class="id" title="notation">]</span></a>).<br/> <span class="id" title="keyword">Notation</span> <a name="xpred4"><span class="id" title="abbreviation">xpred4</span></a> :=<br/> - (<span class="id" title="keyword">fun</span> <span class="id" title="var">a1</span> <span class="id" title="var">a2</span> <span class="id" title="var">a3</span> <span class="id" title="var">a4</span> <span class="id" title="var">x</span> ⇒ <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#61dc88e70df6fc30a5b49c217ac7b79d"><span class="id" title="notation">[||</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#17d28d004d0863cb022d4ce832ddaaae"><span class="id" title="notation">==</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#a1"><span class="id" title="variable">a1</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#61dc88e70df6fc30a5b49c217ac7b79d"><span class="id" title="notation">,</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#17d28d004d0863cb022d4ce832ddaaae"><span class="id" title="notation">==</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#a2"><span class="id" title="variable">a2</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#61dc88e70df6fc30a5b49c217ac7b79d"><span class="id" title="notation">,</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#17d28d004d0863cb022d4ce832ddaaae"><span class="id" title="notation">==</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#a3"><span class="id" title="variable">a3</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#61dc88e70df6fc30a5b49c217ac7b79d"><span class="id" title="notation">|</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#17d28d004d0863cb022d4ce832ddaaae"><span class="id" title="notation">==</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#a4"><span class="id" title="variable">a4</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#61dc88e70df6fc30a5b49c217ac7b79d"><span class="id" title="notation">]</span></a>).<br/> -<span class="id" title="keyword">Notation</span> <a name="xpredU1"><span class="id" title="abbreviation">xpredU1</span></a> := (<span class="id" title="keyword">fun</span> <span class="id" title="var">a1</span> (<span class="id" title="var">p</span> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#pred"><span class="id" title="definition">pred</span></a> <span class="id" title="var">_</span>) <span class="id" title="var">x</span> ⇒ <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#14a7a9c7dc61f86bfb664d400fabaf8a"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.ssreflect.eqtype.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#17d28d004d0863cb022d4ce832ddaaae"><span class="id" title="notation">==</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#a1"><span class="id" title="variable">a1</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#14a7a9c7dc61f86bfb664d400fabaf8a"><span class="id" title="notation">)</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#14a7a9c7dc61f86bfb664d400fabaf8a"><span class="id" title="notation">||</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#p"><span class="id" title="variable">p</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#x"><span class="id" title="variable">x</span></a>).<br/> -<span class="id" title="keyword">Notation</span> <a name="xpredC1"><span class="id" title="abbreviation">xpredC1</span></a> := (<span class="id" title="keyword">fun</span> <span class="id" title="var">a1</span> <span class="id" title="var">x</span> ⇒ <a class="idref" href="mathcomp.ssreflect.eqtype.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#b1eeadc2feabc7422252baa895418c7b"><span class="id" title="notation">!=</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#a1"><span class="id" title="variable">a1</span></a>).<br/> -<span class="id" title="keyword">Notation</span> <a name="xpredD1"><span class="id" title="abbreviation">xpredD1</span></a> := (<span class="id" title="keyword">fun</span> (<span class="id" title="var">p</span> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#pred"><span class="id" title="definition">pred</span></a> <span class="id" title="var">_</span>) <span class="id" title="var">a1</span> <span class="id" title="var">x</span> ⇒ <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#49ac24efa716d8b0ee8943bc1d1769a9"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.ssreflect.eqtype.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#b1eeadc2feabc7422252baa895418c7b"><span class="id" title="notation">!=</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#a1"><span class="id" title="variable">a1</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#49ac24efa716d8b0ee8943bc1d1769a9"><span class="id" title="notation">)</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#49ac24efa716d8b0ee8943bc1d1769a9"><span class="id" title="notation">&&</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#p"><span class="id" title="variable">p</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#x"><span class="id" title="variable">x</span></a>).<br/> + (<span class="id" title="keyword">fun</span> <span class="id" title="var">a1</span> <span class="id" title="var">a2</span> <span class="id" title="var">a3</span> <span class="id" title="var">a4</span> <span class="id" title="var">x</span> ⇒ <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#6e3f5b731a46299b833a2834f381d536"><span class="id" title="notation">[||</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#df45e8c2e8370fd4f0f7c4fdaf208180"><span class="id" title="notation">==</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#a1"><span class="id" title="variable">a1</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#6e3f5b731a46299b833a2834f381d536"><span class="id" title="notation">,</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#df45e8c2e8370fd4f0f7c4fdaf208180"><span class="id" title="notation">==</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#a2"><span class="id" title="variable">a2</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#6e3f5b731a46299b833a2834f381d536"><span class="id" title="notation">,</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#df45e8c2e8370fd4f0f7c4fdaf208180"><span class="id" title="notation">==</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#a3"><span class="id" title="variable">a3</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#6e3f5b731a46299b833a2834f381d536"><span class="id" title="notation">|</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#df45e8c2e8370fd4f0f7c4fdaf208180"><span class="id" title="notation">==</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#a4"><span class="id" title="variable">a4</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#6e3f5b731a46299b833a2834f381d536"><span class="id" title="notation">]</span></a>).<br/> +<span class="id" title="keyword">Notation</span> <a name="xpredU1"><span class="id" title="abbreviation">xpredU1</span></a> := (<span class="id" title="keyword">fun</span> <span class="id" title="var">a1</span> (<span class="id" title="var">p</span> : <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#pred"><span class="id" title="definition">pred</span></a> <span class="id" title="var">_</span>) <span class="id" title="var">x</span> ⇒ <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Datatypes.html#081ff67d3116402bb680e8692aa39185"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.ssreflect.eqtype.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#df45e8c2e8370fd4f0f7c4fdaf208180"><span class="id" title="notation">==</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#a1"><span class="id" title="variable">a1</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Datatypes.html#081ff67d3116402bb680e8692aa39185"><span class="id" title="notation">)</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Datatypes.html#081ff67d3116402bb680e8692aa39185"><span class="id" title="notation">||</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#p"><span class="id" title="variable">p</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#x"><span class="id" title="variable">x</span></a>).<br/> +<span class="id" title="keyword">Notation</span> <a name="xpredC1"><span class="id" title="abbreviation">xpredC1</span></a> := (<span class="id" title="keyword">fun</span> <span class="id" title="var">a1</span> <span class="id" title="var">x</span> ⇒ <a class="idref" href="mathcomp.ssreflect.eqtype.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#c385a484ee9d1b4e0615924561a9b75e"><span class="id" title="notation">!=</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#a1"><span class="id" title="variable">a1</span></a>).<br/> +<span class="id" title="keyword">Notation</span> <a name="xpredD1"><span class="id" title="abbreviation">xpredD1</span></a> := (<span class="id" title="keyword">fun</span> (<span class="id" title="var">p</span> : <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#pred"><span class="id" title="definition">pred</span></a> <span class="id" title="var">_</span>) <span class="id" title="var">a1</span> <span class="id" title="var">x</span> ⇒ <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Datatypes.html#9ddeac0ab66152bd1d64bedb507a795e"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.ssreflect.eqtype.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#c385a484ee9d1b4e0615924561a9b75e"><span class="id" title="notation">!=</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#a1"><span class="id" title="variable">a1</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Datatypes.html#9ddeac0ab66152bd1d64bedb507a795e"><span class="id" title="notation">)</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Datatypes.html#9ddeac0ab66152bd1d64bedb507a795e"><span class="id" title="notation">&&</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#p"><span class="id" title="variable">p</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#x"><span class="id" title="variable">x</span></a>).<br/> <br/> <span class="id" title="keyword">Section</span> <a name="EqPred"><span class="id" title="section">EqPred</span></a>.<br/> @@ -365,37 +411,37 @@ <span class="id" title="keyword">Variable</span> <a name="EqPred.T"><span class="id" title="variable">T</span></a> : <a class="idref" href="mathcomp.ssreflect.eqtype.html#eqType"><span class="id" title="abbreviation">eqType</span></a>.<br/> <br/> -<span class="id" title="keyword">Definition</span> <a name="pred1"><span class="id" title="definition">pred1</span></a> (<span class="id" title="var">a1</span> : <a class="idref" href="mathcomp.ssreflect.eqtype.html#EqPred.T"><span class="id" title="variable">T</span></a>) := <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#SimplPred"><span class="id" title="definition">SimplPred</span></a> (<a class="idref" href="mathcomp.ssreflect.eqtype.html#xpred1"><span class="id" title="abbreviation">xpred1</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#a1"><span class="id" title="variable">a1</span></a>).<br/> -<span class="id" title="keyword">Definition</span> <a name="pred2"><span class="id" title="definition">pred2</span></a> (<span class="id" title="var">a1</span> <span class="id" title="var">a2</span> : <a class="idref" href="mathcomp.ssreflect.eqtype.html#EqPred.T"><span class="id" title="variable">T</span></a>) := <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#SimplPred"><span class="id" title="definition">SimplPred</span></a> (<a class="idref" href="mathcomp.ssreflect.eqtype.html#xpred2"><span class="id" title="abbreviation">xpred2</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#a1"><span class="id" title="variable">a1</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#a2"><span class="id" title="variable">a2</span></a>).<br/> -<span class="id" title="keyword">Definition</span> <a name="pred3"><span class="id" title="definition">pred3</span></a> (<span class="id" title="var">a1</span> <span class="id" title="var">a2</span> <span class="id" title="var">a3</span> : <a class="idref" href="mathcomp.ssreflect.eqtype.html#EqPred.T"><span class="id" title="variable">T</span></a>) := <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#SimplPred"><span class="id" title="definition">SimplPred</span></a> (<a class="idref" href="mathcomp.ssreflect.eqtype.html#xpred3"><span class="id" title="abbreviation">xpred3</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#a1"><span class="id" title="variable">a1</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#a2"><span class="id" title="variable">a2</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#a3"><span class="id" title="variable">a3</span></a>).<br/> -<span class="id" title="keyword">Definition</span> <a name="pred4"><span class="id" title="definition">pred4</span></a> (<span class="id" title="var">a1</span> <span class="id" title="var">a2</span> <span class="id" title="var">a3</span> <span class="id" title="var">a4</span> : <a class="idref" href="mathcomp.ssreflect.eqtype.html#EqPred.T"><span class="id" title="variable">T</span></a>) := <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#SimplPred"><span class="id" title="definition">SimplPred</span></a> (<a class="idref" href="mathcomp.ssreflect.eqtype.html#xpred4"><span class="id" title="abbreviation">xpred4</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#a1"><span class="id" title="variable">a1</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#a2"><span class="id" title="variable">a2</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#a3"><span class="id" title="variable">a3</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#a4"><span class="id" title="variable">a4</span></a>).<br/> -<span class="id" title="keyword">Definition</span> <a name="predU1"><span class="id" title="definition">predU1</span></a> (<span class="id" title="var">a1</span> : <a class="idref" href="mathcomp.ssreflect.eqtype.html#EqPred.T"><span class="id" title="variable">T</span></a>) <span class="id" title="var">p</span> := <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#SimplPred"><span class="id" title="definition">SimplPred</span></a> (<a class="idref" href="mathcomp.ssreflect.eqtype.html#xpredU1"><span class="id" title="abbreviation">xpredU1</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#a1"><span class="id" title="variable">a1</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#p"><span class="id" title="variable">p</span></a>).<br/> -<span class="id" title="keyword">Definition</span> <a name="predC1"><span class="id" title="definition">predC1</span></a> (<span class="id" title="var">a1</span> : <a class="idref" href="mathcomp.ssreflect.eqtype.html#EqPred.T"><span class="id" title="variable">T</span></a>) := <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#SimplPred"><span class="id" title="definition">SimplPred</span></a> (<a class="idref" href="mathcomp.ssreflect.eqtype.html#xpredC1"><span class="id" title="abbreviation">xpredC1</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#a1"><span class="id" title="variable">a1</span></a>).<br/> -<span class="id" title="keyword">Definition</span> <a name="predD1"><span class="id" title="definition">predD1</span></a> <span class="id" title="var">p</span> (<span class="id" title="var">a1</span> : <a class="idref" href="mathcomp.ssreflect.eqtype.html#EqPred.T"><span class="id" title="variable">T</span></a>) := <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#SimplPred"><span class="id" title="definition">SimplPred</span></a> (<a class="idref" href="mathcomp.ssreflect.eqtype.html#xpredD1"><span class="id" title="abbreviation">xpredD1</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#p"><span class="id" title="variable">p</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#a1"><span class="id" title="variable">a1</span></a>).<br/> +<span class="id" title="keyword">Definition</span> <a name="pred1"><span class="id" title="definition">pred1</span></a> (<span class="id" title="var">a1</span> : <a class="idref" href="mathcomp.ssreflect.eqtype.html#EqPred.T"><span class="id" title="variable">T</span></a>) := <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#SimplPred"><span class="id" title="definition">SimplPred</span></a> (<a class="idref" href="mathcomp.ssreflect.eqtype.html#xpred1"><span class="id" title="abbreviation">xpred1</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#a1"><span class="id" title="variable">a1</span></a>).<br/> +<span class="id" title="keyword">Definition</span> <a name="pred2"><span class="id" title="definition">pred2</span></a> (<span class="id" title="var">a1</span> <span class="id" title="var">a2</span> : <a class="idref" href="mathcomp.ssreflect.eqtype.html#EqPred.T"><span class="id" title="variable">T</span></a>) := <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#SimplPred"><span class="id" title="definition">SimplPred</span></a> (<a class="idref" href="mathcomp.ssreflect.eqtype.html#xpred2"><span class="id" title="abbreviation">xpred2</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#a1"><span class="id" title="variable">a1</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#a2"><span class="id" title="variable">a2</span></a>).<br/> +<span class="id" title="keyword">Definition</span> <a name="pred3"><span class="id" title="definition">pred3</span></a> (<span class="id" title="var">a1</span> <span class="id" title="var">a2</span> <span class="id" title="var">a3</span> : <a class="idref" href="mathcomp.ssreflect.eqtype.html#EqPred.T"><span class="id" title="variable">T</span></a>) := <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#SimplPred"><span class="id" title="definition">SimplPred</span></a> (<a class="idref" href="mathcomp.ssreflect.eqtype.html#xpred3"><span class="id" title="abbreviation">xpred3</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#a1"><span class="id" title="variable">a1</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#a2"><span class="id" title="variable">a2</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#a3"><span class="id" title="variable">a3</span></a>).<br/> +<span class="id" title="keyword">Definition</span> <a name="pred4"><span class="id" title="definition">pred4</span></a> (<span class="id" title="var">a1</span> <span class="id" title="var">a2</span> <span class="id" title="var">a3</span> <span class="id" title="var">a4</span> : <a class="idref" href="mathcomp.ssreflect.eqtype.html#EqPred.T"><span class="id" title="variable">T</span></a>) := <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#SimplPred"><span class="id" title="definition">SimplPred</span></a> (<a class="idref" href="mathcomp.ssreflect.eqtype.html#xpred4"><span class="id" title="abbreviation">xpred4</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#a1"><span class="id" title="variable">a1</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#a2"><span class="id" title="variable">a2</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#a3"><span class="id" title="variable">a3</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#a4"><span class="id" title="variable">a4</span></a>).<br/> +<span class="id" title="keyword">Definition</span> <a name="predU1"><span class="id" title="definition">predU1</span></a> (<span class="id" title="var">a1</span> : <a class="idref" href="mathcomp.ssreflect.eqtype.html#EqPred.T"><span class="id" title="variable">T</span></a>) <span class="id" title="var">p</span> := <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#SimplPred"><span class="id" title="definition">SimplPred</span></a> (<a class="idref" href="mathcomp.ssreflect.eqtype.html#xpredU1"><span class="id" title="abbreviation">xpredU1</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#a1"><span class="id" title="variable">a1</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#p"><span class="id" title="variable">p</span></a>).<br/> +<span class="id" title="keyword">Definition</span> <a name="predC1"><span class="id" title="definition">predC1</span></a> (<span class="id" title="var">a1</span> : <a class="idref" href="mathcomp.ssreflect.eqtype.html#EqPred.T"><span class="id" title="variable">T</span></a>) := <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#SimplPred"><span class="id" title="definition">SimplPred</span></a> (<a class="idref" href="mathcomp.ssreflect.eqtype.html#xpredC1"><span class="id" title="abbreviation">xpredC1</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#a1"><span class="id" title="variable">a1</span></a>).<br/> +<span class="id" title="keyword">Definition</span> <a name="predD1"><span class="id" title="definition">predD1</span></a> <span class="id" title="var">p</span> (<span class="id" title="var">a1</span> : <a class="idref" href="mathcomp.ssreflect.eqtype.html#EqPred.T"><span class="id" title="variable">T</span></a>) := <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#SimplPred"><span class="id" title="definition">SimplPred</span></a> (<a class="idref" href="mathcomp.ssreflect.eqtype.html#xpredD1"><span class="id" title="abbreviation">xpredD1</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#p"><span class="id" title="variable">p</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#a1"><span class="id" title="variable">a1</span></a>).<br/> <br/> -<span class="id" title="keyword">Lemma</span> <a name="pred1E"><span class="id" title="lemma">pred1E</span></a> : <a class="idref" href="mathcomp.ssreflect.eqtype.html#pred1"><span class="id" title="definition">pred1</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#86efabaf3ab961ac3d2bac35d2b3c35d"><span class="id" title="notation">=2</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#eq_op"><span class="id" title="definition">eq_op</span></a>. <br/> +<span class="id" title="keyword">Lemma</span> <a name="pred1E"><span class="id" title="lemma">pred1E</span></a> : <a class="idref" href="mathcomp.ssreflect.eqtype.html#pred1"><span class="id" title="definition">pred1</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#c717e24548d7d4d1086535addc681262"><span class="id" title="notation">=2</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#eq_op"><span class="id" title="definition">eq_op</span></a>. <br/> <br/> -<span class="id" title="keyword">Variables</span> (<a name="EqPred.T2"><span class="id" title="variable">T2</span></a> : <a class="idref" href="mathcomp.ssreflect.eqtype.html#eqType"><span class="id" title="abbreviation">eqType</span></a>) (<a name="EqPred.x"><span class="id" title="variable">x</span></a> <a name="EqPred.y"><span class="id" title="variable">y</span></a> : <a class="idref" href="mathcomp.ssreflect.eqtype.html#EqPred.T"><span class="id" title="variable">T</span></a>) (<a name="EqPred.z"><span class="id" title="variable">z</span></a> <a name="EqPred.u"><span class="id" title="variable">u</span></a> : <a class="idref" href="mathcomp.ssreflect.eqtype.html#T2"><span class="id" title="variable">T2</span></a>) (<a name="EqPred.b"><span class="id" title="variable">b</span></a> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#bool"><span class="id" title="inductive">bool</span></a>).<br/> +<span class="id" title="keyword">Variables</span> (<a name="EqPred.T2"><span class="id" title="variable">T2</span></a> : <a class="idref" href="mathcomp.ssreflect.eqtype.html#eqType"><span class="id" title="abbreviation">eqType</span></a>) (<a name="EqPred.x"><span class="id" title="variable">x</span></a> <a name="EqPred.y"><span class="id" title="variable">y</span></a> : <a class="idref" href="mathcomp.ssreflect.eqtype.html#EqPred.T"><span class="id" title="variable">T</span></a>) (<a name="EqPred.z"><span class="id" title="variable">z</span></a> <a name="EqPred.u"><span class="id" title="variable">u</span></a> : <a class="idref" href="mathcomp.ssreflect.eqtype.html#T2"><span class="id" title="variable">T2</span></a>) (<a name="EqPred.b"><span class="id" title="variable">b</span></a> : <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Datatypes.html#bool"><span class="id" title="inductive">bool</span></a>).<br/> <br/> -<span class="id" title="keyword">Lemma</span> <a name="predU1P"><span class="id" title="lemma">predU1P</span></a> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#reflect"><span class="id" title="abbreviation">reflect</span></a> (<a class="idref" href="mathcomp.ssreflect.eqtype.html#EqPred.x"><span class="id" title="variable">x</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#EqPred.y"><span class="id" title="variable">y</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#7a45dffb109c3069e5c675be68643e60"><span class="id" title="notation">∨</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#EqPred.b"><span class="id" title="variable">b</span></a>) (<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#14a7a9c7dc61f86bfb664d400fabaf8a"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.ssreflect.eqtype.html#EqPred.x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#17d28d004d0863cb022d4ce832ddaaae"><span class="id" title="notation">==</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#EqPred.y"><span class="id" title="variable">y</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#14a7a9c7dc61f86bfb664d400fabaf8a"><span class="id" title="notation">)</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#14a7a9c7dc61f86bfb664d400fabaf8a"><span class="id" title="notation">||</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#EqPred.b"><span class="id" title="variable">b</span></a>).<br/> +<span class="id" title="keyword">Lemma</span> <a name="predU1P"><span class="id" title="lemma">predU1P</span></a> : <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#reflect"><span class="id" title="abbreviation">reflect</span></a> (<a class="idref" href="mathcomp.ssreflect.eqtype.html#EqPred.x"><span class="id" title="variable">x</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#6cd0f7b28b6092304087c7049437bb1a"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#EqPred.y"><span class="id" title="variable">y</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#f031fe1957c4a4a8e217aa46af2b4e25"><span class="id" title="notation">∨</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#EqPred.b"><span class="id" title="variable">b</span></a>) (<a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Datatypes.html#081ff67d3116402bb680e8692aa39185"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.ssreflect.eqtype.html#EqPred.x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#df45e8c2e8370fd4f0f7c4fdaf208180"><span class="id" title="notation">==</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#EqPred.y"><span class="id" title="variable">y</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Datatypes.html#081ff67d3116402bb680e8692aa39185"><span class="id" title="notation">)</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Datatypes.html#081ff67d3116402bb680e8692aa39185"><span class="id" title="notation">||</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#EqPred.b"><span class="id" title="variable">b</span></a>).<br/> <br/> -<span class="id" title="keyword">Lemma</span> <a name="pred2P"><span class="id" title="lemma">pred2P</span></a> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#reflect"><span class="id" title="abbreviation">reflect</span></a> (<a class="idref" href="mathcomp.ssreflect.eqtype.html#EqPred.x"><span class="id" title="variable">x</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#EqPred.y"><span class="id" title="variable">y</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#7a45dffb109c3069e5c675be68643e60"><span class="id" title="notation">∨</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#EqPred.z"><span class="id" title="variable">z</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#EqPred.u"><span class="id" title="variable">u</span></a>) (<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#14a7a9c7dc61f86bfb664d400fabaf8a"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.ssreflect.eqtype.html#EqPred.x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#17d28d004d0863cb022d4ce832ddaaae"><span class="id" title="notation">==</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#EqPred.y"><span class="id" title="variable">y</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#14a7a9c7dc61f86bfb664d400fabaf8a"><span class="id" title="notation">)</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#14a7a9c7dc61f86bfb664d400fabaf8a"><span class="id" title="notation">||</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#14a7a9c7dc61f86bfb664d400fabaf8a"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.ssreflect.eqtype.html#EqPred.z"><span class="id" title="variable">z</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#17d28d004d0863cb022d4ce832ddaaae"><span class="id" title="notation">==</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#EqPred.u"><span class="id" title="variable">u</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#14a7a9c7dc61f86bfb664d400fabaf8a"><span class="id" title="notation">)</span></a>).<br/> +<span class="id" title="keyword">Lemma</span> <a name="pred2P"><span class="id" title="lemma">pred2P</span></a> : <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#reflect"><span class="id" title="abbreviation">reflect</span></a> (<a class="idref" href="mathcomp.ssreflect.eqtype.html#EqPred.x"><span class="id" title="variable">x</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#6cd0f7b28b6092304087c7049437bb1a"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#EqPred.y"><span class="id" title="variable">y</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#f031fe1957c4a4a8e217aa46af2b4e25"><span class="id" title="notation">∨</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#EqPred.z"><span class="id" title="variable">z</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#6cd0f7b28b6092304087c7049437bb1a"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#EqPred.u"><span class="id" title="variable">u</span></a>) (<a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Datatypes.html#081ff67d3116402bb680e8692aa39185"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.ssreflect.eqtype.html#EqPred.x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#df45e8c2e8370fd4f0f7c4fdaf208180"><span class="id" title="notation">==</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#EqPred.y"><span class="id" title="variable">y</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Datatypes.html#081ff67d3116402bb680e8692aa39185"><span class="id" title="notation">)</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Datatypes.html#081ff67d3116402bb680e8692aa39185"><span class="id" title="notation">||</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Datatypes.html#081ff67d3116402bb680e8692aa39185"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.ssreflect.eqtype.html#EqPred.z"><span class="id" title="variable">z</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#df45e8c2e8370fd4f0f7c4fdaf208180"><span class="id" title="notation">==</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#EqPred.u"><span class="id" title="variable">u</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Datatypes.html#081ff67d3116402bb680e8692aa39185"><span class="id" title="notation">)</span></a>).<br/> <br/> -<span class="id" title="keyword">Lemma</span> <a name="predD1P"><span class="id" title="lemma">predD1P</span></a> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#reflect"><span class="id" title="abbreviation">reflect</span></a> (<a class="idref" href="mathcomp.ssreflect.eqtype.html#EqPred.x"><span class="id" title="variable">x</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#32263a1c8b01baecdff9deb038955bc9"><span class="id" title="notation">≠</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#EqPred.y"><span class="id" title="variable">y</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d82a7d96d3659d805ffe732283716822"><span class="id" title="notation">∧</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#EqPred.b"><span class="id" title="variable">b</span></a>) (<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#49ac24efa716d8b0ee8943bc1d1769a9"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.ssreflect.eqtype.html#EqPred.x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#b1eeadc2feabc7422252baa895418c7b"><span class="id" title="notation">!=</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#EqPred.y"><span class="id" title="variable">y</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#49ac24efa716d8b0ee8943bc1d1769a9"><span class="id" title="notation">)</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#49ac24efa716d8b0ee8943bc1d1769a9"><span class="id" title="notation">&&</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#EqPred.b"><span class="id" title="variable">b</span></a>).<br/> +<span class="id" title="keyword">Lemma</span> <a name="predD1P"><span class="id" title="lemma">predD1P</span></a> : <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#reflect"><span class="id" title="abbreviation">reflect</span></a> (<a class="idref" href="mathcomp.ssreflect.eqtype.html#EqPred.x"><span class="id" title="variable">x</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#a0a5068f83a704fcfbda8cd473a6cfea"><span class="id" title="notation">≠</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#EqPred.y"><span class="id" title="variable">y</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#ba2b0e492d2b4675a0acf3ea92aabadd"><span class="id" title="notation">∧</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#EqPred.b"><span class="id" title="variable">b</span></a>) (<a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Datatypes.html#9ddeac0ab66152bd1d64bedb507a795e"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.ssreflect.eqtype.html#EqPred.x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#c385a484ee9d1b4e0615924561a9b75e"><span class="id" title="notation">!=</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#EqPred.y"><span class="id" title="variable">y</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Datatypes.html#9ddeac0ab66152bd1d64bedb507a795e"><span class="id" title="notation">)</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Datatypes.html#9ddeac0ab66152bd1d64bedb507a795e"><span class="id" title="notation">&&</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#EqPred.b"><span class="id" title="variable">b</span></a>).<br/> <br/> -<span class="id" title="keyword">Lemma</span> <a name="predU1l"><span class="id" title="lemma">predU1l</span></a> : <a class="idref" href="mathcomp.ssreflect.eqtype.html#EqPred.x"><span class="id" title="variable">x</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#EqPred.y"><span class="id" title="variable">y</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#14a7a9c7dc61f86bfb664d400fabaf8a"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.ssreflect.eqtype.html#EqPred.x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#17d28d004d0863cb022d4ce832ddaaae"><span class="id" title="notation">==</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#EqPred.y"><span class="id" title="variable">y</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#14a7a9c7dc61f86bfb664d400fabaf8a"><span class="id" title="notation">)</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#14a7a9c7dc61f86bfb664d400fabaf8a"><span class="id" title="notation">||</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#EqPred.b"><span class="id" title="variable">b</span></a>.<br/> +<span class="id" title="keyword">Lemma</span> <a name="predU1l"><span class="id" title="lemma">predU1l</span></a> : <a class="idref" href="mathcomp.ssreflect.eqtype.html#EqPred.x"><span class="id" title="variable">x</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#6cd0f7b28b6092304087c7049437bb1a"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#EqPred.y"><span class="id" title="variable">y</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#1c93e43e07fbeaeb6a625cb6614beb5d"><span class="id" title="notation">→</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Datatypes.html#081ff67d3116402bb680e8692aa39185"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.ssreflect.eqtype.html#EqPred.x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#df45e8c2e8370fd4f0f7c4fdaf208180"><span class="id" title="notation">==</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#EqPred.y"><span class="id" title="variable">y</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Datatypes.html#081ff67d3116402bb680e8692aa39185"><span class="id" title="notation">)</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Datatypes.html#081ff67d3116402bb680e8692aa39185"><span class="id" title="notation">||</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#EqPred.b"><span class="id" title="variable">b</span></a>.<br/> <br/> -<span class="id" title="keyword">Lemma</span> <a name="predU1r"><span class="id" title="lemma">predU1r</span></a> : <a class="idref" href="mathcomp.ssreflect.eqtype.html#EqPred.b"><span class="id" title="variable">b</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#14a7a9c7dc61f86bfb664d400fabaf8a"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.ssreflect.eqtype.html#EqPred.x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#17d28d004d0863cb022d4ce832ddaaae"><span class="id" title="notation">==</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#EqPred.y"><span class="id" title="variable">y</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#14a7a9c7dc61f86bfb664d400fabaf8a"><span class="id" title="notation">)</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#14a7a9c7dc61f86bfb664d400fabaf8a"><span class="id" title="notation">||</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#EqPred.b"><span class="id" title="variable">b</span></a>.<br/> +<span class="id" title="keyword">Lemma</span> <a name="predU1r"><span class="id" title="lemma">predU1r</span></a> : <a class="idref" href="mathcomp.ssreflect.eqtype.html#EqPred.b"><span class="id" title="variable">b</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#1c93e43e07fbeaeb6a625cb6614beb5d"><span class="id" title="notation">→</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Datatypes.html#081ff67d3116402bb680e8692aa39185"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.ssreflect.eqtype.html#EqPred.x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#df45e8c2e8370fd4f0f7c4fdaf208180"><span class="id" title="notation">==</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#EqPred.y"><span class="id" title="variable">y</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Datatypes.html#081ff67d3116402bb680e8692aa39185"><span class="id" title="notation">)</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Datatypes.html#081ff67d3116402bb680e8692aa39185"><span class="id" title="notation">||</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#EqPred.b"><span class="id" title="variable">b</span></a>.<br/> <br/> -<span class="id" title="keyword">Lemma</span> <a name="eqVneq"><span class="id" title="lemma">eqVneq</span></a> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Specif.html#5bf2050e90b21ebc82dc5463d1ba338e"><span class="id" title="notation">{</span></a><a class="idref" href="mathcomp.ssreflect.eqtype.html#EqPred.x"><span class="id" title="variable">x</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#EqPred.y"><span class="id" title="variable">y</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Specif.html#5bf2050e90b21ebc82dc5463d1ba338e"><span class="id" title="notation">}</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Specif.html#5bf2050e90b21ebc82dc5463d1ba338e"><span class="id" title="notation">+</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Specif.html#5bf2050e90b21ebc82dc5463d1ba338e"><span class="id" title="notation">{</span></a><a class="idref" href="mathcomp.ssreflect.eqtype.html#EqPred.x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#b1eeadc2feabc7422252baa895418c7b"><span class="id" title="notation">!=</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#EqPred.y"><span class="id" title="variable">y</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Specif.html#5bf2050e90b21ebc82dc5463d1ba338e"><span class="id" title="notation">}</span></a>.<br/> +<span class="id" title="keyword">Lemma</span> <a name="eqVneq"><span class="id" title="lemma">eqVneq</span></a> : <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Specif.html#87727981cdc1579fef00b9d9c1d3b9da"><span class="id" title="notation">{</span></a><a class="idref" href="mathcomp.ssreflect.eqtype.html#EqPred.x"><span class="id" title="variable">x</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#6cd0f7b28b6092304087c7049437bb1a"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#EqPred.y"><span class="id" title="variable">y</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Specif.html#87727981cdc1579fef00b9d9c1d3b9da"><span class="id" title="notation">}</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Specif.html#87727981cdc1579fef00b9d9c1d3b9da"><span class="id" title="notation">+</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Specif.html#87727981cdc1579fef00b9d9c1d3b9da"><span class="id" title="notation">{</span></a><a class="idref" href="mathcomp.ssreflect.eqtype.html#EqPred.x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#c385a484ee9d1b4e0615924561a9b75e"><span class="id" title="notation">!=</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#EqPred.y"><span class="id" title="variable">y</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Specif.html#87727981cdc1579fef00b9d9c1d3b9da"><span class="id" title="notation">}</span></a>.<br/> <br/> <span class="id" title="keyword">End</span> <a class="idref" href="mathcomp.ssreflect.eqtype.html#EqPred"><span class="id" title="section">EqPred</span></a>.<br/> @@ -403,9 +449,9 @@ <br/> <br/> -<span class="id" title="keyword">Notation</span> <a name="f83044a80bb642c2069adf1ec8907b36"><span class="id" title="notation">"</span></a>[ 'predU1' x & A ]" := (<a class="idref" href="mathcomp.ssreflect.eqtype.html#predU1"><span class="id" title="definition">predU1</span></a> <span class="id" title="var">x</span> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#913cf87021a195b218018885aad8c94f"><span class="id" title="notation">[</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#913cf87021a195b218018885aad8c94f"><span class="id" title="notation">mem</span></a> <span class="id" title="var">A</span><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#913cf87021a195b218018885aad8c94f"><span class="id" title="notation">]</span></a>)<br/> +<span class="id" title="keyword">Notation</span> <a name="8324d85bd43121a4b363319e87c00d28"><span class="id" title="notation">"</span></a>[ 'predU1' x & A ]" := (<a class="idref" href="mathcomp.ssreflect.eqtype.html#predU1"><span class="id" title="definition">predU1</span></a> <span class="id" title="var">x</span> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#07a9abf04b9d6303fb5faf2351d2cc43"><span class="id" title="notation">[</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#07a9abf04b9d6303fb5faf2351d2cc43"><span class="id" title="notation">mem</span></a> <span class="id" title="var">A</span><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#07a9abf04b9d6303fb5faf2351d2cc43"><span class="id" title="notation">]</span></a>)<br/> (<span class="id" title="tactic">at</span> <span class="id" title="keyword">level</span> 0, <span class="id" title="var">format</span> "[ 'predU1' x & A ]") : <span class="id" title="var">fun_scope</span>.<br/> -<span class="id" title="keyword">Notation</span> <a name="11efb36d4e2b98f4519391785d68e99e"><span class="id" title="notation">"</span></a>[ 'predD1' A & x ]" := (<a class="idref" href="mathcomp.ssreflect.eqtype.html#predD1"><span class="id" title="definition">predD1</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#913cf87021a195b218018885aad8c94f"><span class="id" title="notation">[</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#913cf87021a195b218018885aad8c94f"><span class="id" title="notation">mem</span></a> <span class="id" title="var">A</span><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#913cf87021a195b218018885aad8c94f"><span class="id" title="notation">]</span></a> <span class="id" title="var">x</span>)<br/> +<span class="id" title="keyword">Notation</span> <a name="bcb59f838ed564b993945f7efc641d66"><span class="id" title="notation">"</span></a>[ 'predD1' A & x ]" := (<a class="idref" href="mathcomp.ssreflect.eqtype.html#predD1"><span class="id" title="definition">predD1</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#07a9abf04b9d6303fb5faf2351d2cc43"><span class="id" title="notation">[</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#07a9abf04b9d6303fb5faf2351d2cc43"><span class="id" title="notation">mem</span></a> <span class="id" title="var">A</span><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#07a9abf04b9d6303fb5faf2351d2cc43"><span class="id" title="notation">]</span></a> <span class="id" title="var">x</span>)<br/> (<span class="id" title="tactic">at</span> <span class="id" title="keyword">level</span> 0, <span class="id" title="var">format</span> "[ 'predD1' A & x ]") : <span class="id" title="var">fun_scope</span>.<br/> <br/> @@ -423,27 +469,27 @@ <span class="id" title="keyword">Section</span> <a name="EqFun.Exo"><span class="id" title="section">Exo</span></a>.<br/> <br/> -<span class="id" title="keyword">Variables</span> (<a name="EqFun.Exo.aT"><span class="id" title="variable">aT</span></a> <a name="EqFun.Exo.rT"><span class="id" title="variable">rT</span></a> : <a class="idref" href="mathcomp.ssreflect.eqtype.html#eqType"><span class="id" title="abbreviation">eqType</span></a>) (<a name="EqFun.Exo.D"><span class="id" title="variable">D</span></a> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#pred"><span class="id" title="definition">pred</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#aT"><span class="id" title="variable">aT</span></a>) (<a name="EqFun.Exo.f"><span class="id" title="variable">f</span></a> : <a class="idref" href="mathcomp.ssreflect.eqtype.html#aT"><span class="id" title="variable">aT</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#rT"><span class="id" title="variable">rT</span></a>) (<a name="EqFun.Exo.g"><span class="id" title="variable">g</span></a> : <a class="idref" href="mathcomp.ssreflect.eqtype.html#rT"><span class="id" title="variable">rT</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#aT"><span class="id" title="variable">aT</span></a>).<br/> +<span class="id" title="keyword">Variables</span> (<a name="EqFun.Exo.aT"><span class="id" title="variable">aT</span></a> <a name="EqFun.Exo.rT"><span class="id" title="variable">rT</span></a> : <a class="idref" href="mathcomp.ssreflect.eqtype.html#eqType"><span class="id" title="abbreviation">eqType</span></a>) (<a name="EqFun.Exo.D"><span class="id" title="variable">D</span></a> : <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#pred"><span class="id" title="definition">pred</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#aT"><span class="id" title="variable">aT</span></a>) (<a name="EqFun.Exo.f"><span class="id" title="variable">f</span></a> : <a class="idref" href="mathcomp.ssreflect.eqtype.html#aT"><span class="id" title="variable">aT</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#1c93e43e07fbeaeb6a625cb6614beb5d"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#rT"><span class="id" title="variable">rT</span></a>) (<a name="EqFun.Exo.g"><span class="id" title="variable">g</span></a> : <a class="idref" href="mathcomp.ssreflect.eqtype.html#rT"><span class="id" title="variable">rT</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#1c93e43e07fbeaeb6a625cb6614beb5d"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#aT"><span class="id" title="variable">aT</span></a>).<br/> <br/> -<span class="id" title="keyword">Lemma</span> <a name="inj_eq"><span class="id" title="lemma">inj_eq</span></a> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#injective"><span class="id" title="definition">injective</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#EqFun.Exo.f"><span class="id" title="variable">f</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <span class="id" title="keyword">∀</span> <span class="id" title="var">x</span> <span class="id" title="var">y</span>, <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.ssreflect.eqtype.html#EqFun.Exo.f"><span class="id" title="variable">f</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#17d28d004d0863cb022d4ce832ddaaae"><span class="id" title="notation">==</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#EqFun.Exo.f"><span class="id" title="variable">f</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#y"><span class="id" title="variable">y</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">)</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.ssreflect.eqtype.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#17d28d004d0863cb022d4ce832ddaaae"><span class="id" title="notation">==</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#y"><span class="id" title="variable">y</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">)</span></a>.<br/> +<span class="id" title="keyword">Lemma</span> <a name="inj_eq"><span class="id" title="lemma">inj_eq</span></a> : <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#injective"><span class="id" title="definition">injective</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#EqFun.Exo.f"><span class="id" title="variable">f</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#1c93e43e07fbeaeb6a625cb6614beb5d"><span class="id" title="notation">→</span></a> <span class="id" title="keyword">∀</span> <span class="id" title="var">x</span> <span class="id" title="var">y</span>, <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#6cd0f7b28b6092304087c7049437bb1a"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.ssreflect.eqtype.html#EqFun.Exo.f"><span class="id" title="variable">f</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#df45e8c2e8370fd4f0f7c4fdaf208180"><span class="id" title="notation">==</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#EqFun.Exo.f"><span class="id" title="variable">f</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#y"><span class="id" title="variable">y</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#6cd0f7b28b6092304087c7049437bb1a"><span class="id" title="notation">)</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#6cd0f7b28b6092304087c7049437bb1a"><span class="id" title="notation">=</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#6cd0f7b28b6092304087c7049437bb1a"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.ssreflect.eqtype.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#df45e8c2e8370fd4f0f7c4fdaf208180"><span class="id" title="notation">==</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#y"><span class="id" title="variable">y</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#6cd0f7b28b6092304087c7049437bb1a"><span class="id" title="notation">)</span></a>.<br/> <br/> -<span class="id" title="keyword">Lemma</span> <a name="can_eq"><span class="id" title="lemma">can_eq</span></a> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#cancel"><span class="id" title="definition">cancel</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#EqFun.Exo.f"><span class="id" title="variable">f</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#EqFun.Exo.g"><span class="id" title="variable">g</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <span class="id" title="keyword">∀</span> <span class="id" title="var">x</span> <span class="id" title="var">y</span>, <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.ssreflect.eqtype.html#EqFun.Exo.f"><span class="id" title="variable">f</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#17d28d004d0863cb022d4ce832ddaaae"><span class="id" title="notation">==</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#EqFun.Exo.f"><span class="id" title="variable">f</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#y"><span class="id" title="variable">y</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">)</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.ssreflect.eqtype.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#17d28d004d0863cb022d4ce832ddaaae"><span class="id" title="notation">==</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#y"><span class="id" title="variable">y</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">)</span></a>.<br/> +<span class="id" title="keyword">Lemma</span> <a name="can_eq"><span class="id" title="lemma">can_eq</span></a> : <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#cancel"><span class="id" title="definition">cancel</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#EqFun.Exo.f"><span class="id" title="variable">f</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#EqFun.Exo.g"><span class="id" title="variable">g</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#1c93e43e07fbeaeb6a625cb6614beb5d"><span class="id" title="notation">→</span></a> <span class="id" title="keyword">∀</span> <span class="id" title="var">x</span> <span class="id" title="var">y</span>, <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#6cd0f7b28b6092304087c7049437bb1a"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.ssreflect.eqtype.html#EqFun.Exo.f"><span class="id" title="variable">f</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#df45e8c2e8370fd4f0f7c4fdaf208180"><span class="id" title="notation">==</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#EqFun.Exo.f"><span class="id" title="variable">f</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#y"><span class="id" title="variable">y</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#6cd0f7b28b6092304087c7049437bb1a"><span class="id" title="notation">)</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#6cd0f7b28b6092304087c7049437bb1a"><span class="id" title="notation">=</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#6cd0f7b28b6092304087c7049437bb1a"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.ssreflect.eqtype.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#df45e8c2e8370fd4f0f7c4fdaf208180"><span class="id" title="notation">==</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#y"><span class="id" title="variable">y</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#6cd0f7b28b6092304087c7049437bb1a"><span class="id" title="notation">)</span></a>.<br/> <br/> -<span class="id" title="keyword">Lemma</span> <a name="bij_eq"><span class="id" title="lemma">bij_eq</span></a> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#bijective"><span class="id" title="inductive">bijective</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#EqFun.Exo.f"><span class="id" title="variable">f</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <span class="id" title="keyword">∀</span> <span class="id" title="var">x</span> <span class="id" title="var">y</span>, <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.ssreflect.eqtype.html#EqFun.Exo.f"><span class="id" title="variable">f</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#17d28d004d0863cb022d4ce832ddaaae"><span class="id" title="notation">==</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#EqFun.Exo.f"><span class="id" title="variable">f</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#y"><span class="id" title="variable">y</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">)</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.ssreflect.eqtype.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#17d28d004d0863cb022d4ce832ddaaae"><span class="id" title="notation">==</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#y"><span class="id" title="variable">y</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">)</span></a>.<br/> +<span class="id" title="keyword">Lemma</span> <a name="bij_eq"><span class="id" title="lemma">bij_eq</span></a> : <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#bijective"><span class="id" title="inductive">bijective</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#EqFun.Exo.f"><span class="id" title="variable">f</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#1c93e43e07fbeaeb6a625cb6614beb5d"><span class="id" title="notation">→</span></a> <span class="id" title="keyword">∀</span> <span class="id" title="var">x</span> <span class="id" title="var">y</span>, <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#6cd0f7b28b6092304087c7049437bb1a"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.ssreflect.eqtype.html#EqFun.Exo.f"><span class="id" title="variable">f</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#df45e8c2e8370fd4f0f7c4fdaf208180"><span class="id" title="notation">==</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#EqFun.Exo.f"><span class="id" title="variable">f</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#y"><span class="id" title="variable">y</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#6cd0f7b28b6092304087c7049437bb1a"><span class="id" title="notation">)</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#6cd0f7b28b6092304087c7049437bb1a"><span class="id" title="notation">=</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#6cd0f7b28b6092304087c7049437bb1a"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.ssreflect.eqtype.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#df45e8c2e8370fd4f0f7c4fdaf208180"><span class="id" title="notation">==</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#y"><span class="id" title="variable">y</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#6cd0f7b28b6092304087c7049437bb1a"><span class="id" title="notation">)</span></a>.<br/> <br/> -<span class="id" title="keyword">Lemma</span> <a name="can2_eq"><span class="id" title="lemma">can2_eq</span></a> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#cancel"><span class="id" title="definition">cancel</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#EqFun.Exo.f"><span class="id" title="variable">f</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#EqFun.Exo.g"><span class="id" title="variable">g</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#cancel"><span class="id" title="definition">cancel</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#EqFun.Exo.g"><span class="id" title="variable">g</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#EqFun.Exo.f"><span class="id" title="variable">f</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <span class="id" title="keyword">∀</span> <span class="id" title="var">x</span> <span class="id" title="var">y</span>, <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.ssreflect.eqtype.html#EqFun.Exo.f"><span class="id" title="variable">f</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#17d28d004d0863cb022d4ce832ddaaae"><span class="id" title="notation">==</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#y"><span class="id" title="variable">y</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">)</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.ssreflect.eqtype.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#17d28d004d0863cb022d4ce832ddaaae"><span class="id" title="notation">==</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#EqFun.Exo.g"><span class="id" title="variable">g</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#y"><span class="id" title="variable">y</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">)</span></a>.<br/> +<span class="id" title="keyword">Lemma</span> <a name="can2_eq"><span class="id" title="lemma">can2_eq</span></a> : <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#cancel"><span class="id" title="definition">cancel</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#EqFun.Exo.f"><span class="id" title="variable">f</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#EqFun.Exo.g"><span class="id" title="variable">g</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#1c93e43e07fbeaeb6a625cb6614beb5d"><span class="id" title="notation">→</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#cancel"><span class="id" title="definition">cancel</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#EqFun.Exo.g"><span class="id" title="variable">g</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#EqFun.Exo.f"><span class="id" title="variable">f</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#1c93e43e07fbeaeb6a625cb6614beb5d"><span class="id" title="notation">→</span></a> <span class="id" title="keyword">∀</span> <span class="id" title="var">x</span> <span class="id" title="var">y</span>, <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#6cd0f7b28b6092304087c7049437bb1a"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.ssreflect.eqtype.html#EqFun.Exo.f"><span class="id" title="variable">f</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#df45e8c2e8370fd4f0f7c4fdaf208180"><span class="id" title="notation">==</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#y"><span class="id" title="variable">y</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#6cd0f7b28b6092304087c7049437bb1a"><span class="id" title="notation">)</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#6cd0f7b28b6092304087c7049437bb1a"><span class="id" title="notation">=</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#6cd0f7b28b6092304087c7049437bb1a"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.ssreflect.eqtype.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#df45e8c2e8370fd4f0f7c4fdaf208180"><span class="id" title="notation">==</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#EqFun.Exo.g"><span class="id" title="variable">g</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#y"><span class="id" title="variable">y</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#6cd0f7b28b6092304087c7049437bb1a"><span class="id" title="notation">)</span></a>.<br/> <br/> <span class="id" title="keyword">Lemma</span> <a name="inj_in_eq"><span class="id" title="lemma">inj_in_eq</span></a> :<br/> - <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#2bba53854f326a714d377124cccec593"><span class="id" title="notation">{</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#2bba53854f326a714d377124cccec593"><span class="id" title="notation">in</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#EqFun.Exo.D"><span class="id" title="variable">D</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#2bba53854f326a714d377124cccec593"><span class="id" title="notation">&,</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#injective"><span class="id" title="definition">injective</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#EqFun.Exo.f"><span class="id" title="variable">f</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#2bba53854f326a714d377124cccec593"><span class="id" title="notation">}</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#2bba53854f326a714d377124cccec593"><span class="id" title="notation">{</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#2bba53854f326a714d377124cccec593"><span class="id" title="notation">in</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#EqFun.Exo.D"><span class="id" title="variable">D</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#2bba53854f326a714d377124cccec593"><span class="id" title="notation">&,</span></a> <span class="id" title="keyword">∀</span> <span class="id" title="var">x</span> <span class="id" title="var">y</span>, <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.ssreflect.eqtype.html#EqFun.Exo.f"><span class="id" title="variable">f</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#17d28d004d0863cb022d4ce832ddaaae"><span class="id" title="notation">==</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#EqFun.Exo.f"><span class="id" title="variable">f</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#y"><span class="id" title="variable">y</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">)</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.ssreflect.eqtype.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#17d28d004d0863cb022d4ce832ddaaae"><span class="id" title="notation">==</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#y"><span class="id" title="variable">y</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">)</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#2bba53854f326a714d377124cccec593"><span class="id" title="notation">}</span></a>.<br/> + <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#b4f176550f5b849a7fbba2ee164934d3"><span class="id" title="notation">{</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#b4f176550f5b849a7fbba2ee164934d3"><span class="id" title="notation">in</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#EqFun.Exo.D"><span class="id" title="variable">D</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#b4f176550f5b849a7fbba2ee164934d3"><span class="id" title="notation">&,</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#injective"><span class="id" title="definition">injective</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#EqFun.Exo.f"><span class="id" title="variable">f</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#b4f176550f5b849a7fbba2ee164934d3"><span class="id" title="notation">}</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#1c93e43e07fbeaeb6a625cb6614beb5d"><span class="id" title="notation">→</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#b4f176550f5b849a7fbba2ee164934d3"><span class="id" title="notation">{</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#b4f176550f5b849a7fbba2ee164934d3"><span class="id" title="notation">in</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#EqFun.Exo.D"><span class="id" title="variable">D</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#b4f176550f5b849a7fbba2ee164934d3"><span class="id" title="notation">&,</span></a> <span class="id" title="keyword">∀</span> <span class="id" title="var">x</span> <span class="id" title="var">y</span>, <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#6cd0f7b28b6092304087c7049437bb1a"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.ssreflect.eqtype.html#EqFun.Exo.f"><span class="id" title="variable">f</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#df45e8c2e8370fd4f0f7c4fdaf208180"><span class="id" title="notation">==</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#EqFun.Exo.f"><span class="id" title="variable">f</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#y"><span class="id" title="variable">y</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#6cd0f7b28b6092304087c7049437bb1a"><span class="id" title="notation">)</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#6cd0f7b28b6092304087c7049437bb1a"><span class="id" title="notation">=</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#6cd0f7b28b6092304087c7049437bb1a"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.ssreflect.eqtype.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#df45e8c2e8370fd4f0f7c4fdaf208180"><span class="id" title="notation">==</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#y"><span class="id" title="variable">y</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#6cd0f7b28b6092304087c7049437bb1a"><span class="id" title="notation">)</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#b4f176550f5b849a7fbba2ee164934d3"><span class="id" title="notation">}</span></a>.<br/> <br/> <span class="id" title="keyword">Lemma</span> <a name="can_in_eq"><span class="id" title="lemma">can_in_eq</span></a> :<br/> - <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#5c59b35a0b51db520cf1fba473ecf127"><span class="id" title="notation">{</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#5c59b35a0b51db520cf1fba473ecf127"><span class="id" title="notation">in</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#EqFun.Exo.D"><span class="id" title="variable">D</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#5c59b35a0b51db520cf1fba473ecf127"><span class="id" title="notation">,</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#cancel"><span class="id" title="definition">cancel</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#EqFun.Exo.f"><span class="id" title="variable">f</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#EqFun.Exo.g"><span class="id" title="variable">g</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#5c59b35a0b51db520cf1fba473ecf127"><span class="id" title="notation">}</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#2bba53854f326a714d377124cccec593"><span class="id" title="notation">{</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#2bba53854f326a714d377124cccec593"><span class="id" title="notation">in</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#EqFun.Exo.D"><span class="id" title="variable">D</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#2bba53854f326a714d377124cccec593"><span class="id" title="notation">&,</span></a> <span class="id" title="keyword">∀</span> <span class="id" title="var">x</span> <span class="id" title="var">y</span>, <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.ssreflect.eqtype.html#EqFun.Exo.f"><span class="id" title="variable">f</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#17d28d004d0863cb022d4ce832ddaaae"><span class="id" title="notation">==</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#EqFun.Exo.f"><span class="id" title="variable">f</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#y"><span class="id" title="variable">y</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">)</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.ssreflect.eqtype.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#17d28d004d0863cb022d4ce832ddaaae"><span class="id" title="notation">==</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#y"><span class="id" title="variable">y</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">)</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#2bba53854f326a714d377124cccec593"><span class="id" title="notation">}</span></a>.<br/> + <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#8c08d4203604dbed63e7afa9b689d858"><span class="id" title="notation">{</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#8c08d4203604dbed63e7afa9b689d858"><span class="id" title="notation">in</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#EqFun.Exo.D"><span class="id" title="variable">D</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#8c08d4203604dbed63e7afa9b689d858"><span class="id" title="notation">,</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#cancel"><span class="id" title="definition">cancel</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#EqFun.Exo.f"><span class="id" title="variable">f</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#EqFun.Exo.g"><span class="id" title="variable">g</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#8c08d4203604dbed63e7afa9b689d858"><span class="id" title="notation">}</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#1c93e43e07fbeaeb6a625cb6614beb5d"><span class="id" title="notation">→</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#b4f176550f5b849a7fbba2ee164934d3"><span class="id" title="notation">{</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#b4f176550f5b849a7fbba2ee164934d3"><span class="id" title="notation">in</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#EqFun.Exo.D"><span class="id" title="variable">D</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#b4f176550f5b849a7fbba2ee164934d3"><span class="id" title="notation">&,</span></a> <span class="id" title="keyword">∀</span> <span class="id" title="var">x</span> <span class="id" title="var">y</span>, <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#6cd0f7b28b6092304087c7049437bb1a"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.ssreflect.eqtype.html#EqFun.Exo.f"><span class="id" title="variable">f</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#df45e8c2e8370fd4f0f7c4fdaf208180"><span class="id" title="notation">==</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#EqFun.Exo.f"><span class="id" title="variable">f</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#y"><span class="id" title="variable">y</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#6cd0f7b28b6092304087c7049437bb1a"><span class="id" title="notation">)</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#6cd0f7b28b6092304087c7049437bb1a"><span class="id" title="notation">=</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#6cd0f7b28b6092304087c7049437bb1a"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.ssreflect.eqtype.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#df45e8c2e8370fd4f0f7c4fdaf208180"><span class="id" title="notation">==</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#y"><span class="id" title="variable">y</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#6cd0f7b28b6092304087c7049437bb1a"><span class="id" title="notation">)</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#b4f176550f5b849a7fbba2ee164934d3"><span class="id" title="notation">}</span></a>.<br/> <br/> <span class="id" title="keyword">End</span> <a class="idref" href="mathcomp.ssreflect.eqtype.html#EqFun.Exo"><span class="id" title="section">Exo</span></a>.<br/> @@ -455,13 +501,13 @@ <span class="id" title="keyword">Variable</span> <a name="EqFun.Endo.T"><span class="id" title="variable">T</span></a> : <a class="idref" href="mathcomp.ssreflect.eqtype.html#eqType"><span class="id" title="abbreviation">eqType</span></a>.<br/> <br/> -<span class="id" title="keyword">Definition</span> <a name="frel"><span class="id" title="definition">frel</span></a> <span class="id" title="var">f</span> := <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#a3fa885266d530b93c1b9f67891df8e8"><span class="id" title="notation">[</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#a3fa885266d530b93c1b9f67891df8e8"><span class="id" title="notation">rel</span></a> <span class="id" title="var">x</span> <span class="id" title="var">y</span> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#a3fa885266d530b93c1b9f67891df8e8"><span class="id" title="notation">:</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#EqFun.Endo.T"><span class="id" title="variable">T</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#a3fa885266d530b93c1b9f67891df8e8"><span class="id" title="notation">|</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#f"><span class="id" title="variable">f</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#17d28d004d0863cb022d4ce832ddaaae"><span class="id" title="notation">==</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#y"><span class="id" title="variable">y</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#a3fa885266d530b93c1b9f67891df8e8"><span class="id" title="notation">]</span></a>.<br/> +<span class="id" title="keyword">Definition</span> <a name="frel"><span class="id" title="definition">frel</span></a> <span class="id" title="var">f</span> := <a class="idref" href="mathcomp.ssreflect.ssrbool.html#b10b133940ca4a77925bb31e7ba5d15e"><span class="id" title="notation">[</span></a><a class="idref" href="mathcomp.ssreflect.ssrbool.html#b10b133940ca4a77925bb31e7ba5d15e"><span class="id" title="notation">rel</span></a> <span class="id" title="var">x</span> <span class="id" title="var">y</span> <a class="idref" href="mathcomp.ssreflect.ssrbool.html#b10b133940ca4a77925bb31e7ba5d15e"><span class="id" title="notation">:</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#EqFun.Endo.T"><span class="id" title="variable">T</span></a> <a class="idref" href="mathcomp.ssreflect.ssrbool.html#b10b133940ca4a77925bb31e7ba5d15e"><span class="id" title="notation">|</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#f"><span class="id" title="variable">f</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#df45e8c2e8370fd4f0f7c4fdaf208180"><span class="id" title="notation">==</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#y"><span class="id" title="variable">y</span></a><a class="idref" href="mathcomp.ssreflect.ssrbool.html#b10b133940ca4a77925bb31e7ba5d15e"><span class="id" title="notation">]</span></a>.<br/> <br/> -<span class="id" title="keyword">Lemma</span> <a name="inv_eq"><span class="id" title="lemma">inv_eq</span></a> <span class="id" title="var">f</span> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#involutive"><span class="id" title="definition">involutive</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#f"><span class="id" title="variable">f</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <span class="id" title="keyword">∀</span> <span class="id" title="var">x</span> <span class="id" title="var">y</span> : <a class="idref" href="mathcomp.ssreflect.eqtype.html#EqFun.Endo.T"><span class="id" title="variable">T</span></a>, <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.ssreflect.eqtype.html#f"><span class="id" title="variable">f</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#17d28d004d0863cb022d4ce832ddaaae"><span class="id" title="notation">==</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#y"><span class="id" title="variable">y</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">)</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.ssreflect.eqtype.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#17d28d004d0863cb022d4ce832ddaaae"><span class="id" title="notation">==</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#f"><span class="id" title="variable">f</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#y"><span class="id" title="variable">y</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">)</span></a>.<br/> +<span class="id" title="keyword">Lemma</span> <a name="inv_eq"><span class="id" title="lemma">inv_eq</span></a> <span class="id" title="var">f</span> : <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#involutive"><span class="id" title="definition">involutive</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#f"><span class="id" title="variable">f</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#1c93e43e07fbeaeb6a625cb6614beb5d"><span class="id" title="notation">→</span></a> <span class="id" title="keyword">∀</span> <span class="id" title="var">x</span> <span class="id" title="var">y</span> : <a class="idref" href="mathcomp.ssreflect.eqtype.html#EqFun.Endo.T"><span class="id" title="variable">T</span></a>, <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#6cd0f7b28b6092304087c7049437bb1a"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.ssreflect.eqtype.html#f"><span class="id" title="variable">f</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#df45e8c2e8370fd4f0f7c4fdaf208180"><span class="id" title="notation">==</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#y"><span class="id" title="variable">y</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#6cd0f7b28b6092304087c7049437bb1a"><span class="id" title="notation">)</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#6cd0f7b28b6092304087c7049437bb1a"><span class="id" title="notation">=</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#6cd0f7b28b6092304087c7049437bb1a"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.ssreflect.eqtype.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#df45e8c2e8370fd4f0f7c4fdaf208180"><span class="id" title="notation">==</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#f"><span class="id" title="variable">f</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#y"><span class="id" title="variable">y</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#6cd0f7b28b6092304087c7049437bb1a"><span class="id" title="notation">)</span></a>.<br/> <br/> -<span class="id" title="keyword">Lemma</span> <a name="eq_frel"><span class="id" title="lemma">eq_frel</span></a> <span class="id" title="var">f</span> <span class="id" title="var">f'</span> : <a class="idref" href="mathcomp.ssreflect.eqtype.html#f"><span class="id" title="variable">f</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#2500d48ed8e862ccfda98a44dff88963"><span class="id" title="notation">=1</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#f'"><span class="id" title="variable">f'</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#frel"><span class="id" title="definition">frel</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#f"><span class="id" title="variable">f</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#86efabaf3ab961ac3d2bac35d2b3c35d"><span class="id" title="notation">=2</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#frel"><span class="id" title="definition">frel</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#f'"><span class="id" title="variable">f'</span></a>.<br/> +<span class="id" title="keyword">Lemma</span> <a name="eq_frel"><span class="id" title="lemma">eq_frel</span></a> <span class="id" title="var">f</span> <span class="id" title="var">f'</span> : <a class="idref" href="mathcomp.ssreflect.eqtype.html#f"><span class="id" title="variable">f</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#876aa133fb3472bffd492f74ff496035"><span class="id" title="notation">=1</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#f'"><span class="id" title="variable">f'</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#1c93e43e07fbeaeb6a625cb6614beb5d"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#frel"><span class="id" title="definition">frel</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#f"><span class="id" title="variable">f</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#c717e24548d7d4d1086535addc681262"><span class="id" title="notation">=2</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#frel"><span class="id" title="definition">frel</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#f'"><span class="id" title="variable">f'</span></a>.<br/> <br/> <span class="id" title="keyword">End</span> <a class="idref" href="mathcomp.ssreflect.eqtype.html#EqFun.Endo"><span class="id" title="section">Endo</span></a>.<br/> @@ -479,17 +525,17 @@ <div class="code"> <br/> -<span class="id" title="keyword">Definition</span> <a name="invariant"><span class="id" title="definition">invariant</span></a> (<span class="id" title="var">rT</span> : <a class="idref" href="mathcomp.ssreflect.eqtype.html#eqType"><span class="id" title="abbreviation">eqType</span></a>) <span class="id" title="var">f</span> (<span class="id" title="var">k</span> : <a class="idref" href="mathcomp.ssreflect.eqtype.html#EqFun.aT"><span class="id" title="variable">aT</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#rT"><span class="id" title="variable">rT</span></a>) :=<br/> - <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#880a9790dece461a678db8aa0c091f63"><span class="id" title="notation">[</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#880a9790dece461a678db8aa0c091f63"><span class="id" title="notation">pred</span></a> <span class="id" title="var">x</span> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#880a9790dece461a678db8aa0c091f63"><span class="id" title="notation">|</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#k"><span class="id" title="variable">k</span></a> (<a class="idref" href="mathcomp.ssreflect.eqtype.html#f"><span class="id" title="variable">f</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#x"><span class="id" title="variable">x</span></a>) <a class="idref" href="mathcomp.ssreflect.eqtype.html#17d28d004d0863cb022d4ce832ddaaae"><span class="id" title="notation">==</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#k"><span class="id" title="variable">k</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#x"><span class="id" title="variable">x</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#880a9790dece461a678db8aa0c091f63"><span class="id" title="notation">]</span></a>.<br/> +<span class="id" title="keyword">Definition</span> <a name="invariant"><span class="id" title="definition">invariant</span></a> (<span class="id" title="var">rT</span> : <a class="idref" href="mathcomp.ssreflect.eqtype.html#eqType"><span class="id" title="abbreviation">eqType</span></a>) <span class="id" title="var">f</span> (<span class="id" title="var">k</span> : <a class="idref" href="mathcomp.ssreflect.eqtype.html#EqFun.aT"><span class="id" title="variable">aT</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#1c93e43e07fbeaeb6a625cb6614beb5d"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#rT"><span class="id" title="variable">rT</span></a>) :=<br/> + <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#27dabc72ea2c2c768f2db80a79f42524"><span class="id" title="notation">[</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#27dabc72ea2c2c768f2db80a79f42524"><span class="id" title="notation">pred</span></a> <span class="id" title="var">x</span> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#27dabc72ea2c2c768f2db80a79f42524"><span class="id" title="notation">|</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#k"><span class="id" title="variable">k</span></a> (<a class="idref" href="mathcomp.ssreflect.eqtype.html#f"><span class="id" title="variable">f</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#x"><span class="id" title="variable">x</span></a>) <a class="idref" href="mathcomp.ssreflect.eqtype.html#df45e8c2e8370fd4f0f7c4fdaf208180"><span class="id" title="notation">==</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#k"><span class="id" title="variable">k</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#x"><span class="id" title="variable">x</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#27dabc72ea2c2c768f2db80a79f42524"><span class="id" title="notation">]</span></a>.<br/> <br/> -<span class="id" title="keyword">Variables</span> (<a name="EqFun.rT1"><span class="id" title="variable">rT1</span></a> <a name="EqFun.rT2"><span class="id" title="variable">rT2</span></a> : <a class="idref" href="mathcomp.ssreflect.eqtype.html#eqType"><span class="id" title="abbreviation">eqType</span></a>) (<a name="EqFun.f"><span class="id" title="variable">f</span></a> : <a class="idref" href="mathcomp.ssreflect.eqtype.html#EqFun.aT"><span class="id" title="variable">aT</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#EqFun.aT"><span class="id" title="variable">aT</span></a>) (<a name="EqFun.h"><span class="id" title="variable">h</span></a> : <a class="idref" href="mathcomp.ssreflect.eqtype.html#rT1"><span class="id" title="variable">rT1</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#rT2"><span class="id" title="variable">rT2</span></a>) (<a name="EqFun.k"><span class="id" title="variable">k</span></a> : <a class="idref" href="mathcomp.ssreflect.eqtype.html#EqFun.aT"><span class="id" title="variable">aT</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#rT1"><span class="id" title="variable">rT1</span></a>).<br/> +<span class="id" title="keyword">Variables</span> (<a name="EqFun.rT1"><span class="id" title="variable">rT1</span></a> <a name="EqFun.rT2"><span class="id" title="variable">rT2</span></a> : <a class="idref" href="mathcomp.ssreflect.eqtype.html#eqType"><span class="id" title="abbreviation">eqType</span></a>) (<a name="EqFun.f"><span class="id" title="variable">f</span></a> : <a class="idref" href="mathcomp.ssreflect.eqtype.html#EqFun.aT"><span class="id" title="variable">aT</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#1c93e43e07fbeaeb6a625cb6614beb5d"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#EqFun.aT"><span class="id" title="variable">aT</span></a>) (<a name="EqFun.h"><span class="id" title="variable">h</span></a> : <a class="idref" href="mathcomp.ssreflect.eqtype.html#rT1"><span class="id" title="variable">rT1</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#1c93e43e07fbeaeb6a625cb6614beb5d"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#rT2"><span class="id" title="variable">rT2</span></a>) (<a name="EqFun.k"><span class="id" title="variable">k</span></a> : <a class="idref" href="mathcomp.ssreflect.eqtype.html#EqFun.aT"><span class="id" title="variable">aT</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#1c93e43e07fbeaeb6a625cb6614beb5d"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#rT1"><span class="id" title="variable">rT1</span></a>).<br/> <br/> -<span class="id" title="keyword">Lemma</span> <a name="invariant_comp"><span class="id" title="lemma">invariant_comp</span></a> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#subpred"><span class="id" title="definition">subpred</span></a> (<a class="idref" href="mathcomp.ssreflect.eqtype.html#invariant"><span class="id" title="definition">invariant</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#EqFun.f"><span class="id" title="variable">f</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#EqFun.k"><span class="id" title="variable">k</span></a>) (<a class="idref" href="mathcomp.ssreflect.eqtype.html#invariant"><span class="id" title="definition">invariant</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#EqFun.f"><span class="id" title="variable">f</span></a> (<a class="idref" href="mathcomp.ssreflect.eqtype.html#EqFun.h"><span class="id" title="variable">h</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#1b4394c5c1740ef3dc9e4224084970bb"><span class="id" title="notation">\</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#1b4394c5c1740ef3dc9e4224084970bb"><span class="id" title="notation">o</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#EqFun.k"><span class="id" title="variable">k</span></a>)).<br/> +<span class="id" title="keyword">Lemma</span> <a name="invariant_comp"><span class="id" title="lemma">invariant_comp</span></a> : <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#subpred"><span class="id" title="definition">subpred</span></a> (<a class="idref" href="mathcomp.ssreflect.eqtype.html#invariant"><span class="id" title="definition">invariant</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#EqFun.f"><span class="id" title="variable">f</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#EqFun.k"><span class="id" title="variable">k</span></a>) (<a class="idref" href="mathcomp.ssreflect.eqtype.html#invariant"><span class="id" title="definition">invariant</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#EqFun.f"><span class="id" title="variable">f</span></a> (<a class="idref" href="mathcomp.ssreflect.eqtype.html#EqFun.h"><span class="id" title="variable">h</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#8b4742e3f67816503ce4ab2f3b81c27e"><span class="id" title="notation">\</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#8b4742e3f67816503ce4ab2f3b81c27e"><span class="id" title="notation">o</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#EqFun.k"><span class="id" title="variable">k</span></a>)).<br/> <br/> -<span class="id" title="keyword">Lemma</span> <a name="invariant_inj"><span class="id" title="lemma">invariant_inj</span></a> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#injective"><span class="id" title="definition">injective</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#EqFun.h"><span class="id" title="variable">h</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#invariant"><span class="id" title="definition">invariant</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#EqFun.f"><span class="id" title="variable">f</span></a> (<a class="idref" href="mathcomp.ssreflect.eqtype.html#EqFun.h"><span class="id" title="variable">h</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#1b4394c5c1740ef3dc9e4224084970bb"><span class="id" title="notation">\</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#1b4394c5c1740ef3dc9e4224084970bb"><span class="id" title="notation">o</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#EqFun.k"><span class="id" title="variable">k</span></a>) <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#2500d48ed8e862ccfda98a44dff88963"><span class="id" title="notation">=1</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#invariant"><span class="id" title="definition">invariant</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#EqFun.f"><span class="id" title="variable">f</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#EqFun.k"><span class="id" title="variable">k</span></a>.<br/> +<span class="id" title="keyword">Lemma</span> <a name="invariant_inj"><span class="id" title="lemma">invariant_inj</span></a> : <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#injective"><span class="id" title="definition">injective</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#EqFun.h"><span class="id" title="variable">h</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#1c93e43e07fbeaeb6a625cb6614beb5d"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#invariant"><span class="id" title="definition">invariant</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#EqFun.f"><span class="id" title="variable">f</span></a> (<a class="idref" href="mathcomp.ssreflect.eqtype.html#EqFun.h"><span class="id" title="variable">h</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#8b4742e3f67816503ce4ab2f3b81c27e"><span class="id" title="notation">\</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#8b4742e3f67816503ce4ab2f3b81c27e"><span class="id" title="notation">o</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#EqFun.k"><span class="id" title="variable">k</span></a>) <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#876aa133fb3472bffd492f74ff496035"><span class="id" title="notation">=1</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#invariant"><span class="id" title="definition">invariant</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#EqFun.f"><span class="id" title="variable">f</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#EqFun.k"><span class="id" title="variable">k</span></a>.<br/> <br/> <span class="id" title="keyword">End</span> <a class="idref" href="mathcomp.ssreflect.eqtype.html#EqFun"><span class="id" title="section">EqFun</span></a>.<br/> @@ -503,7 +549,7 @@ The coercion to rel must be explicit for derived Notations to unparse. </div> <div class="code"> -<span class="id" title="keyword">Notation</span> <a name="coerced_frel"><span class="id" title="abbreviation">coerced_frel</span></a> <span class="id" title="var">f</span> := (<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#rel_of_simpl_rel"><span class="id" title="definition">rel_of_simpl_rel</span></a> (<a class="idref" href="mathcomp.ssreflect.eqtype.html#frel"><span class="id" title="definition">frel</span></a> <span class="id" title="var">f</span>)) (<span class="id" title="var">only</span> <span class="id" title="var">parsing</span>).<br/> +<span class="id" title="keyword">Notation</span> <a name="coerced_frel"><span class="id" title="abbreviation">coerced_frel</span></a> <span class="id" title="var">f</span> := (<a class="idref" href="mathcomp.ssreflect.ssrbool.html#rel_of_simpl_rel"><span class="id" title="definition">rel_of_simpl_rel</span></a> (<a class="idref" href="mathcomp.ssreflect.eqtype.html#frel"><span class="id" title="definition">frel</span></a> <span class="id" title="var">f</span>)) (<span class="id" title="var">only</span> <span class="id" title="var">parsing</span>).<br/> <br/> <span class="id" title="keyword">Section</span> <a name="FunWith"><span class="id" title="section">FunWith</span></a>.<br/> @@ -512,14 +558,14 @@ <span class="id" title="keyword">Variables</span> (<a name="FunWith.aT"><span class="id" title="variable">aT</span></a> : <a class="idref" href="mathcomp.ssreflect.eqtype.html#eqType"><span class="id" title="abbreviation">eqType</span></a>) (<a name="FunWith.rT"><span class="id" title="variable">rT</span></a> : <span class="id" title="keyword">Type</span>).<br/> <br/> -<span class="id" title="keyword">CoInductive</span> <a name="fun_delta"><span class="id" title="inductive">fun_delta</span></a> : <span class="id" title="keyword">Type</span> := <a name="FunDelta"><span class="id" title="constructor">FunDelta</span></a> <span class="id" title="keyword">of</span> <a class="idref" href="mathcomp.ssreflect.eqtype.html#FunWith.aT"><span class="id" title="variable">aT</span></a> & <a class="idref" href="mathcomp.ssreflect.eqtype.html#FunWith.rT"><span class="id" title="variable">rT</span></a>.<br/> +<span class="id" title="keyword">Variant</span> <a name="fun_delta"><span class="id" title="inductive">fun_delta</span></a> : <span class="id" title="keyword">Type</span> := <a name="FunDelta"><span class="id" title="constructor">FunDelta</span></a> <span class="id" title="keyword">of</span> <a class="idref" href="mathcomp.ssreflect.eqtype.html#FunWith.aT"><span class="id" title="variable">aT</span></a> & <a class="idref" href="mathcomp.ssreflect.eqtype.html#FunWith.rT"><span class="id" title="variable">rT</span></a>.<br/> <br/> -<span class="id" title="keyword">Definition</span> <a name="fwith"><span class="id" title="definition">fwith</span></a> <span class="id" title="var">x</span> <span class="id" title="var">y</span> (<span class="id" title="var">f</span> : <a class="idref" href="mathcomp.ssreflect.eqtype.html#FunWith.aT"><span class="id" title="variable">aT</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#FunWith.rT"><span class="id" title="variable">rT</span></a>) := <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#0bba0687209e799f52ace6d4b2c6d64a"><span class="id" title="notation">[</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#0bba0687209e799f52ace6d4b2c6d64a"><span class="id" title="notation">fun</span></a> <span class="id" title="var">z</span> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#0bba0687209e799f52ace6d4b2c6d64a"><span class="id" title="notation">⇒</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssreflect.html#0348819abaa88c2cd747e8fa60dde7ae"><span class="id" title="notation">if</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#z"><span class="id" title="variable">z</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#17d28d004d0863cb022d4ce832ddaaae"><span class="id" title="notation">==</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssreflect.html#0348819abaa88c2cd747e8fa60dde7ae"><span class="id" title="notation">then</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#y"><span class="id" title="variable">y</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssreflect.html#0348819abaa88c2cd747e8fa60dde7ae"><span class="id" title="notation">else</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#f"><span class="id" title="variable">f</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#z"><span class="id" title="variable">z</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#0bba0687209e799f52ace6d4b2c6d64a"><span class="id" title="notation">]</span></a>.<br/> +<span class="id" title="keyword">Definition</span> <a name="fwith"><span class="id" title="definition">fwith</span></a> <span class="id" title="var">x</span> <span class="id" title="var">y</span> (<span class="id" title="var">f</span> : <a class="idref" href="mathcomp.ssreflect.eqtype.html#FunWith.aT"><span class="id" title="variable">aT</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#1c93e43e07fbeaeb6a625cb6614beb5d"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#FunWith.rT"><span class="id" title="variable">rT</span></a>) := <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#8486b0ff5bfed6f6875afb7a9befbceb"><span class="id" title="notation">[</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#8486b0ff5bfed6f6875afb7a9befbceb"><span class="id" title="notation">fun</span></a> <span class="id" title="var">z</span> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#8486b0ff5bfed6f6875afb7a9befbceb"><span class="id" title="notation">⇒</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssreflect.html#00a1a5b58aac8f1e3f1abff064a39f9d"><span class="id" title="notation">if</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#z"><span class="id" title="variable">z</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#df45e8c2e8370fd4f0f7c4fdaf208180"><span class="id" title="notation">==</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssreflect.html#00a1a5b58aac8f1e3f1abff064a39f9d"><span class="id" title="notation">then</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#y"><span class="id" title="variable">y</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssreflect.html#00a1a5b58aac8f1e3f1abff064a39f9d"><span class="id" title="notation">else</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#f"><span class="id" title="variable">f</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#z"><span class="id" title="variable">z</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#8486b0ff5bfed6f6875afb7a9befbceb"><span class="id" title="notation">]</span></a>.<br/> <br/> <span class="id" title="keyword">Definition</span> <a name="app_fdelta"><span class="id" title="definition">app_fdelta</span></a> <span class="id" title="var">df</span> <span class="id" title="var">f</span> <span class="id" title="var">z</span> :=<br/> - <span class="id" title="keyword">let</span>: <a class="idref" href="mathcomp.ssreflect.eqtype.html#FunDelta"><span class="id" title="constructor">FunDelta</span></a> <span class="id" title="var">x</span> <span class="id" title="var">y</span> := <a class="idref" href="mathcomp.ssreflect.eqtype.html#df"><span class="id" title="variable">df</span></a> <span class="id" title="tactic">in</span> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssreflect.html#0348819abaa88c2cd747e8fa60dde7ae"><span class="id" title="notation">if</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#z"><span class="id" title="variable">z</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#17d28d004d0863cb022d4ce832ddaaae"><span class="id" title="notation">==</span></a> <span class="id" title="var">x</span> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssreflect.html#0348819abaa88c2cd747e8fa60dde7ae"><span class="id" title="notation">then</span></a> <span class="id" title="var">y</span> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssreflect.html#0348819abaa88c2cd747e8fa60dde7ae"><span class="id" title="notation">else</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#f"><span class="id" title="variable">f</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#z"><span class="id" title="variable">z</span></a>.<br/> + <span class="id" title="keyword">let</span>: <a class="idref" href="mathcomp.ssreflect.eqtype.html#FunDelta"><span class="id" title="constructor">FunDelta</span></a> <span class="id" title="var">x</span> <span class="id" title="var">y</span> := <a class="idref" href="mathcomp.ssreflect.eqtype.html#df"><span class="id" title="variable">df</span></a> <span class="id" title="tactic">in</span> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssreflect.html#00a1a5b58aac8f1e3f1abff064a39f9d"><span class="id" title="notation">if</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#z"><span class="id" title="variable">z</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#df45e8c2e8370fd4f0f7c4fdaf208180"><span class="id" title="notation">==</span></a> <span class="id" title="var">x</span> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssreflect.html#00a1a5b58aac8f1e3f1abff064a39f9d"><span class="id" title="notation">then</span></a> <span class="id" title="var">y</span> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssreflect.html#00a1a5b58aac8f1e3f1abff064a39f9d"><span class="id" title="notation">else</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#f"><span class="id" title="variable">f</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#z"><span class="id" title="variable">z</span></a>.<br/> <br/> <span class="id" title="keyword">End</span> <a class="idref" href="mathcomp.ssreflect.eqtype.html#FunWith"><span class="id" title="section">FunWith</span></a>.<br/> @@ -527,7 +573,7 @@ <br/> <br/> -<span class="id" title="keyword">Notation</span> <a name="208083cddfca3726231c4e84b7c928c1"><span class="id" title="notation">"</span></a>x |-> y" := (<a class="idref" href="mathcomp.ssreflect.eqtype.html#FunDelta"><span class="id" title="constructor">FunDelta</span></a> <span class="id" title="var">x</span> <span class="id" title="var">y</span>)<br/> +<span class="id" title="keyword">Notation</span> <a name="d74b61a39ba99967624d24970637896f"><span class="id" title="notation">"</span></a>x |-> y" := (<a class="idref" href="mathcomp.ssreflect.eqtype.html#FunDelta"><span class="id" title="constructor">FunDelta</span></a> <span class="id" title="var">x</span> <span class="id" title="var">y</span>)<br/> (<span class="id" title="tactic">at</span> <span class="id" title="keyword">level</span> 190, <span class="id" title="keyword">no</span> <span class="id" title="keyword">associativity</span>,<br/> <span class="id" title="var">format</span> "'[hv' x '/ ' |-> y ']'") : <span class="id" title="var">fun_delta_scope</span>.<br/> @@ -535,22 +581,22 @@ <span class="id" title="keyword">Delimit</span> <span class="id" title="keyword">Scope</span> <span class="id" title="var">fun_delta_scope</span> <span class="id" title="keyword">with</span> <span class="id" title="var">FUN_DELTA</span>.<br/> <br/> -<span class="id" title="keyword">Notation</span> <a name="5abbab48320225f661205a8ff4b0991d"><span class="id" title="notation">"</span></a>[ 'fun' z : T => F 'with' d1 , .. , dn ]" :=<br/> - (<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#SimplFunDelta"><span class="id" title="definition">SimplFunDelta</span></a> (<span class="id" title="keyword">fun</span> <span class="id" title="var">z</span> : <span class="id" title="var">T</span> ⇒<br/> +<span class="id" title="keyword">Notation</span> <a name="139a06246e96e50930d1f1d512e63576"><span class="id" title="notation">"</span></a>[ 'fun' z : T => F 'with' d1 , .. , dn ]" :=<br/> + (<a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#SimplFunDelta"><span class="id" title="definition">SimplFunDelta</span></a> (<span class="id" title="keyword">fun</span> <span class="id" title="var">z</span> : <span class="id" title="var">T</span> ⇒<br/> <a class="idref" href="mathcomp.ssreflect.eqtype.html#app_fdelta"><span class="id" title="definition">app_fdelta</span></a> <span class="id" title="var">d1</span>%<span class="id" title="var">FUN_DELTA</span> .. (<a class="idref" href="mathcomp.ssreflect.eqtype.html#app_fdelta"><span class="id" title="definition">app_fdelta</span></a> <span class="id" title="var">dn</span>%<span class="id" title="var">FUN_DELTA</span> (<span class="id" title="keyword">fun</span> <span class="id" title="var">_</span> ⇒ <span class="id" title="var">F</span>)) ..))<br/> (<span class="id" title="tactic">at</span> <span class="id" title="keyword">level</span> 0, <span class="id" title="var">z</span> <span class="id" title="var">ident</span>, <span class="id" title="var">only</span> <span class="id" title="var">parsing</span>) : <span class="id" title="var">fun_scope</span>.<br/> <br/> -<span class="id" title="keyword">Notation</span> <a name="98daeff9b38ed89b3ac0db77b4ceb901"><span class="id" title="notation">"</span></a>[ 'fun' z => F 'with' d1 , .. , dn ]" :=<br/> - (<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#SimplFunDelta"><span class="id" title="definition">SimplFunDelta</span></a> (<span class="id" title="keyword">fun</span> <span class="id" title="var">z</span> ⇒<br/> +<span class="id" title="keyword">Notation</span> <a name="5f847db88545de607ca99ef9077577ce"><span class="id" title="notation">"</span></a>[ 'fun' z => F 'with' d1 , .. , dn ]" :=<br/> + (<a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#SimplFunDelta"><span class="id" title="definition">SimplFunDelta</span></a> (<span class="id" title="keyword">fun</span> <span class="id" title="var">z</span> ⇒<br/> <a class="idref" href="mathcomp.ssreflect.eqtype.html#app_fdelta"><span class="id" title="definition">app_fdelta</span></a> <span class="id" title="var">d1</span>%<span class="id" title="var">FUN_DELTA</span> .. (<a class="idref" href="mathcomp.ssreflect.eqtype.html#app_fdelta"><span class="id" title="definition">app_fdelta</span></a> <span class="id" title="var">dn</span>%<span class="id" title="var">FUN_DELTA</span> (<span class="id" title="keyword">fun</span> <span class="id" title="var">_</span> ⇒ <span class="id" title="var">F</span>)) ..))<br/> (<span class="id" title="tactic">at</span> <span class="id" title="keyword">level</span> 0, <span class="id" title="var">z</span> <span class="id" title="var">ident</span>, <span class="id" title="var">format</span><br/> "'[hv' [ '[' 'fun' z => '/ ' F ']' '/' 'with' '[' d1 , '/' .. , '/' dn ']' ] ']'"<br/> ) : <span class="id" title="var">fun_scope</span>.<br/> <br/> -<span class="id" title="keyword">Notation</span> <a name="567afa6fb1db7dcd21b2a36fff7bcf36"><span class="id" title="notation">"</span></a>[ 'eta' f 'with' d1 , .. , dn ]" :=<br/> - (<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#SimplFunDelta"><span class="id" title="definition">SimplFunDelta</span></a> (<span class="id" title="keyword">fun</span> <span class="id" title="var">_</span> ⇒<br/> +<span class="id" title="keyword">Notation</span> <a name="1e16e052495f43108296b1e975fd3236"><span class="id" title="notation">"</span></a>[ 'eta' f 'with' d1 , .. , dn ]" :=<br/> + (<a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#SimplFunDelta"><span class="id" title="definition">SimplFunDelta</span></a> (<span class="id" title="keyword">fun</span> <span class="id" title="var">_</span> ⇒<br/> <a class="idref" href="mathcomp.ssreflect.eqtype.html#app_fdelta"><span class="id" title="definition">app_fdelta</span></a> <span class="id" title="var">d1</span>%<span class="id" title="var">FUN_DELTA</span> .. (<a class="idref" href="mathcomp.ssreflect.eqtype.html#app_fdelta"><span class="id" title="definition">app_fdelta</span></a> <span class="id" title="var">dn</span>%<span class="id" title="var">FUN_DELTA</span> <span class="id" title="var">f</span>) ..))<br/> (<span class="id" title="tactic">at</span> <span class="id" title="keyword">level</span> 0, <span class="id" title="var">format</span><br/> "'[hv' [ '[' 'eta' '/ ' f ']' '/' 'with' '[' d1 , '/' .. , '/' dn ']' ] ']'"<br/> @@ -571,119 +617,132 @@ <span class="id" title="keyword">Variable</span> <a name="ComparableType.T"><span class="id" title="variable">T</span></a> : <span class="id" title="keyword">Type</span>.<br/> <br/> -<span class="id" title="keyword">Definition</span> <a name="comparable"><span class="id" title="definition">comparable</span></a> := <span class="id" title="keyword">∀</span> <span class="id" title="var">x</span> <span class="id" title="var">y</span> : <a class="idref" href="mathcomp.ssreflect.eqtype.html#ComparableType.T"><span class="id" title="variable">T</span></a>, <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#decidable"><span class="id" title="definition">decidable</span></a> (<a class="idref" href="mathcomp.ssreflect.eqtype.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#y"><span class="id" title="variable">y</span></a>).<br/> +<span class="id" title="keyword">Definition</span> <a name="comparable"><span class="id" title="definition">comparable</span></a> := <span class="id" title="keyword">∀</span> <span class="id" title="var">x</span> <span class="id" title="var">y</span> : <a class="idref" href="mathcomp.ssreflect.eqtype.html#ComparableType.T"><span class="id" title="variable">T</span></a>, <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#decidable"><span class="id" title="definition">decidable</span></a> (<a class="idref" href="mathcomp.ssreflect.eqtype.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#6cd0f7b28b6092304087c7049437bb1a"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#y"><span class="id" title="variable">y</span></a>).<br/> <br/> -<span class="id" title="keyword">Hypothesis</span> <a name="ComparableType.Hcompare"><span class="id" title="variable">Hcompare</span></a> : <a class="idref" href="mathcomp.ssreflect.eqtype.html#comparable"><span class="id" title="definition">comparable</span></a>.<br/> +<span class="id" title="keyword">Hypothesis</span> <a name="ComparableType.compare_T"><span class="id" title="variable">compare_T</span></a> : <a class="idref" href="mathcomp.ssreflect.eqtype.html#comparable"><span class="id" title="definition">comparable</span></a>.<br/> <br/> -<span class="id" title="keyword">Definition</span> <a name="compareb"><span class="id" title="definition">compareb</span></a> <span class="id" title="var">x</span> <span class="id" title="var">y</span> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#bool"><span class="id" title="inductive">bool</span></a> := <a class="idref" href="mathcomp.ssreflect.eqtype.html#ComparableType.Hcompare"><span class="id" title="variable">Hcompare</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#y"><span class="id" title="variable">y</span></a>.<br/> +<span class="id" title="keyword">Definition</span> <a name="compareb"><span class="id" title="definition">compareb</span></a> <span class="id" title="var">x</span> <span class="id" title="var">y</span> : <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Datatypes.html#bool"><span class="id" title="inductive">bool</span></a> := <a class="idref" href="mathcomp.ssreflect.eqtype.html#ComparableType.compare_T"><span class="id" title="variable">compare_T</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#y"><span class="id" title="variable">y</span></a>.<br/> <br/> <span class="id" title="keyword">Lemma</span> <a name="compareP"><span class="id" title="lemma">compareP</span></a> : <a class="idref" href="mathcomp.ssreflect.eqtype.html#axiom"><span class="id" title="definition">Equality.axiom</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#compareb"><span class="id" title="definition">compareb</span></a>.<br/> <br/> -<span class="id" title="keyword">Definition</span> <a name="comparableClass"><span class="id" title="definition">comparableClass</span></a> := <a class="idref" href="mathcomp.ssreflect.eqtype.html#EqMixin"><span class="id" title="abbreviation">EqMixin</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#compareP"><span class="id" title="lemma">compareP</span></a>.<br/> +<span class="id" title="keyword">Definition</span> <a name="comparableMixin"><span class="id" title="definition">comparableMixin</span></a> := <a class="idref" href="mathcomp.ssreflect.eqtype.html#EqMixin"><span class="id" title="abbreviation">EqMixin</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#compareP"><span class="id" title="lemma">compareP</span></a>.<br/> <br/> <span class="id" title="keyword">End</span> <a class="idref" href="mathcomp.ssreflect.eqtype.html#ComparableType"><span class="id" title="section">ComparableType</span></a>.<br/> <br/> <span class="id" title="keyword">Definition</span> <a name="eq_comparable"><span class="id" title="definition">eq_comparable</span></a> (<span class="id" title="var">T</span> : <a class="idref" href="mathcomp.ssreflect.eqtype.html#eqType"><span class="id" title="abbreviation">eqType</span></a>) : <a class="idref" href="mathcomp.ssreflect.eqtype.html#comparable"><span class="id" title="definition">comparable</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#T"><span class="id" title="variable">T</span></a> :=<br/> - <span class="id" title="keyword">fun</span> <span class="id" title="var">x</span> <span class="id" title="var">y</span> ⇒ <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#decP"><span class="id" title="definition">decP</span></a> (<a class="idref" href="mathcomp.ssreflect.eqtype.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#ab7a7bc39754581ab8f205db64711d57"><span class="id" title="notation">=</span></a><a class="idref" href="mathcomp.ssreflect.eqtype.html#ab7a7bc39754581ab8f205db64711d57"><span class="id" title="notation">P</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#y"><span class="id" title="variable">y</span></a>).<br/> + <span class="id" title="keyword">fun</span> <span class="id" title="var">x</span> <span class="id" title="var">y</span> ⇒ <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#decP"><span class="id" title="definition">decP</span></a> (<a class="idref" href="mathcomp.ssreflect.eqtype.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#699be9384eca4d7537361910a9a14afe"><span class="id" title="notation">=</span></a><a class="idref" href="mathcomp.ssreflect.eqtype.html#699be9384eca4d7537361910a9a14afe"><span class="id" title="notation">P</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#y"><span class="id" title="variable">y</span></a>).<br/> <br/> <span class="id" title="keyword">Section</span> <a name="SubType"><span class="id" title="section">SubType</span></a>.<br/> <br/> -<span class="id" title="keyword">Variables</span> (<a name="SubType.T"><span class="id" title="variable">T</span></a> : <span class="id" title="keyword">Type</span>) (<a name="SubType.P"><span class="id" title="variable">P</span></a> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#pred"><span class="id" title="definition">pred</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#T"><span class="id" title="variable">T</span></a>).<br/> +<span class="id" title="keyword">Variables</span> (<a name="SubType.T"><span class="id" title="variable">T</span></a> : <span class="id" title="keyword">Type</span>) (<a name="SubType.P"><span class="id" title="variable">P</span></a> : <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#pred"><span class="id" title="definition">pred</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#T"><span class="id" title="variable">T</span></a>).<br/> <br/> <span class="id" title="keyword">Structure</span> <a name="subType"><span class="id" title="record">subType</span></a> : <span class="id" title="keyword">Type</span> := <a name="SubType"><span class="id" title="constructor">SubType</span></a> {<br/> <a name="sub_sort"><span class="id" title="projection">sub_sort</span></a> :> <span class="id" title="keyword">Type</span>;<br/> - <a name="val"><span class="id" title="projection">val</span></a> : <a class="idref" href="mathcomp.ssreflect.eqtype.html#sub_sort"><span class="id" title="method">sub_sort</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#SubType.T"><span class="id" title="variable">T</span></a>;<br/> - <a name="Sub"><span class="id" title="projection">Sub</span></a> : <span class="id" title="keyword">∀</span> <span class="id" title="var">x</span>, <a class="idref" href="mathcomp.ssreflect.eqtype.html#SubType.P"><span class="id" title="variable">P</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#sub_sort"><span class="id" title="method">sub_sort</span></a>;<br/> + <a name="val"><span class="id" title="projection">val</span></a> : <a class="idref" href="mathcomp.ssreflect.eqtype.html#sub_sort"><span class="id" title="method">sub_sort</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#1c93e43e07fbeaeb6a625cb6614beb5d"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#SubType.T"><span class="id" title="variable">T</span></a>;<br/> + <a name="Sub"><span class="id" title="projection">Sub</span></a> : <span class="id" title="keyword">∀</span> <span class="id" title="var">x</span>, <a class="idref" href="mathcomp.ssreflect.eqtype.html#SubType.P"><span class="id" title="variable">P</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#1c93e43e07fbeaeb6a625cb6614beb5d"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#sub_sort"><span class="id" title="method">sub_sort</span></a>;<br/> <span class="id" title="var">_</span> : <span class="id" title="keyword">∀</span> <span class="id" title="var">K</span> (<span class="id" title="var">_</span> : <span class="id" title="keyword">∀</span> <span class="id" title="var">x</span> <span class="id" title="var">Px</span>, <a class="idref" href="mathcomp.ssreflect.eqtype.html#K"><span class="id" title="variable">K</span></a> (@<a class="idref" href="mathcomp.ssreflect.eqtype.html#Sub"><span class="id" title="method">Sub</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#Px"><span class="id" title="variable">Px</span></a>)) <span class="id" title="var">u</span>, <a class="idref" href="mathcomp.ssreflect.eqtype.html#K"><span class="id" title="variable">K</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#u"><span class="id" title="variable">u</span></a>;<br/> - <span class="id" title="var">_</span> : <span class="id" title="keyword">∀</span> <span class="id" title="var">x</span> <span class="id" title="var">Px</span>, <a class="idref" href="mathcomp.ssreflect.eqtype.html#val"><span class="id" title="method">val</span></a> (@<a class="idref" href="mathcomp.ssreflect.eqtype.html#Sub"><span class="id" title="method">Sub</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#Px"><span class="id" title="variable">Px</span></a>) <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#x"><span class="id" title="variable">x</span></a><br/> + <span class="id" title="var">_</span> : <span class="id" title="keyword">∀</span> <span class="id" title="var">x</span> <span class="id" title="var">Px</span>, <a class="idref" href="mathcomp.ssreflect.eqtype.html#val"><span class="id" title="method">val</span></a> (@<a class="idref" href="mathcomp.ssreflect.eqtype.html#Sub"><span class="id" title="method">Sub</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#Px"><span class="id" title="variable">Px</span></a>) <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#6cd0f7b28b6092304087c7049437bb1a"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#x"><span class="id" title="variable">x</span></a><br/> }.<br/> <br/> -<span class="id" title="keyword">Lemma</span> <a name="vrefl"><span class="id" title="lemma">vrefl</span></a> : <span class="id" title="keyword">∀</span> <span class="id" title="var">x</span>, <a class="idref" href="mathcomp.ssreflect.eqtype.html#SubType.P"><span class="id" title="variable">P</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#x"><span class="id" title="variable">x</span></a>. <br/> +</div> + +<div class="doc"> + Generic proof that the second property holds by conversion. + The vrefl_rect alias is used to flag generic proofs of the first property. +</div> +<div class="code"> +<span class="id" title="keyword">Lemma</span> <a name="vrefl"><span class="id" title="lemma">vrefl</span></a> : <span class="id" title="keyword">∀</span> <span class="id" title="var">x</span>, <a class="idref" href="mathcomp.ssreflect.eqtype.html#SubType.P"><span class="id" title="variable">P</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#1c93e43e07fbeaeb6a625cb6614beb5d"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#6cd0f7b28b6092304087c7049437bb1a"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#x"><span class="id" title="variable">x</span></a>. <br/> <span class="id" title="keyword">Definition</span> <a name="vrefl_rect"><span class="id" title="definition">vrefl_rect</span></a> := <a class="idref" href="mathcomp.ssreflect.eqtype.html#vrefl"><span class="id" title="lemma">vrefl</span></a>.<br/> <br/> <span class="id" title="keyword">Definition</span> <a name="clone_subType"><span class="id" title="definition">clone_subType</span></a> <span class="id" title="var">U</span> <span class="id" title="var">v</span> :=<br/> - <span class="id" title="keyword">fun</span> <span class="id" title="var">sT</span> & <a class="idref" href="mathcomp.ssreflect.eqtype.html#sub_sort"><span class="id" title="projection">sub_sort</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#sT"><span class="id" title="variable">sT</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#U"><span class="id" title="variable">U</span></a> ⇒<br/> - <span class="id" title="keyword">fun</span> <span class="id" title="var">c</span> <span class="id" title="var">Urec</span> <span class="id" title="var">cK</span> (<span class="id" title="var">sT'</span> := @<a class="idref" href="mathcomp.ssreflect.eqtype.html#SubType"><span class="id" title="constructor">SubType</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#U"><span class="id" title="variable">U</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#v"><span class="id" title="variable">v</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#c"><span class="id" title="variable">c</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#Urec"><span class="id" title="variable">Urec</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#cK"><span class="id" title="variable">cK</span></a>) & <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#phant_id"><span class="id" title="definition">phant_id</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#sT'"><span class="id" title="variable">sT'</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#sT"><span class="id" title="variable">sT</span></a> ⇒ <a class="idref" href="mathcomp.ssreflect.eqtype.html#sT'"><span class="id" title="variable">sT'</span></a>.<br/> + <span class="id" title="keyword">fun</span> <span class="id" title="var">sT</span> & <a class="idref" href="mathcomp.ssreflect.eqtype.html#sub_sort"><span class="id" title="projection">sub_sort</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#sT"><span class="id" title="variable">sT</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#1c93e43e07fbeaeb6a625cb6614beb5d"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#U"><span class="id" title="variable">U</span></a> ⇒<br/> + <span class="id" title="keyword">fun</span> <span class="id" title="var">c</span> <span class="id" title="var">Urec</span> <span class="id" title="var">cK</span> (<span class="id" title="var">sT'</span> := @<a class="idref" href="mathcomp.ssreflect.eqtype.html#SubType"><span class="id" title="constructor">SubType</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#U"><span class="id" title="variable">U</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#v"><span class="id" title="variable">v</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#c"><span class="id" title="variable">c</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#Urec"><span class="id" title="variable">Urec</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#cK"><span class="id" title="variable">cK</span></a>) & <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#phant_id"><span class="id" title="definition">phant_id</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#sT'"><span class="id" title="variable">sT'</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#sT"><span class="id" title="variable">sT</span></a> ⇒ <a class="idref" href="mathcomp.ssreflect.eqtype.html#sT'"><span class="id" title="variable">sT'</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Section</span> <a name="SubType.Theory"><span class="id" title="section">Theory</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Variable</span> <a name="SubType.Theory.sT"><span class="id" title="variable">sT</span></a> : <a class="idref" href="mathcomp.ssreflect.eqtype.html#subType"><span class="id" title="record">subType</span></a>.<br/> <br/> -<span class="id" title="keyword">Variable</span> <a name="SubType.sT"><span class="id" title="variable">sT</span></a> : <a class="idref" href="mathcomp.ssreflect.eqtype.html#subType"><span class="id" title="record">subType</span></a>.<br/> <br/> -<span class="id" title="keyword">CoInductive</span> <a name="Sub_spec"><span class="id" title="inductive">Sub_spec</span></a> : <a class="idref" href="mathcomp.ssreflect.eqtype.html#SubType.sT"><span class="id" title="variable">sT</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <span class="id" title="keyword">Type</span> := <a name="SubSpec"><span class="id" title="constructor">SubSpec</span></a> <span class="id" title="var">x</span> <span class="id" title="var">Px</span> : <a class="idref" href="mathcomp.ssreflect.eqtype.html#Sub_spec"><span class="id" title="inductive">Sub_spec</span></a> (<a class="idref" href="mathcomp.ssreflect.eqtype.html#Sub"><span class="id" title="projection">Sub</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#Px"><span class="id" title="variable">Px</span></a>).<br/> +<span class="id" title="keyword">Variant</span> <a name="Sub_spec"><span class="id" title="inductive">Sub_spec</span></a> : <a class="idref" href="mathcomp.ssreflect.eqtype.html#SubType.Theory.sT"><span class="id" title="variable">sT</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#1c93e43e07fbeaeb6a625cb6614beb5d"><span class="id" title="notation">→</span></a> <span class="id" title="keyword">Type</span> := <a name="SubSpec"><span class="id" title="constructor">SubSpec</span></a> <span class="id" title="var">x</span> <span class="id" title="var">Px</span> : <a class="idref" href="mathcomp.ssreflect.eqtype.html#Sub_spec"><span class="id" title="inductive">Sub_spec</span></a> (<a class="idref" href="mathcomp.ssreflect.eqtype.html#Sub"><span class="id" title="abbreviation">Sub</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#Px"><span class="id" title="variable">Px</span></a>).<br/> <br/> <span class="id" title="keyword">Lemma</span> <a name="SubP"><span class="id" title="lemma">SubP</span></a> <span class="id" title="var">u</span> : <a class="idref" href="mathcomp.ssreflect.eqtype.html#Sub_spec"><span class="id" title="inductive">Sub_spec</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#u"><span class="id" title="variable">u</span></a>.<br/> <br/> -<span class="id" title="keyword">Lemma</span> <a name="SubK"><span class="id" title="lemma">SubK</span></a> <span class="id" title="var">x</span> <span class="id" title="var">Px</span> : @<a class="idref" href="mathcomp.ssreflect.eqtype.html#val"><span class="id" title="projection">val</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#SubType.sT"><span class="id" title="variable">sT</span></a> (<a class="idref" href="mathcomp.ssreflect.eqtype.html#Sub"><span class="id" title="projection">Sub</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#Px"><span class="id" title="variable">Px</span></a>) <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#x"><span class="id" title="variable">x</span></a>.<br/> - +<span class="id" title="keyword">Lemma</span> <a name="SubK"><span class="id" title="lemma">SubK</span></a> <span class="id" title="var">x</span> <span class="id" title="var">Px</span> : <a class="idref" href="mathcomp.ssreflect.eqtype.html#val"><span class="id" title="abbreviation">val</span></a> (<a class="idref" href="mathcomp.ssreflect.eqtype.html#Sub"><span class="id" title="abbreviation">Sub</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#Px"><span class="id" title="variable">Px</span></a>) <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#6cd0f7b28b6092304087c7049437bb1a"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#x"><span class="id" title="variable">x</span></a>. <br/> + <br/> -<span class="id" title="keyword">Definition</span> <a name="insub"><span class="id" title="definition">insub</span></a> <span class="id" title="var">x</span> :=<br/> - <span class="id" title="keyword">if</span> @<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#idP"><span class="id" title="lemma">idP</span></a> (<a class="idref" href="mathcomp.ssreflect.eqtype.html#SubType.P"><span class="id" title="variable">P</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#x"><span class="id" title="variable">x</span></a>) <span class="id" title="keyword">is</span> <span class="id" title="var">ReflectT</span> <span class="id" title="var">Px</span> <span class="id" title="keyword">then</span> @<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#Some"><span class="id" title="constructor">Some</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#SubType.sT"><span class="id" title="variable">sT</span></a> (<a class="idref" href="mathcomp.ssreflect.eqtype.html#Sub"><span class="id" title="projection">Sub</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#x"><span class="id" title="variable">x</span></a> <span class="id" title="var">Px</span>) <span class="id" title="keyword">else</span> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#None"><span class="id" title="constructor">None</span></a>.<br/> +<span class="id" title="keyword">Definition</span> <a name="insub"><span class="id" title="definition">insub</span></a> <span class="id" title="var">x</span> := <span class="id" title="keyword">if</span> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#idP"><span class="id" title="lemma">idP</span></a> <span class="id" title="keyword">is</span> <span class="id" title="var">ReflectT</span> <span class="id" title="var">Px</span> <span class="id" title="keyword">then</span> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Datatypes.html#Some"><span class="id" title="constructor">Some</span></a> (<a class="idref" href="mathcomp.ssreflect.eqtype.html#Sub"><span class="id" title="abbreviation">Sub</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#x"><span class="id" title="variable">x</span></a> <span class="id" title="var">Px</span>) <span class="id" title="keyword">else</span> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Datatypes.html#None"><span class="id" title="constructor">None</span></a>.<br/> <br/> -<span class="id" title="keyword">Definition</span> <a name="insubd"><span class="id" title="definition">insubd</span></a> <span class="id" title="var">u0</span> <span class="id" title="var">x</span> := <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#odflt"><span class="id" title="abbreviation">odflt</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#u0"><span class="id" title="variable">u0</span></a> (<a class="idref" href="mathcomp.ssreflect.eqtype.html#insub"><span class="id" title="definition">insub</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#x"><span class="id" title="variable">x</span></a>).<br/> +<span class="id" title="keyword">Definition</span> <a name="insubd"><span class="id" title="definition">insubd</span></a> <span class="id" title="var">u0</span> <span class="id" title="var">x</span> := <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#odflt"><span class="id" title="abbreviation">odflt</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#u0"><span class="id" title="variable">u0</span></a> (<a class="idref" href="mathcomp.ssreflect.eqtype.html#insub"><span class="id" title="definition">insub</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#x"><span class="id" title="variable">x</span></a>).<br/> <br/> -<span class="id" title="keyword">CoInductive</span> <a name="insub_spec"><span class="id" title="inductive">insub_spec</span></a> <span class="id" title="var">x</span> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#option"><span class="id" title="inductive">option</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#SubType.sT"><span class="id" title="variable">sT</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <span class="id" title="keyword">Type</span> :=<br/> - | <a name="InsubSome"><span class="id" title="constructor">InsubSome</span></a> <span class="id" title="var">u</span> <span class="id" title="keyword">of</span> <a class="idref" href="mathcomp.ssreflect.eqtype.html#SubType.P"><span class="id" title="variable">P</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#x"><span class="id" title="variable">x</span></a> & <a class="idref" href="mathcomp.ssreflect.eqtype.html#val"><span class="id" title="projection">val</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#u"><span class="id" title="variable">u</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#x"><span class="id" title="variable">x</span></a> : <a class="idref" href="mathcomp.ssreflect.eqtype.html#insub_spec"><span class="id" title="inductive">insub_spec</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#x"><span class="id" title="variable">x</span></a> (<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#Some"><span class="id" title="constructor">Some</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#u"><span class="id" title="variable">u</span></a>)<br/> - | <a name="InsubNone"><span class="id" title="constructor">InsubNone</span></a> <span class="id" title="keyword">of</span> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#4b80c70cdb231351c5e129ba61f7f956"><span class="id" title="notation">~~</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#SubType.P"><span class="id" title="variable">P</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#x"><span class="id" title="variable">x</span></a> : <a class="idref" href="mathcomp.ssreflect.eqtype.html#insub_spec"><span class="id" title="inductive">insub_spec</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#None"><span class="id" title="constructor">None</span></a>.<br/> +<span class="id" title="keyword">Variant</span> <a name="insub_spec"><span class="id" title="inductive">insub_spec</span></a> <span class="id" title="var">x</span> : <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Datatypes.html#option"><span class="id" title="inductive">option</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#SubType.Theory.sT"><span class="id" title="variable">sT</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#1c93e43e07fbeaeb6a625cb6614beb5d"><span class="id" title="notation">→</span></a> <span class="id" title="keyword">Type</span> :=<br/> + | <a name="InsubSome"><span class="id" title="constructor">InsubSome</span></a> <span class="id" title="var">u</span> <span class="id" title="keyword">of</span> <a class="idref" href="mathcomp.ssreflect.eqtype.html#SubType.P"><span class="id" title="variable">P</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#x"><span class="id" title="variable">x</span></a> & <a class="idref" href="mathcomp.ssreflect.eqtype.html#val"><span class="id" title="abbreviation">val</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#u"><span class="id" title="variable">u</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#6cd0f7b28b6092304087c7049437bb1a"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#x"><span class="id" title="variable">x</span></a> : <a class="idref" href="mathcomp.ssreflect.eqtype.html#insub_spec"><span class="id" title="inductive">insub_spec</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#x"><span class="id" title="variable">x</span></a> (<a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Datatypes.html#Some"><span class="id" title="constructor">Some</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#u"><span class="id" title="variable">u</span></a>)<br/> + | <a name="InsubNone"><span class="id" title="constructor">InsubNone</span></a> <span class="id" title="keyword">of</span> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#b3ebd0deddd84fd60e149cb5ef719351"><span class="id" title="notation">~~</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#SubType.P"><span class="id" title="variable">P</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#x"><span class="id" title="variable">x</span></a> : <a class="idref" href="mathcomp.ssreflect.eqtype.html#insub_spec"><span class="id" title="inductive">insub_spec</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Datatypes.html#None"><span class="id" title="constructor">None</span></a>.<br/> <br/> <span class="id" title="keyword">Lemma</span> <a name="insubP"><span class="id" title="lemma">insubP</span></a> <span class="id" title="var">x</span> : <a class="idref" href="mathcomp.ssreflect.eqtype.html#insub_spec"><span class="id" title="inductive">insub_spec</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#x"><span class="id" title="variable">x</span></a> (<a class="idref" href="mathcomp.ssreflect.eqtype.html#insub"><span class="id" title="definition">insub</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#x"><span class="id" title="variable">x</span></a>).<br/> <br/> -<span class="id" title="keyword">Lemma</span> <a name="insubT"><span class="id" title="lemma">insubT</span></a> <span class="id" title="var">x</span> <span class="id" title="var">Px</span> : <a class="idref" href="mathcomp.ssreflect.eqtype.html#insub"><span class="id" title="definition">insub</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#Some"><span class="id" title="constructor">Some</span></a> (<a class="idref" href="mathcomp.ssreflect.eqtype.html#Sub"><span class="id" title="projection">Sub</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#Px"><span class="id" title="variable">Px</span></a>).<br/> +<span class="id" title="keyword">Lemma</span> <a name="insubT"><span class="id" title="lemma">insubT</span></a> <span class="id" title="var">x</span> <span class="id" title="var">Px</span> : <a class="idref" href="mathcomp.ssreflect.eqtype.html#insub"><span class="id" title="definition">insub</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#6cd0f7b28b6092304087c7049437bb1a"><span class="id" title="notation">=</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Datatypes.html#Some"><span class="id" title="constructor">Some</span></a> (<a class="idref" href="mathcomp.ssreflect.eqtype.html#Sub"><span class="id" title="abbreviation">Sub</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#Px"><span class="id" title="variable">Px</span></a>).<br/> <br/> -<span class="id" title="keyword">Lemma</span> <a name="insubF"><span class="id" title="lemma">insubF</span></a> <span class="id" title="var">x</span> : <a class="idref" href="mathcomp.ssreflect.eqtype.html#SubType.P"><span class="id" title="variable">P</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#false"><span class="id" title="constructor">false</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#insub"><span class="id" title="definition">insub</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#None"><span class="id" title="constructor">None</span></a>.<br/> +<span class="id" title="keyword">Lemma</span> <a name="insubF"><span class="id" title="lemma">insubF</span></a> <span class="id" title="var">x</span> : <a class="idref" href="mathcomp.ssreflect.eqtype.html#SubType.P"><span class="id" title="variable">P</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#6cd0f7b28b6092304087c7049437bb1a"><span class="id" title="notation">=</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Datatypes.html#false"><span class="id" title="constructor">false</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#1c93e43e07fbeaeb6a625cb6614beb5d"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#insub"><span class="id" title="definition">insub</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#6cd0f7b28b6092304087c7049437bb1a"><span class="id" title="notation">=</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Datatypes.html#None"><span class="id" title="constructor">None</span></a>.<br/> <br/> -<span class="id" title="keyword">Lemma</span> <a name="insubN"><span class="id" title="lemma">insubN</span></a> <span class="id" title="var">x</span> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#4b80c70cdb231351c5e129ba61f7f956"><span class="id" title="notation">~~</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#SubType.P"><span class="id" title="variable">P</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#insub"><span class="id" title="definition">insub</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#None"><span class="id" title="constructor">None</span></a>.<br/> +<span class="id" title="keyword">Lemma</span> <a name="insubN"><span class="id" title="lemma">insubN</span></a> <span class="id" title="var">x</span> : <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#b3ebd0deddd84fd60e149cb5ef719351"><span class="id" title="notation">~~</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#SubType.P"><span class="id" title="variable">P</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#1c93e43e07fbeaeb6a625cb6614beb5d"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#insub"><span class="id" title="definition">insub</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#6cd0f7b28b6092304087c7049437bb1a"><span class="id" title="notation">=</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Datatypes.html#None"><span class="id" title="constructor">None</span></a>.<br/> <br/> -<span class="id" title="keyword">Lemma</span> <a name="isSome_insub"><span class="id" title="lemma">isSome_insub</span></a> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#2500d48ed8e862ccfda98a44dff88963"><span class="id" title="notation">(</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#3f6d75f5a9cb81b61e8423a7aac22056"><span class="id" title="notation">[</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#3f6d75f5a9cb81b61e8423a7aac22056"><span class="id" title="notation">eta</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#insub"><span class="id" title="definition">insub</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#3f6d75f5a9cb81b61e8423a7aac22056"><span class="id" title="notation">]</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssreflect.html#4509b22bf26e3d6d771897e22bd8bc8f"><span class="id" title="notation">:</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#pred"><span class="id" title="definition">pred</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#SubType.T"><span class="id" title="variable">T</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#2500d48ed8e862ccfda98a44dff88963"><span class="id" title="notation">)</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#2500d48ed8e862ccfda98a44dff88963"><span class="id" title="notation">=1</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#SubType.P"><span class="id" title="variable">P</span></a>.<br/> +<span class="id" title="keyword">Lemma</span> <a name="isSome_insub"><span class="id" title="lemma">isSome_insub</span></a> : <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#876aa133fb3472bffd492f74ff496035"><span class="id" title="notation">(</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#20b75710d0541e9ffd06f8e723fd3daf"><span class="id" title="notation">[</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#20b75710d0541e9ffd06f8e723fd3daf"><span class="id" title="notation">eta</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#insub"><span class="id" title="definition">insub</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#20b75710d0541e9ffd06f8e723fd3daf"><span class="id" title="notation">]</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssreflect.html#aed478b27f23b4f753c27c8ac393febc"><span class="id" title="notation">:</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#pred"><span class="id" title="definition">pred</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#SubType.T"><span class="id" title="variable">T</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#876aa133fb3472bffd492f74ff496035"><span class="id" title="notation">)</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#876aa133fb3472bffd492f74ff496035"><span class="id" title="notation">=1</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#SubType.P"><span class="id" title="variable">P</span></a>.<br/> <br/> -<span class="id" title="keyword">Lemma</span> <a name="insubK"><span class="id" title="lemma">insubK</span></a> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#ocancel"><span class="id" title="definition">ocancel</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#insub"><span class="id" title="definition">insub</span></a> (@<a class="idref" href="mathcomp.ssreflect.eqtype.html#val"><span class="id" title="projection">val</span></a> <span class="id" title="var">_</span>).<br/> +<span class="id" title="keyword">Lemma</span> <a name="insubK"><span class="id" title="lemma">insubK</span></a> : <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#ocancel"><span class="id" title="definition">ocancel</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#insub"><span class="id" title="definition">insub</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#val"><span class="id" title="abbreviation">val</span></a>.<br/> <br/> -<span class="id" title="keyword">Lemma</span> <a name="valP"><span class="id" title="lemma">valP</span></a> (<span class="id" title="var">u</span> : <a class="idref" href="mathcomp.ssreflect.eqtype.html#SubType.sT"><span class="id" title="variable">sT</span></a>) : <a class="idref" href="mathcomp.ssreflect.eqtype.html#SubType.P"><span class="id" title="variable">P</span></a> (<a class="idref" href="mathcomp.ssreflect.eqtype.html#val"><span class="id" title="projection">val</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#u"><span class="id" title="variable">u</span></a>).<br/> +<span class="id" title="keyword">Lemma</span> <a name="valP"><span class="id" title="lemma">valP</span></a> <span class="id" title="var">u</span> : <a class="idref" href="mathcomp.ssreflect.eqtype.html#SubType.P"><span class="id" title="variable">P</span></a> (<a class="idref" href="mathcomp.ssreflect.eqtype.html#val"><span class="id" title="abbreviation">val</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#u"><span class="id" title="variable">u</span></a>).<br/> <br/> -<span class="id" title="keyword">Lemma</span> <a name="valK"><span class="id" title="lemma">valK</span></a> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#pcancel"><span class="id" title="definition">pcancel</span></a> (@<a class="idref" href="mathcomp.ssreflect.eqtype.html#val"><span class="id" title="projection">val</span></a> <span class="id" title="var">_</span>) <a class="idref" href="mathcomp.ssreflect.eqtype.html#insub"><span class="id" title="definition">insub</span></a>.<br/> +<span class="id" title="keyword">Lemma</span> <a name="valK"><span class="id" title="lemma">valK</span></a> : <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#pcancel"><span class="id" title="definition">pcancel</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#val"><span class="id" title="abbreviation">val</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#insub"><span class="id" title="definition">insub</span></a>.<br/> <br/> -<span class="id" title="keyword">Lemma</span> <a name="val_inj"><span class="id" title="lemma">val_inj</span></a> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#injective"><span class="id" title="definition">injective</span></a> (@<a class="idref" href="mathcomp.ssreflect.eqtype.html#val"><span class="id" title="projection">val</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#SubType.sT"><span class="id" title="variable">sT</span></a>).<br/> +<span class="id" title="keyword">Lemma</span> <a name="val_inj"><span class="id" title="lemma">val_inj</span></a> : <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#injective"><span class="id" title="definition">injective</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#val"><span class="id" title="abbreviation">val</span></a>.<br/> <br/> -<span class="id" title="keyword">Lemma</span> <a name="valKd"><span class="id" title="lemma">valKd</span></a> <span class="id" title="var">u0</span> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#cancel"><span class="id" title="definition">cancel</span></a> (@<a class="idref" href="mathcomp.ssreflect.eqtype.html#val"><span class="id" title="projection">val</span></a> <span class="id" title="var">_</span>) (<a class="idref" href="mathcomp.ssreflect.eqtype.html#insubd"><span class="id" title="definition">insubd</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#u0"><span class="id" title="variable">u0</span></a>).<br/> +<span class="id" title="keyword">Lemma</span> <a name="valKd"><span class="id" title="lemma">valKd</span></a> <span class="id" title="var">u0</span> : <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#cancel"><span class="id" title="definition">cancel</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#val"><span class="id" title="abbreviation">val</span></a> (<a class="idref" href="mathcomp.ssreflect.eqtype.html#insubd"><span class="id" title="definition">insubd</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#u0"><span class="id" title="variable">u0</span></a>).<br/> <br/> -<span class="id" title="keyword">Lemma</span> <a name="val_insubd"><span class="id" title="lemma">val_insubd</span></a> <span class="id" title="var">u0</span> <span class="id" title="var">x</span> : <a class="idref" href="mathcomp.ssreflect.eqtype.html#val"><span class="id" title="projection">val</span></a> (<a class="idref" href="mathcomp.ssreflect.eqtype.html#insubd"><span class="id" title="definition">insubd</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#u0"><span class="id" title="variable">u0</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#x"><span class="id" title="variable">x</span></a>) <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssreflect.html#0348819abaa88c2cd747e8fa60dde7ae"><span class="id" title="notation">if</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#SubType.P"><span class="id" title="variable">P</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssreflect.html#0348819abaa88c2cd747e8fa60dde7ae"><span class="id" title="notation">then</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssreflect.html#0348819abaa88c2cd747e8fa60dde7ae"><span class="id" title="notation">else</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#val"><span class="id" title="projection">val</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#u0"><span class="id" title="variable">u0</span></a>.<br/> +<span class="id" title="keyword">Lemma</span> <a name="val_insubd"><span class="id" title="lemma">val_insubd</span></a> <span class="id" title="var">u0</span> <span class="id" title="var">x</span> : <a class="idref" href="mathcomp.ssreflect.eqtype.html#val"><span class="id" title="abbreviation">val</span></a> (<a class="idref" href="mathcomp.ssreflect.eqtype.html#insubd"><span class="id" title="definition">insubd</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#u0"><span class="id" title="variable">u0</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#x"><span class="id" title="variable">x</span></a>) <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#6cd0f7b28b6092304087c7049437bb1a"><span class="id" title="notation">=</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssreflect.html#00a1a5b58aac8f1e3f1abff064a39f9d"><span class="id" title="notation">if</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#SubType.P"><span class="id" title="variable">P</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssreflect.html#00a1a5b58aac8f1e3f1abff064a39f9d"><span class="id" title="notation">then</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssreflect.html#00a1a5b58aac8f1e3f1abff064a39f9d"><span class="id" title="notation">else</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#val"><span class="id" title="abbreviation">val</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#u0"><span class="id" title="variable">u0</span></a>.<br/> <br/> -<span class="id" title="keyword">Lemma</span> <a name="insubdK"><span class="id" title="lemma">insubdK</span></a> <span class="id" title="var">u0</span> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#5c59b35a0b51db520cf1fba473ecf127"><span class="id" title="notation">{</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#5c59b35a0b51db520cf1fba473ecf127"><span class="id" title="notation">in</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#SubType.P"><span class="id" title="variable">P</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#5c59b35a0b51db520cf1fba473ecf127"><span class="id" title="notation">,</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#cancel"><span class="id" title="definition">cancel</span></a> (<a class="idref" href="mathcomp.ssreflect.eqtype.html#insubd"><span class="id" title="definition">insubd</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#u0"><span class="id" title="variable">u0</span></a>) (@<a class="idref" href="mathcomp.ssreflect.eqtype.html#val"><span class="id" title="projection">val</span></a> <span class="id" title="var">_</span>)<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#5c59b35a0b51db520cf1fba473ecf127"><span class="id" title="notation">}</span></a>.<br/> +<span class="id" title="keyword">Lemma</span> <a name="insubdK"><span class="id" title="lemma">insubdK</span></a> <span class="id" title="var">u0</span> : <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#8c08d4203604dbed63e7afa9b689d858"><span class="id" title="notation">{</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#8c08d4203604dbed63e7afa9b689d858"><span class="id" title="notation">in</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#SubType.P"><span class="id" title="variable">P</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#8c08d4203604dbed63e7afa9b689d858"><span class="id" title="notation">,</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#cancel"><span class="id" title="definition">cancel</span></a> (<a class="idref" href="mathcomp.ssreflect.eqtype.html#insubd"><span class="id" title="definition">insubd</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#u0"><span class="id" title="variable">u0</span></a>) <a class="idref" href="mathcomp.ssreflect.eqtype.html#val"><span class="id" title="abbreviation">val</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#8c08d4203604dbed63e7afa9b689d858"><span class="id" title="notation">}</span></a>.<br/> <br/> -<span class="id" title="keyword">Definition</span> <a name="insub_eq"><span class="id" title="definition">insub_eq</span></a> <span class="id" title="var">x</span> :=<br/> - <span class="id" title="keyword">let</span> <span class="id" title="var">Some_sub</span> <span class="id" title="var">Px</span> := <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#Some"><span class="id" title="constructor">Some</span></a> (<a class="idref" href="mathcomp.ssreflect.eqtype.html#Sub"><span class="id" title="projection">Sub</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#Px"><span class="id" title="variable">Px</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssreflect.html#4509b22bf26e3d6d771897e22bd8bc8f"><span class="id" title="notation">:</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#SubType.sT"><span class="id" title="variable">sT</span></a>) <span class="id" title="tactic">in</span><br/> - <span class="id" title="keyword">let</span> <span class="id" title="var">None_sub</span> <span class="id" title="var">_</span> := <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#None"><span class="id" title="constructor">None</span></a> <span class="id" title="tactic">in</span><br/> - (<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssreflect.html#f2de61384776e923a9c502554d1079cb"><span class="id" title="notation">if</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#SubType.P"><span class="id" title="variable">P</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssreflect.html#f2de61384776e923a9c502554d1079cb"><span class="id" title="notation">as</span></a> <span class="id" title="var">Px</span> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssreflect.html#f2de61384776e923a9c502554d1079cb"><span class="id" title="notation">return</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#SubType.P"><span class="id" title="variable">P</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#Px"><span class="id" title="variable">Px</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <span class="id" title="var">_</span> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssreflect.html#f2de61384776e923a9c502554d1079cb"><span class="id" title="notation">then</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#Some_sub"><span class="id" title="variable">Some_sub</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssreflect.html#f2de61384776e923a9c502554d1079cb"><span class="id" title="notation">else</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#None_sub"><span class="id" title="variable">None_sub</span></a>) (<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#erefl"><span class="id" title="abbreviation">erefl</span></a> <span class="id" title="var">_</span>).<br/> +<span class="id" title="keyword">Let</span> <a name="SubType.Theory.insub_eq_aux"><span class="id" title="variable">insub_eq_aux</span></a> <span class="id" title="var">x</span> <span class="id" title="var">isPx</span> : <a class="idref" href="mathcomp.ssreflect.eqtype.html#SubType.P"><span class="id" title="variable">P</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#6cd0f7b28b6092304087c7049437bb1a"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#isPx"><span class="id" title="variable">isPx</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#1c93e43e07fbeaeb6a625cb6614beb5d"><span class="id" title="notation">→</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Datatypes.html#option"><span class="id" title="inductive">option</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#SubType.Theory.sT"><span class="id" title="variable">sT</span></a> :=<br/> + <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssreflect.html#e415736924b98865ec80fc8682078da1"><span class="id" title="notation">if</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#isPx"><span class="id" title="variable">isPx</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssreflect.html#e415736924b98865ec80fc8682078da1"><span class="id" title="notation">as</span></a> <span class="id" title="var">b</span> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssreflect.html#e415736924b98865ec80fc8682078da1"><span class="id" title="notation">return</span></a> <span class="id" title="var">_</span> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#6cd0f7b28b6092304087c7049437bb1a"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#b"><span class="id" title="variable">b</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#1c93e43e07fbeaeb6a625cb6614beb5d"><span class="id" title="notation">→</span></a> <span class="id" title="var">_</span> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssreflect.html#e415736924b98865ec80fc8682078da1"><span class="id" title="notation">then</span></a> <span class="id" title="keyword">fun</span> <span class="id" title="var">Px</span> ⇒ <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Datatypes.html#Some"><span class="id" title="constructor">Some</span></a> (<a class="idref" href="mathcomp.ssreflect.eqtype.html#Sub"><span class="id" title="abbreviation">Sub</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#Px"><span class="id" title="variable">Px</span></a>) <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssreflect.html#e415736924b98865ec80fc8682078da1"><span class="id" title="notation">else</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#94502d422d70bbaf4f390946d9885b7c"><span class="id" title="notation">fun</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#94502d422d70bbaf4f390946d9885b7c"><span class="id" title="notation">⇒</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Datatypes.html#None"><span class="id" title="constructor">None</span></a>.<br/> +<span class="id" title="keyword">Definition</span> <a name="insub_eq"><span class="id" title="definition">insub_eq</span></a> <span class="id" title="var">x</span> := <a class="idref" href="mathcomp.ssreflect.eqtype.html#SubType.Theory.insub_eq_aux"><span class="id" title="variable">insub_eq_aux</span></a> (<a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#erefl"><span class="id" title="abbreviation">erefl</span></a> (<a class="idref" href="mathcomp.ssreflect.eqtype.html#SubType.P"><span class="id" title="variable">P</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#x"><span class="id" title="variable">x</span></a>)).<br/> <br/> -<span class="id" title="keyword">Lemma</span> <a name="insub_eqE"><span class="id" title="lemma">insub_eqE</span></a> : <a class="idref" href="mathcomp.ssreflect.eqtype.html#insub_eq"><span class="id" title="definition">insub_eq</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#2500d48ed8e862ccfda98a44dff88963"><span class="id" title="notation">=1</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#insub"><span class="id" title="definition">insub</span></a>.<br/> +<span class="id" title="keyword">Lemma</span> <a name="insub_eqE"><span class="id" title="lemma">insub_eqE</span></a> : <a class="idref" href="mathcomp.ssreflect.eqtype.html#insub_eq"><span class="id" title="definition">insub_eq</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#876aa133fb3472bffd492f74ff496035"><span class="id" title="notation">=1</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#insub"><span class="id" title="definition">insub</span></a>.<br/> + +<br/> +<span class="id" title="keyword">End</span> <a class="idref" href="mathcomp.ssreflect.eqtype.html#SubType.Theory"><span class="id" title="section">Theory</span></a>.<br/> <br/> <span class="id" title="keyword">End</span> <a class="idref" href="mathcomp.ssreflect.eqtype.html#SubType"><span class="id" title="section">SubType</span></a>.<br/> @@ -695,58 +754,47 @@ <br/> <br/> -<span class="id" title="keyword">Notation</span> <a name="341c160c3e7b20d967b85d1852a7f89f"><span class="id" title="notation">"</span></a>[ 'subType' 'for' v ]" := (<a class="idref" href="mathcomp.ssreflect.eqtype.html#SubType"><span class="id" title="constructor">SubType</span></a> <span class="id" title="var">_</span> <span class="id" title="var">v</span> <span class="id" title="var">_</span> <a class="idref" href="mathcomp.ssreflect.eqtype.html#inlined_sub_rect"><span class="id" title="abbreviation">inlined_sub_rect</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#vrefl_rect"><span class="id" title="definition">vrefl_rect</span></a>)<br/> +<span class="id" title="keyword">Notation</span> <a name="c2d02b544d823cdc1e1e08de552cdba4"><span class="id" title="notation">"</span></a>[ 'subType' 'for' v ]" := (<a class="idref" href="mathcomp.ssreflect.eqtype.html#SubType"><span class="id" title="constructor">SubType</span></a> <span class="id" title="var">_</span> <span class="id" title="var">v</span> <span class="id" title="var">_</span> <a class="idref" href="mathcomp.ssreflect.eqtype.html#inlined_sub_rect"><span class="id" title="abbreviation">inlined_sub_rect</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#vrefl_rect"><span class="id" title="definition">vrefl_rect</span></a>)<br/> (<span class="id" title="tactic">at</span> <span class="id" title="keyword">level</span> 0, <span class="id" title="var">only</span> <span class="id" title="var">parsing</span>) : <span class="id" title="var">form_scope</span>.<br/> <br/> -<span class="id" title="keyword">Notation</span> <a name="415aba177721bceee8ec785947f9342f"><span class="id" title="notation">"</span></a>[ 'sub' 'Type' 'for' v ]" := (<a class="idref" href="mathcomp.ssreflect.eqtype.html#SubType"><span class="id" title="constructor">SubType</span></a> <span class="id" title="var">_</span> <span class="id" title="var">v</span> <span class="id" title="var">_</span> <span class="id" title="var">_</span> <a class="idref" href="mathcomp.ssreflect.eqtype.html#vrefl_rect"><span class="id" title="definition">vrefl_rect</span></a>)<br/> +<span class="id" title="keyword">Notation</span> <a name="d3753e6c95318631827fad6756c3debd"><span class="id" title="notation">"</span></a>[ 'sub' 'Type' 'for' v ]" := (<a class="idref" href="mathcomp.ssreflect.eqtype.html#SubType"><span class="id" title="constructor">SubType</span></a> <span class="id" title="var">_</span> <span class="id" title="var">v</span> <span class="id" title="var">_</span> <span class="id" title="var">_</span> <a class="idref" href="mathcomp.ssreflect.eqtype.html#vrefl_rect"><span class="id" title="definition">vrefl_rect</span></a>)<br/> (<span class="id" title="tactic">at</span> <span class="id" title="keyword">level</span> 0, <span class="id" title="var">format</span> "[ 'sub' 'Type' 'for' v ]") : <span class="id" title="var">form_scope</span>.<br/> <br/> -<span class="id" title="keyword">Notation</span> <a name="bdefe280518135f830e003d53014dbda"><span class="id" title="notation">"</span></a>[ 'subType' 'for' v 'by' rec ]" := (<a class="idref" href="mathcomp.ssreflect.eqtype.html#SubType"><span class="id" title="constructor">SubType</span></a> <span class="id" title="var">_</span> <span class="id" title="var">v</span> <span class="id" title="var">_</span> <span class="id" title="keyword">rec</span> <a class="idref" href="mathcomp.ssreflect.eqtype.html#vrefl"><span class="id" title="lemma">vrefl</span></a>)<br/> +<span class="id" title="keyword">Notation</span> <a name="6816a9d742bd5be24f89225b5057f4a1"><span class="id" title="notation">"</span></a>[ 'subType' 'for' v 'by' rec ]" := (<a class="idref" href="mathcomp.ssreflect.eqtype.html#SubType"><span class="id" title="constructor">SubType</span></a> <span class="id" title="var">_</span> <span class="id" title="var">v</span> <span class="id" title="var">_</span> <span class="id" title="keyword">rec</span> <a class="idref" href="mathcomp.ssreflect.eqtype.html#vrefl"><span class="id" title="lemma">vrefl</span></a>)<br/> (<span class="id" title="tactic">at</span> <span class="id" title="keyword">level</span> 0, <span class="id" title="var">format</span> "[ 'subType' 'for' v 'by' rec ]") : <span class="id" title="var">form_scope</span>.<br/> <br/> -<span class="id" title="keyword">Notation</span> <a name="5a1a3176d1f13512b7b2c6b5bfb86f20"><span class="id" title="notation">"</span></a>[ 'subType' 'of' U 'for' v ]" := (<a class="idref" href="mathcomp.ssreflect.eqtype.html#clone_subType"><span class="id" title="definition">clone_subType</span></a> <span class="id" title="var">U</span> <span class="id" title="var">v</span> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#id"><span class="id" title="abbreviation">id</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#idfun"><span class="id" title="abbreviation">idfun</span></a>)<br/> +<span class="id" title="keyword">Notation</span> <a name="21ca200dd009fecf1b5db362f705575c"><span class="id" title="notation">"</span></a>[ 'subType' 'of' U 'for' v ]" := (<a class="idref" href="mathcomp.ssreflect.eqtype.html#clone_subType"><span class="id" title="definition">clone_subType</span></a> <span class="id" title="var">U</span> <span class="id" title="var">v</span> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#id"><span class="id" title="abbreviation">id</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#idfun"><span class="id" title="abbreviation">idfun</span></a>)<br/> (<span class="id" title="tactic">at</span> <span class="id" title="keyword">level</span> 0, <span class="id" title="var">format</span> "[ 'subType' 'of' U 'for' v ]") : <span class="id" title="var">form_scope</span>.<br/> <br/> -</div> - -<div class="doc"> - -<div class="paragraph"> </div> - -Notation " [ 'subType' 'for' v ]" := (clone_subType _ v id idfun) - (at level 0, format " [ 'subType' 'for' v ]") : form_scope. - -</div> -<div class="code"> -<span class="id" title="keyword">Notation</span> <a name="6645671e2203a23d135a621a3cf0157c"><span class="id" title="notation">"</span></a>[ 'subType' 'of' U ]" := (<a class="idref" href="mathcomp.ssreflect.eqtype.html#clone_subType"><span class="id" title="definition">clone_subType</span></a> <span class="id" title="var">U</span> <span class="id" title="var">_</span> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#id"><span class="id" title="abbreviation">id</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#id"><span class="id" title="abbreviation">id</span></a>)<br/> +<span class="id" title="keyword">Notation</span> <a name="aa8c179e7d847b79500c7558a661edb0"><span class="id" title="notation">"</span></a>[ 'subType' 'of' U ]" := (<a class="idref" href="mathcomp.ssreflect.eqtype.html#clone_subType"><span class="id" title="definition">clone_subType</span></a> <span class="id" title="var">U</span> <span class="id" title="var">_</span> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#id"><span class="id" title="abbreviation">id</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#id"><span class="id" title="abbreviation">id</span></a>)<br/> (<span class="id" title="tactic">at</span> <span class="id" title="keyword">level</span> 0, <span class="id" title="var">format</span> "[ 'subType' 'of' U ]") : <span class="id" title="var">form_scope</span>.<br/> <br/> <span class="id" title="keyword">Definition</span> <a name="NewType"><span class="id" title="definition">NewType</span></a> <span class="id" title="var">T</span> <span class="id" title="var">U</span> <span class="id" title="var">v</span> <span class="id" title="var">c</span> <span class="id" title="var">Urec</span> :=<br/> - <span class="id" title="keyword">let</span> <span class="id" title="var">Urec'</span> <span class="id" title="var">P</span> <span class="id" title="var">IH</span> := <a class="idref" href="mathcomp.ssreflect.eqtype.html#Urec"><span class="id" title="variable">Urec</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#P"><span class="id" title="variable">P</span></a> (<span class="id" title="keyword">fun</span> <span class="id" title="var">x</span> : <a class="idref" href="mathcomp.ssreflect.eqtype.html#T"><span class="id" title="variable">T</span></a> ⇒ <a class="idref" href="mathcomp.ssreflect.eqtype.html#IH"><span class="id" title="variable">IH</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#isT"><span class="id" title="definition">isT</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssreflect.html#4509b22bf26e3d6d771897e22bd8bc8f"><span class="id" title="notation">:</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#P"><span class="id" title="variable">P</span></a> <span class="id" title="var">_</span>) <span class="id" title="tactic">in</span><br/> + <span class="id" title="keyword">let</span> <span class="id" title="var">Urec'</span> <span class="id" title="var">P</span> <span class="id" title="var">IH</span> := <a class="idref" href="mathcomp.ssreflect.eqtype.html#Urec"><span class="id" title="variable">Urec</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#P"><span class="id" title="variable">P</span></a> (<span class="id" title="keyword">fun</span> <span class="id" title="var">x</span> : <a class="idref" href="mathcomp.ssreflect.eqtype.html#T"><span class="id" title="variable">T</span></a> ⇒ <a class="idref" href="mathcomp.ssreflect.eqtype.html#IH"><span class="id" title="variable">IH</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#isT"><span class="id" title="definition">isT</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssreflect.html#aed478b27f23b4f753c27c8ac393febc"><span class="id" title="notation">:</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#P"><span class="id" title="variable">P</span></a> <span class="id" title="var">_</span>) <span class="id" title="tactic">in</span><br/> <a class="idref" href="mathcomp.ssreflect.eqtype.html#SubType"><span class="id" title="constructor">SubType</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#U"><span class="id" title="variable">U</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#v"><span class="id" title="variable">v</span></a> (<span class="id" title="keyword">fun</span> <span class="id" title="var">x</span> <span class="id" title="var">_</span> ⇒ <a class="idref" href="mathcomp.ssreflect.eqtype.html#c"><span class="id" title="variable">c</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#x"><span class="id" title="variable">x</span></a>) <a class="idref" href="mathcomp.ssreflect.eqtype.html#Urec'"><span class="id" title="variable">Urec'</span></a>.<br/> <br/> -<span class="id" title="keyword">Notation</span> <a name="d716e206e5129c6b3a60f0f640eaaeb0"><span class="id" title="notation">"</span></a>[ 'newType' 'for' v ]" := (<a class="idref" href="mathcomp.ssreflect.eqtype.html#NewType"><span class="id" title="definition">NewType</span></a> <span class="id" title="var">v</span> <span class="id" title="var">_</span> <a class="idref" href="mathcomp.ssreflect.eqtype.html#inlined_new_rect"><span class="id" title="abbreviation">inlined_new_rect</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#vrefl_rect"><span class="id" title="definition">vrefl_rect</span></a>)<br/> +<span class="id" title="keyword">Notation</span> <a name="685b4c9ab7ccde70d9229dfbdb93d490"><span class="id" title="notation">"</span></a>[ 'newType' 'for' v ]" := (<a class="idref" href="mathcomp.ssreflect.eqtype.html#NewType"><span class="id" title="definition">NewType</span></a> <span class="id" title="var">v</span> <span class="id" title="var">_</span> <a class="idref" href="mathcomp.ssreflect.eqtype.html#inlined_new_rect"><span class="id" title="abbreviation">inlined_new_rect</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#vrefl_rect"><span class="id" title="definition">vrefl_rect</span></a>)<br/> (<span class="id" title="tactic">at</span> <span class="id" title="keyword">level</span> 0, <span class="id" title="var">only</span> <span class="id" title="var">parsing</span>) : <span class="id" title="var">form_scope</span>.<br/> <br/> -<span class="id" title="keyword">Notation</span> <a name="0fd935b7b481d69899ecb2c342d04bc9"><span class="id" title="notation">"</span></a>[ 'new' 'Type' 'for' v ]" := (<a class="idref" href="mathcomp.ssreflect.eqtype.html#NewType"><span class="id" title="definition">NewType</span></a> <span class="id" title="var">v</span> <span class="id" title="var">_</span> <span class="id" title="var">_</span> <a class="idref" href="mathcomp.ssreflect.eqtype.html#vrefl_rect"><span class="id" title="definition">vrefl_rect</span></a>)<br/> +<span class="id" title="keyword">Notation</span> <a name="b66ef7285eb87c629ea2bab869f78a89"><span class="id" title="notation">"</span></a>[ 'new' 'Type' 'for' v ]" := (<a class="idref" href="mathcomp.ssreflect.eqtype.html#NewType"><span class="id" title="definition">NewType</span></a> <span class="id" title="var">v</span> <span class="id" title="var">_</span> <span class="id" title="var">_</span> <a class="idref" href="mathcomp.ssreflect.eqtype.html#vrefl_rect"><span class="id" title="definition">vrefl_rect</span></a>)<br/> (<span class="id" title="tactic">at</span> <span class="id" title="keyword">level</span> 0, <span class="id" title="var">format</span> "[ 'new' 'Type' 'for' v ]") : <span class="id" title="var">form_scope</span>.<br/> <br/> -<span class="id" title="keyword">Notation</span> <a name="bc8a10fee9a569270034af41e71a6ef6"><span class="id" title="notation">"</span></a>[ 'newType' 'for' v 'by' rec ]" := (<a class="idref" href="mathcomp.ssreflect.eqtype.html#NewType"><span class="id" title="definition">NewType</span></a> <span class="id" title="var">v</span> <span class="id" title="var">_</span> <span class="id" title="keyword">rec</span> <a class="idref" href="mathcomp.ssreflect.eqtype.html#vrefl"><span class="id" title="lemma">vrefl</span></a>)<br/> +<span class="id" title="keyword">Notation</span> <a name="8370a508f3db5c047acf32c085ff5822"><span class="id" title="notation">"</span></a>[ 'newType' 'for' v 'by' rec ]" := (<a class="idref" href="mathcomp.ssreflect.eqtype.html#NewType"><span class="id" title="definition">NewType</span></a> <span class="id" title="var">v</span> <span class="id" title="var">_</span> <span class="id" title="keyword">rec</span> <a class="idref" href="mathcomp.ssreflect.eqtype.html#vrefl"><span class="id" title="lemma">vrefl</span></a>)<br/> (<span class="id" title="tactic">at</span> <span class="id" title="keyword">level</span> 0, <span class="id" title="var">format</span> "[ 'newType' 'for' v 'by' rec ]") : <span class="id" title="var">form_scope</span>.<br/> <br/> -<span class="id" title="keyword">Definition</span> <a name="innew"><span class="id" title="definition">innew</span></a> <span class="id" title="var">T</span> <span class="id" title="var">nT</span> <span class="id" title="var">x</span> := @<a class="idref" href="mathcomp.ssreflect.eqtype.html#Sub"><span class="id" title="projection">Sub</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#T"><span class="id" title="variable">T</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#predT"><span class="id" title="definition">predT</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#nT"><span class="id" title="variable">nT</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#x"><span class="id" title="variable">x</span></a> (<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#erefl"><span class="id" title="abbreviation">erefl</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#true"><span class="id" title="constructor">true</span></a>).<br/> +<span class="id" title="keyword">Definition</span> <a name="innew"><span class="id" title="definition">innew</span></a> <span class="id" title="var">T</span> <span class="id" title="var">nT</span> <span class="id" title="var">x</span> := @<a class="idref" href="mathcomp.ssreflect.eqtype.html#Sub"><span class="id" title="projection">Sub</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#T"><span class="id" title="variable">T</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#predT"><span class="id" title="definition">predT</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#nT"><span class="id" title="variable">nT</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#x"><span class="id" title="variable">x</span></a> (<a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#erefl"><span class="id" title="abbreviation">erefl</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Datatypes.html#true"><span class="id" title="constructor">true</span></a>).<br/> <br/> -<span class="id" title="keyword">Lemma</span> <a name="innew_val"><span class="id" title="lemma">innew_val</span></a> <span class="id" title="var">T</span> <span class="id" title="var">nT</span> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#cancel"><span class="id" title="definition">cancel</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#val"><span class="id" title="projection">val</span></a> (@<a class="idref" href="mathcomp.ssreflect.eqtype.html#innew"><span class="id" title="definition">innew</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#T"><span class="id" title="variable">T</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#nT"><span class="id" title="variable">nT</span></a>).<br/> +<span class="id" title="keyword">Lemma</span> <a name="innew_val"><span class="id" title="lemma">innew_val</span></a> <span class="id" title="var">T</span> <span class="id" title="var">nT</span> : <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#cancel"><span class="id" title="definition">cancel</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#val"><span class="id" title="projection">val</span></a> (@<a class="idref" href="mathcomp.ssreflect.eqtype.html#innew"><span class="id" title="definition">innew</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#T"><span class="id" title="variable">T</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#nT"><span class="id" title="variable">nT</span></a>).<br/> <br/> </div> @@ -755,20 +803,20 @@ Notation " [ 'subType' 'for' v ]" := (clone_subType _ v id idfun) Prenex Implicits and renaming. </div> <div class="code"> -<span class="id" title="keyword">Notation</span> <a name="sval"><span class="id" title="abbreviation">sval</span></a> := (@<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Specif.html#proj1_sig"><span class="id" title="definition">proj1_sig</span></a> <span class="id" title="var">_</span> <span class="id" title="var">_</span>).<br/> -<span class="id" title="keyword">Notation</span> <a name="d31b79d69771a17d323737857541bcbd"><span class="id" title="notation">"</span></a>@ 'sval'" := (@<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Specif.html#proj1_sig"><span class="id" title="definition">proj1_sig</span></a>) (<span class="id" title="tactic">at</span> <span class="id" title="keyword">level</span> 10, <span class="id" title="var">format</span> "@ 'sval'").<br/> +<span class="id" title="keyword">Notation</span> <a name="sval"><span class="id" title="abbreviation">sval</span></a> := (@<a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Specif.html#proj1_sig"><span class="id" title="definition">proj1_sig</span></a> <span class="id" title="var">_</span> <span class="id" title="var">_</span>).<br/> +<span class="id" title="keyword">Notation</span> <a name="f3c89e778639306c1d280cb218cd973b"><span class="id" title="notation">"</span></a>@ 'sval'" := (@<a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Specif.html#proj1_sig"><span class="id" title="definition">proj1_sig</span></a>) (<span class="id" title="tactic">at</span> <span class="id" title="keyword">level</span> 10, <span class="id" title="var">format</span> "@ 'sval'").<br/> <br/> <span class="id" title="keyword">Section</span> <a name="SigProj"><span class="id" title="section">SigProj</span></a>.<br/> <br/> -<span class="id" title="keyword">Variables</span> (<a name="SigProj.T"><span class="id" title="variable">T</span></a> : <span class="id" title="keyword">Type</span>) (<a name="SigProj.P"><span class="id" title="variable">P</span></a> <a name="SigProj.Q"><span class="id" title="variable">Q</span></a> : <a class="idref" href="mathcomp.ssreflect.eqtype.html#T"><span class="id" title="variable">T</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <span class="id" title="keyword">Prop</span>).<br/> +<span class="id" title="keyword">Variables</span> (<a name="SigProj.T"><span class="id" title="variable">T</span></a> : <span class="id" title="keyword">Type</span>) (<a name="SigProj.P"><span class="id" title="variable">P</span></a> <a name="SigProj.Q"><span class="id" title="variable">Q</span></a> : <a class="idref" href="mathcomp.ssreflect.eqtype.html#T"><span class="id" title="variable">T</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#1c93e43e07fbeaeb6a625cb6614beb5d"><span class="id" title="notation">→</span></a> <span class="id" title="keyword">Prop</span>).<br/> <br/> -<span class="id" title="keyword">Lemma</span> <a name="svalP"><span class="id" title="lemma">svalP</span></a> : <span class="id" title="keyword">∀</span> <span class="id" title="var">u</span> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Specif.html#sig"><span class="id" title="inductive">sig</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#SigProj.P"><span class="id" title="variable">P</span></a>, <a class="idref" href="mathcomp.ssreflect.eqtype.html#SigProj.P"><span class="id" title="variable">P</span></a> (<a class="idref" href="mathcomp.ssreflect.eqtype.html#sval"><span class="id" title="abbreviation">sval</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#u"><span class="id" title="variable">u</span></a>). <br/> +<span class="id" title="keyword">Lemma</span> <a name="svalP"><span class="id" title="lemma">svalP</span></a> : <span class="id" title="keyword">∀</span> <span class="id" title="var">u</span> : <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Specif.html#sig"><span class="id" title="inductive">sig</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#SigProj.P"><span class="id" title="variable">P</span></a>, <a class="idref" href="mathcomp.ssreflect.eqtype.html#SigProj.P"><span class="id" title="variable">P</span></a> (<a class="idref" href="mathcomp.ssreflect.eqtype.html#sval"><span class="id" title="abbreviation">sval</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#u"><span class="id" title="variable">u</span></a>). <br/> <br/> -<span class="id" title="keyword">Definition</span> <a name="s2val"><span class="id" title="definition">s2val</span></a> (<span class="id" title="var">u</span> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Specif.html#sig2"><span class="id" title="inductive">sig2</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#SigProj.P"><span class="id" title="variable">P</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#SigProj.Q"><span class="id" title="variable">Q</span></a>) := <span class="id" title="keyword">let</span>: <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Specif.html#exist2"><span class="id" title="constructor">exist2</span></a> <span class="id" title="var">x</span> <span class="id" title="var">_</span> <span class="id" title="var">_</span> := <a class="idref" href="mathcomp.ssreflect.eqtype.html#u"><span class="id" title="variable">u</span></a> <span class="id" title="tactic">in</span> <span class="id" title="var">x</span>.<br/> +<span class="id" title="keyword">Definition</span> <a name="s2val"><span class="id" title="definition">s2val</span></a> (<span class="id" title="var">u</span> : <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Specif.html#sig2"><span class="id" title="inductive">sig2</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#SigProj.P"><span class="id" title="variable">P</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#SigProj.Q"><span class="id" title="variable">Q</span></a>) := <span class="id" title="keyword">let</span>: <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Specif.html#exist2"><span class="id" title="constructor">exist2</span></a> <span class="id" title="var">x</span> <span class="id" title="var">_</span> <span class="id" title="var">_</span> := <a class="idref" href="mathcomp.ssreflect.eqtype.html#u"><span class="id" title="variable">u</span></a> <span class="id" title="tactic">in</span> <span class="id" title="var">x</span>.<br/> <br/> <span class="id" title="keyword">Lemma</span> <a name="s2valP"><span class="id" title="lemma">s2valP</span></a> <span class="id" title="var">u</span> : <a class="idref" href="mathcomp.ssreflect.eqtype.html#SigProj.P"><span class="id" title="variable">P</span></a> (<a class="idref" href="mathcomp.ssreflect.eqtype.html#s2val"><span class="id" title="definition">s2val</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#u"><span class="id" title="variable">u</span></a>). <br/> @@ -782,8 +830,8 @@ Notation " [ 'subType' 'for' v ]" := (clone_subType _ v id idfun) <br/> <br/> -<span class="id" title="keyword">Canonical</span> <span class="id" title="var">sig_subType</span> <span class="id" title="var">T</span> (<span class="id" title="var">P</span> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#pred"><span class="id" title="definition">pred</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#T"><span class="id" title="variable">T</span></a>) : <a class="idref" href="mathcomp.ssreflect.eqtype.html#subType"><span class="id" title="record">subType</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#3f6d75f5a9cb81b61e8423a7aac22056"><span class="id" title="notation">[</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#3f6d75f5a9cb81b61e8423a7aac22056"><span class="id" title="notation">eta</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#P"><span class="id" title="variable">P</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#3f6d75f5a9cb81b61e8423a7aac22056"><span class="id" title="notation">]</span></a> :=<br/> - <span class="id" title="keyword">Eval</span> <span class="id" title="tactic">hnf</span> <span class="id" title="tactic">in</span> <a class="idref" href="mathcomp.ssreflect.eqtype.html#341c160c3e7b20d967b85d1852a7f89f"><span class="id" title="notation">[</span></a><a class="idref" href="mathcomp.ssreflect.eqtype.html#341c160c3e7b20d967b85d1852a7f89f"><span class="id" title="notation">subType</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#341c160c3e7b20d967b85d1852a7f89f"><span class="id" title="notation">for</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#d31b79d69771a17d323737857541bcbd"><span class="id" title="notation">@</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#d31b79d69771a17d323737857541bcbd"><span class="id" title="notation">sval</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#d31b79d69771a17d323737857541bcbd"><span class="id" title="notation">T</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#d31b79d69771a17d323737857541bcbd"><span class="id" title="notation">[</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#d31b79d69771a17d323737857541bcbd"><span class="id" title="notation">eta</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#d31b79d69771a17d323737857541bcbd"><span class="id" title="notation">[</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#d31b79d69771a17d323737857541bcbd"><span class="id" title="notation">eta</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#d31b79d69771a17d323737857541bcbd"><span class="id" title="notation">P</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#d31b79d69771a17d323737857541bcbd"><span class="id" title="notation">]]</span></a><a class="idref" href="mathcomp.ssreflect.eqtype.html#341c160c3e7b20d967b85d1852a7f89f"><span class="id" title="notation">]</span></a>.<br/> +<span class="id" title="keyword">Canonical</span> <span class="id" title="var">sig_subType</span> <span class="id" title="var">T</span> (<span class="id" title="var">P</span> : <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#pred"><span class="id" title="definition">pred</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#T"><span class="id" title="variable">T</span></a>) : <a class="idref" href="mathcomp.ssreflect.eqtype.html#subType"><span class="id" title="record">subType</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#20b75710d0541e9ffd06f8e723fd3daf"><span class="id" title="notation">[</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#20b75710d0541e9ffd06f8e723fd3daf"><span class="id" title="notation">eta</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#P"><span class="id" title="variable">P</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#20b75710d0541e9ffd06f8e723fd3daf"><span class="id" title="notation">]</span></a> :=<br/> + <span class="id" title="keyword">Eval</span> <span class="id" title="tactic">hnf</span> <span class="id" title="tactic">in</span> <a class="idref" href="mathcomp.ssreflect.eqtype.html#c2d02b544d823cdc1e1e08de552cdba4"><span class="id" title="notation">[</span></a><a class="idref" href="mathcomp.ssreflect.eqtype.html#c2d02b544d823cdc1e1e08de552cdba4"><span class="id" title="notation">subType</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#c2d02b544d823cdc1e1e08de552cdba4"><span class="id" title="notation">for</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#f3c89e778639306c1d280cb218cd973b"><span class="id" title="notation">@</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#f3c89e778639306c1d280cb218cd973b"><span class="id" title="notation">sval</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#f3c89e778639306c1d280cb218cd973b"><span class="id" title="notation">T</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#f3c89e778639306c1d280cb218cd973b"><span class="id" title="notation">[</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#f3c89e778639306c1d280cb218cd973b"><span class="id" title="notation">eta</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#f3c89e778639306c1d280cb218cd973b"><span class="id" title="notation">[</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#f3c89e778639306c1d280cb218cd973b"><span class="id" title="notation">eta</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#f3c89e778639306c1d280cb218cd973b"><span class="id" title="notation">P</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#f3c89e778639306c1d280cb218cd973b"><span class="id" title="notation">]]</span></a><a class="idref" href="mathcomp.ssreflect.eqtype.html#c2d02b544d823cdc1e1e08de552cdba4"><span class="id" title="notation">]</span></a>.<br/> <br/> </div> @@ -792,9 +840,9 @@ Notation " [ 'subType' 'for' v ]" := (clone_subType _ v id idfun) Shorthand for sigma types over collective predicates. </div> <div class="code"> -<span class="id" title="keyword">Notation</span> <a name="1a455bcaee5ea445f350e97edcdae0a7"><span class="id" title="notation">"</span></a>{ x 'in' A }" := <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Specif.html#5b63cb9ed0fed82566685c66e56592e4"><span class="id" title="notation">{</span></a><span class="id" title="var">x</span> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Specif.html#5b63cb9ed0fed82566685c66e56592e4"><span class="id" title="notation">|</span></a> <span class="id" title="var">x</span> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">\</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">in</span></a> <span class="id" title="var">A</span><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Specif.html#5b63cb9ed0fed82566685c66e56592e4"><span class="id" title="notation">}</span></a><br/> +<span class="id" title="keyword">Notation</span> <a name="e98aa88f00afddb6e33549ebacf144b6"><span class="id" title="notation">"</span></a>{ x 'in' A }" := <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Specif.html#bc4528e836ab0e91ea7e942fb09e898f"><span class="id" title="notation">{</span></a><span class="id" title="var">x</span> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Specif.html#bc4528e836ab0e91ea7e942fb09e898f"><span class="id" title="notation">|</span></a> <span class="id" title="var">x</span> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#b09457274bcb94927e289b8a9e9cd3f7"><span class="id" title="notation">\</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#b09457274bcb94927e289b8a9e9cd3f7"><span class="id" title="notation">in</span></a> <span class="id" title="var">A</span><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Specif.html#bc4528e836ab0e91ea7e942fb09e898f"><span class="id" title="notation">}</span></a><br/> (<span class="id" title="tactic">at</span> <span class="id" title="keyword">level</span> 0, <span class="id" title="var">x</span> <span class="id" title="tactic">at</span> <span class="id" title="keyword">level</span> 99, <span class="id" title="var">format</span> "{ x 'in' A }") : <span class="id" title="var">type_scope</span>.<br/> -<span class="id" title="keyword">Notation</span> <a name="90ff5fc7f9623a792138a168eb90e748"><span class="id" title="notation">"</span></a>{ x 'in' A | P }" := <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Specif.html#5b63cb9ed0fed82566685c66e56592e4"><span class="id" title="notation">{</span></a><span class="id" title="var">x</span> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Specif.html#5b63cb9ed0fed82566685c66e56592e4"><span class="id" title="notation">|</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#49ac24efa716d8b0ee8943bc1d1769a9"><span class="id" title="notation">(</span></a><span class="id" title="var">x</span> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">\</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">in</span></a> <span class="id" title="var">A</span><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#49ac24efa716d8b0ee8943bc1d1769a9"><span class="id" title="notation">)</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#49ac24efa716d8b0ee8943bc1d1769a9"><span class="id" title="notation">&&</span></a> <span class="id" title="var">P</span><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Specif.html#5b63cb9ed0fed82566685c66e56592e4"><span class="id" title="notation">}</span></a><br/> +<span class="id" title="keyword">Notation</span> <a name="49593cde2a2e36e935f3d531c7eb6a8f"><span class="id" title="notation">"</span></a>{ x 'in' A | P }" := <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Specif.html#bc4528e836ab0e91ea7e942fb09e898f"><span class="id" title="notation">{</span></a><span class="id" title="var">x</span> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Specif.html#bc4528e836ab0e91ea7e942fb09e898f"><span class="id" title="notation">|</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Datatypes.html#9ddeac0ab66152bd1d64bedb507a795e"><span class="id" title="notation">(</span></a><span class="id" title="var">x</span> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#b09457274bcb94927e289b8a9e9cd3f7"><span class="id" title="notation">\</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#b09457274bcb94927e289b8a9e9cd3f7"><span class="id" title="notation">in</span></a> <span class="id" title="var">A</span><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Datatypes.html#9ddeac0ab66152bd1d64bedb507a795e"><span class="id" title="notation">)</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Datatypes.html#9ddeac0ab66152bd1d64bedb507a795e"><span class="id" title="notation">&&</span></a> <span class="id" title="var">P</span><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Specif.html#bc4528e836ab0e91ea7e942fb09e898f"><span class="id" title="notation">}</span></a><br/> (<span class="id" title="tactic">at</span> <span class="id" title="keyword">level</span> 0, <span class="id" title="var">x</span> <span class="id" title="tactic">at</span> <span class="id" title="keyword">level</span> 99, <span class="id" title="var">format</span> "{ x 'in' A | P }") : <span class="id" title="var">type_scope</span>.<br/> <br/> @@ -804,13 +852,13 @@ Notation " [ 'subType' 'for' v ]" := (clone_subType _ v id idfun) Shorthand for the return type of insub. </div> <div class="code"> -<span class="id" title="keyword">Notation</span> <a name="e96270cc06a082f346fc67858ed5d7e8"><span class="id" title="notation">"</span></a>{ ? x : T | P }" := (<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#option"><span class="id" title="inductive">option</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Specif.html#72ca3fac4636a1b19c963b12162882cf"><span class="id" title="notation">{</span></a><span class="id" title="var">x</span> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Specif.html#72ca3fac4636a1b19c963b12162882cf"><span class="id" title="notation">:</span></a> <span class="id" title="var">T</span> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Specif.html#72ca3fac4636a1b19c963b12162882cf"><span class="id" title="notation">|</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#is_true"><span class="id" title="definition">is_true</span></a> <span class="id" title="var">P</span><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Specif.html#72ca3fac4636a1b19c963b12162882cf"><span class="id" title="notation">}</span></a>)<br/> +<span class="id" title="keyword">Notation</span> <a name="34983ef0d21ba6e4110346a79a5ce395"><span class="id" title="notation">"</span></a>{ ? x : T | P }" := (<a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Datatypes.html#option"><span class="id" title="inductive">option</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Specif.html#6556914db359db999889decec6a4a562"><span class="id" title="notation">{</span></a><span class="id" title="var">x</span> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Specif.html#6556914db359db999889decec6a4a562"><span class="id" title="notation">:</span></a> <span class="id" title="var">T</span> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Specif.html#6556914db359db999889decec6a4a562"><span class="id" title="notation">|</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Datatypes.html#is_true"><span class="id" title="definition">is_true</span></a> <span class="id" title="var">P</span><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Specif.html#6556914db359db999889decec6a4a562"><span class="id" title="notation">}</span></a>)<br/> (<span class="id" title="tactic">at</span> <span class="id" title="keyword">level</span> 0, <span class="id" title="var">x</span> <span class="id" title="tactic">at</span> <span class="id" title="keyword">level</span> 99, <span class="id" title="var">only</span> <span class="id" title="var">parsing</span>) : <span class="id" title="var">type_scope</span>.<br/> -<span class="id" title="keyword">Notation</span> <a name="addfbab002f749a52fe38aa5d236c15e"><span class="id" title="notation">"</span></a>{ ? x | P }" := <a class="idref" href="mathcomp.ssreflect.eqtype.html#e96270cc06a082f346fc67858ed5d7e8"><span class="id" title="notation">{?</span></a> <span class="id" title="var">x</span> <a class="idref" href="mathcomp.ssreflect.eqtype.html#e96270cc06a082f346fc67858ed5d7e8"><span class="id" title="notation">:</span></a> <span class="id" title="var">_</span> <a class="idref" href="mathcomp.ssreflect.eqtype.html#e96270cc06a082f346fc67858ed5d7e8"><span class="id" title="notation">|</span></a> <span class="id" title="var">P</span><a class="idref" href="mathcomp.ssreflect.eqtype.html#e96270cc06a082f346fc67858ed5d7e8"><span class="id" title="notation">}</span></a><br/> +<span class="id" title="keyword">Notation</span> <a name="ffdab75dfbdeb52617eb82d58d4bcb84"><span class="id" title="notation">"</span></a>{ ? x | P }" := <a class="idref" href="mathcomp.ssreflect.eqtype.html#34983ef0d21ba6e4110346a79a5ce395"><span class="id" title="notation">{?</span></a> <span class="id" title="var">x</span> <a class="idref" href="mathcomp.ssreflect.eqtype.html#34983ef0d21ba6e4110346a79a5ce395"><span class="id" title="notation">:</span></a> <span class="id" title="var">_</span> <a class="idref" href="mathcomp.ssreflect.eqtype.html#34983ef0d21ba6e4110346a79a5ce395"><span class="id" title="notation">|</span></a> <span class="id" title="var">P</span><a class="idref" href="mathcomp.ssreflect.eqtype.html#34983ef0d21ba6e4110346a79a5ce395"><span class="id" title="notation">}</span></a><br/> (<span class="id" title="tactic">at</span> <span class="id" title="keyword">level</span> 0, <span class="id" title="var">x</span> <span class="id" title="tactic">at</span> <span class="id" title="keyword">level</span> 99, <span class="id" title="var">format</span> "{ ? x | P }") : <span class="id" title="var">type_scope</span>.<br/> -<span class="id" title="keyword">Notation</span> <a name="46be042940e532a3ee150602e617da0f"><span class="id" title="notation">"</span></a>{ ? x 'in' A }" := <a class="idref" href="mathcomp.ssreflect.eqtype.html#addfbab002f749a52fe38aa5d236c15e"><span class="id" title="notation">{?</span></a> <span class="id" title="var">x</span> <a class="idref" href="mathcomp.ssreflect.eqtype.html#addfbab002f749a52fe38aa5d236c15e"><span class="id" title="notation">|</span></a> <span class="id" title="var">x</span> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">\</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">in</span></a> <span class="id" title="var">A</span><a class="idref" href="mathcomp.ssreflect.eqtype.html#addfbab002f749a52fe38aa5d236c15e"><span class="id" title="notation">}</span></a><br/> +<span class="id" title="keyword">Notation</span> <a name="1f558f9fc52824db6158804c33a6a103"><span class="id" title="notation">"</span></a>{ ? x 'in' A }" := <a class="idref" href="mathcomp.ssreflect.eqtype.html#ffdab75dfbdeb52617eb82d58d4bcb84"><span class="id" title="notation">{?</span></a> <span class="id" title="var">x</span> <a class="idref" href="mathcomp.ssreflect.eqtype.html#ffdab75dfbdeb52617eb82d58d4bcb84"><span class="id" title="notation">|</span></a> <span class="id" title="var">x</span> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#b09457274bcb94927e289b8a9e9cd3f7"><span class="id" title="notation">\</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#b09457274bcb94927e289b8a9e9cd3f7"><span class="id" title="notation">in</span></a> <span class="id" title="var">A</span><a class="idref" href="mathcomp.ssreflect.eqtype.html#ffdab75dfbdeb52617eb82d58d4bcb84"><span class="id" title="notation">}</span></a><br/> (<span class="id" title="tactic">at</span> <span class="id" title="keyword">level</span> 0, <span class="id" title="var">x</span> <span class="id" title="tactic">at</span> <span class="id" title="keyword">level</span> 99, <span class="id" title="var">format</span> "{ ? x 'in' A }") : <span class="id" title="var">type_scope</span>.<br/> -<span class="id" title="keyword">Notation</span> <a name="0c327e4c7a0e26b1f0e239d4b8334a50"><span class="id" title="notation">"</span></a>{ ? x 'in' A | P }" := <a class="idref" href="mathcomp.ssreflect.eqtype.html#addfbab002f749a52fe38aa5d236c15e"><span class="id" title="notation">{?</span></a> <span class="id" title="var">x</span> <a class="idref" href="mathcomp.ssreflect.eqtype.html#addfbab002f749a52fe38aa5d236c15e"><span class="id" title="notation">|</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#49ac24efa716d8b0ee8943bc1d1769a9"><span class="id" title="notation">(</span></a><span class="id" title="var">x</span> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">\</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">in</span></a> <span class="id" title="var">A</span><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#49ac24efa716d8b0ee8943bc1d1769a9"><span class="id" title="notation">)</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#49ac24efa716d8b0ee8943bc1d1769a9"><span class="id" title="notation">&&</span></a> <span class="id" title="var">P</span><a class="idref" href="mathcomp.ssreflect.eqtype.html#addfbab002f749a52fe38aa5d236c15e"><span class="id" title="notation">}</span></a><br/> +<span class="id" title="keyword">Notation</span> <a name="64c498cc5bb3de4f2bd3e3ddfd57b033"><span class="id" title="notation">"</span></a>{ ? x 'in' A | P }" := <a class="idref" href="mathcomp.ssreflect.eqtype.html#ffdab75dfbdeb52617eb82d58d4bcb84"><span class="id" title="notation">{?</span></a> <span class="id" title="var">x</span> <a class="idref" href="mathcomp.ssreflect.eqtype.html#ffdab75dfbdeb52617eb82d58d4bcb84"><span class="id" title="notation">|</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Datatypes.html#9ddeac0ab66152bd1d64bedb507a795e"><span class="id" title="notation">(</span></a><span class="id" title="var">x</span> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#b09457274bcb94927e289b8a9e9cd3f7"><span class="id" title="notation">\</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#b09457274bcb94927e289b8a9e9cd3f7"><span class="id" title="notation">in</span></a> <span class="id" title="var">A</span><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Datatypes.html#9ddeac0ab66152bd1d64bedb507a795e"><span class="id" title="notation">)</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Datatypes.html#9ddeac0ab66152bd1d64bedb507a795e"><span class="id" title="notation">&&</span></a> <span class="id" title="var">P</span><a class="idref" href="mathcomp.ssreflect.eqtype.html#ffdab75dfbdeb52617eb82d58d4bcb84"><span class="id" title="notation">}</span></a><br/> (<span class="id" title="tactic">at</span> <span class="id" title="keyword">level</span> 0, <span class="id" title="var">x</span> <span class="id" title="tactic">at</span> <span class="id" title="keyword">level</span> 99, <span class="id" title="var">format</span> "{ ? x 'in' A | P }") : <span class="id" title="var">type_scope</span>.<br/> <br/> @@ -821,8 +869,8 @@ Notation " [ 'subType' 'for' v ]" := (clone_subType _ v id idfun) from the membership proof for the default value. </div> <div class="code"> -<span class="id" title="keyword">Definition</span> <a name="insigd"><span class="id" title="definition">insigd</span></a> <span class="id" title="var">T</span> (<span class="id" title="var">A</span> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#mem_pred"><span class="id" title="inductive">mem_pred</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#T"><span class="id" title="variable">T</span></a>) <span class="id" title="var">x</span> (<span class="id" title="var">Ax</span> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#in_mem"><span class="id" title="definition">in_mem</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#A"><span class="id" title="variable">A</span></a>) :=<br/> - <a class="idref" href="mathcomp.ssreflect.eqtype.html#insubd"><span class="id" title="definition">insubd</span></a> (<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Specif.html#exist"><span class="id" title="constructor">exist</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#3f6d75f5a9cb81b61e8423a7aac22056"><span class="id" title="notation">[</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#3f6d75f5a9cb81b61e8423a7aac22056"><span class="id" title="notation">eta</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#A"><span class="id" title="variable">A</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#3f6d75f5a9cb81b61e8423a7aac22056"><span class="id" title="notation">]</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#Ax"><span class="id" title="variable">Ax</span></a>).<br/> +<span class="id" title="keyword">Definition</span> <a name="insigd"><span class="id" title="definition">insigd</span></a> <span class="id" title="var">T</span> (<span class="id" title="var">A</span> : <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#mem_pred"><span class="id" title="inductive">mem_pred</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#T"><span class="id" title="variable">T</span></a>) <span class="id" title="var">x</span> (<span class="id" title="var">Ax</span> : <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#in_mem"><span class="id" title="definition">in_mem</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#A"><span class="id" title="variable">A</span></a>) :=<br/> + <a class="idref" href="mathcomp.ssreflect.eqtype.html#insubd"><span class="id" title="definition">insubd</span></a> (<a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Specif.html#exist"><span class="id" title="constructor">exist</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#20b75710d0541e9ffd06f8e723fd3daf"><span class="id" title="notation">[</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#20b75710d0541e9ffd06f8e723fd3daf"><span class="id" title="notation">eta</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#A"><span class="id" title="variable">A</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#20b75710d0541e9ffd06f8e723fd3daf"><span class="id" title="notation">]</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#Ax"><span class="id" title="variable">Ax</span></a>).<br/> <br/> </div> @@ -839,19 +887,19 @@ Notation " [ 'subType' 'for' v ]" := (clone_subType _ v id idfun) <span class="id" title="keyword">Section</span> <a name="TransferEqType"><span class="id" title="section">TransferEqType</span></a>.<br/> <br/> -<span class="id" title="keyword">Variables</span> (<a name="TransferEqType.T"><span class="id" title="variable">T</span></a> : <span class="id" title="keyword">Type</span>) (<a name="TransferEqType.eT"><span class="id" title="variable">eT</span></a> : <a class="idref" href="mathcomp.ssreflect.eqtype.html#eqType"><span class="id" title="abbreviation">eqType</span></a>) (<a name="TransferEqType.f"><span class="id" title="variable">f</span></a> : <a class="idref" href="mathcomp.ssreflect.eqtype.html#T"><span class="id" title="variable">T</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#eT"><span class="id" title="variable">eT</span></a>).<br/> +<span class="id" title="keyword">Variables</span> (<a name="TransferEqType.T"><span class="id" title="variable">T</span></a> : <span class="id" title="keyword">Type</span>) (<a name="TransferEqType.eT"><span class="id" title="variable">eT</span></a> : <a class="idref" href="mathcomp.ssreflect.eqtype.html#eqType"><span class="id" title="abbreviation">eqType</span></a>) (<a name="TransferEqType.f"><span class="id" title="variable">f</span></a> : <a class="idref" href="mathcomp.ssreflect.eqtype.html#T"><span class="id" title="variable">T</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#1c93e43e07fbeaeb6a625cb6614beb5d"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#eT"><span class="id" title="variable">eT</span></a>).<br/> <br/> -<span class="id" title="keyword">Lemma</span> <a name="inj_eqAxiom"><span class="id" title="lemma">inj_eqAxiom</span></a> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#injective"><span class="id" title="definition">injective</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#TransferEqType.f"><span class="id" title="variable">f</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#axiom"><span class="id" title="definition">Equality.axiom</span></a> (<span class="id" title="keyword">fun</span> <span class="id" title="var">x</span> <span class="id" title="var">y</span> ⇒ <a class="idref" href="mathcomp.ssreflect.eqtype.html#TransferEqType.f"><span class="id" title="variable">f</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#17d28d004d0863cb022d4ce832ddaaae"><span class="id" title="notation">==</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#TransferEqType.f"><span class="id" title="variable">f</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#y"><span class="id" title="variable">y</span></a>).<br/> +<span class="id" title="keyword">Lemma</span> <a name="inj_eqAxiom"><span class="id" title="lemma">inj_eqAxiom</span></a> : <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#injective"><span class="id" title="definition">injective</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#TransferEqType.f"><span class="id" title="variable">f</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#1c93e43e07fbeaeb6a625cb6614beb5d"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#axiom"><span class="id" title="definition">Equality.axiom</span></a> (<span class="id" title="keyword">fun</span> <span class="id" title="var">x</span> <span class="id" title="var">y</span> ⇒ <a class="idref" href="mathcomp.ssreflect.eqtype.html#TransferEqType.f"><span class="id" title="variable">f</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#df45e8c2e8370fd4f0f7c4fdaf208180"><span class="id" title="notation">==</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#TransferEqType.f"><span class="id" title="variable">f</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#y"><span class="id" title="variable">y</span></a>).<br/> <br/> <span class="id" title="keyword">Definition</span> <a name="InjEqMixin"><span class="id" title="definition">InjEqMixin</span></a> <span class="id" title="var">f_inj</span> := <a class="idref" href="mathcomp.ssreflect.eqtype.html#EqMixin"><span class="id" title="abbreviation">EqMixin</span></a> (<a class="idref" href="mathcomp.ssreflect.eqtype.html#inj_eqAxiom"><span class="id" title="lemma">inj_eqAxiom</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#f_inj"><span class="id" title="variable">f_inj</span></a>).<br/> <br/> -<span class="id" title="keyword">Definition</span> <a name="PcanEqMixin"><span class="id" title="definition">PcanEqMixin</span></a> <span class="id" title="var">g</span> (<span class="id" title="var">fK</span> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#pcancel"><span class="id" title="definition">pcancel</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#TransferEqType.f"><span class="id" title="variable">f</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#g"><span class="id" title="variable">g</span></a>) := <a class="idref" href="mathcomp.ssreflect.eqtype.html#InjEqMixin"><span class="id" title="definition">InjEqMixin</span></a> (<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#pcan_inj"><span class="id" title="lemma">pcan_inj</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#fK"><span class="id" title="variable">fK</span></a>).<br/> +<span class="id" title="keyword">Definition</span> <a name="PcanEqMixin"><span class="id" title="definition">PcanEqMixin</span></a> <span class="id" title="var">g</span> (<span class="id" title="var">fK</span> : <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#pcancel"><span class="id" title="definition">pcancel</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#TransferEqType.f"><span class="id" title="variable">f</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#g"><span class="id" title="variable">g</span></a>) := <a class="idref" href="mathcomp.ssreflect.eqtype.html#InjEqMixin"><span class="id" title="definition">InjEqMixin</span></a> (<a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#pcan_inj"><span class="id" title="lemma">pcan_inj</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#fK"><span class="id" title="variable">fK</span></a>).<br/> <br/> -<span class="id" title="keyword">Definition</span> <a name="CanEqMixin"><span class="id" title="definition">CanEqMixin</span></a> <span class="id" title="var">g</span> (<span class="id" title="var">fK</span> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#cancel"><span class="id" title="definition">cancel</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#TransferEqType.f"><span class="id" title="variable">f</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#g"><span class="id" title="variable">g</span></a>) := <a class="idref" href="mathcomp.ssreflect.eqtype.html#InjEqMixin"><span class="id" title="definition">InjEqMixin</span></a> (<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#can_inj"><span class="id" title="lemma">can_inj</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#fK"><span class="id" title="variable">fK</span></a>).<br/> +<span class="id" title="keyword">Definition</span> <a name="CanEqMixin"><span class="id" title="definition">CanEqMixin</span></a> <span class="id" title="var">g</span> (<span class="id" title="var">fK</span> : <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#cancel"><span class="id" title="definition">cancel</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#TransferEqType.f"><span class="id" title="variable">f</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#g"><span class="id" title="variable">g</span></a>) := <a class="idref" href="mathcomp.ssreflect.eqtype.html#InjEqMixin"><span class="id" title="definition">InjEqMixin</span></a> (<a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#can_inj"><span class="id" title="lemma">can_inj</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#fK"><span class="id" title="variable">fK</span></a>).<br/> <br/> <span class="id" title="keyword">End</span> <a class="idref" href="mathcomp.ssreflect.eqtype.html#TransferEqType"><span class="id" title="section">TransferEqType</span></a>.<br/> @@ -860,7 +908,7 @@ Notation " [ 'subType' 'for' v ]" := (clone_subType _ v id idfun) <span class="id" title="keyword">Section</span> <a name="SubEqType"><span class="id" title="section">SubEqType</span></a>.<br/> <br/> -<span class="id" title="keyword">Variables</span> (<a name="SubEqType.T"><span class="id" title="variable">T</span></a> : <a class="idref" href="mathcomp.ssreflect.eqtype.html#eqType"><span class="id" title="abbreviation">eqType</span></a>) (<a name="SubEqType.P"><span class="id" title="variable">P</span></a> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#pred"><span class="id" title="definition">pred</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#T"><span class="id" title="variable">T</span></a>) (<a name="SubEqType.sT"><span class="id" title="variable">sT</span></a> : <a class="idref" href="mathcomp.ssreflect.eqtype.html#subType"><span class="id" title="record">subType</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#P"><span class="id" title="variable">P</span></a>).<br/> +<span class="id" title="keyword">Variables</span> (<a name="SubEqType.T"><span class="id" title="variable">T</span></a> : <a class="idref" href="mathcomp.ssreflect.eqtype.html#eqType"><span class="id" title="abbreviation">eqType</span></a>) (<a name="SubEqType.P"><span class="id" title="variable">P</span></a> : <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#pred"><span class="id" title="definition">pred</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#T"><span class="id" title="variable">T</span></a>) (<a name="SubEqType.sT"><span class="id" title="variable">sT</span></a> : <a class="idref" href="mathcomp.ssreflect.eqtype.html#subType"><span class="id" title="record">subType</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#P"><span class="id" title="variable">P</span></a>).<br/> <br/> <span class="id" title="keyword">Lemma</span> <a name="val_eqP"><span class="id" title="lemma">val_eqP</span></a> : <a class="idref" href="mathcomp.ssreflect.eqtype.html#ev_ax"><span class="id" title="abbreviation">ev_ax</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#SubEqType.sT"><span class="id" title="variable">sT</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#val"><span class="id" title="projection">val</span></a>. <br/> @@ -872,12 +920,12 @@ Notation " [ 'subType' 'for' v ]" := (clone_subType _ v id idfun) <br/> <span class="id" title="keyword">Definition</span> <a name="SubEqMixin"><span class="id" title="definition">SubEqMixin</span></a> :=<br/> (<span class="id" title="keyword">let</span>: <a class="idref" href="mathcomp.ssreflect.eqtype.html#SubType"><span class="id" title="constructor">SubType</span></a> <span class="id" title="var">_</span> <span class="id" title="var">v</span> <span class="id" title="var">_</span> <span class="id" title="var">_</span> <span class="id" title="var">_</span> <span class="id" title="keyword">as</span> <span class="id" title="var">sT'</span> := <a class="idref" href="mathcomp.ssreflect.eqtype.html#SubEqType.sT"><span class="id" title="variable">sT</span></a><br/> - <span class="id" title="keyword">return</span> <a class="idref" href="mathcomp.ssreflect.eqtype.html#ev_ax"><span class="id" title="abbreviation">ev_ax</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#sT'"><span class="id" title="variable">sT'</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#val"><span class="id" title="projection">val</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#class_of"><span class="id" title="abbreviation">Equality.class_of</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#sT'"><span class="id" title="variable">sT'</span></a> <span class="id" title="tactic">in</span><br/> + <span class="id" title="keyword">return</span> <a class="idref" href="mathcomp.ssreflect.eqtype.html#ev_ax"><span class="id" title="abbreviation">ev_ax</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#sT'"><span class="id" title="variable">sT'</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#val"><span class="id" title="projection">val</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#1c93e43e07fbeaeb6a625cb6614beb5d"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#class_of"><span class="id" title="abbreviation">Equality.class_of</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#sT'"><span class="id" title="variable">sT'</span></a> <span class="id" title="tactic">in</span><br/> <span class="id" title="keyword">fun</span> <span class="id" title="var">vP</span> : <a class="idref" href="mathcomp.ssreflect.eqtype.html#ev_ax"><span class="id" title="abbreviation">ev_ax</span></a> <span class="id" title="var">_</span> <span class="id" title="var">v</span> ⇒ <a class="idref" href="mathcomp.ssreflect.eqtype.html#EqMixin"><span class="id" title="abbreviation">EqMixin</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#vP"><span class="id" title="variable">vP</span></a><br/> ) <a class="idref" href="mathcomp.ssreflect.eqtype.html#val_eqP"><span class="id" title="lemma">val_eqP</span></a>.<br/> <br/> -<span class="id" title="keyword">Lemma</span> <a name="val_eqE"><span class="id" title="lemma">val_eqE</span></a> (<span class="id" title="var">u</span> <span class="id" title="var">v</span> : <a class="idref" href="mathcomp.ssreflect.eqtype.html#SubEqType.sT"><span class="id" title="variable">sT</span></a>) : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.ssreflect.eqtype.html#val"><span class="id" title="projection">val</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#u"><span class="id" title="variable">u</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#17d28d004d0863cb022d4ce832ddaaae"><span class="id" title="notation">==</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#val"><span class="id" title="projection">val</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#v"><span class="id" title="variable">v</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">)</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.ssreflect.eqtype.html#u"><span class="id" title="variable">u</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#17d28d004d0863cb022d4ce832ddaaae"><span class="id" title="notation">==</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#v"><span class="id" title="variable">v</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">)</span></a>.<br/> +<span class="id" title="keyword">Lemma</span> <a name="val_eqE"><span class="id" title="lemma">val_eqE</span></a> (<span class="id" title="var">u</span> <span class="id" title="var">v</span> : <a class="idref" href="mathcomp.ssreflect.eqtype.html#SubEqType.sT"><span class="id" title="variable">sT</span></a>) : <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#6cd0f7b28b6092304087c7049437bb1a"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.ssreflect.eqtype.html#val"><span class="id" title="projection">val</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#u"><span class="id" title="variable">u</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#df45e8c2e8370fd4f0f7c4fdaf208180"><span class="id" title="notation">==</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#val"><span class="id" title="projection">val</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#v"><span class="id" title="variable">v</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#6cd0f7b28b6092304087c7049437bb1a"><span class="id" title="notation">)</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#6cd0f7b28b6092304087c7049437bb1a"><span class="id" title="notation">=</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#6cd0f7b28b6092304087c7049437bb1a"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.ssreflect.eqtype.html#u"><span class="id" title="variable">u</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#df45e8c2e8370fd4f0f7c4fdaf208180"><span class="id" title="notation">==</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#v"><span class="id" title="variable">v</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#6cd0f7b28b6092304087c7049437bb1a"><span class="id" title="notation">)</span></a>.<br/> <br/> <span class="id" title="keyword">End</span> <a class="idref" href="mathcomp.ssreflect.eqtype.html#SubEqType"><span class="id" title="section">SubEqType</span></a>.<br/> @@ -885,18 +933,18 @@ Notation " [ 'subType' 'for' v ]" := (clone_subType _ v id idfun) <br/> <br/> -<span class="id" title="keyword">Notation</span> <a name="4bc2d2dce12edef0fb9c71d4a902ae5d"><span class="id" title="notation">"</span></a>[ 'eqMixin' 'of' T 'by' <: ]" := (<a class="idref" href="mathcomp.ssreflect.eqtype.html#SubEqMixin"><span class="id" title="definition">SubEqMixin</span></a> <span class="id" title="var">_</span> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssreflect.html#4509b22bf26e3d6d771897e22bd8bc8f"><span class="id" title="notation">:</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#class_of"><span class="id" title="abbreviation">Equality.class_of</span></a> <span class="id" title="var">T</span>)<br/> +<span class="id" title="keyword">Notation</span> <a name="b361a0fe0b43cea5c506ee5eccc55542"><span class="id" title="notation">"</span></a>[ 'eqMixin' 'of' T 'by' <: ]" := (<a class="idref" href="mathcomp.ssreflect.eqtype.html#SubEqMixin"><span class="id" title="definition">SubEqMixin</span></a> <span class="id" title="var">_</span> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssreflect.html#aed478b27f23b4f753c27c8ac393febc"><span class="id" title="notation">:</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#class_of"><span class="id" title="abbreviation">Equality.class_of</span></a> <span class="id" title="var">T</span>)<br/> (<span class="id" title="tactic">at</span> <span class="id" title="keyword">level</span> 0, <span class="id" title="var">format</span> "[ 'eqMixin' 'of' T 'by' <: ]") : <span class="id" title="var">form_scope</span>.<br/> <br/> <span class="id" title="keyword">Section</span> <a name="SigEqType"><span class="id" title="section">SigEqType</span></a>.<br/> <br/> -<span class="id" title="keyword">Variables</span> (<a name="SigEqType.T"><span class="id" title="variable">T</span></a> : <a class="idref" href="mathcomp.ssreflect.eqtype.html#eqType"><span class="id" title="abbreviation">eqType</span></a>) (<a name="SigEqType.P"><span class="id" title="variable">P</span></a> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#pred"><span class="id" title="definition">pred</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#T"><span class="id" title="variable">T</span></a>).<br/> +<span class="id" title="keyword">Variables</span> (<a name="SigEqType.T"><span class="id" title="variable">T</span></a> : <a class="idref" href="mathcomp.ssreflect.eqtype.html#eqType"><span class="id" title="abbreviation">eqType</span></a>) (<a name="SigEqType.P"><span class="id" title="variable">P</span></a> : <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#pred"><span class="id" title="definition">pred</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#T"><span class="id" title="variable">T</span></a>).<br/> <br/> -<span class="id" title="keyword">Definition</span> <a name="sig_eqMixin"><span class="id" title="definition">sig_eqMixin</span></a> := <span class="id" title="keyword">Eval</span> <span class="id" title="tactic">hnf</span> <span class="id" title="tactic">in</span> <a class="idref" href="mathcomp.ssreflect.eqtype.html#4bc2d2dce12edef0fb9c71d4a902ae5d"><span class="id" title="notation">[</span></a><a class="idref" href="mathcomp.ssreflect.eqtype.html#4bc2d2dce12edef0fb9c71d4a902ae5d"><span class="id" title="notation">eqMixin</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#4bc2d2dce12edef0fb9c71d4a902ae5d"><span class="id" title="notation">of</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Specif.html#5b63cb9ed0fed82566685c66e56592e4"><span class="id" title="notation">{</span></a><span class="id" title="var">x</span> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Specif.html#5b63cb9ed0fed82566685c66e56592e4"><span class="id" title="notation">|</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#SigEqType.P"><span class="id" title="variable">P</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#x"><span class="id" title="variable">x</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Specif.html#5b63cb9ed0fed82566685c66e56592e4"><span class="id" title="notation">}</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#4bc2d2dce12edef0fb9c71d4a902ae5d"><span class="id" title="notation">by</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#4bc2d2dce12edef0fb9c71d4a902ae5d"><span class="id" title="notation"><:]</span></a>.<br/> -<span class="id" title="keyword">Canonical</span> <span class="id" title="var">sig_eqType</span> := <span class="id" title="keyword">Eval</span> <span class="id" title="tactic">hnf</span> <span class="id" title="tactic">in</span> <a class="idref" href="mathcomp.ssreflect.eqtype.html#EqType"><span class="id" title="abbreviation">EqType</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Specif.html#5b63cb9ed0fed82566685c66e56592e4"><span class="id" title="notation">{</span></a><span class="id" title="var">x</span> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Specif.html#5b63cb9ed0fed82566685c66e56592e4"><span class="id" title="notation">|</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#SigEqType.P"><span class="id" title="variable">P</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#x"><span class="id" title="variable">x</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Specif.html#5b63cb9ed0fed82566685c66e56592e4"><span class="id" title="notation">}</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#sig_eqMixin"><span class="id" title="definition">sig_eqMixin</span></a>.<br/> +<span class="id" title="keyword">Definition</span> <a name="sig_eqMixin"><span class="id" title="definition">sig_eqMixin</span></a> := <span class="id" title="keyword">Eval</span> <span class="id" title="tactic">hnf</span> <span class="id" title="tactic">in</span> <a class="idref" href="mathcomp.ssreflect.eqtype.html#b361a0fe0b43cea5c506ee5eccc55542"><span class="id" title="notation">[</span></a><a class="idref" href="mathcomp.ssreflect.eqtype.html#b361a0fe0b43cea5c506ee5eccc55542"><span class="id" title="notation">eqMixin</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#b361a0fe0b43cea5c506ee5eccc55542"><span class="id" title="notation">of</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Specif.html#bc4528e836ab0e91ea7e942fb09e898f"><span class="id" title="notation">{</span></a><span class="id" title="var">x</span> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Specif.html#bc4528e836ab0e91ea7e942fb09e898f"><span class="id" title="notation">|</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#SigEqType.P"><span class="id" title="variable">P</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#x"><span class="id" title="variable">x</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Specif.html#bc4528e836ab0e91ea7e942fb09e898f"><span class="id" title="notation">}</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#b361a0fe0b43cea5c506ee5eccc55542"><span class="id" title="notation">by</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#b361a0fe0b43cea5c506ee5eccc55542"><span class="id" title="notation"><:]</span></a>.<br/> +<span class="id" title="keyword">Canonical</span> <span class="id" title="var">sig_eqType</span> := <span class="id" title="keyword">Eval</span> <span class="id" title="tactic">hnf</span> <span class="id" title="tactic">in</span> <a class="idref" href="mathcomp.ssreflect.eqtype.html#EqType"><span class="id" title="abbreviation">EqType</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Specif.html#bc4528e836ab0e91ea7e942fb09e898f"><span class="id" title="notation">{</span></a><span class="id" title="var">x</span> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Specif.html#bc4528e836ab0e91ea7e942fb09e898f"><span class="id" title="notation">|</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#SigEqType.P"><span class="id" title="variable">P</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#x"><span class="id" title="variable">x</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Specif.html#bc4528e836ab0e91ea7e942fb09e898f"><span class="id" title="notation">}</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#sig_eqMixin"><span class="id" title="definition">sig_eqMixin</span></a>.<br/> <br/> <span class="id" title="keyword">End</span> <a class="idref" href="mathcomp.ssreflect.eqtype.html#SigEqType"><span class="id" title="section">SigEqType</span></a>.<br/> @@ -908,27 +956,27 @@ Notation " [ 'subType' 'for' v ]" := (clone_subType _ v id idfun) <span class="id" title="keyword">Variable</span> <a name="ProdEqType.T1"><span class="id" title="variable">T1</span></a> <a name="ProdEqType.T2"><span class="id" title="variable">T2</span></a> : <a class="idref" href="mathcomp.ssreflect.eqtype.html#eqType"><span class="id" title="abbreviation">eqType</span></a>.<br/> <br/> -<span class="id" title="keyword">Definition</span> <a name="pair_eq"><span class="id" title="definition">pair_eq</span></a> := <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#a3fa885266d530b93c1b9f67891df8e8"><span class="id" title="notation">[</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#a3fa885266d530b93c1b9f67891df8e8"><span class="id" title="notation">rel</span></a> <span class="id" title="var">u</span> <span class="id" title="var">v</span> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#a3fa885266d530b93c1b9f67891df8e8"><span class="id" title="notation">:</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#ProdEqType.T1"><span class="id" title="variable">T1</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#d19c7eafd0e2d195d10df94b392087b5"><span class="id" title="notation">×</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#ProdEqType.T2"><span class="id" title="variable">T2</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#a3fa885266d530b93c1b9f67891df8e8"><span class="id" title="notation">|</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#49ac24efa716d8b0ee8943bc1d1769a9"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.ssreflect.eqtype.html#u"><span class="id" title="variable">u</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#c4877bbfe60d8f22b47ac99ace86216a"><span class="id" title="notation">.1</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#17d28d004d0863cb022d4ce832ddaaae"><span class="id" title="notation">==</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#v"><span class="id" title="variable">v</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#c4877bbfe60d8f22b47ac99ace86216a"><span class="id" title="notation">.1</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#49ac24efa716d8b0ee8943bc1d1769a9"><span class="id" title="notation">)</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#49ac24efa716d8b0ee8943bc1d1769a9"><span class="id" title="notation">&&</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#49ac24efa716d8b0ee8943bc1d1769a9"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.ssreflect.eqtype.html#u"><span class="id" title="variable">u</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#f4827404159513e7fd691b60b7877737"><span class="id" title="notation">.2</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#17d28d004d0863cb022d4ce832ddaaae"><span class="id" title="notation">==</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#v"><span class="id" title="variable">v</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#f4827404159513e7fd691b60b7877737"><span class="id" title="notation">.2</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#49ac24efa716d8b0ee8943bc1d1769a9"><span class="id" title="notation">)</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#a3fa885266d530b93c1b9f67891df8e8"><span class="id" title="notation">]</span></a>.<br/> +<span class="id" title="keyword">Definition</span> <a name="pair_eq"><span class="id" title="definition">pair_eq</span></a> : <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#rel"><span class="id" title="definition">rel</span></a> (<a class="idref" href="mathcomp.ssreflect.eqtype.html#ProdEqType.T1"><span class="id" title="variable">T1</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Datatypes.html#11c698c8685bb8ab1cf725545c085ac4"><span class="id" title="notation">×</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#ProdEqType.T2"><span class="id" title="variable">T2</span></a>) := <span class="id" title="keyword">fun</span> <span class="id" title="var">u</span> <span class="id" title="var">v</span> ⇒ <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Datatypes.html#9ddeac0ab66152bd1d64bedb507a795e"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.ssreflect.eqtype.html#u"><span class="id" title="variable">u</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#e0817251e7d67ad994b4d9b1aa82a412"><span class="id" title="notation">.1</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#df45e8c2e8370fd4f0f7c4fdaf208180"><span class="id" title="notation">==</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#v"><span class="id" title="variable">v</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#e0817251e7d67ad994b4d9b1aa82a412"><span class="id" title="notation">.1</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Datatypes.html#9ddeac0ab66152bd1d64bedb507a795e"><span class="id" title="notation">)</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Datatypes.html#9ddeac0ab66152bd1d64bedb507a795e"><span class="id" title="notation">&&</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Datatypes.html#9ddeac0ab66152bd1d64bedb507a795e"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.ssreflect.eqtype.html#u"><span class="id" title="variable">u</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#675082cc4d4538da052b547bdc6ea4c9"><span class="id" title="notation">.2</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#df45e8c2e8370fd4f0f7c4fdaf208180"><span class="id" title="notation">==</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#v"><span class="id" title="variable">v</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#675082cc4d4538da052b547bdc6ea4c9"><span class="id" title="notation">.2</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Datatypes.html#9ddeac0ab66152bd1d64bedb507a795e"><span class="id" title="notation">)</span></a>.<br/> <br/> <span class="id" title="keyword">Lemma</span> <a name="pair_eqP"><span class="id" title="lemma">pair_eqP</span></a> : <a class="idref" href="mathcomp.ssreflect.eqtype.html#axiom"><span class="id" title="definition">Equality.axiom</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#pair_eq"><span class="id" title="definition">pair_eq</span></a>.<br/> <br/> -<span class="id" title="keyword">Definition</span> <a name="prod_eqMixin"><span class="id" title="definition">prod_eqMixin</span></a> := <a class="idref" href="mathcomp.ssreflect.eqtype.html#EqMixin"><span class="id" title="abbreviation">EqMixin</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#pair_eqP"><span class="id" title="lemma">pair_eqP</span></a>.<br/> -<span class="id" title="keyword">Canonical</span> <span class="id" title="var">prod_eqType</span> := <span class="id" title="keyword">Eval</span> <span class="id" title="tactic">hnf</span> <span class="id" title="tactic">in</span> <a class="idref" href="mathcomp.ssreflect.eqtype.html#EqType"><span class="id" title="abbreviation">EqType</span></a> (<a class="idref" href="mathcomp.ssreflect.eqtype.html#ProdEqType.T1"><span class="id" title="variable">T1</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#d19c7eafd0e2d195d10df94b392087b5"><span class="id" title="notation">×</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#ProdEqType.T2"><span class="id" title="variable">T2</span></a>) <a class="idref" href="mathcomp.ssreflect.eqtype.html#prod_eqMixin"><span class="id" title="definition">prod_eqMixin</span></a>.<br/> +<span class="id" title="keyword">Canonical</span> <span class="id" title="var">prod_eqMixin</span> := <a class="idref" href="mathcomp.ssreflect.eqtype.html#EqMixin"><span class="id" title="abbreviation">EqMixin</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#pair_eqP"><span class="id" title="lemma">pair_eqP</span></a>.<br/> +<span class="id" title="keyword">Canonical</span> <span class="id" title="var">prod_eqType</span> := <span class="id" title="keyword">Eval</span> <span class="id" title="tactic">hnf</span> <span class="id" title="tactic">in</span> <a class="idref" href="mathcomp.ssreflect.eqtype.html#EqType"><span class="id" title="abbreviation">EqType</span></a> (<a class="idref" href="mathcomp.ssreflect.eqtype.html#ProdEqType.T1"><span class="id" title="variable">T1</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Datatypes.html#11c698c8685bb8ab1cf725545c085ac4"><span class="id" title="notation">×</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#ProdEqType.T2"><span class="id" title="variable">T2</span></a>) <a class="idref" href="mathcomp.ssreflect.eqtype.html#prod_eqMixin"><span class="id" title="definition">prod_eqMixin</span></a>.<br/> <br/> -<span class="id" title="keyword">Lemma</span> <a name="pair_eqE"><span class="id" title="lemma">pair_eqE</span></a> : <a class="idref" href="mathcomp.ssreflect.eqtype.html#pair_eq"><span class="id" title="definition">pair_eq</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#8f9364556521ebb498093f28eea2240f"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#eq_op"><span class="id" title="definition">eq_op</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#8f9364556521ebb498093f28eea2240f"><span class="id" title="notation">:></span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#rel"><span class="id" title="definition">rel</span></a> <span class="id" title="var">_</span>. <br/> +<span class="id" title="keyword">Lemma</span> <a name="pair_eqE"><span class="id" title="lemma">pair_eqE</span></a> : <a class="idref" href="mathcomp.ssreflect.eqtype.html#pair_eq"><span class="id" title="definition">pair_eq</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#b8b2ebc8e1a8b9aa935c0702efb5dccf"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#eq_op"><span class="id" title="definition">eq_op</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#b8b2ebc8e1a8b9aa935c0702efb5dccf"><span class="id" title="notation">:></span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#rel"><span class="id" title="definition">rel</span></a> <span class="id" title="var">_</span>. <br/> <br/> <span class="id" title="keyword">Lemma</span> <a name="xpair_eqE"><span class="id" title="lemma">xpair_eqE</span></a> (<span class="id" title="var">x1</span> <span class="id" title="var">y1</span> : <a class="idref" href="mathcomp.ssreflect.eqtype.html#ProdEqType.T1"><span class="id" title="variable">T1</span></a>) (<span class="id" title="var">x2</span> <span class="id" title="var">y2</span> : <a class="idref" href="mathcomp.ssreflect.eqtype.html#ProdEqType.T2"><span class="id" title="variable">T2</span></a>) :<br/> - <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">(</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#44400027531d4bc3f586a1997dc874c0"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.ssreflect.eqtype.html#x1"><span class="id" title="variable">x1</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#44400027531d4bc3f586a1997dc874c0"><span class="id" title="notation">,</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#x2"><span class="id" title="variable">x2</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#44400027531d4bc3f586a1997dc874c0"><span class="id" title="notation">)</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#17d28d004d0863cb022d4ce832ddaaae"><span class="id" title="notation">==</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#44400027531d4bc3f586a1997dc874c0"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.ssreflect.eqtype.html#y1"><span class="id" title="variable">y1</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#44400027531d4bc3f586a1997dc874c0"><span class="id" title="notation">,</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#y2"><span class="id" title="variable">y2</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#44400027531d4bc3f586a1997dc874c0"><span class="id" title="notation">)</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">)</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">(</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#49ac24efa716d8b0ee8943bc1d1769a9"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.ssreflect.eqtype.html#x1"><span class="id" title="variable">x1</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#17d28d004d0863cb022d4ce832ddaaae"><span class="id" title="notation">==</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#y1"><span class="id" title="variable">y1</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#49ac24efa716d8b0ee8943bc1d1769a9"><span class="id" title="notation">)</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#49ac24efa716d8b0ee8943bc1d1769a9"><span class="id" title="notation">&&</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#49ac24efa716d8b0ee8943bc1d1769a9"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.ssreflect.eqtype.html#x2"><span class="id" title="variable">x2</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#17d28d004d0863cb022d4ce832ddaaae"><span class="id" title="notation">==</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#y2"><span class="id" title="variable">y2</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#49ac24efa716d8b0ee8943bc1d1769a9"><span class="id" title="notation">)</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">)</span></a>.<br/> + <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#6cd0f7b28b6092304087c7049437bb1a"><span class="id" title="notation">(</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Datatypes.html#e6756e10c36f149b18b4a8741ed83079"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.ssreflect.eqtype.html#x1"><span class="id" title="variable">x1</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Datatypes.html#e6756e10c36f149b18b4a8741ed83079"><span class="id" title="notation">,</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#x2"><span class="id" title="variable">x2</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Datatypes.html#e6756e10c36f149b18b4a8741ed83079"><span class="id" title="notation">)</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#df45e8c2e8370fd4f0f7c4fdaf208180"><span class="id" title="notation">==</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Datatypes.html#e6756e10c36f149b18b4a8741ed83079"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.ssreflect.eqtype.html#y1"><span class="id" title="variable">y1</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Datatypes.html#e6756e10c36f149b18b4a8741ed83079"><span class="id" title="notation">,</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#y2"><span class="id" title="variable">y2</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Datatypes.html#e6756e10c36f149b18b4a8741ed83079"><span class="id" title="notation">)</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#6cd0f7b28b6092304087c7049437bb1a"><span class="id" title="notation">)</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#6cd0f7b28b6092304087c7049437bb1a"><span class="id" title="notation">=</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#6cd0f7b28b6092304087c7049437bb1a"><span class="id" title="notation">(</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Datatypes.html#9ddeac0ab66152bd1d64bedb507a795e"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.ssreflect.eqtype.html#x1"><span class="id" title="variable">x1</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#df45e8c2e8370fd4f0f7c4fdaf208180"><span class="id" title="notation">==</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#y1"><span class="id" title="variable">y1</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Datatypes.html#9ddeac0ab66152bd1d64bedb507a795e"><span class="id" title="notation">)</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Datatypes.html#9ddeac0ab66152bd1d64bedb507a795e"><span class="id" title="notation">&&</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Datatypes.html#9ddeac0ab66152bd1d64bedb507a795e"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.ssreflect.eqtype.html#x2"><span class="id" title="variable">x2</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#df45e8c2e8370fd4f0f7c4fdaf208180"><span class="id" title="notation">==</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#y2"><span class="id" title="variable">y2</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Datatypes.html#9ddeac0ab66152bd1d64bedb507a795e"><span class="id" title="notation">)</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#6cd0f7b28b6092304087c7049437bb1a"><span class="id" title="notation">)</span></a>.<br/> <br/> -<span class="id" title="keyword">Lemma</span> <a name="pair_eq1"><span class="id" title="lemma">pair_eq1</span></a> (<span class="id" title="var">u</span> <span class="id" title="var">v</span> : <a class="idref" href="mathcomp.ssreflect.eqtype.html#ProdEqType.T1"><span class="id" title="variable">T1</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#d19c7eafd0e2d195d10df94b392087b5"><span class="id" title="notation">×</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#ProdEqType.T2"><span class="id" title="variable">T2</span></a>) : <a class="idref" href="mathcomp.ssreflect.eqtype.html#u"><span class="id" title="variable">u</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#17d28d004d0863cb022d4ce832ddaaae"><span class="id" title="notation">==</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#v"><span class="id" title="variable">v</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#u"><span class="id" title="variable">u</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#c4877bbfe60d8f22b47ac99ace86216a"><span class="id" title="notation">.1</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#17d28d004d0863cb022d4ce832ddaaae"><span class="id" title="notation">==</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#v"><span class="id" title="variable">v</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#c4877bbfe60d8f22b47ac99ace86216a"><span class="id" title="notation">.1</span></a>.<br/> +<span class="id" title="keyword">Lemma</span> <a name="pair_eq1"><span class="id" title="lemma">pair_eq1</span></a> (<span class="id" title="var">u</span> <span class="id" title="var">v</span> : <a class="idref" href="mathcomp.ssreflect.eqtype.html#ProdEqType.T1"><span class="id" title="variable">T1</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Datatypes.html#11c698c8685bb8ab1cf725545c085ac4"><span class="id" title="notation">×</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#ProdEqType.T2"><span class="id" title="variable">T2</span></a>) : <a class="idref" href="mathcomp.ssreflect.eqtype.html#u"><span class="id" title="variable">u</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#df45e8c2e8370fd4f0f7c4fdaf208180"><span class="id" title="notation">==</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#v"><span class="id" title="variable">v</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#1c93e43e07fbeaeb6a625cb6614beb5d"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#u"><span class="id" title="variable">u</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#e0817251e7d67ad994b4d9b1aa82a412"><span class="id" title="notation">.1</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#df45e8c2e8370fd4f0f7c4fdaf208180"><span class="id" title="notation">==</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#v"><span class="id" title="variable">v</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#e0817251e7d67ad994b4d9b1aa82a412"><span class="id" title="notation">.1</span></a>.<br/> <br/> -<span class="id" title="keyword">Lemma</span> <a name="pair_eq2"><span class="id" title="lemma">pair_eq2</span></a> (<span class="id" title="var">u</span> <span class="id" title="var">v</span> : <a class="idref" href="mathcomp.ssreflect.eqtype.html#ProdEqType.T1"><span class="id" title="variable">T1</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#d19c7eafd0e2d195d10df94b392087b5"><span class="id" title="notation">×</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#ProdEqType.T2"><span class="id" title="variable">T2</span></a>) : <a class="idref" href="mathcomp.ssreflect.eqtype.html#u"><span class="id" title="variable">u</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#17d28d004d0863cb022d4ce832ddaaae"><span class="id" title="notation">==</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#v"><span class="id" title="variable">v</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#u"><span class="id" title="variable">u</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#f4827404159513e7fd691b60b7877737"><span class="id" title="notation">.2</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#17d28d004d0863cb022d4ce832ddaaae"><span class="id" title="notation">==</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#v"><span class="id" title="variable">v</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#f4827404159513e7fd691b60b7877737"><span class="id" title="notation">.2</span></a>.<br/> +<span class="id" title="keyword">Lemma</span> <a name="pair_eq2"><span class="id" title="lemma">pair_eq2</span></a> (<span class="id" title="var">u</span> <span class="id" title="var">v</span> : <a class="idref" href="mathcomp.ssreflect.eqtype.html#ProdEqType.T1"><span class="id" title="variable">T1</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Datatypes.html#11c698c8685bb8ab1cf725545c085ac4"><span class="id" title="notation">×</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#ProdEqType.T2"><span class="id" title="variable">T2</span></a>) : <a class="idref" href="mathcomp.ssreflect.eqtype.html#u"><span class="id" title="variable">u</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#df45e8c2e8370fd4f0f7c4fdaf208180"><span class="id" title="notation">==</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#v"><span class="id" title="variable">v</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#1c93e43e07fbeaeb6a625cb6614beb5d"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#u"><span class="id" title="variable">u</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#675082cc4d4538da052b547bdc6ea4c9"><span class="id" title="notation">.2</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#df45e8c2e8370fd4f0f7c4fdaf208180"><span class="id" title="notation">==</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#v"><span class="id" title="variable">v</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#675082cc4d4538da052b547bdc6ea4c9"><span class="id" title="notation">.2</span></a>.<br/> <br/> <span class="id" title="keyword">End</span> <a class="idref" href="mathcomp.ssreflect.eqtype.html#ProdEqType"><span class="id" title="section">ProdEqType</span></a>.<br/> @@ -936,13 +984,11 @@ Notation " [ 'subType' 'for' v ]" := (clone_subType _ v id idfun) <br/> <br/> +<span class="id" title="keyword">Definition</span> <a name="predX"><span class="id" title="definition">predX</span></a> <span class="id" title="var">T1</span> <span class="id" title="var">T2</span> (<span class="id" title="var">p1</span> : <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#pred"><span class="id" title="definition">pred</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#T1"><span class="id" title="variable">T1</span></a>) (<span class="id" title="var">p2</span> : <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#pred"><span class="id" title="definition">pred</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#T2"><span class="id" title="variable">T2</span></a>) :=<br/> + <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#08a7ed80cdc6170ce1653a381b05d13e"><span class="id" title="notation">[</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#08a7ed80cdc6170ce1653a381b05d13e"><span class="id" title="notation">pred</span></a> <span class="id" title="var">z</span> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#08a7ed80cdc6170ce1653a381b05d13e"><span class="id" title="notation">|</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#p1"><span class="id" title="variable">p1</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#z"><span class="id" title="variable">z</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#e0817251e7d67ad994b4d9b1aa82a412"><span class="id" title="notation">.1</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#08a7ed80cdc6170ce1653a381b05d13e"><span class="id" title="notation">&</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#p2"><span class="id" title="variable">p2</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#z"><span class="id" title="variable">z</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#675082cc4d4538da052b547bdc6ea4c9"><span class="id" title="notation">.2</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#08a7ed80cdc6170ce1653a381b05d13e"><span class="id" title="notation">]</span></a>.<br/> <br/> -<span class="id" title="keyword">Definition</span> <a name="predX"><span class="id" title="definition">predX</span></a> <span class="id" title="var">T1</span> <span class="id" title="var">T2</span> (<span class="id" title="var">p1</span> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#pred"><span class="id" title="definition">pred</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#T1"><span class="id" title="variable">T1</span></a>) (<span class="id" title="var">p2</span> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#pred"><span class="id" title="definition">pred</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#T2"><span class="id" title="variable">T2</span></a>) :=<br/> - <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#b8288f36a4177926116f8c7429ee1d26"><span class="id" title="notation">[</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#b8288f36a4177926116f8c7429ee1d26"><span class="id" title="notation">pred</span></a> <span class="id" title="var">z</span> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#b8288f36a4177926116f8c7429ee1d26"><span class="id" title="notation">|</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#p1"><span class="id" title="variable">p1</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#z"><span class="id" title="variable">z</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#c4877bbfe60d8f22b47ac99ace86216a"><span class="id" title="notation">.1</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#b8288f36a4177926116f8c7429ee1d26"><span class="id" title="notation">&</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#p2"><span class="id" title="variable">p2</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#z"><span class="id" title="variable">z</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#f4827404159513e7fd691b60b7877737"><span class="id" title="notation">.2</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#b8288f36a4177926116f8c7429ee1d26"><span class="id" title="notation">]</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Notation</span> <a name="a4c99a0dbc2a758b24afbd951fc3a580"><span class="id" title="notation">"</span></a>[ 'predX' A1 & A2 ]" := (<a class="idref" href="mathcomp.ssreflect.eqtype.html#predX"><span class="id" title="definition">predX</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#913cf87021a195b218018885aad8c94f"><span class="id" title="notation">[</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#913cf87021a195b218018885aad8c94f"><span class="id" title="notation">mem</span></a> <span class="id" title="var">A1</span><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#913cf87021a195b218018885aad8c94f"><span class="id" title="notation">]</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#913cf87021a195b218018885aad8c94f"><span class="id" title="notation">[</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#913cf87021a195b218018885aad8c94f"><span class="id" title="notation">mem</span></a> <span class="id" title="var">A2</span><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#913cf87021a195b218018885aad8c94f"><span class="id" title="notation">]</span></a>)<br/> +<span class="id" title="keyword">Notation</span> <a name="a3b642bc5072eac3f8d0c73615125d00"><span class="id" title="notation">"</span></a>[ 'predX' A1 & A2 ]" := (<a class="idref" href="mathcomp.ssreflect.eqtype.html#predX"><span class="id" title="definition">predX</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#07a9abf04b9d6303fb5faf2351d2cc43"><span class="id" title="notation">[</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#07a9abf04b9d6303fb5faf2351d2cc43"><span class="id" title="notation">mem</span></a> <span class="id" title="var">A1</span><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#07a9abf04b9d6303fb5faf2351d2cc43"><span class="id" title="notation">]</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#07a9abf04b9d6303fb5faf2351d2cc43"><span class="id" title="notation">[</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#07a9abf04b9d6303fb5faf2351d2cc43"><span class="id" title="notation">mem</span></a> <span class="id" title="var">A2</span><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#07a9abf04b9d6303fb5faf2351d2cc43"><span class="id" title="notation">]</span></a>)<br/> (<span class="id" title="tactic">at</span> <span class="id" title="keyword">level</span> 0, <span class="id" title="var">format</span> "[ 'predX' A1 & A2 ]") : <span class="id" title="var">fun_scope</span>.<br/> <br/> @@ -952,39 +998,36 @@ Notation " [ 'subType' 'for' v ]" := (clone_subType _ v id idfun) <span class="id" title="keyword">Variable</span> <a name="OptionEqType.T"><span class="id" title="variable">T</span></a> : <a class="idref" href="mathcomp.ssreflect.eqtype.html#eqType"><span class="id" title="abbreviation">eqType</span></a>.<br/> <br/> -<span class="id" title="keyword">Definition</span> <a name="opt_eq"><span class="id" title="definition">opt_eq</span></a> (<span class="id" title="var">u</span> <span class="id" title="var">v</span> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#option"><span class="id" title="inductive">option</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#OptionEqType.T"><span class="id" title="variable">T</span></a>) : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#bool"><span class="id" title="inductive">bool</span></a> :=<br/> - <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#oapp"><span class="id" title="abbreviation">oapp</span></a> (<span class="id" title="keyword">fun</span> <span class="id" title="var">x</span> ⇒ <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#oapp"><span class="id" title="abbreviation">oapp</span></a> (<a class="idref" href="mathcomp.ssreflect.eqtype.html#eq_op"><span class="id" title="definition">eq_op</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#x"><span class="id" title="variable">x</span></a>) <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#false"><span class="id" title="constructor">false</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#v"><span class="id" title="variable">v</span></a>) (<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#4b80c70cdb231351c5e129ba61f7f956"><span class="id" title="notation">~~</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#v"><span class="id" title="variable">v</span></a>) <a class="idref" href="mathcomp.ssreflect.eqtype.html#u"><span class="id" title="variable">u</span></a>.<br/> +<span class="id" title="keyword">Definition</span> <a name="opt_eq"><span class="id" title="definition">opt_eq</span></a> (<span class="id" title="var">u</span> <span class="id" title="var">v</span> : <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Datatypes.html#option"><span class="id" title="inductive">option</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#OptionEqType.T"><span class="id" title="variable">T</span></a>) : <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Datatypes.html#bool"><span class="id" title="inductive">bool</span></a> :=<br/> + <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#oapp"><span class="id" title="abbreviation">oapp</span></a> (<span class="id" title="keyword">fun</span> <span class="id" title="var">x</span> ⇒ <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#oapp"><span class="id" title="abbreviation">oapp</span></a> (<a class="idref" href="mathcomp.ssreflect.eqtype.html#eq_op"><span class="id" title="definition">eq_op</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#x"><span class="id" title="variable">x</span></a>) <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Datatypes.html#false"><span class="id" title="constructor">false</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#v"><span class="id" title="variable">v</span></a>) (<a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#b3ebd0deddd84fd60e149cb5ef719351"><span class="id" title="notation">~~</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#v"><span class="id" title="variable">v</span></a>) <a class="idref" href="mathcomp.ssreflect.eqtype.html#u"><span class="id" title="variable">u</span></a>.<br/> <br/> <span class="id" title="keyword">Lemma</span> <a name="opt_eqP"><span class="id" title="lemma">opt_eqP</span></a> : <a class="idref" href="mathcomp.ssreflect.eqtype.html#axiom"><span class="id" title="definition">Equality.axiom</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#opt_eq"><span class="id" title="definition">opt_eq</span></a>.<br/> <br/> <span class="id" title="keyword">Canonical</span> <span class="id" title="var">option_eqMixin</span> := <a class="idref" href="mathcomp.ssreflect.eqtype.html#EqMixin"><span class="id" title="abbreviation">EqMixin</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#opt_eqP"><span class="id" title="lemma">opt_eqP</span></a>.<br/> -<span class="id" title="keyword">Canonical</span> <span class="id" title="var">option_eqType</span> := <span class="id" title="keyword">Eval</span> <span class="id" title="tactic">hnf</span> <span class="id" title="tactic">in</span> <a class="idref" href="mathcomp.ssreflect.eqtype.html#EqType"><span class="id" title="abbreviation">EqType</span></a> (<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#option"><span class="id" title="inductive">option</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#OptionEqType.T"><span class="id" title="variable">T</span></a>) <a class="idref" href="mathcomp.ssreflect.eqtype.html#option_eqMixin"><span class="id" title="definition">option_eqMixin</span></a>.<br/> +<span class="id" title="keyword">Canonical</span> <span class="id" title="var">option_eqType</span> := <span class="id" title="keyword">Eval</span> <span class="id" title="tactic">hnf</span> <span class="id" title="tactic">in</span> <a class="idref" href="mathcomp.ssreflect.eqtype.html#EqType"><span class="id" title="abbreviation">EqType</span></a> (<a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Datatypes.html#option"><span class="id" title="inductive">option</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#OptionEqType.T"><span class="id" title="variable">T</span></a>) <a class="idref" href="mathcomp.ssreflect.eqtype.html#option_eqMixin"><span class="id" title="definition">option_eqMixin</span></a>.<br/> <br/> <span class="id" title="keyword">End</span> <a class="idref" href="mathcomp.ssreflect.eqtype.html#OptionEqType"><span class="id" title="section">OptionEqType</span></a>.<br/> <br/> -<span class="id" title="keyword">Definition</span> <a name="tag"><span class="id" title="definition">tag</span></a> := <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Specif.html#projS1"><span class="id" title="abbreviation">projS1</span></a>.<br/> -<span class="id" title="keyword">Definition</span> <a name="tagged"><span class="id" title="definition">tagged</span></a> <span class="id" title="var">I</span> <span class="id" title="var">T_</span> : <span class="id" title="keyword">∀</span> <span class="id" title="var">u</span>, <a class="idref" href="mathcomp.ssreflect.eqtype.html#T_"><span class="id" title="variable">T_</span></a>(<a class="idref" href="mathcomp.ssreflect.eqtype.html#tag"><span class="id" title="definition">tag</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#u"><span class="id" title="variable">u</span></a>) := @<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Specif.html#projS2"><span class="id" title="abbreviation">projS2</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#I"><span class="id" title="variable">I</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#3f6d75f5a9cb81b61e8423a7aac22056"><span class="id" title="notation">[</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#3f6d75f5a9cb81b61e8423a7aac22056"><span class="id" title="notation">eta</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#T_"><span class="id" title="variable">T_</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#3f6d75f5a9cb81b61e8423a7aac22056"><span class="id" title="notation">]</span></a>.<br/> -<span class="id" title="keyword">Definition</span> <a name="Tagged"><span class="id" title="definition">Tagged</span></a> <span class="id" title="var">I</span> <span class="id" title="var">i</span> <span class="id" title="var">T_</span> <span class="id" title="var">x</span> := @<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Specif.html#existS"><span class="id" title="abbreviation">existS</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#I"><span class="id" title="variable">I</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#3f6d75f5a9cb81b61e8423a7aac22056"><span class="id" title="notation">[</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#3f6d75f5a9cb81b61e8423a7aac22056"><span class="id" title="notation">eta</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#T_"><span class="id" title="variable">T_</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#3f6d75f5a9cb81b61e8423a7aac22056"><span class="id" title="notation">]</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#i"><span class="id" title="variable">i</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#x"><span class="id" title="variable">x</span></a>.<br/> <br/> <span class="id" title="keyword">Section</span> <a name="TaggedAs"><span class="id" title="section">TaggedAs</span></a>.<br/> <br/> -<span class="id" title="keyword">Variables</span> (<a name="TaggedAs.I"><span class="id" title="variable">I</span></a> : <a class="idref" href="mathcomp.ssreflect.eqtype.html#eqType"><span class="id" title="abbreviation">eqType</span></a>) (<a name="TaggedAs.T_"><span class="id" title="variable">T_</span></a> : <a class="idref" href="mathcomp.ssreflect.eqtype.html#I"><span class="id" title="variable">I</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <span class="id" title="keyword">Type</span>).<br/> -<span class="id" title="keyword">Implicit</span> <span class="id" title="keyword">Types</span> <span class="id" title="var">u</span> <span class="id" title="var">v</span> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Specif.html#50b5d8dd6be4fba768e35617e518ad76"><span class="id" title="notation">{</span></a><span class="id" title="var">i</span> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Specif.html#50b5d8dd6be4fba768e35617e518ad76"><span class="id" title="notation">:</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#TaggedAs.I"><span class="id" title="variable">I</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Specif.html#50b5d8dd6be4fba768e35617e518ad76"><span class="id" title="notation">&</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#TaggedAs.T_"><span class="id" title="variable">T_</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#i"><span class="id" title="variable">i</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Specif.html#50b5d8dd6be4fba768e35617e518ad76"><span class="id" title="notation">}</span></a>.<br/> +<span class="id" title="keyword">Variables</span> (<a name="TaggedAs.I"><span class="id" title="variable">I</span></a> : <a class="idref" href="mathcomp.ssreflect.eqtype.html#eqType"><span class="id" title="abbreviation">eqType</span></a>) (<a name="TaggedAs.T_"><span class="id" title="variable">T_</span></a> : <a class="idref" href="mathcomp.ssreflect.eqtype.html#I"><span class="id" title="variable">I</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#1c93e43e07fbeaeb6a625cb6614beb5d"><span class="id" title="notation">→</span></a> <span class="id" title="keyword">Type</span>).<br/> +<span class="id" title="keyword">Implicit</span> <span class="id" title="keyword">Types</span> <span class="id" title="var">u</span> <span class="id" title="var">v</span> : <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Specif.html#cc5e56ba3765e2d6b17e66d19b966f1d"><span class="id" title="notation">{</span></a><span class="id" title="var">i</span> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Specif.html#cc5e56ba3765e2d6b17e66d19b966f1d"><span class="id" title="notation">:</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#TaggedAs.I"><span class="id" title="variable">I</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Specif.html#cc5e56ba3765e2d6b17e66d19b966f1d"><span class="id" title="notation">&</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#TaggedAs.T_"><span class="id" title="variable">T_</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#i"><span class="id" title="variable">i</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Specif.html#cc5e56ba3765e2d6b17e66d19b966f1d"><span class="id" title="notation">}</span></a>.<br/> <br/> <span class="id" title="keyword">Definition</span> <a name="tagged_as"><span class="id" title="definition">tagged_as</span></a> <span class="id" title="var">u</span> <span class="id" title="var">v</span> :=<br/> - <span class="id" title="keyword">if</span> <a class="idref" href="mathcomp.ssreflect.eqtype.html#tag"><span class="id" title="definition">tag</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#u"><span class="id" title="variable">u</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#ab7a7bc39754581ab8f205db64711d57"><span class="id" title="notation">=</span></a><a class="idref" href="mathcomp.ssreflect.eqtype.html#ab7a7bc39754581ab8f205db64711d57"><span class="id" title="notation">P</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#tag"><span class="id" title="definition">tag</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#v"><span class="id" title="variable">v</span></a> <span class="id" title="keyword">is</span> <span class="id" title="var">ReflectT</span> <span class="id" title="var">eq_uv</span> <span class="id" title="keyword">then</span><br/> - <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#eq_rect_r"><span class="id" title="definition">eq_rect_r</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#TaggedAs.T_"><span class="id" title="variable">T_</span></a> (<a class="idref" href="mathcomp.ssreflect.eqtype.html#tagged"><span class="id" title="definition">tagged</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#v"><span class="id" title="variable">v</span></a>) <span class="id" title="var">eq_uv</span><br/> - <span class="id" title="keyword">else</span> <a class="idref" href="mathcomp.ssreflect.eqtype.html#tagged"><span class="id" title="definition">tagged</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#u"><span class="id" title="variable">u</span></a>.<br/> + <span class="id" title="keyword">if</span> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#tag"><span class="id" title="definition">tag</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#u"><span class="id" title="variable">u</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#699be9384eca4d7537361910a9a14afe"><span class="id" title="notation">=</span></a><a class="idref" href="mathcomp.ssreflect.eqtype.html#699be9384eca4d7537361910a9a14afe"><span class="id" title="notation">P</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#tag"><span class="id" title="definition">tag</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#v"><span class="id" title="variable">v</span></a> <span class="id" title="keyword">is</span> <span class="id" title="var">ReflectT</span> <span class="id" title="var">eq_uv</span> <span class="id" title="keyword">then</span><br/> + <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#eq_rect_r"><span class="id" title="definition">eq_rect_r</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#TaggedAs.T_"><span class="id" title="variable">T_</span></a> (<a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#tagged"><span class="id" title="definition">tagged</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#v"><span class="id" title="variable">v</span></a>) <span class="id" title="var">eq_uv</span><br/> + <span class="id" title="keyword">else</span> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#tagged"><span class="id" title="definition">tagged</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#u"><span class="id" title="variable">u</span></a>.<br/> <br/> -<span class="id" title="keyword">Lemma</span> <a name="tagged_asE"><span class="id" title="lemma">tagged_asE</span></a> <span class="id" title="var">u</span> <span class="id" title="var">x</span> : <a class="idref" href="mathcomp.ssreflect.eqtype.html#tagged_as"><span class="id" title="definition">tagged_as</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#u"><span class="id" title="variable">u</span></a> (<a class="idref" href="mathcomp.ssreflect.eqtype.html#Tagged"><span class="id" title="definition">Tagged</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#TaggedAs.T_"><span class="id" title="variable">T_</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#x"><span class="id" title="variable">x</span></a>) <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#x"><span class="id" title="variable">x</span></a>.<br/> +<span class="id" title="keyword">Lemma</span> <a name="tagged_asE"><span class="id" title="lemma">tagged_asE</span></a> <span class="id" title="var">u</span> <span class="id" title="var">x</span> : <a class="idref" href="mathcomp.ssreflect.eqtype.html#tagged_as"><span class="id" title="definition">tagged_as</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#u"><span class="id" title="variable">u</span></a> (<a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#Tagged"><span class="id" title="definition">Tagged</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#TaggedAs.T_"><span class="id" title="variable">T_</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#x"><span class="id" title="variable">x</span></a>) <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#6cd0f7b28b6092304087c7049437bb1a"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#x"><span class="id" title="variable">x</span></a>.<br/> <br/> <span class="id" title="keyword">End</span> <a class="idref" href="mathcomp.ssreflect.eqtype.html#TaggedAs"><span class="id" title="section">TaggedAs</span></a>.<br/> @@ -993,27 +1036,27 @@ Notation " [ 'subType' 'for' v ]" := (clone_subType _ v id idfun) <span class="id" title="keyword">Section</span> <a name="TagEqType"><span class="id" title="section">TagEqType</span></a>.<br/> <br/> -<span class="id" title="keyword">Variables</span> (<a name="TagEqType.I"><span class="id" title="variable">I</span></a> : <a class="idref" href="mathcomp.ssreflect.eqtype.html#eqType"><span class="id" title="abbreviation">eqType</span></a>) (<a name="TagEqType.T_"><span class="id" title="variable">T_</span></a> : <a class="idref" href="mathcomp.ssreflect.eqtype.html#I"><span class="id" title="variable">I</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#eqType"><span class="id" title="abbreviation">eqType</span></a>).<br/> -<span class="id" title="keyword">Implicit</span> <span class="id" title="keyword">Types</span> <span class="id" title="var">u</span> <span class="id" title="var">v</span> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Specif.html#50b5d8dd6be4fba768e35617e518ad76"><span class="id" title="notation">{</span></a><span class="id" title="var">i</span> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Specif.html#50b5d8dd6be4fba768e35617e518ad76"><span class="id" title="notation">:</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#TagEqType.I"><span class="id" title="variable">I</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Specif.html#50b5d8dd6be4fba768e35617e518ad76"><span class="id" title="notation">&</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#TagEqType.T_"><span class="id" title="variable">T_</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#i"><span class="id" title="variable">i</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Specif.html#50b5d8dd6be4fba768e35617e518ad76"><span class="id" title="notation">}</span></a>.<br/> +<span class="id" title="keyword">Variables</span> (<a name="TagEqType.I"><span class="id" title="variable">I</span></a> : <a class="idref" href="mathcomp.ssreflect.eqtype.html#eqType"><span class="id" title="abbreviation">eqType</span></a>) (<a name="TagEqType.T_"><span class="id" title="variable">T_</span></a> : <a class="idref" href="mathcomp.ssreflect.eqtype.html#I"><span class="id" title="variable">I</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#1c93e43e07fbeaeb6a625cb6614beb5d"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#eqType"><span class="id" title="abbreviation">eqType</span></a>).<br/> +<span class="id" title="keyword">Implicit</span> <span class="id" title="keyword">Types</span> <span class="id" title="var">u</span> <span class="id" title="var">v</span> : <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Specif.html#cc5e56ba3765e2d6b17e66d19b966f1d"><span class="id" title="notation">{</span></a><span class="id" title="var">i</span> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Specif.html#cc5e56ba3765e2d6b17e66d19b966f1d"><span class="id" title="notation">:</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#TagEqType.I"><span class="id" title="variable">I</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Specif.html#cc5e56ba3765e2d6b17e66d19b966f1d"><span class="id" title="notation">&</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#TagEqType.T_"><span class="id" title="variable">T_</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#i"><span class="id" title="variable">i</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Specif.html#cc5e56ba3765e2d6b17e66d19b966f1d"><span class="id" title="notation">}</span></a>.<br/> <br/> -<span class="id" title="keyword">Definition</span> <a name="tag_eq"><span class="id" title="definition">tag_eq</span></a> <span class="id" title="var">u</span> <span class="id" title="var">v</span> := <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#49ac24efa716d8b0ee8943bc1d1769a9"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.ssreflect.eqtype.html#tag"><span class="id" title="definition">tag</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#u"><span class="id" title="variable">u</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#17d28d004d0863cb022d4ce832ddaaae"><span class="id" title="notation">==</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#tag"><span class="id" title="definition">tag</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#v"><span class="id" title="variable">v</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#49ac24efa716d8b0ee8943bc1d1769a9"><span class="id" title="notation">)</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#49ac24efa716d8b0ee8943bc1d1769a9"><span class="id" title="notation">&&</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#49ac24efa716d8b0ee8943bc1d1769a9"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.ssreflect.eqtype.html#tagged"><span class="id" title="definition">tagged</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#u"><span class="id" title="variable">u</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#17d28d004d0863cb022d4ce832ddaaae"><span class="id" title="notation">==</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#tagged_as"><span class="id" title="definition">tagged_as</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#u"><span class="id" title="variable">u</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#v"><span class="id" title="variable">v</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#49ac24efa716d8b0ee8943bc1d1769a9"><span class="id" title="notation">)</span></a>.<br/> +<span class="id" title="keyword">Definition</span> <a name="tag_eq"><span class="id" title="definition">tag_eq</span></a> <span class="id" title="var">u</span> <span class="id" title="var">v</span> := <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Datatypes.html#9ddeac0ab66152bd1d64bedb507a795e"><span class="id" title="notation">(</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#tag"><span class="id" title="definition">tag</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#u"><span class="id" title="variable">u</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#df45e8c2e8370fd4f0f7c4fdaf208180"><span class="id" title="notation">==</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#tag"><span class="id" title="definition">tag</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#v"><span class="id" title="variable">v</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Datatypes.html#9ddeac0ab66152bd1d64bedb507a795e"><span class="id" title="notation">)</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Datatypes.html#9ddeac0ab66152bd1d64bedb507a795e"><span class="id" title="notation">&&</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Datatypes.html#9ddeac0ab66152bd1d64bedb507a795e"><span class="id" title="notation">(</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#tagged"><span class="id" title="definition">tagged</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#u"><span class="id" title="variable">u</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#df45e8c2e8370fd4f0f7c4fdaf208180"><span class="id" title="notation">==</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#tagged_as"><span class="id" title="definition">tagged_as</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#u"><span class="id" title="variable">u</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#v"><span class="id" title="variable">v</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Datatypes.html#9ddeac0ab66152bd1d64bedb507a795e"><span class="id" title="notation">)</span></a>.<br/> <br/> <span class="id" title="keyword">Lemma</span> <a name="tag_eqP"><span class="id" title="lemma">tag_eqP</span></a> : <a class="idref" href="mathcomp.ssreflect.eqtype.html#axiom"><span class="id" title="definition">Equality.axiom</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#tag_eq"><span class="id" title="definition">tag_eq</span></a>.<br/> <br/> <span class="id" title="keyword">Canonical</span> <span class="id" title="var">tag_eqMixin</span> := <a class="idref" href="mathcomp.ssreflect.eqtype.html#EqMixin"><span class="id" title="abbreviation">EqMixin</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#tag_eqP"><span class="id" title="lemma">tag_eqP</span></a>.<br/> -<span class="id" title="keyword">Canonical</span> <span class="id" title="var">tag_eqType</span> := <span class="id" title="keyword">Eval</span> <span class="id" title="tactic">hnf</span> <span class="id" title="tactic">in</span> <a class="idref" href="mathcomp.ssreflect.eqtype.html#EqType"><span class="id" title="abbreviation">EqType</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Specif.html#50b5d8dd6be4fba768e35617e518ad76"><span class="id" title="notation">{</span></a><span class="id" title="var">i</span> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Specif.html#50b5d8dd6be4fba768e35617e518ad76"><span class="id" title="notation">:</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#TagEqType.I"><span class="id" title="variable">I</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Specif.html#50b5d8dd6be4fba768e35617e518ad76"><span class="id" title="notation">&</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#TagEqType.T_"><span class="id" title="variable">T_</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#i"><span class="id" title="variable">i</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Specif.html#50b5d8dd6be4fba768e35617e518ad76"><span class="id" title="notation">}</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#tag_eqMixin"><span class="id" title="definition">tag_eqMixin</span></a>.<br/> +<span class="id" title="keyword">Canonical</span> <span class="id" title="var">tag_eqType</span> := <span class="id" title="keyword">Eval</span> <span class="id" title="tactic">hnf</span> <span class="id" title="tactic">in</span> <a class="idref" href="mathcomp.ssreflect.eqtype.html#EqType"><span class="id" title="abbreviation">EqType</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Specif.html#cc5e56ba3765e2d6b17e66d19b966f1d"><span class="id" title="notation">{</span></a><span class="id" title="var">i</span> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Specif.html#cc5e56ba3765e2d6b17e66d19b966f1d"><span class="id" title="notation">:</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#TagEqType.I"><span class="id" title="variable">I</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Specif.html#cc5e56ba3765e2d6b17e66d19b966f1d"><span class="id" title="notation">&</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#TagEqType.T_"><span class="id" title="variable">T_</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#i"><span class="id" title="variable">i</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Specif.html#cc5e56ba3765e2d6b17e66d19b966f1d"><span class="id" title="notation">}</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#tag_eqMixin"><span class="id" title="definition">tag_eqMixin</span></a>.<br/> <br/> -<span class="id" title="keyword">Lemma</span> <a name="tag_eqE"><span class="id" title="lemma">tag_eqE</span></a> : <a class="idref" href="mathcomp.ssreflect.eqtype.html#tag_eq"><span class="id" title="definition">tag_eq</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#eq_op"><span class="id" title="definition">eq_op</span></a>. <br/> +<span class="id" title="keyword">Lemma</span> <a name="tag_eqE"><span class="id" title="lemma">tag_eqE</span></a> : <a class="idref" href="mathcomp.ssreflect.eqtype.html#tag_eq"><span class="id" title="definition">tag_eq</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#6cd0f7b28b6092304087c7049437bb1a"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#eq_op"><span class="id" title="definition">eq_op</span></a>. <br/> <br/> -<span class="id" title="keyword">Lemma</span> <a name="eq_tag"><span class="id" title="lemma">eq_tag</span></a> <span class="id" title="var">u</span> <span class="id" title="var">v</span> : <a class="idref" href="mathcomp.ssreflect.eqtype.html#u"><span class="id" title="variable">u</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#17d28d004d0863cb022d4ce832ddaaae"><span class="id" title="notation">==</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#v"><span class="id" title="variable">v</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#tag"><span class="id" title="definition">tag</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#u"><span class="id" title="variable">u</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#tag"><span class="id" title="definition">tag</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#v"><span class="id" title="variable">v</span></a>.<br/> +<span class="id" title="keyword">Lemma</span> <a name="eq_tag"><span class="id" title="lemma">eq_tag</span></a> <span class="id" title="var">u</span> <span class="id" title="var">v</span> : <a class="idref" href="mathcomp.ssreflect.eqtype.html#u"><span class="id" title="variable">u</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#df45e8c2e8370fd4f0f7c4fdaf208180"><span class="id" title="notation">==</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#v"><span class="id" title="variable">v</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#1c93e43e07fbeaeb6a625cb6614beb5d"><span class="id" title="notation">→</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#tag"><span class="id" title="definition">tag</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#u"><span class="id" title="variable">u</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#6cd0f7b28b6092304087c7049437bb1a"><span class="id" title="notation">=</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#tag"><span class="id" title="definition">tag</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#v"><span class="id" title="variable">v</span></a>.<br/> <br/> -<span class="id" title="keyword">Lemma</span> <a name="eq_Tagged"><span class="id" title="lemma">eq_Tagged</span></a> <span class="id" title="var">u</span> <span class="id" title="var">x</span> :<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.ssreflect.eqtype.html#u"><span class="id" title="variable">u</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#17d28d004d0863cb022d4ce832ddaaae"><span class="id" title="notation">==</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#Tagged"><span class="id" title="definition">Tagged</span></a> <span class="id" title="var">_</span> <a class="idref" href="mathcomp.ssreflect.eqtype.html#x"><span class="id" title="variable">x</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">)</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.ssreflect.eqtype.html#tagged"><span class="id" title="definition">tagged</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#u"><span class="id" title="variable">u</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#17d28d004d0863cb022d4ce832ddaaae"><span class="id" title="notation">==</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#x"><span class="id" title="variable">x</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">)</span></a>.<br/> +<span class="id" title="keyword">Lemma</span> <a name="eq_Tagged"><span class="id" title="lemma">eq_Tagged</span></a> <span class="id" title="var">u</span> <span class="id" title="var">x</span> :<a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#6cd0f7b28b6092304087c7049437bb1a"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.ssreflect.eqtype.html#u"><span class="id" title="variable">u</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#df45e8c2e8370fd4f0f7c4fdaf208180"><span class="id" title="notation">==</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#Tagged"><span class="id" title="definition">Tagged</span></a> <span class="id" title="var">_</span> <a class="idref" href="mathcomp.ssreflect.eqtype.html#x"><span class="id" title="variable">x</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#6cd0f7b28b6092304087c7049437bb1a"><span class="id" title="notation">)</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#6cd0f7b28b6092304087c7049437bb1a"><span class="id" title="notation">=</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#6cd0f7b28b6092304087c7049437bb1a"><span class="id" title="notation">(</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#tagged"><span class="id" title="definition">tagged</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#u"><span class="id" title="variable">u</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#df45e8c2e8370fd4f0f7c4fdaf208180"><span class="id" title="notation">==</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#x"><span class="id" title="variable">x</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#6cd0f7b28b6092304087c7049437bb1a"><span class="id" title="notation">)</span></a>.<br/> <br/> <span class="id" title="keyword">End</span> <a class="idref" href="mathcomp.ssreflect.eqtype.html#TagEqType"><span class="id" title="section">TagEqType</span></a>.<br/> @@ -1025,13 +1068,13 @@ Notation " [ 'subType' 'for' v ]" := (clone_subType _ v id idfun) <br/> <span class="id" title="keyword">Variables</span> <a name="SumEqType.T1"><span class="id" title="variable">T1</span></a> <a name="SumEqType.T2"><span class="id" title="variable">T2</span></a> : <a class="idref" href="mathcomp.ssreflect.eqtype.html#eqType"><span class="id" title="abbreviation">eqType</span></a>.<br/> -<span class="id" title="keyword">Implicit</span> <span class="id" title="keyword">Types</span> <span class="id" title="var">u</span> <span class="id" title="var">v</span> : <a class="idref" href="mathcomp.ssreflect.eqtype.html#SumEqType.T1"><span class="id" title="variable">T1</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#3dcaec3b772747610227247939f96b01"><span class="id" title="notation">+</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#SumEqType.T2"><span class="id" title="variable">T2</span></a>.<br/> +<span class="id" title="keyword">Implicit</span> <span class="id" title="keyword">Types</span> <span class="id" title="var">u</span> <span class="id" title="var">v</span> : <a class="idref" href="mathcomp.ssreflect.eqtype.html#SumEqType.T1"><span class="id" title="variable">T1</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Datatypes.html#e03f39daf98516fa530d3f6f5a1b4d92"><span class="id" title="notation">+</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#SumEqType.T2"><span class="id" title="variable">T2</span></a>.<br/> <br/> <span class="id" title="keyword">Definition</span> <a name="sum_eq"><span class="id" title="definition">sum_eq</span></a> <span class="id" title="var">u</span> <span class="id" title="var">v</span> :=<br/> <span class="id" title="keyword">match</span> <a class="idref" href="mathcomp.ssreflect.eqtype.html#u"><span class="id" title="variable">u</span></a>, <a class="idref" href="mathcomp.ssreflect.eqtype.html#v"><span class="id" title="variable">v</span></a> <span class="id" title="keyword">with</span><br/> - | <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#inl"><span class="id" title="constructor">inl</span></a> <span class="id" title="var">x</span>, <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#inl"><span class="id" title="constructor">inl</span></a> <span class="id" title="var">y</span> | <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#inr"><span class="id" title="constructor">inr</span></a> <span class="id" title="var">x</span>, <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#inr"><span class="id" title="constructor">inr</span></a> <span class="id" title="var">y</span> ⇒ <span class="id" title="var">x</span> <a class="idref" href="mathcomp.ssreflect.eqtype.html#17d28d004d0863cb022d4ce832ddaaae"><span class="id" title="notation">==</span></a> <span class="id" title="var">y</span><br/> - | <span class="id" title="var">_</span>, <span class="id" title="var">_</span> ⇒ <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#false"><span class="id" title="constructor">false</span></a><br/> + | <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Datatypes.html#inl"><span class="id" title="constructor">inl</span></a> <span class="id" title="var">x</span>, <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Datatypes.html#inl"><span class="id" title="constructor">inl</span></a> <span class="id" title="var">y</span> | <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Datatypes.html#inr"><span class="id" title="constructor">inr</span></a> <span class="id" title="var">x</span>, <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Datatypes.html#inr"><span class="id" title="constructor">inr</span></a> <span class="id" title="var">y</span> ⇒ <span class="id" title="var">x</span> <a class="idref" href="mathcomp.ssreflect.eqtype.html#df45e8c2e8370fd4f0f7c4fdaf208180"><span class="id" title="notation">==</span></a> <span class="id" title="var">y</span><br/> + | <span class="id" title="var">_</span>, <span class="id" title="var">_</span> ⇒ <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Datatypes.html#false"><span class="id" title="constructor">false</span></a><br/> <span class="id" title="keyword">end</span>.<br/> <br/> @@ -1039,15 +1082,103 @@ Notation " [ 'subType' 'for' v ]" := (clone_subType _ v id idfun) <br/> <span class="id" title="keyword">Canonical</span> <span class="id" title="var">sum_eqMixin</span> := <a class="idref" href="mathcomp.ssreflect.eqtype.html#EqMixin"><span class="id" title="abbreviation">EqMixin</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#sum_eqP"><span class="id" title="lemma">sum_eqP</span></a>.<br/> -<span class="id" title="keyword">Canonical</span> <span class="id" title="var">sum_eqType</span> := <span class="id" title="keyword">Eval</span> <span class="id" title="tactic">hnf</span> <span class="id" title="tactic">in</span> <a class="idref" href="mathcomp.ssreflect.eqtype.html#EqType"><span class="id" title="abbreviation">EqType</span></a> (<a class="idref" href="mathcomp.ssreflect.eqtype.html#SumEqType.T1"><span class="id" title="variable">T1</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#3dcaec3b772747610227247939f96b01"><span class="id" title="notation">+</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#SumEqType.T2"><span class="id" title="variable">T2</span></a>) <a class="idref" href="mathcomp.ssreflect.eqtype.html#sum_eqMixin"><span class="id" title="definition">sum_eqMixin</span></a>.<br/> +<span class="id" title="keyword">Canonical</span> <span class="id" title="var">sum_eqType</span> := <span class="id" title="keyword">Eval</span> <span class="id" title="tactic">hnf</span> <span class="id" title="tactic">in</span> <a class="idref" href="mathcomp.ssreflect.eqtype.html#EqType"><span class="id" title="abbreviation">EqType</span></a> (<a class="idref" href="mathcomp.ssreflect.eqtype.html#SumEqType.T1"><span class="id" title="variable">T1</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Datatypes.html#e03f39daf98516fa530d3f6f5a1b4d92"><span class="id" title="notation">+</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#SumEqType.T2"><span class="id" title="variable">T2</span></a>) <a class="idref" href="mathcomp.ssreflect.eqtype.html#sum_eqMixin"><span class="id" title="definition">sum_eqMixin</span></a>.<br/> <br/> -<span class="id" title="keyword">Lemma</span> <a name="sum_eqE"><span class="id" title="lemma">sum_eqE</span></a> : <a class="idref" href="mathcomp.ssreflect.eqtype.html#sum_eq"><span class="id" title="definition">sum_eq</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#eq_op"><span class="id" title="definition">eq_op</span></a>. <br/> +<span class="id" title="keyword">Lemma</span> <a name="sum_eqE"><span class="id" title="lemma">sum_eqE</span></a> : <a class="idref" href="mathcomp.ssreflect.eqtype.html#sum_eq"><span class="id" title="definition">sum_eq</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#6cd0f7b28b6092304087c7049437bb1a"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#eq_op"><span class="id" title="definition">eq_op</span></a>. <br/> <br/> <span class="id" title="keyword">End</span> <a class="idref" href="mathcomp.ssreflect.eqtype.html#SumEqType"><span class="id" title="section">SumEqType</span></a>.<br/> <br/> + +<br/> +<span class="id" title="keyword">Section</span> <a name="MonoHomoTheory"><span class="id" title="section">MonoHomoTheory</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Variables</span> (<a name="MonoHomoTheory.aT"><span class="id" title="variable">aT</span></a> <a name="MonoHomoTheory.rT"><span class="id" title="variable">rT</span></a> : <a class="idref" href="mathcomp.ssreflect.eqtype.html#eqType"><span class="id" title="abbreviation">eqType</span></a>) (<a name="MonoHomoTheory.f"><span class="id" title="variable">f</span></a> : <a class="idref" href="mathcomp.ssreflect.eqtype.html#aT"><span class="id" title="variable">aT</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#1c93e43e07fbeaeb6a625cb6614beb5d"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#rT"><span class="id" title="variable">rT</span></a>).<br/> +<span class="id" title="keyword">Variables</span> (<a name="MonoHomoTheory.aR"><span class="id" title="variable">aR</span></a> <a name="MonoHomoTheory.aR'"><span class="id" title="variable">aR'</span></a> : <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#rel"><span class="id" title="definition">rel</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#MonoHomoTheory.aT"><span class="id" title="variable">aT</span></a>) (<a name="MonoHomoTheory.rR"><span class="id" title="variable">rR</span></a> <a name="MonoHomoTheory.rR'"><span class="id" title="variable">rR'</span></a> : <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#rel"><span class="id" title="definition">rel</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#MonoHomoTheory.rT"><span class="id" title="variable">rT</span></a>).<br/> + +<br/> +<span class="id" title="keyword">Hypothesis</span> <a name="MonoHomoTheory.aR_refl"><span class="id" title="variable">aR_refl</span></a> : <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#reflexive"><span class="id" title="definition">reflexive</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#MonoHomoTheory.aR"><span class="id" title="variable">aR</span></a>.<br/> +<span class="id" title="keyword">Hypothesis</span> <a name="MonoHomoTheory.rR_refl"><span class="id" title="variable">rR_refl</span></a> : <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#reflexive"><span class="id" title="definition">reflexive</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#MonoHomoTheory.rR"><span class="id" title="variable">rR</span></a>.<br/> +<span class="id" title="keyword">Hypothesis</span> <a name="MonoHomoTheory.aR'E"><span class="id" title="variable">aR'E</span></a> : <span class="id" title="keyword">∀</span> <span class="id" title="var">x</span> <span class="id" title="var">y</span>, <a class="idref" href="mathcomp.ssreflect.eqtype.html#MonoHomoTheory.aR'"><span class="id" title="variable">aR'</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#y"><span class="id" title="variable">y</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#6cd0f7b28b6092304087c7049437bb1a"><span class="id" title="notation">=</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Datatypes.html#9ddeac0ab66152bd1d64bedb507a795e"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.ssreflect.eqtype.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#c385a484ee9d1b4e0615924561a9b75e"><span class="id" title="notation">!=</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#y"><span class="id" title="variable">y</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Datatypes.html#9ddeac0ab66152bd1d64bedb507a795e"><span class="id" title="notation">)</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Datatypes.html#9ddeac0ab66152bd1d64bedb507a795e"><span class="id" title="notation">&&</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Datatypes.html#9ddeac0ab66152bd1d64bedb507a795e"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.ssreflect.eqtype.html#MonoHomoTheory.aR"><span class="id" title="variable">aR</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#y"><span class="id" title="variable">y</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Datatypes.html#9ddeac0ab66152bd1d64bedb507a795e"><span class="id" title="notation">)</span></a>.<br/> +<span class="id" title="keyword">Hypothesis</span> <a name="MonoHomoTheory.rR'E"><span class="id" title="variable">rR'E</span></a> : <span class="id" title="keyword">∀</span> <span class="id" title="var">x</span> <span class="id" title="var">y</span>, <a class="idref" href="mathcomp.ssreflect.eqtype.html#MonoHomoTheory.rR'"><span class="id" title="variable">rR'</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#y"><span class="id" title="variable">y</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#6cd0f7b28b6092304087c7049437bb1a"><span class="id" title="notation">=</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Datatypes.html#9ddeac0ab66152bd1d64bedb507a795e"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.ssreflect.eqtype.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#c385a484ee9d1b4e0615924561a9b75e"><span class="id" title="notation">!=</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#y"><span class="id" title="variable">y</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Datatypes.html#9ddeac0ab66152bd1d64bedb507a795e"><span class="id" title="notation">)</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Datatypes.html#9ddeac0ab66152bd1d64bedb507a795e"><span class="id" title="notation">&&</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Datatypes.html#9ddeac0ab66152bd1d64bedb507a795e"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.ssreflect.eqtype.html#MonoHomoTheory.rR"><span class="id" title="variable">rR</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#y"><span class="id" title="variable">y</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Datatypes.html#9ddeac0ab66152bd1d64bedb507a795e"><span class="id" title="notation">)</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Let</span> <a name="MonoHomoTheory.aRE"><span class="id" title="variable">aRE</span></a> <span class="id" title="var">x</span> <span class="id" title="var">y</span> : <a class="idref" href="mathcomp.ssreflect.eqtype.html#MonoHomoTheory.aR"><span class="id" title="variable">aR</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#y"><span class="id" title="variable">y</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#6cd0f7b28b6092304087c7049437bb1a"><span class="id" title="notation">=</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Datatypes.html#081ff67d3116402bb680e8692aa39185"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.ssreflect.eqtype.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#df45e8c2e8370fd4f0f7c4fdaf208180"><span class="id" title="notation">==</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#y"><span class="id" title="variable">y</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Datatypes.html#081ff67d3116402bb680e8692aa39185"><span class="id" title="notation">)</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Datatypes.html#081ff67d3116402bb680e8692aa39185"><span class="id" title="notation">||</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Datatypes.html#081ff67d3116402bb680e8692aa39185"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.ssreflect.eqtype.html#MonoHomoTheory.aR'"><span class="id" title="variable">aR'</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#y"><span class="id" title="variable">y</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Datatypes.html#081ff67d3116402bb680e8692aa39185"><span class="id" title="notation">)</span></a>.<br/> + <span class="id" title="keyword">Let</span> <a name="MonoHomoTheory.rRE"><span class="id" title="variable">rRE</span></a> <span class="id" title="var">x</span> <span class="id" title="var">y</span> : <a class="idref" href="mathcomp.ssreflect.eqtype.html#MonoHomoTheory.rR"><span class="id" title="variable">rR</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#y"><span class="id" title="variable">y</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#6cd0f7b28b6092304087c7049437bb1a"><span class="id" title="notation">=</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Datatypes.html#081ff67d3116402bb680e8692aa39185"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.ssreflect.eqtype.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#df45e8c2e8370fd4f0f7c4fdaf208180"><span class="id" title="notation">==</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#y"><span class="id" title="variable">y</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Datatypes.html#081ff67d3116402bb680e8692aa39185"><span class="id" title="notation">)</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Datatypes.html#081ff67d3116402bb680e8692aa39185"><span class="id" title="notation">||</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Datatypes.html#081ff67d3116402bb680e8692aa39185"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.ssreflect.eqtype.html#MonoHomoTheory.rR'"><span class="id" title="variable">rR'</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#y"><span class="id" title="variable">y</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Datatypes.html#081ff67d3116402bb680e8692aa39185"><span class="id" title="notation">)</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Section</span> <a name="MonoHomoTheory.InDom"><span class="id" title="section">InDom</span></a>.<br/> +<span class="id" title="keyword">Variable</span> <a name="MonoHomoTheory.InDom.D"><span class="id" title="variable">D</span></a> : <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#pred"><span class="id" title="definition">pred</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#MonoHomoTheory.aT"><span class="id" title="variable">aT</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Section</span> <a name="MonoHomoTheory.InDom.DifferentDom"><span class="id" title="section">DifferentDom</span></a>.<br/> +<span class="id" title="keyword">Variable</span> <a name="MonoHomoTheory.InDom.DifferentDom.D'"><span class="id" title="variable">D'</span></a> : <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#pred"><span class="id" title="definition">pred</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#MonoHomoTheory.aT"><span class="id" title="variable">aT</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="homoW_in"><span class="id" title="lemma">homoW_in</span></a> : <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#5f76d9959f82823e4253cd67e7dc0e96"><span class="id" title="notation">{</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#5f76d9959f82823e4253cd67e7dc0e96"><span class="id" title="notation">in</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#MonoHomoTheory.InDom.D"><span class="id" title="variable">D</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#5f76d9959f82823e4253cd67e7dc0e96"><span class="id" title="notation">&</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#MonoHomoTheory.InDom.DifferentDom.D'"><span class="id" title="variable">D'</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#5f76d9959f82823e4253cd67e7dc0e96"><span class="id" title="notation">,</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#7f2550512fc22f98c0de9a527bb1f752"><span class="id" title="notation">{</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#7f2550512fc22f98c0de9a527bb1f752"><span class="id" title="notation">homo</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#MonoHomoTheory.f"><span class="id" title="variable">f</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#7f2550512fc22f98c0de9a527bb1f752"><span class="id" title="notation">:</span></a> <span class="id" title="var">x</span> <span class="id" title="var">y</span> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#7f2550512fc22f98c0de9a527bb1f752"><span class="id" title="notation">/</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#MonoHomoTheory.aR'"><span class="id" title="variable">aR'</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#y"><span class="id" title="variable">y</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#7f2550512fc22f98c0de9a527bb1f752"><span class="id" title="notation">>-></span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#MonoHomoTheory.rR'"><span class="id" title="variable">rR'</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#y"><span class="id" title="variable">y</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#7f2550512fc22f98c0de9a527bb1f752"><span class="id" title="notation">}</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#5f76d9959f82823e4253cd67e7dc0e96"><span class="id" title="notation">}</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#1c93e43e07fbeaeb6a625cb6614beb5d"><span class="id" title="notation">→</span></a><br/> + <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#5f76d9959f82823e4253cd67e7dc0e96"><span class="id" title="notation">{</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#5f76d9959f82823e4253cd67e7dc0e96"><span class="id" title="notation">in</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#MonoHomoTheory.InDom.D"><span class="id" title="variable">D</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#5f76d9959f82823e4253cd67e7dc0e96"><span class="id" title="notation">&</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#MonoHomoTheory.InDom.DifferentDom.D'"><span class="id" title="variable">D'</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#5f76d9959f82823e4253cd67e7dc0e96"><span class="id" title="notation">,</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#7f2550512fc22f98c0de9a527bb1f752"><span class="id" title="notation">{</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#7f2550512fc22f98c0de9a527bb1f752"><span class="id" title="notation">homo</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#MonoHomoTheory.f"><span class="id" title="variable">f</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#7f2550512fc22f98c0de9a527bb1f752"><span class="id" title="notation">:</span></a> <span class="id" title="var">x</span> <span class="id" title="var">y</span> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#7f2550512fc22f98c0de9a527bb1f752"><span class="id" title="notation">/</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#MonoHomoTheory.aR"><span class="id" title="variable">aR</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#y"><span class="id" title="variable">y</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#7f2550512fc22f98c0de9a527bb1f752"><span class="id" title="notation">>-></span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#MonoHomoTheory.rR"><span class="id" title="variable">rR</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#y"><span class="id" title="variable">y</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#7f2550512fc22f98c0de9a527bb1f752"><span class="id" title="notation">}</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#5f76d9959f82823e4253cd67e7dc0e96"><span class="id" title="notation">}</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="inj_homo_in"><span class="id" title="lemma">inj_homo_in</span></a> : <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#5f76d9959f82823e4253cd67e7dc0e96"><span class="id" title="notation">{</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#5f76d9959f82823e4253cd67e7dc0e96"><span class="id" title="notation">in</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#MonoHomoTheory.InDom.D"><span class="id" title="variable">D</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#5f76d9959f82823e4253cd67e7dc0e96"><span class="id" title="notation">&</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#MonoHomoTheory.InDom.DifferentDom.D'"><span class="id" title="variable">D'</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#5f76d9959f82823e4253cd67e7dc0e96"><span class="id" title="notation">,</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#injective"><span class="id" title="definition">injective</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#MonoHomoTheory.f"><span class="id" title="variable">f</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#5f76d9959f82823e4253cd67e7dc0e96"><span class="id" title="notation">}</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#1c93e43e07fbeaeb6a625cb6614beb5d"><span class="id" title="notation">→</span></a><br/> + <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#5f76d9959f82823e4253cd67e7dc0e96"><span class="id" title="notation">{</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#5f76d9959f82823e4253cd67e7dc0e96"><span class="id" title="notation">in</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#MonoHomoTheory.InDom.D"><span class="id" title="variable">D</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#5f76d9959f82823e4253cd67e7dc0e96"><span class="id" title="notation">&</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#MonoHomoTheory.InDom.DifferentDom.D'"><span class="id" title="variable">D'</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#5f76d9959f82823e4253cd67e7dc0e96"><span class="id" title="notation">,</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#7f2550512fc22f98c0de9a527bb1f752"><span class="id" title="notation">{</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#7f2550512fc22f98c0de9a527bb1f752"><span class="id" title="notation">homo</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#MonoHomoTheory.f"><span class="id" title="variable">f</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#7f2550512fc22f98c0de9a527bb1f752"><span class="id" title="notation">:</span></a> <span class="id" title="var">x</span> <span class="id" title="var">y</span> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#7f2550512fc22f98c0de9a527bb1f752"><span class="id" title="notation">/</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#MonoHomoTheory.aR"><span class="id" title="variable">aR</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#y"><span class="id" title="variable">y</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#7f2550512fc22f98c0de9a527bb1f752"><span class="id" title="notation">>-></span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#MonoHomoTheory.rR"><span class="id" title="variable">rR</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#y"><span class="id" title="variable">y</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#7f2550512fc22f98c0de9a527bb1f752"><span class="id" title="notation">}</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#5f76d9959f82823e4253cd67e7dc0e96"><span class="id" title="notation">}</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#1c93e43e07fbeaeb6a625cb6614beb5d"><span class="id" title="notation">→</span></a><br/> + <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#5f76d9959f82823e4253cd67e7dc0e96"><span class="id" title="notation">{</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#5f76d9959f82823e4253cd67e7dc0e96"><span class="id" title="notation">in</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#MonoHomoTheory.InDom.D"><span class="id" title="variable">D</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#5f76d9959f82823e4253cd67e7dc0e96"><span class="id" title="notation">&</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#MonoHomoTheory.InDom.DifferentDom.D'"><span class="id" title="variable">D'</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#5f76d9959f82823e4253cd67e7dc0e96"><span class="id" title="notation">,</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#7f2550512fc22f98c0de9a527bb1f752"><span class="id" title="notation">{</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#7f2550512fc22f98c0de9a527bb1f752"><span class="id" title="notation">homo</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#MonoHomoTheory.f"><span class="id" title="variable">f</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#7f2550512fc22f98c0de9a527bb1f752"><span class="id" title="notation">:</span></a> <span class="id" title="var">x</span> <span class="id" title="var">y</span> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#7f2550512fc22f98c0de9a527bb1f752"><span class="id" title="notation">/</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#MonoHomoTheory.aR'"><span class="id" title="variable">aR'</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#y"><span class="id" title="variable">y</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#7f2550512fc22f98c0de9a527bb1f752"><span class="id" title="notation">>-></span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#MonoHomoTheory.rR'"><span class="id" title="variable">rR'</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#y"><span class="id" title="variable">y</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#7f2550512fc22f98c0de9a527bb1f752"><span class="id" title="notation">}</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#5f76d9959f82823e4253cd67e7dc0e96"><span class="id" title="notation">}</span></a>.<br/> + +<br/> +<span class="id" title="keyword">End</span> <a class="idref" href="mathcomp.ssreflect.eqtype.html#MonoHomoTheory.InDom.DifferentDom"><span class="id" title="section">DifferentDom</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Hypothesis</span> <a name="MonoHomoTheory.InDom.aR_anti"><span class="id" title="variable">aR_anti</span></a> : <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#antisymmetric"><span class="id" title="definition">antisymmetric</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#MonoHomoTheory.aR"><span class="id" title="variable">aR</span></a>.<br/> +<span class="id" title="keyword">Hypothesis</span> <a name="MonoHomoTheory.InDom.rR_anti"><span class="id" title="variable">rR_anti</span></a> : <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#antisymmetric"><span class="id" title="definition">antisymmetric</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#MonoHomoTheory.rR"><span class="id" title="variable">rR</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="mono_inj_in"><span class="id" title="lemma">mono_inj_in</span></a> : <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#b4f176550f5b849a7fbba2ee164934d3"><span class="id" title="notation">{</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#b4f176550f5b849a7fbba2ee164934d3"><span class="id" title="notation">in</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#MonoHomoTheory.InDom.D"><span class="id" title="variable">D</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#b4f176550f5b849a7fbba2ee164934d3"><span class="id" title="notation">&,</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#fef9b78074f61857498e071064cb1961"><span class="id" title="notation">{</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#fef9b78074f61857498e071064cb1961"><span class="id" title="notation">mono</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#MonoHomoTheory.f"><span class="id" title="variable">f</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#fef9b78074f61857498e071064cb1961"><span class="id" title="notation">:</span></a> <span class="id" title="var">x</span> <span class="id" title="var">y</span> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#fef9b78074f61857498e071064cb1961"><span class="id" title="notation">/</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#MonoHomoTheory.aR"><span class="id" title="variable">aR</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#y"><span class="id" title="variable">y</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#fef9b78074f61857498e071064cb1961"><span class="id" title="notation">>-></span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#MonoHomoTheory.rR"><span class="id" title="variable">rR</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#y"><span class="id" title="variable">y</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#fef9b78074f61857498e071064cb1961"><span class="id" title="notation">}</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#b4f176550f5b849a7fbba2ee164934d3"><span class="id" title="notation">}</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#1c93e43e07fbeaeb6a625cb6614beb5d"><span class="id" title="notation">→</span></a><br/> + <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#b4f176550f5b849a7fbba2ee164934d3"><span class="id" title="notation">{</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#b4f176550f5b849a7fbba2ee164934d3"><span class="id" title="notation">in</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#MonoHomoTheory.InDom.D"><span class="id" title="variable">D</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#b4f176550f5b849a7fbba2ee164934d3"><span class="id" title="notation">&,</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#injective"><span class="id" title="definition">injective</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#MonoHomoTheory.f"><span class="id" title="variable">f</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#b4f176550f5b849a7fbba2ee164934d3"><span class="id" title="notation">}</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="anti_mono_in"><span class="id" title="lemma">anti_mono_in</span></a> : <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#b4f176550f5b849a7fbba2ee164934d3"><span class="id" title="notation">{</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#b4f176550f5b849a7fbba2ee164934d3"><span class="id" title="notation">in</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#MonoHomoTheory.InDom.D"><span class="id" title="variable">D</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#b4f176550f5b849a7fbba2ee164934d3"><span class="id" title="notation">&,</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#fef9b78074f61857498e071064cb1961"><span class="id" title="notation">{</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#fef9b78074f61857498e071064cb1961"><span class="id" title="notation">mono</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#MonoHomoTheory.f"><span class="id" title="variable">f</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#fef9b78074f61857498e071064cb1961"><span class="id" title="notation">:</span></a> <span class="id" title="var">x</span> <span class="id" title="var">y</span> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#fef9b78074f61857498e071064cb1961"><span class="id" title="notation">/</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#MonoHomoTheory.aR"><span class="id" title="variable">aR</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#y"><span class="id" title="variable">y</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#fef9b78074f61857498e071064cb1961"><span class="id" title="notation">>-></span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#MonoHomoTheory.rR"><span class="id" title="variable">rR</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#y"><span class="id" title="variable">y</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#fef9b78074f61857498e071064cb1961"><span class="id" title="notation">}</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#b4f176550f5b849a7fbba2ee164934d3"><span class="id" title="notation">}</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#1c93e43e07fbeaeb6a625cb6614beb5d"><span class="id" title="notation">→</span></a><br/> + <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#b4f176550f5b849a7fbba2ee164934d3"><span class="id" title="notation">{</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#b4f176550f5b849a7fbba2ee164934d3"><span class="id" title="notation">in</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#MonoHomoTheory.InDom.D"><span class="id" title="variable">D</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#b4f176550f5b849a7fbba2ee164934d3"><span class="id" title="notation">&,</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#fef9b78074f61857498e071064cb1961"><span class="id" title="notation">{</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#fef9b78074f61857498e071064cb1961"><span class="id" title="notation">mono</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#MonoHomoTheory.f"><span class="id" title="variable">f</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#fef9b78074f61857498e071064cb1961"><span class="id" title="notation">:</span></a> <span class="id" title="var">x</span> <span class="id" title="var">y</span> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#fef9b78074f61857498e071064cb1961"><span class="id" title="notation">/</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#MonoHomoTheory.aR'"><span class="id" title="variable">aR'</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#y"><span class="id" title="variable">y</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#fef9b78074f61857498e071064cb1961"><span class="id" title="notation">>-></span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#MonoHomoTheory.rR'"><span class="id" title="variable">rR'</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#y"><span class="id" title="variable">y</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#fef9b78074f61857498e071064cb1961"><span class="id" title="notation">}</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#b4f176550f5b849a7fbba2ee164934d3"><span class="id" title="notation">}</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="total_homo_mono_in"><span class="id" title="lemma">total_homo_mono_in</span></a> : <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#total"><span class="id" title="definition">total</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#MonoHomoTheory.aR"><span class="id" title="variable">aR</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#1c93e43e07fbeaeb6a625cb6614beb5d"><span class="id" title="notation">→</span></a><br/> + <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#b4f176550f5b849a7fbba2ee164934d3"><span class="id" title="notation">{</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#b4f176550f5b849a7fbba2ee164934d3"><span class="id" title="notation">in</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#MonoHomoTheory.InDom.D"><span class="id" title="variable">D</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#b4f176550f5b849a7fbba2ee164934d3"><span class="id" title="notation">&,</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#7f2550512fc22f98c0de9a527bb1f752"><span class="id" title="notation">{</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#7f2550512fc22f98c0de9a527bb1f752"><span class="id" title="notation">homo</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#MonoHomoTheory.f"><span class="id" title="variable">f</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#7f2550512fc22f98c0de9a527bb1f752"><span class="id" title="notation">:</span></a> <span class="id" title="var">x</span> <span class="id" title="var">y</span> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#7f2550512fc22f98c0de9a527bb1f752"><span class="id" title="notation">/</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#MonoHomoTheory.aR'"><span class="id" title="variable">aR'</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#y"><span class="id" title="variable">y</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#7f2550512fc22f98c0de9a527bb1f752"><span class="id" title="notation">>-></span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#MonoHomoTheory.rR'"><span class="id" title="variable">rR'</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#y"><span class="id" title="variable">y</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#7f2550512fc22f98c0de9a527bb1f752"><span class="id" title="notation">}</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#b4f176550f5b849a7fbba2ee164934d3"><span class="id" title="notation">}</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#1c93e43e07fbeaeb6a625cb6614beb5d"><span class="id" title="notation">→</span></a><br/> + <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#b4f176550f5b849a7fbba2ee164934d3"><span class="id" title="notation">{</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#b4f176550f5b849a7fbba2ee164934d3"><span class="id" title="notation">in</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#MonoHomoTheory.InDom.D"><span class="id" title="variable">D</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#b4f176550f5b849a7fbba2ee164934d3"><span class="id" title="notation">&,</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#fef9b78074f61857498e071064cb1961"><span class="id" title="notation">{</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#fef9b78074f61857498e071064cb1961"><span class="id" title="notation">mono</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#MonoHomoTheory.f"><span class="id" title="variable">f</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#fef9b78074f61857498e071064cb1961"><span class="id" title="notation">:</span></a> <span class="id" title="var">x</span> <span class="id" title="var">y</span> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#fef9b78074f61857498e071064cb1961"><span class="id" title="notation">/</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#MonoHomoTheory.aR"><span class="id" title="variable">aR</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#y"><span class="id" title="variable">y</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#fef9b78074f61857498e071064cb1961"><span class="id" title="notation">>-></span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#MonoHomoTheory.rR"><span class="id" title="variable">rR</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#y"><span class="id" title="variable">y</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#fef9b78074f61857498e071064cb1961"><span class="id" title="notation">}</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#b4f176550f5b849a7fbba2ee164934d3"><span class="id" title="notation">}</span></a>.<br/> + +<br/> +<span class="id" title="keyword">End</span> <a class="idref" href="mathcomp.ssreflect.eqtype.html#MonoHomoTheory.InDom"><span class="id" title="section">InDom</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Let</span> <a name="MonoHomoTheory.D"><span class="id" title="variable">D</span></a> := @<a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#predT"><span class="id" title="definition">predT</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#MonoHomoTheory.aT"><span class="id" title="variable">aT</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="homoW"><span class="id" title="lemma">homoW</span></a> : <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#7f2550512fc22f98c0de9a527bb1f752"><span class="id" title="notation">{</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#7f2550512fc22f98c0de9a527bb1f752"><span class="id" title="notation">homo</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#MonoHomoTheory.f"><span class="id" title="variable">f</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#7f2550512fc22f98c0de9a527bb1f752"><span class="id" title="notation">:</span></a> <span class="id" title="var">x</span> <span class="id" title="var">y</span> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#7f2550512fc22f98c0de9a527bb1f752"><span class="id" title="notation">/</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#MonoHomoTheory.aR'"><span class="id" title="variable">aR'</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#y"><span class="id" title="variable">y</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#7f2550512fc22f98c0de9a527bb1f752"><span class="id" title="notation">>-></span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#MonoHomoTheory.rR'"><span class="id" title="variable">rR'</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#y"><span class="id" title="variable">y</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#7f2550512fc22f98c0de9a527bb1f752"><span class="id" title="notation">}</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#1c93e43e07fbeaeb6a625cb6614beb5d"><span class="id" title="notation">→</span></a><br/> + <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#7f2550512fc22f98c0de9a527bb1f752"><span class="id" title="notation">{</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#7f2550512fc22f98c0de9a527bb1f752"><span class="id" title="notation">homo</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#MonoHomoTheory.f"><span class="id" title="variable">f</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#7f2550512fc22f98c0de9a527bb1f752"><span class="id" title="notation">:</span></a> <span class="id" title="var">x</span> <span class="id" title="var">y</span> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#7f2550512fc22f98c0de9a527bb1f752"><span class="id" title="notation">/</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#MonoHomoTheory.aR"><span class="id" title="variable">aR</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#y"><span class="id" title="variable">y</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#7f2550512fc22f98c0de9a527bb1f752"><span class="id" title="notation">>-></span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#MonoHomoTheory.rR"><span class="id" title="variable">rR</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#y"><span class="id" title="variable">y</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#7f2550512fc22f98c0de9a527bb1f752"><span class="id" title="notation">}</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="inj_homo"><span class="id" title="lemma">inj_homo</span></a> : <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#injective"><span class="id" title="definition">injective</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#MonoHomoTheory.f"><span class="id" title="variable">f</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#1c93e43e07fbeaeb6a625cb6614beb5d"><span class="id" title="notation">→</span></a><br/> + <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#7f2550512fc22f98c0de9a527bb1f752"><span class="id" title="notation">{</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#7f2550512fc22f98c0de9a527bb1f752"><span class="id" title="notation">homo</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#MonoHomoTheory.f"><span class="id" title="variable">f</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#7f2550512fc22f98c0de9a527bb1f752"><span class="id" title="notation">:</span></a> <span class="id" title="var">x</span> <span class="id" title="var">y</span> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#7f2550512fc22f98c0de9a527bb1f752"><span class="id" title="notation">/</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#MonoHomoTheory.aR"><span class="id" title="variable">aR</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#y"><span class="id" title="variable">y</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#7f2550512fc22f98c0de9a527bb1f752"><span class="id" title="notation">>-></span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#MonoHomoTheory.rR"><span class="id" title="variable">rR</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#y"><span class="id" title="variable">y</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#7f2550512fc22f98c0de9a527bb1f752"><span class="id" title="notation">}</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#1c93e43e07fbeaeb6a625cb6614beb5d"><span class="id" title="notation">→</span></a><br/> + <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#7f2550512fc22f98c0de9a527bb1f752"><span class="id" title="notation">{</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#7f2550512fc22f98c0de9a527bb1f752"><span class="id" title="notation">homo</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#MonoHomoTheory.f"><span class="id" title="variable">f</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#7f2550512fc22f98c0de9a527bb1f752"><span class="id" title="notation">:</span></a> <span class="id" title="var">x</span> <span class="id" title="var">y</span> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#7f2550512fc22f98c0de9a527bb1f752"><span class="id" title="notation">/</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#MonoHomoTheory.aR'"><span class="id" title="variable">aR'</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#y"><span class="id" title="variable">y</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#7f2550512fc22f98c0de9a527bb1f752"><span class="id" title="notation">>-></span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#MonoHomoTheory.rR'"><span class="id" title="variable">rR'</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#y"><span class="id" title="variable">y</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#7f2550512fc22f98c0de9a527bb1f752"><span class="id" title="notation">}</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Hypothesis</span> <a name="MonoHomoTheory.aR_anti"><span class="id" title="variable">aR_anti</span></a> : <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#antisymmetric"><span class="id" title="definition">antisymmetric</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#MonoHomoTheory.aR"><span class="id" title="variable">aR</span></a>.<br/> +<span class="id" title="keyword">Hypothesis</span> <a name="MonoHomoTheory.rR_anti"><span class="id" title="variable">rR_anti</span></a> : <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#antisymmetric"><span class="id" title="definition">antisymmetric</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#MonoHomoTheory.rR"><span class="id" title="variable">rR</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="mono_inj"><span class="id" title="lemma">mono_inj</span></a> : <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#fef9b78074f61857498e071064cb1961"><span class="id" title="notation">{</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#fef9b78074f61857498e071064cb1961"><span class="id" title="notation">mono</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#MonoHomoTheory.f"><span class="id" title="variable">f</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#fef9b78074f61857498e071064cb1961"><span class="id" title="notation">:</span></a> <span class="id" title="var">x</span> <span class="id" title="var">y</span> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#fef9b78074f61857498e071064cb1961"><span class="id" title="notation">/</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#MonoHomoTheory.aR"><span class="id" title="variable">aR</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#y"><span class="id" title="variable">y</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#fef9b78074f61857498e071064cb1961"><span class="id" title="notation">>-></span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#MonoHomoTheory.rR"><span class="id" title="variable">rR</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#y"><span class="id" title="variable">y</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#fef9b78074f61857498e071064cb1961"><span class="id" title="notation">}</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#1c93e43e07fbeaeb6a625cb6614beb5d"><span class="id" title="notation">→</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#injective"><span class="id" title="definition">injective</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#MonoHomoTheory.f"><span class="id" title="variable">f</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="anti_mono"><span class="id" title="lemma">anti_mono</span></a> : <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#fef9b78074f61857498e071064cb1961"><span class="id" title="notation">{</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#fef9b78074f61857498e071064cb1961"><span class="id" title="notation">mono</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#MonoHomoTheory.f"><span class="id" title="variable">f</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#fef9b78074f61857498e071064cb1961"><span class="id" title="notation">:</span></a> <span class="id" title="var">x</span> <span class="id" title="var">y</span> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#fef9b78074f61857498e071064cb1961"><span class="id" title="notation">/</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#MonoHomoTheory.aR"><span class="id" title="variable">aR</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#y"><span class="id" title="variable">y</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#fef9b78074f61857498e071064cb1961"><span class="id" title="notation">>-></span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#MonoHomoTheory.rR"><span class="id" title="variable">rR</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#y"><span class="id" title="variable">y</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#fef9b78074f61857498e071064cb1961"><span class="id" title="notation">}</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#1c93e43e07fbeaeb6a625cb6614beb5d"><span class="id" title="notation">→</span></a><br/> + <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#fef9b78074f61857498e071064cb1961"><span class="id" title="notation">{</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#fef9b78074f61857498e071064cb1961"><span class="id" title="notation">mono</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#MonoHomoTheory.f"><span class="id" title="variable">f</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#fef9b78074f61857498e071064cb1961"><span class="id" title="notation">:</span></a> <span class="id" title="var">x</span> <span class="id" title="var">y</span> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#fef9b78074f61857498e071064cb1961"><span class="id" title="notation">/</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#MonoHomoTheory.aR'"><span class="id" title="variable">aR'</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#y"><span class="id" title="variable">y</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#fef9b78074f61857498e071064cb1961"><span class="id" title="notation">>-></span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#MonoHomoTheory.rR'"><span class="id" title="variable">rR'</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#y"><span class="id" title="variable">y</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#fef9b78074f61857498e071064cb1961"><span class="id" title="notation">}</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="total_homo_mono"><span class="id" title="lemma">total_homo_mono</span></a> : <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#total"><span class="id" title="definition">total</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#MonoHomoTheory.aR"><span class="id" title="variable">aR</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#1c93e43e07fbeaeb6a625cb6614beb5d"><span class="id" title="notation">→</span></a><br/> + <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#7f2550512fc22f98c0de9a527bb1f752"><span class="id" title="notation">{</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#7f2550512fc22f98c0de9a527bb1f752"><span class="id" title="notation">homo</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#MonoHomoTheory.f"><span class="id" title="variable">f</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#7f2550512fc22f98c0de9a527bb1f752"><span class="id" title="notation">:</span></a> <span class="id" title="var">x</span> <span class="id" title="var">y</span> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#7f2550512fc22f98c0de9a527bb1f752"><span class="id" title="notation">/</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#MonoHomoTheory.aR'"><span class="id" title="variable">aR'</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#y"><span class="id" title="variable">y</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#7f2550512fc22f98c0de9a527bb1f752"><span class="id" title="notation">>-></span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#MonoHomoTheory.rR'"><span class="id" title="variable">rR'</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#y"><span class="id" title="variable">y</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#7f2550512fc22f98c0de9a527bb1f752"><span class="id" title="notation">}</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#1c93e43e07fbeaeb6a625cb6614beb5d"><span class="id" title="notation">→</span></a><br/> + <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#fef9b78074f61857498e071064cb1961"><span class="id" title="notation">{</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#fef9b78074f61857498e071064cb1961"><span class="id" title="notation">mono</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#MonoHomoTheory.f"><span class="id" title="variable">f</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#fef9b78074f61857498e071064cb1961"><span class="id" title="notation">:</span></a> <span class="id" title="var">x</span> <span class="id" title="var">y</span> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#fef9b78074f61857498e071064cb1961"><span class="id" title="notation">/</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#MonoHomoTheory.aR"><span class="id" title="variable">aR</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#y"><span class="id" title="variable">y</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#fef9b78074f61857498e071064cb1961"><span class="id" title="notation">>-></span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#MonoHomoTheory.rR"><span class="id" title="variable">rR</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#y"><span class="id" title="variable">y</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#fef9b78074f61857498e071064cb1961"><span class="id" title="notation">}</span></a>.<br/> + +<br/> +<span class="id" title="keyword">End</span> <a class="idref" href="mathcomp.ssreflect.eqtype.html#MonoHomoTheory"><span class="id" title="section">MonoHomoTheory</span></a>.<br/> </div> </div> |
