diff options
Diffstat (limited to 'docs/htmldoc/mathcomp.ssreflect.eqtype.html')
| -rw-r--r-- | docs/htmldoc/mathcomp.ssreflect.eqtype.html | 1192 |
1 files changed, 0 insertions, 1192 deletions
diff --git a/docs/htmldoc/mathcomp.ssreflect.eqtype.html b/docs/htmldoc/mathcomp.ssreflect.eqtype.html deleted file mode 100644 index b02a8fb..0000000 --- a/docs/htmldoc/mathcomp.ssreflect.eqtype.html +++ /dev/null @@ -1,1192 +0,0 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" -"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> -<html xmlns="http://www.w3.org/1999/xhtml"> -<head> -<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> -<link href="coqdoc.css" rel="stylesheet" type="text/css" /> -<title>mathcomp.ssreflect.eqtype</title> -</head> - -<body> - -<div id="page"> - -<div id="header"> -</div> - -<div id="main"> - -<h1 class="libtitle">Library mathcomp.ssreflect.eqtype</h1> - -<div class="code"> -<span class="comment">(* (c) Copyright 2006-2016 Microsoft Corporation and Inria. <br/> - Distributed under the terms of CeCILL-B. *)</span><br/> - -<br/> -</div> - -<div class="doc"> - This file defines two "base" combinatorial interfaces: - eqType == the structure for types with a decidable equality. - 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) - 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]. - [predU1 a & A] == [pred x | (x == a) || (x \in A) ]. - [predD1 A & a] == [pred x | x != a & x \in A]. - predU1 a P, predD1 P a == applicative versions of the above. - frel f == the relation associated with f : T -> T. - := [rel x y | f x == y]. - invariant k f == elements of T whose k-class is f-invariant. - := [pred x | k (f x) == k x] with f : T -> T. - [fun x : T => e0 with a1 |-> e1, .., a_n |-> e_n] - [eta f with a1 |-> e1, .., a_n |-> e_n] == - the auto-expanding function that maps x = a_i to e_i, and other values - of x to e0 (resp. f x). In the first form the `: T' is optional and x - can occur in a_i or e_i. - Equality on an eqType is proof-irrelevant (lemma eq_irrelevance). - The eqType interface is implemented for most standard datatypes: - bool, unit, void, option, prod (denoted A * B), sum (denoted A + B), - sig (denoted {x | P}), sigT (denoted {i : I & T}). We also define - tagged_as u v == v cast as T(tag u) if tag v == tag u, else u. -<ul class="doclist"> -<li>> We have u == v <=> (tag u == tag v) && (tagged u == tagged_as u v). - -</li> -</ul> - The subType interface supports the following operations: - val == the generic injection from a subType S of T into T. - For example, if u : {x : T | P}, then val u : T. - val is injective because P is proof-irrelevant (P is in bool, - and the is_true coercion expands to P = true). - valP == the generic proof of P (val u) for u : subType P. - Sub x Px == the generic constructor for a subType P; Px is a proof of P x - and P should be inferred from the expected return type. - insub x == the generic partial projection of T into a subType S of T. - This returns an option S; if S : subType P then - insub x = Some u with val u = x if P x, - None if ~~ P x - The insubP lemma encapsulates this dichotomy. - P should be infered from the expected return type. - innew x == total (non-option) variant of insub when P = predT. - {? x | P} == option {x | P} (syntax for casting insub x). - insubd u0 x == the generic projection with default value u0. - := odflt u0 (insub x). - insigd A0 x == special case of insubd for S == {x | x \in A}, where A0 is - 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: - [subType for S_val] - where S_val : S -> T is the first projection of a type S isomorphic to - {x : T | P}. - [newType for S_val] - where S_val : S -> T is the projection of a type S isomorphic to - wrapped T; in this case P must be predT. - [subType for S_val by Srect], [newType for S_val by Srect] - variants of the above where the eliminator is explicitly provided. - Here S no longer needs to be syntactically identical to {x | P x} or - wrapped T, but it must have a derived constructor S_Sub statisfying an - eliminator Srect identical to the one the Coq Inductive command would - have generated, and S_val (S_Sub x Px) (resp. S_val (S_sub x) for the - newType form) must be convertible to x. - variant of the above when S is a wrapper type for T (so P = predT). - [subType of S], [subType of S for S_val] - clones the canonical subType structure for S; if S_val is specified, - then it replaces the inferred projector. - 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). 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. -</div> -<div class="code"> - -<br/> -<span class="id" title="keyword">Set Implicit Arguments</span>.<br/> - -<br/> -<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/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/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>}.<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> := <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.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/> - -<br/> -<span class="id" title="keyword">Module</span> <a name="Equality.Exports"><span class="id" title="module">Exports</span></a>.<br/> -<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="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="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="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/> - -<br/> -<span class="id" title="keyword">End</span> <a class="idref" href="mathcomp.ssreflect.eqtype.html#Equality"><span class="id" title="module">Equality</span></a>.<br/> -<span class="id" title="keyword">Export</span> <span class="id" title="var">Equality.Exports</span>.<br/> - -<br/> -<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/> -</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/> - -<br/> -<span class="id" title="keyword">Delimit</span> <span class="id" title="keyword">Scope</span> <span class="id" title="var">eq_scope</span> <span class="id" title="keyword">with</span> <span class="id" title="var">EQ</span>.<br/> -<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="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="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="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="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="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="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#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/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> : <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/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/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="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="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="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="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="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_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_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_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/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/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="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/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#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#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/> - -<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/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/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> - -<div class="doc"> - We use the module system to circumvent a silly limitation that - forbids using the same constant to coerce to different targets. -</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/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/> -<span class="id" title="keyword">End</span> <a class="idref" href="mathcomp.ssreflect.eqtype.html#MakeEqTypePred"><span class="id" title="module">MakeEqTypePred</span></a>.<br/> -<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/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/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> - -<div class="doc"> - Comparison for booleans. -<div class="paragraph"> </div> - - 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/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/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/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">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/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/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/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/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/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> - -<div class="doc"> - Equality-based predicates. -</div> -<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#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/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/> - -<br/> -<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/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/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/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/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/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/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/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/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/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/> - -<br/> - -<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="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/> -</div> - -<div class="doc"> - Lemmas for reflected equality and functions. -</div> -<div class="code"> - -<br/> -<span class="id" title="keyword">Section</span> <a name="EqFun"><span class="id" title="section">EqFun</span></a>.<br/> - -<br/> -<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/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/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/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/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/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/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/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/> - -<br/> -<span class="id" title="keyword">Section</span> <a name="EqFun.Endo"><span class="id" title="section">Endo</span></a>.<br/> - -<br/> -<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="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/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/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/> - -<br/> -<span class="id" title="keyword">Variable</span> <a name="EqFun.aT"><span class="id" title="variable">aT</span></a> : <span class="id" title="keyword">Type</span>.<br/> - -<br/> -</div> - -<div class="doc"> - The invariant of an function f wrt a projection k is the pred of points - that have the same projection as their image. -</div> -<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/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/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/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/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/> - -<br/> - -<br/> -</div> - -<div class="doc"> - 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="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/> - -<br/> -<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">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/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/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/> - -<br/> - -<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/> - -<br/> -<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="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="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="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/> - ) : <span class="id" title="var">fun_scope</span>.<br/> - -<br/> -</div> - -<div class="doc"> - Various EqType constructions. -</div> -<div class="code"> - -<br/> -<span class="id" title="keyword">Section</span> <a name="ComparableType"><span class="id" title="section">ComparableType</span></a>.<br/> - -<br/> -<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/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.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/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="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/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/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/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/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/> -</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/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/> - -<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="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> := <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/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">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/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/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/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/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/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.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/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/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/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="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/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">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/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/> - -<br/> - -<br/> - -<br/> - -<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="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="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="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/> -<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/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="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="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="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/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/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> - -<div class="doc"> - 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/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/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/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/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/> - -<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.Q"><span class="id" title="variable">Q</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/> - -<br/> -<span class="id" title="keyword">End</span> <a class="idref" href="mathcomp.ssreflect.eqtype.html#SigProj"><span class="id" title="section">SigProj</span></a>.<br/> - -<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/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> - -<div class="doc"> - Shorthand for sigma types over collective predicates. -</div> -<div class="code"> -<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="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/> -</div> - -<div class="doc"> - Shorthand for the return type of insub. -</div> -<div class="code"> -<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="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="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="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/> -</div> - -<div class="doc"> - A variant of injection with default that infers a collective predicate - 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/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> - -<div class="doc"> - There should be a rel definition for the subType equality op, but this - seems to cause the simpl tactic to diverge on expressions involving == - on 4+ nested subTypes in a "strict" position (e.g., after ~~). - Definition feq f := [rel x y | f x == f y]. -</div> -<div class="code"> - -<br/> -<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/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/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/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/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/> - -<br/> -<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/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/> - -<br/> -<span class="id" title="keyword">Definition</span> <a name="sub_eqMixin"><span class="id" title="definition">sub_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#val_eqP"><span class="id" title="lemma">val_eqP</span></a>.<br/> -<span class="id" title="keyword">Canonical</span> <span class="id" title="var">sub_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#SubEqType.sT"><span class="id" title="variable">sT</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#sub_eqMixin"><span class="id" title="definition">sub_eqMixin</span></a>.<br/> - -<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/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/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/> - -<br/> - -<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/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#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/> - -<br/> -<span class="id" title="keyword">Section</span> <a name="ProdEqType"><span class="id" title="section">ProdEqType</span></a>.<br/> - -<br/> -<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/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">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/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/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/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/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/> - -<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">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/> -<span class="id" title="keyword">Section</span> <a name="OptionEqType"><span class="id" title="section">OptionEqType</span></a>.<br/> - -<br/> -<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/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/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/> - -<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/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="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="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/> - -<br/> -<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/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/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/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/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#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/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/> - -<br/> - -<br/> -<span class="id" title="keyword">Section</span> <a name="SumEqType"><span class="id" title="section">SumEqType</span></a>.<br/> - -<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/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/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/> -<span class="id" title="keyword">Lemma</span> <a name="sum_eqP"><span class="id" title="lemma">sum_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#sum_eq"><span class="id" title="definition">sum_eq</span></a>.<br/> - -<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/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/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> - -<div id="footer"> -<hr/><a href="index.html">Index</a><hr/>This page has been generated by <a href="http://coq.inria.fr/">coqdoc</a> -</div> - -</div> - -</body> -</html>
\ No newline at end of file |
