aboutsummaryrefslogtreecommitdiff
path: root/docs/htmldoc/mathcomp.algebra.ssralg.html
diff options
context:
space:
mode:
Diffstat (limited to 'docs/htmldoc/mathcomp.algebra.ssralg.html')
-rw-r--r--docs/htmldoc/mathcomp.algebra.ssralg.html6323
1 files changed, 6323 insertions, 0 deletions
diff --git a/docs/htmldoc/mathcomp.algebra.ssralg.html b/docs/htmldoc/mathcomp.algebra.ssralg.html
new file mode 100644
index 0000000..8466ee9
--- /dev/null
+++ b/docs/htmldoc/mathcomp.algebra.ssralg.html
@@ -0,0 +1,6323 @@
+<!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.algebra.ssralg</title>
+</head>
+
+<body>
+
+<div id="page">
+
+<div id="header">
+</div>
+
+<div id="main">
+
+<h1 class="libtitle">Library mathcomp.algebra.ssralg</h1>
+
+<div class="code">
+<span class="comment">(*&nbsp;(c)&nbsp;Copyright&nbsp;2006-2016&nbsp;Microsoft&nbsp;Corporation&nbsp;and&nbsp;Inria.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br/>
+&nbsp;Distributed&nbsp;under&nbsp;the&nbsp;terms&nbsp;of&nbsp;CeCILL-B.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*)</span><br/>
+<span class="id" title="keyword">Require</span> <span class="id" title="keyword">Import</span> <a class="idref" href="mathcomp.ssreflect.ssreflect.html#"><span class="id" title="library">mathcomp.ssreflect.ssreflect</span></a>.<br/>
+
+<br/>
+</div>
+
+<div class="doc">
+ The algebraic part of the Algebraic Hierarchy, as described in
+ ``Packaging mathematical structures'', TPHOLs09, by
+ Francois Garillot, Georges Gonthier, Assia Mahboubi, Laurence Rideau
+
+<div class="paragraph"> </div>
+
+ This file defines for each Structure (Zmodule, Ring, etc ...) its type,
+ its packers and its canonical properties :
+
+<div class="paragraph"> </div>
+
+<a name="lab4"></a><h1 class="section">Zmodule (additive abelian groups):</h1>
+
+ zmodType == interface type for Zmodule structure.
+ ZmodMixin addA addC add0x addNx == builds the mixin for a Zmodule from the
+ algebraic properties of its operations.
+ ZmodType V m == packs the mixin m to build a Zmodule of type
+ zmodType. The carrier type V must have a
+ choiceType canonical structure.
+ [zmodType of V for S] == V-clone of the zmodType structure S: a copy of S
+ where the sort carrier has been replaced by V,
+ and which is therefore a zmodType structure on V.
+ The sort carrier for S must be convertible to V.
+ [zmodType of V] == clone of a canonical zmodType structure on V.
+ Similar to the above, except S is inferred, but
+ possibly with a syntactically different carrier.
+ 0 == the zero (additive identity) of a Zmodule.
+ x + y == the sum of x and y (in a Zmodule).
+<ul class="doclist">
+<li> x == the opposite (additive inverse) of x.
+
+</li>
+</ul>
+ x - y == the difference of x and y; this is only notation
+ for x + (- y).
+ x *+ n == n times x, with n in nat (non-negative), i.e.,
+ x + (x + .. (x + x)..) (n terms); x *+ 1 is thus
+ convertible to x, and x *+ 2 to x + x.
+ x *- n == notation for - (x *+ n), the opposite of x *+ n.
+ \sum</i>&lt;range&gt; e == iterated sum for a Zmodule (cf bigop.v).
+ e`<i>i == nth 0 e i, when e : seq M and M has a zmodType
+ structure.
+ support f == 0.-support f, i.e., [pred x | f x != 0].
+ oppr_closed S &lt;-&gt; collective predicate S is closed under opposite.
+ addr_closed S &lt;-&gt; collective predicate S is closed under finite
+ sums (0 and x + y in S, for x, y in S).
+ zmod_closed S &lt;-&gt; collective predicate S is closed under zmodType
+ operations (0 and x - y in S, for x, y in S).
+ This property coerces to oppr_pred and addr_pred.
+ OpprPred oppS == packs oppS : oppr_closed S into an opprPred S
+ interface structure associating this property to
+ the canonical pred_key S, i.e. the k for which S
+ has a Canonical keyed_pred k structure (see file
+ ssrbool.v).
+ AddrPred addS == packs addS : addr_closed S into an addrPred S
+ interface structure associating this property to
+ the canonical pred_key S (see above).
+ ZmodPred oppS == packs oppS : oppr_closed S into an zmodPred S
+ interface structure associating the zmod_closed
+ property to the canonical pred_key S (see above),
+ which must already be an addrPred.
+ [zmodMixin of M by &lt;: ] == zmodType mixin for a subType whose base type is
+ a zmodType and whose predicate's canonical
+ pred_key is a zmodPred.
+&gt; Coq can be made to behave as if all predicates had canonical zmodPred
+ keys by executing Import DefaultKeying GRing.DefaultPred. The required
+ oppr_closed and addr_closed assumptions will be either abstracted,
+ resolved or issued as separate proof obligations by the ssreflect
+ plugin abstraction and Prop-irrelevance functions.
+<a name="lab5"></a><h1 class="section">Ring (non-commutative rings):</h1>
+
+ ringType == interface type for a Ring structure.
+ RingMixin mulA mul1x mulx1 mulDx mulxD == builds the mixin for a Ring from
+ the algebraic properties of its multiplicative
+ operators; the carrier type must have a zmodType
+ structure.
+ RingType R m == packs the ring mixin m into a ringType.
+ R^c == the converse Ring for R: R^c is convertible to R
+ but when R has a canonical ringType structure
+ R^c has the converse one: if x y : R^c, then
+ x * y = (y : R) * (x : R).
+ [ringType of R for S] == R-clone of the ringType structure S.
+ [ringType of R] == clone of a canonical ringType structure on R.
+ 1 == the multiplicative identity element of a Ring.
+ n%:R == the ring image of an n in nat; this is just
+ notation for 1 *+ n, so 1%:R is convertible to 1
+ and 2%:R to 1 + 1.
+ x * y == the ring product of x and y.
+ \prod</i>&lt;range&gt; e == iterated product for a ring (cf bigop.v).
+ x ^+ n == x to the nth power with n in nat (non-negative),
+ i.e., x * (x * .. (x * x)..) (n factors); x ^+ 1
+ is thus convertible to x, and x ^+ 2 to x * x.
+ GRing.sign R b := (-1) ^+ b in R : ringType, with b : bool.
+ This is a parsing-only helper notation, to be
+ used for defining more specific instances.
+ GRing.comm x y &lt;-&gt; x and y commute, i.e., x * y = y * x.
+ GRing.lreg x &lt;-&gt; x if left-regular, i.e., *%R x is injective.
+ GRing.rreg x &lt;-&gt; x if right-regular, i.e., *%R x is injective.
+ [char R] == the characteristic of R, defined as the set of
+ prime numbers p such that p%:R = 0 in R. The set
+ [char p] has a most one element, and is
+ implemented as a pred_nat collective predicate
+ (see prime.v); thus the statement p \in [char R]
+ can be read as `R has characteristic p', while
+ [char R] =i pred0 means `R has characteristic 0'
+ when R is a field.
+ Frobenius_aut chRp == the Frobenius automorphism mapping x in R to
+ x ^+ p, where chRp : p \in [char R] is a proof
+ that R has (non-zero) characteristic p.
+ mulr_closed S &lt;-&gt; collective predicate S is closed under finite
+ products (1 and x * y in S for x, y in S).
+ smulr_closed S &lt;-&gt; collective predicate S is closed under products
+ and opposite (-1 and x * y in S for x, y in S).
+ semiring_closed S &lt;-&gt; collective predicate S is closed under semiring
+ operations (0, 1, x + y and x * y in S).
+ subring_closed S &lt;-&gt; collective predicate S is closed under ring
+ operations (1, x - y and x * y in S).
+ MulrPred mulS == packs mulS : mulr_closed S into a mulrPred S,
+ SmulrPred mulS smulrPred S, semiringPred S, or subringPred S
+ SemiringPred mulS interface structure, corresponding to the above
+ SubRingPred mulS properties, respectively, provided S already has
+ the supplementary zmodType closure properties.
+ The properties above coerce to subproperties so,
+ e.g., ringS : subring_closed S can be used for
+ the proof obligations of all prerequisites.
+ [ringMixin of R by &lt;: ] == ringType mixin for a subType whose base type is
+ a ringType and whose predicate's canonical key
+ is a SubringPred.
+&gt; As for zmodType predicates, Import DefaultKeying GRing.DefaultPred
+ turns unresolved GRing.Pred unification constraints into proof
+ obligations for basic closure assumptions.
+
+<div class="paragraph"> </div>
+
+<a name="lab6"></a><h1 class="section">ComRing (commutative Rings):</h1>
+
+ comRingType == interface type for commutative ring structure.
+ ComRingType R mulC == packs mulC into a comRingType; the carrier type
+ R must have a ringType canonical structure.
+ ComRingMixin mulA mulC mul1x mulDx == builds the mixin for a Ring (i.e., a
+ *non commutative* ring), using the commutativity
+ to reduce the number of proof obligations.
+ [comRingType of R for S] == R-clone of the comRingType structure S.
+ [comRingType of R] == clone of a canonical comRingType structure on R.
+ [comRingMixin of R by &lt;: ] == comutativity mixin axiom for R when it is a
+ subType of a commutative ring.
+
+<div class="paragraph"> </div>
+
+<a name="lab7"></a><h1 class="section">UnitRing (Rings whose units have computable inverses):</h1>
+
+ unitRingType == interface type for the UnitRing structure.
+ UnitRingMixin mulVr mulrV unitP inv0id == builds the mixin for a UnitRing
+ from the properties of the inverse operation and
+ the boolean test for being a unit (invertible).
+ The inverse of a non-unit x is constrained to be
+ x itself (property inv0id). The carrier type
+ must have a ringType canonical structure.
+ UnitRingType R m == packs the unit ring mixin m into a unitRingType.
+ WARNING: while it is possible to omit R for most of the
+ XxxType functions, R MUST be explicitly given
+ when UnitRingType is used with a mixin produced
+ by ComUnitRingMixin, otherwise the resulting
+ structure will have the WRONG sort key and will
+ NOT BE USED during type inference.
+ [unitRingType of R for S] == R-clone of the unitRingType structure S.
+ [unitRingType of R] == clones a canonical unitRingType structure on R.
+ x \is a GRing.unit &lt;=&gt; x is a unit (i.e., has an inverse).
+ x^-1 == the ring inverse of x, if x is a unit, else x.
+ x / y == x divided by y (notation for x * y^-1).
+ x ^- n := notation for (x ^+ n)^-1, the inverse of x ^+ n.
+ invr_closed S &lt;-&gt; collective predicate S is closed under inverse.
+ divr_closed S &lt;-&gt; collective predicate S is closed under division
+ (1 and x / y in S).
+ sdivr_closed S &lt;-&gt; collective predicate S is closed under division
+ and opposite (-1 and x / y in S, for x, y in S).
+ divring_closed S &lt;-&gt; collective predicate S is closed under unitRing
+ operations (1, x - y and x / y in S).
+ DivrPred invS == packs invS : mulr_closed S into a divrPred S,
+ SdivrPred invS sdivrPred S or divringPred S interface structure,
+ DivringPred invS corresponding to the above properties, resp.,
+ provided S already has the supplementary ringType
+ closure properties. The properties above coerce
+ to subproperties, as explained above.
+ [unitRingMixin of R by &lt;: ] == unitRingType mixin for a subType whose base
+ type is a unitRingType and whose predicate's
+ canonical key is a divringPred and whose ring
+ structure is compatible with the base type's.
+
+<div class="paragraph"> </div>
+
+<a name="lab8"></a><h1 class="section">ComUnitRing (commutative rings with computable inverses):</h1>
+
+ comUnitRingType == interface type for ComUnitRing structure.
+ ComUnitRingMixin mulVr unitP inv0id == builds the mixin for a UnitRing (a
+ *non commutative* unit ring, using commutativity
+ to simplify the proof obligations; the carrier
+ type must have a comRingType structure.
+ WARNING: ALWAYS give an explicit type argument
+ to UnitRingType along with a mixin produced by
+ ComUnitRingMixin (see above).
+ [comUnitRingType of R] == a comUnitRingType structure for R created by
+ merging canonical comRingType and unitRingType
+ structures on R.
+
+<div class="paragraph"> </div>
+
+<a name="lab9"></a><h1 class="section">IntegralDomain (integral, commutative, ring with partial inverses):</h1>
+
+ idomainType == interface type for the IntegralDomain structure.
+ IdomainType R mulf_eq0 == packs the integrality property into an
+ idomainType integral domain structure; R must
+ have a comUnitRingType canonical structure.
+ [idomainType of R for S] == R-clone of the idomainType structure S.
+ [idomainType of R] == clone of a canonical idomainType structure on R.
+ [idomainMixin of R by &lt;: ] == mixin axiom for a idomain subType.
+
+<div class="paragraph"> </div>
+
+<a name="lab10"></a><h1 class="section">Field (commutative fields):</h1>
+
+ fieldType == interface type for fields.
+ GRing.Field.axiom inv == the field axiom (x != 0 -&gt; inv x * x = 1).
+ FieldUnitMixin mulVx unitP inv0id == builds a *non commutative unit ring*
+ mixin, using the field axiom to simplify proof
+ obligations. The carrier type must have a
+ comRingType canonical structure.
+ FieldMixin mulVx == builds the field mixin from the field axiom. The
+ carrier type must have a comRingType structure.
+ FieldIdomainMixin m == builds an *idomain* mixin from a field mixin m.
+ FieldType R m == packs the field mixin M into a fieldType. The
+ carrier type R must be an idomainType.
+ [fieldType of F for S] == F-clone of the fieldType structure S.
+ [fieldType of F] == clone of a canonical fieldType structure on F.
+ [fieldMixin of R by &lt;: ] == mixin axiom for a field subType.
+
+<div class="paragraph"> </div>
+
+<a name="lab11"></a><h1 class="section">DecidableField (fields with a decidable first order theory):</h1>
+
+ decFieldType == interface type for DecidableField structure.
+ DecFieldMixin satP == builds the mixin for a DecidableField from the
+ correctness of its satisfiability predicate. The
+ carrier type must have a unitRingType structure.
+ DecFieldType F m == packs the decidable field mixin m into a
+ decFieldType; the carrier type F must have a
+ fieldType structure.
+ [decFieldType of F for S] == F-clone of the decFieldType structure S.
+ [decFieldType of F] == clone of a canonical decFieldType structure on F
+ GRing.term R == the type of formal expressions in a unit ring R
+ with formal variables 'X_k, k : nat, and
+ manifest constants x%:T, x : R. The notation of
+ all the ring operations is redefined for terms,
+ in scope %T.
+ GRing.formula R == the type of first order formulas over R; the %T
+ scope binds the logical connectives /\, \/, ~,
+ ==&gt;, ==, and != to formulae; GRing.True/False
+ and GRing.Bool b denote constant formulae, and
+ quantifiers are written 'forall/'exists 'X_k, f.
+ GRing.Unit x tests for ring units
+ GRing.If p_f t_f e_f emulates if-then-else
+ GRing.Pick p_f t_f e_f emulates fintype.pick
+ foldr GRing.Exists/Forall q_f xs can be used
+ to write iterated quantifiers.
+ GRing.eval e t == the value of term t with valuation e : seq R
+ (e maps 'X_i to e`<i>i).
+ GRing.same_env e1 e2 &lt;-&gt; environments e1 and e2 are extensionally equal.
+ GRing.qf_form f == f is quantifier-free.
+ GRing.holds e f == the intuitionistic CiC interpretation of the
+ formula f holds with valuation e.
+ GRing.qf_eval e f == the value (in bool) of a quantifier-free f.
+ GRing.sat e f == valuation e satisfies f (only in a decField).
+ GRing.sol n f == a sequence e of size n such that e satisfies f,
+ if one exists, or [:: ] if there is no such e.
+ QEdecFieldMixin wfP okP == a decidable field Mixin built from a quantifier
+ eliminator p and proofs wfP : GRing.wf_QE_proj p
+ and okP : GRing.valid_QE_proj p that p returns
+ well-formed and valid formulae, i.e., p i (u, v)
+ is a quantifier-free formula equivalent to
+ 'exists 'X_i, u1 == 0 /\ ... /\ u_m == 0 /\ v1 != 0 ... /\ v_n != 0
+
+<div class="paragraph"> </div>
+
+<a name="lab12"></a><h1 class="section">ClosedField (algebraically closed fields):</h1>
+
+ closedFieldType == interface type for the ClosedField structure.
+ ClosedFieldType F m == packs the closed field mixin m into a
+ closedFieldType. The carrier F must have a
+ decFieldType structure.
+ [closedFieldType of F on S] == F-clone of a closedFieldType structure S.
+ [closedFieldType of F] == clone of a canonicalclosedFieldType structure
+ on F.
+
+<div class="paragraph"> </div>
+
+<a name="lab13"></a><h1 class="section">Lmodule (module with left multiplication by external scalars).</h1>
+
+ lmodType R == interface type for an Lmodule structure with
+ scalars of type R; R must have a ringType
+ structure.
+ LmodMixin scalA scal1v scalxD scalDv == builds an Lmodule mixin from the
+ algebraic properties of the scaling operation;
+ the module carrier type must have a zmodType
+ structure, and the scalar carrier must have a
+ ringType structure.
+ LmodType R V m == packs the mixin v to build an Lmodule of type
+ lmodType R. The carrier type V must have a
+ zmodType structure.
+ [lmodType R of V for S] == V-clone of an lmodType R structure S.
+ [lmodType R of V] == clone of a canonical lmodType R structure on V.
+ a *: v == v scaled by a, when v is in an Lmodule V and a
+ is in the scalar Ring of V.
+ scaler_closed S &lt;-&gt; collective predicate S is closed under scaling.
+ linear_closed S &lt;-&gt; collective predicate S is closed under linear
+ combinations (a *: u + v in S when u, v in S).
+ submod_closed S &lt;-&gt; collective predicate S is closed under lmodType
+ operations (0 and a *: u + v in S).
+ SubmodPred scaleS == packs scaleS : scaler_closed S in a submodPred S
+ interface structure corresponding to the above
+ property, provided S's key is a zmodPred;
+ submod_closed coerces to all the prerequisites.
+ [lmodMixin of V by &lt;: ] == mixin for a subType of an lmodType, whose
+ predicate's key is a submodPred.
+
+<div class="paragraph"> </div>
+
+<a name="lab14"></a><h1 class="section">Lalgebra (left algebra, ring with scaling that associates on the left):</h1>
+
+ lalgType R == interface type for Lalgebra structures with
+ scalars in R; R must have ringType structure.
+ LalgType R V scalAl == packs scalAl : k (x y) = (k x) y into an
+ Lalgebra of type lalgType R. The carrier type V
+ must have both lmodType R and ringType canonical
+ structures.
+ R^o == the regular algebra of R: R^o is convertible to
+ R, but when R has a ringType structure then R^o
+ extends it to an lalgType structure by letting R
+ act on itself: if x : R and y : R^o then
+ x *: y = x * (y : R).
+ k%:A == the image of the scalar k in an L-algebra; this
+ is simply notation for k *: 1.
+ [lalgType R of V for S] == V-clone the lalgType R structure S.
+ [lalgType R of V] == clone of a canonical lalgType R structure on V.
+ subalg_closed S &lt;-&gt; collective predicate S is closed under lalgType
+ operations (1, a *: u + v and u * v in S).
+ SubalgPred scaleS == packs scaleS : scaler_closed S in a subalgPred S
+ interface structure corresponding to the above
+ property, provided S's key is a subringPred;
+ subalg_closed coerces to all the prerequisites.
+ [lalgMixin of V by &lt;: ] == mixin axiom for a subType of an lalgType.
+
+<div class="paragraph"> </div>
+
+<a name="lab15"></a><h1 class="section">Algebra (ring with scaling that associates both left and right):</h1>
+
+ algType R == type for Algebra structure with scalars in R.
+ R should be a commutative ring.
+ AlgType R A scalAr == packs scalAr : k (x y) = x (k y) into an Algebra
+ Structure of type algType R. The carrier type A
+ must have an lalgType R structure.
+ CommAlgType R A == creates an Algebra structure for an A that has
+ both lalgType R and comRingType structures.
+ [algType R of V for S] == V-clone of an algType R structure on S.
+ [algType R of V] == clone of a canonical algType R structure on V.
+ [algMixin of V by &lt;: ] == mixin axiom for a subType of an algType.
+
+<div class="paragraph"> </div>
+
+<a name="lab16"></a><h1 class="section">UnitAlgebra (algebra with computable inverses):</h1>
+
+ unitAlgType R == interface type for UnitAlgebra structure with
+ scalars in R; R should have a unitRingType
+ structure.
+ [unitAlgType R of V] == a unitAlgType R structure for V created by
+ merging canonical algType and unitRingType on V.
+ divalg_closed S &lt;-&gt; collective predicate S is closed under all
+ unitAlgType operations (1, a *: u + v and u / v
+ are in S fo u, v in S).
+ DivalgPred scaleS == packs scaleS : scaler_closed S in a divalgPred S
+ interface structure corresponding to the above
+ property, provided S's key is a divringPred;
+ divalg_closed coerces to all the prerequisites.
+
+<div class="paragraph"> </div>
+
+ In addition to this structure hierarchy, we also develop a separate,
+ parallel hierarchy for morphisms linking these structures:
+
+<div class="paragraph"> </div>
+
+<a name="lab17"></a><h1 class="section">Additive (additive functions):</h1>
+
+ additive f &lt;-&gt; f of type U -&gt; V is additive, i.e., f maps the
+ Zmodule structure of U to that of V, 0 to 0,
+<ul class="doclist">
+<li> to - and + to + (equivalently, binary - to -).
+
+</li>
+</ul>
+ := {morph f : u v / u + v}.
+ {additive U -&gt; V} == the interface type for a Structure (keyed on
+ a function f : U -&gt; V) that encapsulates the
+ additive property; both U and V must have
+ zmodType canonical structures.
+ Additive add_f == packs add_f : additive f into an additive
+ function structure of type {additive U -&gt; V}.
+ [additive of f as g] == an f-clone of the additive structure on the
+ function g -- f and g must be convertible.
+ [additive of f] == a clone of an existing additive structure on f.
+
+<div class="paragraph"> </div>
+
+<a name="lab18"></a><h1 class="section">RMorphism (ring morphisms):</h1>
+
+ multiplicative f &lt;-&gt; f of type R -&gt; S is multiplicative, i.e., f
+ maps 1 and * in R to 1 and * in S, respectively,
+ R ans S must have canonical ringType structures.
+ rmorphism f &lt;-&gt; f is a ring morphism, i.e., f is both additive
+ and multiplicative.
+ {rmorphism R -&gt; S} == the interface type for ring morphisms, i.e.,
+ a Structure that encapsulates the rmorphism
+ property for functions f : R -&gt; S; both R and S
+ must have ringType structures.
+ RMorphism morph_f == packs morph_f : rmorphism f into a Ring morphism
+ structure of type {rmorphism R -&gt; S}.
+ AddRMorphism mul_f == packs mul_f : multiplicative f into an rmorphism
+ structure of type {rmorphism R -&gt; S}; f must
+ already have an {additive R -&gt; S} structure.
+ [rmorphism of f as g] == an f-clone of the rmorphism structure of g.
+ [rmorphism of f] == a clone of an existing additive structure on f.
+<ul class="doclist">
+<li>&gt; If R and S are UnitRings the f also maps units to units and inverses
+ of units to inverses; if R is a field then f if a field isomorphism
+ between R and its image.
+
+</li>
+<li>&gt; As rmorphism coerces to both additive and multiplicative, all
+ structures for f can be built from a single proof of rmorphism f.
+
+</li>
+<li>&gt; Additive properties (raddf_suffix, see below) are duplicated and
+ specialised for RMorphism (as rmorph_suffix). This allows more
+ precise rewriting and cleaner chaining: although raddf lemmas will
+ recognize RMorphism functions, the converse will not hold (we cannot
+ add reverse inheritance rules because of incomplete backtracking in
+ the Canonical Projection unification), so one would have to insert a
+ /= every time one switched from additive to multiplicative rules.
+
+</li>
+<li>&gt; The property duplication also means that it is not strictly necessary
+ to declare all Additive instances.
+
+</li>
+</ul>
+
+<div class="paragraph"> </div>
+
+<a name="lab19"></a><h1 class="section">Linear (linear functions):</h1>
+
+ scalable f &lt;-&gt; f of type U -&gt; V is scalable, i.e., f morphs
+ scaling on U to scaling on V, a *: _ to a *: _.
+ U and V must both have lmodType R structures,
+ for the same ringType R.
+ scalable_for s f &lt;-&gt; f is scalable for scaling operator s, i.e.,
+ f morphs a *: _ to s a _; the range of f only
+ need to be a zmodType. The scaling operator s
+ should be one of *:%R (see scalable, above), *%R
+ or a combination nu \; *%R or nu \; *:%R with
+ nu : {rmorphism _}; otherwise some of the theory
+ (e.g., the linearZ rule) will not apply.
+ linear f &lt;-&gt; f of type U -&gt; V is linear, i.e., f morphs
+ linear combinations a *: u + v in U to similar
+ linear combinations in V; U and V must both have
+ lmodType R structures, for the same ringType R.
+ := forall a, {morph f: u v / a *: u + v}.
+ scalar f &lt;-&gt; f of type U -&gt; R is a scalar function, i.e.,
+ f (a *: u + v) = a * f u + f v.
+ linear_for s f &lt;-&gt; f is linear for the scaling operator s, i.e.,
+ f (a *: u + v) = s a (f u) + f v. The range of f
+ only needs to be a zmodType, but s MUST be of
+ the form described in in scalable_for paragraph
+ for this predicate to type check.
+ lmorphism f &lt;-&gt; f is both additive and scalable. This is in
+ fact equivalent to linear f, although somewhat
+ less convenient to prove.
+ lmorphism_for s f &lt;-&gt; f is both additive and scalable for s.
+ {linear U -&gt; V} == the interface type for linear functions, i.e., a
+ Structure that encapsulates the linear property
+ for functions f : U -&gt; V; both U and V must have
+ lmodType R structures, for the same R.
+ {scalar U} == the interface type for scalar functions, of type
+ U -&gt; R where U has an lmodType R structure.
+ {linear U -&gt; V | s} == the interface type for functions linear for s.
+ Linear lin_f == packs lin_f : lmorphism_for s f into a linear
+ function structure of type {linear U -&gt; V | s}.
+ As linear_for s f coerces to lmorphism_for s f,
+ Linear can be used with lin_f : linear_for s f
+ (indeed, that is the recommended usage). Note
+ that as linear f, scalar f, {linear U -&gt; V} and
+ {scalar U} are simply notation for corresponding
+ generic "<i>for" forms, Linear can be used for any
+ of these special cases, transparently.
+ AddLinear scal_f == packs scal_f : scalable_for s f into a
+ {linear U -&gt; V | s} structure; f must already
+ have an additive structure; as with Linear,
+ AddLinear can be used with lin_f : linear f, etc
+ [linear of f as g] == an f-clone of the linear structure of g.
+ [linear of f] == a clone of an existing linear structure on f.
+ (a *: u)%Rlin == transient forms that simplify to a *: u, a * u,
+ (a * u)%Rlin nu a *: u, and nu a * u, respectively, and are
+ (a *:^nu u)%Rlin created by rewriting with the linearZ lemma. The
+ (a *^nu u)%Rlin forms allows the RHS of linearZ to be matched
+ reliably, using the GRing.Scale.law structure.
+<ul class="doclist">
+<li>&gt; Similarly to Ring morphisms, additive properties are specialized for
+ linear functions.
+
+</li>
+<li>&gt; Although {scalar U} is convertible to {linear U -&gt; R^o}, it does not
+ actually use R^o, so that rewriting preserves the canonical structure
+ of the range of scalar functions.
+
+</li>
+<li>&gt; The generic linearZ lemma uses a set of bespoke interface structures to
+ ensure that both left-to-right and right-to-left rewriting work even in
+ the presence of scaling functions that simplify non-trivially (e.g.,
+ idfun \; *%R). Because most of the canonical instances and projections
+ are coercions the machinery will be mostly invisible (with only the
+ {linear ...} structure and %Rlin notations showing), but users should
+ beware that in (a *: f u)%Rlin, a actually occurs in the f u subterm.
+
+</li>
+<li>&gt; The simpler linear_LR, or more specialized linearZZ and scalarZ rules
+ should be used instead of linearZ if there are complexity issues, as
+ well as for explicit forward and backward application, as the main
+ parameter of linearZ is a proper sub-interface of {linear fUV | s}.
+
+</li>
+</ul>
+
+<div class="paragraph"> </div>
+
+<a name="lab20"></a><h1 class="section">LRMorphism (linear ring morphisms, i.e., algebra morphisms):</h1>
+
+ lrmorphism f &lt;-&gt; f of type A -&gt; B is a linear Ring (Algebra)
+ morphism: f is both additive, multiplicative and
+ scalable. A and B must both have lalgType R
+ canonical structures, for the same ringType R.
+ lrmorphism_for s f &lt;-&gt; f a linear Ring morphism for the scaling
+ operator s: f is additive, multiplicative and
+ scalable for s. A must be an lalgType R, but B
+ only needs to have a ringType structure.
+ {lrmorphism A -&gt; B} == the interface type for linear morphisms, i.e., a
+ Structure that encapsulates the lrmorphism
+ property for functions f : A -&gt; B; both A and B
+ must have lalgType R structures, for the same R.
+ {lrmorphism A -&gt; B | s} == the interface type for morphisms linear for s.
+ LRmorphism lrmorph_f == packs lrmorph_f : lrmorphism_for s f into a
+ linear morphism structure of type
+ {lrmorphism A -&gt; B | s}. Like Linear, LRmorphism
+ can be used transparently for lrmorphism f.
+ AddLRmorphism scal_f == packs scal_f : scalable_for s f into a linear
+ morphism structure of type
+ {lrmorphism A -&gt; B | s}; f must already have an
+ {rmorphism A -&gt; B} structure, and AddLRmorphism
+ can be applied to a linear_for s f, linear f,
+ scalar f, etc argument, like AddLinear.
+ [lrmorphism of f] == creates an lrmorphism structure from existing
+ rmorphism and linear structures on f; this is
+ the preferred way of creating lrmorphism
+ structures.
+<ul class="doclist">
+<li>&gt; Linear and rmorphism properties do not need to be specialized for
+ as we supply inheritance join instances in both directions.
+
+</li>
+</ul>
+ Finally we supply some helper notation for morphisms:
+ x^f == the image of x under some morphism. This
+ notation is only reserved (not defined) here;
+ it is bound locally in sections where some
+ morphism is used heavily (e.g., the container
+ morphism in the parametricity sections of poly
+ and matrix, or the Frobenius section here).
+ \0 == the constant null function, which has a
+ canonical linear structure, and simplifies on
+ application (see ssrfun.v).
+ f \+ g == the additive composition of f and g, i.e., the
+ function x |-&gt; f x + g x; f \+ g is canonically
+ linear when f and g are, and simplifies on
+ application (see ssrfun.v).
+ f \- g == the function x |-&gt; f x - g x, canonically
+ linear when f and g are, and simplifies on
+ application.
+ k \*: f == the function x |-&gt; k *: f x, which is
+ canonically linear when f is and simplifies on
+ application (this is a shorter alternative to
+ *:%R k \o f).
+ GRing.in_alg A == the ring morphism that injects R into A, where A
+ has an lalgType R structure; GRing.in_alg A k
+ simplifies to k%:A.
+ a \*o f == the function x |-&gt; a * f x, canonically linear
+ linear when f is and its codomain is an algType
+ and which simplifies on application.
+ a \o* f == the function x |-&gt; f x * a, canonically linear
+ linear when f is and its codomain is an lalgType
+ and which simplifies on application.
+ The Lemmas about these structures are contained in both the GRing module
+ and in the submodule GRing.Theory, which can be imported when unqualified
+ access to the theory is needed (GRing.Theory also allows the unqualified
+ use of additive, linear, Linear, etc). The main GRing module should NOT be
+ imported.
+ Notations are defined in scope ring_scope (delimiter %R), except term
+ and formula notations, which are in term_scope (delimiter %T).
+ This library also extends the conventional suffixes described in library
+ ssrbool.v with the following:
+ 0 -- ring 0, as in addr0 : x + 0 = x.
+ 1 -- ring 1, as in mulr1 : x * 1 = x.
+ D -- ring addition, as in linearD : f (u + v) = f u + f v.
+ B -- ring subtraction, as in opprB : - (x - y) = y - x.
+ M -- ring multiplication, as in invfM : (x * y)^-1 = x^-1 * y^-1.
+ Mn -- ring by nat multiplication, as in raddfMn : f (x *+ n) = f x *+ n.
+ N -- ring opposite, as in mulNr : (- x) * y = - (x * y).
+ V -- ring inverse, as in mulVr : x^-1 * x = 1.
+ X -- ring exponentiation, as in rmorphX : f (x ^+ n) = f x ^+ n.
+ Z -- (left) module scaling, as in linearZ : f (a *: v) = s *: f v.
+ The operator suffixes D, B, M and X are also used for the corresponding
+ operations on nat, as in natrX : (m ^ n)%:R = m%:R ^+ n. For the binary
+ power operator, a trailing "n" suffix is used to indicate the operator
+ suffix applies to the left-hand ring argument, as in
+ expr1n : 1 ^+ n = 1 vs. expr1 : x ^+ 1 = x.
+</div>
+<div class="code">
+
+<br/>
+<span class="id" title="keyword">Set Implicit Arguments</span>.<br/>
+
+<br/>
+<span class="id" title="keyword">Reserved Notation</span> &quot;+%R" (<span class="id" title="tactic">at</span> <span class="id" title="keyword">level</span> 0).<br/>
+<span class="id" title="keyword">Reserved Notation</span> &quot;-%R" (<span class="id" title="tactic">at</span> <span class="id" title="keyword">level</span> 0).<br/>
+<span class="id" title="keyword">Reserved Notation</span> &quot;*%R" (<span class="id" title="tactic">at</span> <span class="id" title="keyword">level</span> 0, <span class="id" title="var">format</span> " *%R").<br/>
+<span class="id" title="keyword">Reserved Notation</span> &quot;*:%R" (<span class="id" title="tactic">at</span> <span class="id" title="keyword">level</span> 0, <span class="id" title="var">format</span> " *:%R").<br/>
+<span class="id" title="keyword">Reserved Notation</span> &quot;n %:R" (<span class="id" title="tactic">at</span> <span class="id" title="keyword">level</span> 2, <span class="id" title="tactic">left</span> <span class="id" title="keyword">associativity</span>, <span class="id" title="var">format</span> "n %:R").<br/>
+<span class="id" title="keyword">Reserved Notation</span> &quot;k %:A" (<span class="id" title="tactic">at</span> <span class="id" title="keyword">level</span> 2, <span class="id" title="tactic">left</span> <span class="id" title="keyword">associativity</span>, <span class="id" title="var">format</span> "k %:A").<br/>
+<span class="id" title="keyword">Reserved Notation</span> &quot;[ 'char' F ]" (<span class="id" title="tactic">at</span> <span class="id" title="keyword">level</span> 0, <span class="id" title="var">format</span> "[ 'char' F ]").<br/>
+
+<br/>
+<span class="id" title="keyword">Reserved Notation</span> &quot;x %:T" (<span class="id" title="tactic">at</span> <span class="id" title="keyword">level</span> 2, <span class="id" title="tactic">left</span> <span class="id" title="keyword">associativity</span>, <span class="id" title="var">format</span> "x %:T").<br/>
+<span class="id" title="keyword">Reserved Notation</span> &quot;''X_' i" (<span class="id" title="tactic">at</span> <span class="id" title="keyword">level</span> 8, <span class="id" title="var">i</span> <span class="id" title="tactic">at</span> <span class="id" title="keyword">level</span> 2, <span class="id" title="var">format</span> "''X_' i").<br/>
+</div>
+
+<div class="doc">
+ Patch for recurring Coq parser bug: Coq seg faults when a level 200
+ notation is used as a pattern.
+</div>
+<div class="code">
+<span class="id" title="keyword">Reserved Notation</span> &quot;''exists' ''X_' i , f"<br/>
+&nbsp;&nbsp;(<span class="id" title="tactic">at</span> <span class="id" title="keyword">level</span> 199, <span class="id" title="var">i</span> <span class="id" title="tactic">at</span> <span class="id" title="keyword">level</span> 2, <span class="id" title="tactic">right</span> <span class="id" title="keyword">associativity</span>,<br/>
+&nbsp;&nbsp;&nbsp;<span class="id" title="var">format</span> "'[hv' ''exists' ''X_' i , '/ ' f ']'").<br/>
+<span class="id" title="keyword">Reserved Notation</span> &quot;''forall' ''X_' i , f"<br/>
+&nbsp;&nbsp;(<span class="id" title="tactic">at</span> <span class="id" title="keyword">level</span> 199, <span class="id" title="var">i</span> <span class="id" title="tactic">at</span> <span class="id" title="keyword">level</span> 2, <span class="id" title="tactic">right</span> <span class="id" title="keyword">associativity</span>,<br/>
+&nbsp;&nbsp;&nbsp;<span class="id" title="var">format</span> "'[hv' ''forall' ''X_' i , '/ ' f ']'").<br/>
+
+<br/>
+<span class="id" title="keyword">Reserved Notation</span> &quot;x ^f" (<span class="id" title="tactic">at</span> <span class="id" title="keyword">level</span> 2, <span class="id" title="tactic">left</span> <span class="id" title="keyword">associativity</span>, <span class="id" title="var">format</span> "x ^f").<br/>
+
+<br/>
+<span class="id" title="keyword">Reserved Notation</span> &quot;\0" (<span class="id" title="tactic">at</span> <span class="id" title="keyword">level</span> 0).<br/>
+<span class="id" title="keyword">Reserved Notation</span> &quot;f \+ g" (<span class="id" title="tactic">at</span> <span class="id" title="keyword">level</span> 50, <span class="id" title="tactic">left</span> <span class="id" title="keyword">associativity</span>).<br/>
+<span class="id" title="keyword">Reserved Notation</span> &quot;f \- g" (<span class="id" title="tactic">at</span> <span class="id" title="keyword">level</span> 50, <span class="id" title="tactic">left</span> <span class="id" title="keyword">associativity</span>).<br/>
+<span class="id" title="keyword">Reserved Notation</span> &quot;a \*o f" (<span class="id" title="tactic">at</span> <span class="id" title="keyword">level</span> 40).<br/>
+<span class="id" title="keyword">Reserved Notation</span> &quot;a \o* f" (<span class="id" title="tactic">at</span> <span class="id" title="keyword">level</span> 40).<br/>
+<span class="id" title="keyword">Reserved Notation</span> &quot;a \*: f" (<span class="id" title="tactic">at</span> <span class="id" title="keyword">level</span> 40).<br/>
+
+<br/>
+<span class="id" title="keyword">Delimit</span> <span class="id" title="keyword">Scope</span> <span class="id" title="var">ring_scope</span> <span class="id" title="keyword">with</span> <span class="id" title="var">R</span>.<br/>
+<span class="id" title="keyword">Delimit</span> <span class="id" title="keyword">Scope</span> <span class="id" title="var">term_scope</span> <span class="id" title="keyword">with</span> <span class="id" title="var">T</span>.<br/>
+<span class="id" title="keyword">Local Open</span> <span class="id" title="keyword">Scope</span> <span class="id" title="var">ring_scope</span>.<br/>
+
+<br/>
+<span class="id" title="keyword">Module</span> <span class="id" title="keyword">Import</span> <a name="GRing"><span class="id" title="module">GRing</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Import</span> <span class="id" title="var">Monoid.Theory</span>.<br/>
+
+<br/>
+<span class="id" title="keyword">Module</span> <a name="GRing.Zmodule"><span class="id" title="module">Zmodule</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Record</span> <a name="GRing.Zmodule.mixin_of"><span class="id" title="record">mixin_of</span></a> (<span class="id" title="var">V</span> : <span class="id" title="keyword">Type</span>) : <span class="id" title="keyword">Type</span> := <a name="GRing.Zmodule.Mixin"><span class="id" title="constructor">Mixin</span></a> {<br/>
+&nbsp;&nbsp;<a name="GRing.Zmodule.zero"><span class="id" title="projection">zero</span></a> : <a class="idref" href="mathcomp.algebra.ssralg.html#V"><span class="id" title="variable">V</span></a>;<br/>
+&nbsp;&nbsp;<a name="GRing.Zmodule.opp"><span class="id" title="projection">opp</span></a> : <a class="idref" href="mathcomp.algebra.ssralg.html#V"><span class="id" title="variable">V</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#V"><span class="id" title="variable">V</span></a>;<br/>
+&nbsp;&nbsp;<a name="GRing.Zmodule.add"><span class="id" title="projection">add</span></a> : <a class="idref" href="mathcomp.algebra.ssralg.html#V"><span class="id" title="variable">V</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#V"><span class="id" title="variable">V</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#V"><span class="id" title="variable">V</span></a>;<br/>
+&nbsp;&nbsp;<span class="id" title="var">_</span> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#associative"><span class="id" title="definition">associative</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#add"><span class="id" title="method">add</span></a>;<br/>
+&nbsp;&nbsp;<span class="id" title="var">_</span> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#commutative"><span class="id" title="definition">commutative</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#add"><span class="id" title="method">add</span></a>;<br/>
+&nbsp;&nbsp;<span class="id" title="var">_</span> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#left_id"><span class="id" title="definition">left_id</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#zero"><span class="id" title="method">zero</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#add"><span class="id" title="method">add</span></a>;<br/>
+&nbsp;&nbsp;<span class="id" title="var">_</span> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#left_inverse"><span class="id" title="definition">left_inverse</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#zero"><span class="id" title="method">zero</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#opp"><span class="id" title="method">opp</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#add"><span class="id" title="method">add</span></a><br/>
+}.<br/>
+
+<br/>
+<span class="id" title="keyword">Section</span> <a name="GRing.Zmodule.ClassDef"><span class="id" title="section">ClassDef</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Record</span> <a name="GRing.Zmodule.class_of"><span class="id" title="record">class_of</span></a> <span class="id" title="var">T</span> := <a name="GRing.Zmodule.Class"><span class="id" title="constructor">Class</span></a> { <a name="GRing.Zmodule.base"><span class="id" title="projection">base</span></a> : <a class="idref" href="mathcomp.ssreflect.choice.html#Choice.class_of"><span class="id" title="record">Choice.class_of</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#T"><span class="id" title="variable">T</span></a>; <a name="GRing.Zmodule.mixin"><span class="id" title="projection">mixin</span></a> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Zmodule.mixin_of"><span class="id" title="record">mixin_of</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#T"><span class="id" title="variable">T</span></a> }.<br/>
+
+<br/>
+<span class="id" title="keyword">Structure</span> <a name="GRing.Zmodule.type"><span class="id" title="record">type</span></a> := <a name="GRing.Zmodule.Pack"><span class="id" title="constructor">Pack</span></a> {<a name="GRing.Zmodule.sort"><span class="id" title="projection">sort</span></a>; <span class="id" title="var">_</span> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Zmodule.class_of"><span class="id" title="record">class_of</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#sort"><span class="id" title="method">sort</span></a>; <span class="id" title="var">_</span> : <span class="id" title="keyword">Type</span>}.<br/>
+<span class="id" title="keyword">Variables</span> (<a name="GRing.Zmodule.ClassDef.T"><span class="id" title="variable">T</span></a> : <span class="id" title="keyword">Type</span>) (<a name="GRing.Zmodule.ClassDef.cT"><span class="id" title="variable">cT</span></a> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Zmodule.type"><span class="id" title="record">type</span></a>).<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Zmodule.class"><span class="id" title="definition">class</span></a> := <span class="id" title="keyword">let</span>: <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Zmodule.Pack"><span class="id" title="constructor">Pack</span></a> <span class="id" title="var">_</span> <span class="id" title="var">c</span> <span class="id" title="var">_</span> <span class="id" title="keyword">as</span> <span class="id" title="var">cT'</span> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Zmodule.ClassDef.cT"><span class="id" title="variable">cT</span></a> <span class="id" title="keyword">return</span> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Zmodule.class_of"><span class="id" title="record">class_of</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#cT'"><span class="id" title="variable">cT'</span></a> <span class="id" title="tactic">in</span> <span class="id" title="var">c</span>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Zmodule.clone"><span class="id" title="definition">clone</span></a> <span class="id" title="var">c</span> <span class="id" title="keyword">of</span> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#phant_id"><span class="id" title="definition">phant_id</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Zmodule.class"><span class="id" title="definition">class</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#c"><span class="id" title="variable">c</span></a> := @<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Zmodule.Pack"><span class="id" title="constructor">Pack</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Zmodule.ClassDef.T"><span class="id" title="variable">T</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#c"><span class="id" title="variable">c</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Zmodule.ClassDef.T"><span class="id" title="variable">T</span></a>.<br/>
+<span class="id" title="keyword">Let</span> <a name="GRing.Zmodule.ClassDef.xT"><span class="id" title="variable">xT</span></a> := <span class="id" title="keyword">let</span>: <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Zmodule.Pack"><span class="id" title="constructor">Pack</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="mathcomp.algebra.ssralg.html#GRing.Zmodule.ClassDef.cT"><span class="id" title="variable">cT</span></a> <span class="id" title="tactic">in</span> <span class="id" title="var">T</span>.<br/>
+<span class="id" title="keyword">Notation</span> <a name="GRing.Zmodule.xclass"><span class="id" title="abbreviation">xclass</span></a> := (<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Zmodule.class"><span class="id" title="definition">class</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssreflect.html#4509b22bf26e3d6d771897e22bd8bc8f"><span class="id" title="notation">:</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Zmodule.class_of"><span class="id" title="record">class_of</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Zmodule.ClassDef.xT"><span class="id" title="variable">xT</span></a>).<br/>
+
+<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Zmodule.pack"><span class="id" title="definition">pack</span></a> <span class="id" title="var">m</span> :=<br/>
+&nbsp;&nbsp;<span class="id" title="keyword">fun</span> <span class="id" title="var">bT</span> <span class="id" title="var">b</span> &amp; <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#phant_id"><span class="id" title="definition">phant_id</span></a> (<a class="idref" href="mathcomp.ssreflect.choice.html#Choice.class"><span class="id" title="definition">Choice.class</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#bT"><span class="id" title="variable">bT</span></a>) <a class="idref" href="mathcomp.algebra.ssralg.html#b"><span class="id" title="variable">b</span></a> ⇒ <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Zmodule.Pack"><span class="id" title="constructor">Pack</span></a> (@<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Zmodule.Class"><span class="id" title="constructor">Class</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Zmodule.ClassDef.T"><span class="id" title="variable">T</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#b"><span class="id" title="variable">b</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#m"><span class="id" title="variable">m</span></a>) <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Zmodule.ClassDef.T"><span class="id" title="variable">T</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Zmodule.eqType"><span class="id" title="definition">eqType</span></a> := @<a class="idref" href="mathcomp.ssreflect.eqtype.html#Equality.Pack"><span class="id" title="constructor">Equality.Pack</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Zmodule.ClassDef.cT"><span class="id" title="variable">cT</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Zmodule.xclass"><span class="id" title="abbreviation">xclass</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Zmodule.ClassDef.xT"><span class="id" title="variable">xT</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Zmodule.choiceType"><span class="id" title="definition">choiceType</span></a> := @<a class="idref" href="mathcomp.ssreflect.choice.html#Choice.Pack"><span class="id" title="constructor">Choice.Pack</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Zmodule.ClassDef.cT"><span class="id" title="variable">cT</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Zmodule.xclass"><span class="id" title="abbreviation">xclass</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Zmodule.ClassDef.xT"><span class="id" title="variable">xT</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">End</span> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Zmodule.ClassDef"><span class="id" title="section">ClassDef</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Module</span> <a name="GRing.Zmodule.Exports"><span class="id" title="module">Exports</span></a>.<br/>
+<span class="id" title="keyword">Coercion</span> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Zmodule.base"><span class="id" title="projection">base</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Zmodule.base"><span class="id" title="projection">:</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Zmodule.base"><span class="id" title="projection">class_of</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Zmodule.base"><span class="id" title="projection">&gt;-&gt;</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Zmodule.base"><span class="id" title="projection">Choice.class_of</span></a>.<br/>
+<span class="id" title="keyword">Coercion</span> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Zmodule.mixin"><span class="id" title="projection">mixin</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Zmodule.mixin"><span class="id" title="projection">:</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Zmodule.mixin"><span class="id" title="projection">class_of</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Zmodule.mixin"><span class="id" title="projection">&gt;-&gt;</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Zmodule.mixin"><span class="id" title="projection">mixin_of</span></a>.<br/>
+<span class="id" title="keyword">Coercion</span> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Zmodule.sort"><span class="id" title="projection">sort</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Zmodule.sort"><span class="id" title="projection">:</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Zmodule.sort"><span class="id" title="projection">type</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Zmodule.sort"><span class="id" title="projection">&gt;-&gt;</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Zmodule.sort"><span class="id" title="projection">Sortclass</span></a>.<br/>
+<span class="id" title="keyword">Coercion</span> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Zmodule.eqType"><span class="id" title="definition">eqType</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Zmodule.eqType"><span class="id" title="definition">:</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Zmodule.eqType"><span class="id" title="definition">type</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Zmodule.eqType"><span class="id" title="definition">&gt;-&gt;</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Zmodule.eqType"><span class="id" title="definition">Equality.type</span></a>.<br/>
+<span class="id" title="keyword">Canonical</span> <span class="id" title="var">eqType</span>.<br/>
+<span class="id" title="keyword">Coercion</span> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Zmodule.choiceType"><span class="id" title="definition">choiceType</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Zmodule.choiceType"><span class="id" title="definition">:</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Zmodule.choiceType"><span class="id" title="definition">type</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Zmodule.choiceType"><span class="id" title="definition">&gt;-&gt;</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Zmodule.choiceType"><span class="id" title="definition">Choice.type</span></a>.<br/>
+<span class="id" title="keyword">Canonical</span> <span class="id" title="var">choiceType</span>.<br/>
+<span class="id" title="keyword">Notation</span> <a name="GRing.Zmodule.Exports.zmodType"><span class="id" title="abbreviation">zmodType</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Zmodule.type"><span class="id" title="record">type</span></a>.<br/>
+<span class="id" title="keyword">Notation</span> <a name="GRing.Zmodule.Exports.ZmodType"><span class="id" title="abbreviation">ZmodType</span></a> <span class="id" title="var">T</span> <span class="id" title="var">m</span> := (@<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Zmodule.pack"><span class="id" title="definition">pack</span></a> <span class="id" title="var">T</span> <span class="id" title="var">m</span> <span class="id" title="var">_</span> <span class="id" title="var">_</span> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#id"><span class="id" title="abbreviation">id</span></a>).<br/>
+<span class="id" title="keyword">Notation</span> <a name="GRing.Zmodule.Exports.ZmodMixin"><span class="id" title="abbreviation">ZmodMixin</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Zmodule.Mixin"><span class="id" title="constructor">Mixin</span></a>.<br/>
+<span class="id" title="keyword">Notation</span> <a name="285f5ccd0012cc284cf906e2e04f16f7"><span class="id" title="notation">&quot;</span></a>[ 'zmodType' 'of' T 'for' cT ]" := (@<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Zmodule.clone"><span class="id" title="definition">clone</span></a> <span class="id" title="var">T</span> <span class="id" title="var">cT</span> <span class="id" title="var">_</span> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#idfun"><span class="id" title="abbreviation">idfun</span></a>)<br/>
+&nbsp;&nbsp;(<span class="id" title="tactic">at</span> <span class="id" title="keyword">level</span> 0, <span class="id" title="var">format</span> "[ 'zmodType' 'of' T 'for' cT ]") : <span class="id" title="var">form_scope</span>.<br/>
+<span class="id" title="keyword">Notation</span> <a name="af6385fc2df84aeeec6855073f75cc68"><span class="id" title="notation">&quot;</span></a>[ 'zmodType' 'of' T ]" := (@<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Zmodule.clone"><span class="id" title="definition">clone</span></a> <span class="id" title="var">T</span> <span class="id" title="var">_</span> <span class="id" title="var">_</span> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#id"><span class="id" title="abbreviation">id</span></a>)<br/>
+&nbsp;&nbsp;(<span class="id" title="tactic">at</span> <span class="id" title="keyword">level</span> 0, <span class="id" title="var">format</span> "[ 'zmodType' 'of' T ]") : <span class="id" title="var">form_scope</span>.<br/>
+<span class="id" title="keyword">End</span> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Zmodule.Exports"><span class="id" title="module">Exports</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">End</span> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Zmodule"><span class="id" title="module">Zmodule</span></a>.<br/>
+<span class="id" title="keyword">Import</span> <span class="id" title="var">Zmodule.Exports</span>.<br/>
+
+<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.zero"><span class="id" title="definition">zero</span></a> <span class="id" title="var">V</span> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.zero"><span class="id" title="projection">Zmodule.zero</span></a> (<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.class"><span class="id" title="definition">Zmodule.class</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#V"><span class="id" title="variable">V</span></a>).<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.opp"><span class="id" title="definition">opp</span></a> <span class="id" title="var">V</span> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.opp"><span class="id" title="projection">Zmodule.opp</span></a> (<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.class"><span class="id" title="definition">Zmodule.class</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#V"><span class="id" title="variable">V</span></a>).<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.add"><span class="id" title="definition">add</span></a> <span class="id" title="var">V</span> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.add"><span class="id" title="projection">Zmodule.add</span></a> (<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.class"><span class="id" title="definition">Zmodule.class</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#V"><span class="id" title="variable">V</span></a>).<br/>
+
+<br/>
+
+<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.natmul"><span class="id" title="definition">natmul</span></a> <span class="id" title="var">V</span> <span class="id" title="var">x</span> <span class="id" title="var">n</span> := <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssreflect.html#nosimpl"><span class="id" title="abbreviation">nosimpl</span></a> <a class="idref" href="mathcomp.ssreflect.ssrnat.html#iterop"><span class="id" title="definition">iterop</span></a> <span class="id" title="var">_</span> <a class="idref" href="mathcomp.algebra.ssralg.html#n"><span class="id" title="variable">n</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#6c3404a70e11a79a0fa82b3d398aa71f"><span class="id" title="notation">+%</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#6c3404a70e11a79a0fa82b3d398aa71f"><span class="id" title="notation">R</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a> (<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.zero"><span class="id" title="definition">zero</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#V"><span class="id" title="variable">V</span></a>).<br/>
+
+<br/>
+
+<br/>
+
+<br/>
+
+<br/>
+<span class="id" title="keyword">Section</span> <a name="GRing.ZmoduleTheory"><span class="id" title="section">ZmoduleTheory</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Variable</span> <a name="GRing.ZmoduleTheory.V"><span class="id" title="variable">V</span></a> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.zmodType"><span class="id" title="abbreviation">zmodType</span></a>.<br/>
+<span class="id" title="keyword">Implicit</span> <span class="id" title="keyword">Types</span> <span class="id" title="var">x</span> <span class="id" title="var">y</span> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ZmoduleTheory.V"><span class="id" title="variable">V</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.addrA"><span class="id" title="lemma">addrA</span></a> : @<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#associative"><span class="id" title="definition">associative</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ZmoduleTheory.V"><span class="id" title="variable">V</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#6c3404a70e11a79a0fa82b3d398aa71f"><span class="id" title="notation">+%</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#6c3404a70e11a79a0fa82b3d398aa71f"><span class="id" title="notation">R</span></a>. <br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.addrC"><span class="id" title="lemma">addrC</span></a> : @<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#commutative"><span class="id" title="definition">commutative</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ZmoduleTheory.V"><span class="id" title="variable">V</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ZmoduleTheory.V"><span class="id" title="variable">V</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#6c3404a70e11a79a0fa82b3d398aa71f"><span class="id" title="notation">+%</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#6c3404a70e11a79a0fa82b3d398aa71f"><span class="id" title="notation">R</span></a>. <br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.add0r"><span class="id" title="lemma">add0r</span></a> : @<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#left_id"><span class="id" title="definition">left_id</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ZmoduleTheory.V"><span class="id" title="variable">V</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ZmoduleTheory.V"><span class="id" title="variable">V</span></a> 0 <a class="idref" href="mathcomp.algebra.ssralg.html#6c3404a70e11a79a0fa82b3d398aa71f"><span class="id" title="notation">+%</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#6c3404a70e11a79a0fa82b3d398aa71f"><span class="id" title="notation">R</span></a>. <br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.addNr"><span class="id" title="lemma">addNr</span></a> : @<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#left_inverse"><span class="id" title="definition">left_inverse</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ZmoduleTheory.V"><span class="id" title="variable">V</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ZmoduleTheory.V"><span class="id" title="variable">V</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ZmoduleTheory.V"><span class="id" title="variable">V</span></a> 0 <a class="idref" href="mathcomp.algebra.ssralg.html#221881b99d58ceaaa33c4172192f697e"><span class="id" title="notation">-%</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#221881b99d58ceaaa33c4172192f697e"><span class="id" title="notation">R</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#6c3404a70e11a79a0fa82b3d398aa71f"><span class="id" title="notation">+%</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#6c3404a70e11a79a0fa82b3d398aa71f"><span class="id" title="notation">R</span></a>. <br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.addr0"><span class="id" title="lemma">addr0</span></a> : @<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#right_id"><span class="id" title="definition">right_id</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ZmoduleTheory.V"><span class="id" title="variable">V</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ZmoduleTheory.V"><span class="id" title="variable">V</span></a> 0 <a class="idref" href="mathcomp.algebra.ssralg.html#6c3404a70e11a79a0fa82b3d398aa71f"><span class="id" title="notation">+%</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#6c3404a70e11a79a0fa82b3d398aa71f"><span class="id" title="notation">R</span></a>.<br/>
+ <span class="id" title="keyword">Lemma</span> <a name="GRing.addrN"><span class="id" title="lemma">addrN</span></a> : @<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#right_inverse"><span class="id" title="definition">right_inverse</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ZmoduleTheory.V"><span class="id" title="variable">V</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ZmoduleTheory.V"><span class="id" title="variable">V</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ZmoduleTheory.V"><span class="id" title="variable">V</span></a> 0 <a class="idref" href="mathcomp.algebra.ssralg.html#221881b99d58ceaaa33c4172192f697e"><span class="id" title="notation">-%</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#221881b99d58ceaaa33c4172192f697e"><span class="id" title="notation">R</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#6c3404a70e11a79a0fa82b3d398aa71f"><span class="id" title="notation">+%</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#6c3404a70e11a79a0fa82b3d398aa71f"><span class="id" title="notation">R</span></a>.<br/>
+ <span class="id" title="keyword">Definition</span> <a name="GRing.subrr"><span class="id" title="definition">subrr</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.addrN"><span class="id" title="lemma">addrN</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Canonical</span> <span class="id" title="var">add_monoid</span> := <a class="idref" href="mathcomp.ssreflect.bigop.html#Monoid.Law"><span class="id" title="constructor">Monoid.Law</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.addrA"><span class="id" title="lemma">addrA</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.add0r"><span class="id" title="lemma">add0r</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.addr0"><span class="id" title="lemma">addr0</span></a>.<br/>
+<span class="id" title="keyword">Canonical</span> <span class="id" title="var">add_comoid</span> := <a class="idref" href="mathcomp.ssreflect.bigop.html#Monoid.ComLaw"><span class="id" title="constructor">Monoid.ComLaw</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.addrC"><span class="id" title="lemma">addrC</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.addrCA"><span class="id" title="lemma">addrCA</span></a> : @<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#left_commutative"><span class="id" title="definition">left_commutative</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ZmoduleTheory.V"><span class="id" title="variable">V</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ZmoduleTheory.V"><span class="id" title="variable">V</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#6c3404a70e11a79a0fa82b3d398aa71f"><span class="id" title="notation">+%</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#6c3404a70e11a79a0fa82b3d398aa71f"><span class="id" title="notation">R</span></a>. <br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.addrAC"><span class="id" title="lemma">addrAC</span></a> : @<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#right_commutative"><span class="id" title="definition">right_commutative</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ZmoduleTheory.V"><span class="id" title="variable">V</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ZmoduleTheory.V"><span class="id" title="variable">V</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#6c3404a70e11a79a0fa82b3d398aa71f"><span class="id" title="notation">+%</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#6c3404a70e11a79a0fa82b3d398aa71f"><span class="id" title="notation">R</span></a>. <br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.addrACA"><span class="id" title="lemma">addrACA</span></a> : @<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#interchange"><span class="id" title="definition">interchange</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ZmoduleTheory.V"><span class="id" title="variable">V</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#6c3404a70e11a79a0fa82b3d398aa71f"><span class="id" title="notation">+%</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#6c3404a70e11a79a0fa82b3d398aa71f"><span class="id" title="notation">R</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#6c3404a70e11a79a0fa82b3d398aa71f"><span class="id" title="notation">+%</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#6c3404a70e11a79a0fa82b3d398aa71f"><span class="id" title="notation">R</span></a>. <br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.addKr"><span class="id" title="lemma">addKr</span></a> : @<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#left_loop"><span class="id" title="definition">left_loop</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ZmoduleTheory.V"><span class="id" title="variable">V</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ZmoduleTheory.V"><span class="id" title="variable">V</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#221881b99d58ceaaa33c4172192f697e"><span class="id" title="notation">-%</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#221881b99d58ceaaa33c4172192f697e"><span class="id" title="notation">R</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#6c3404a70e11a79a0fa82b3d398aa71f"><span class="id" title="notation">+%</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#6c3404a70e11a79a0fa82b3d398aa71f"><span class="id" title="notation">R</span></a>.<br/>
+ <span class="id" title="keyword">Lemma</span> <a name="GRing.addNKr"><span class="id" title="lemma">addNKr</span></a> : @<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#rev_left_loop"><span class="id" title="definition">rev_left_loop</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ZmoduleTheory.V"><span class="id" title="variable">V</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ZmoduleTheory.V"><span class="id" title="variable">V</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#221881b99d58ceaaa33c4172192f697e"><span class="id" title="notation">-%</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#221881b99d58ceaaa33c4172192f697e"><span class="id" title="notation">R</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#6c3404a70e11a79a0fa82b3d398aa71f"><span class="id" title="notation">+%</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#6c3404a70e11a79a0fa82b3d398aa71f"><span class="id" title="notation">R</span></a>.<br/>
+ <span class="id" title="keyword">Lemma</span> <a name="GRing.addrK"><span class="id" title="lemma">addrK</span></a> : @<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#right_loop"><span class="id" title="definition">right_loop</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ZmoduleTheory.V"><span class="id" title="variable">V</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ZmoduleTheory.V"><span class="id" title="variable">V</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#221881b99d58ceaaa33c4172192f697e"><span class="id" title="notation">-%</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#221881b99d58ceaaa33c4172192f697e"><span class="id" title="notation">R</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#6c3404a70e11a79a0fa82b3d398aa71f"><span class="id" title="notation">+%</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#6c3404a70e11a79a0fa82b3d398aa71f"><span class="id" title="notation">R</span></a>.<br/>
+ <span class="id" title="keyword">Lemma</span> <a name="GRing.addrNK"><span class="id" title="lemma">addrNK</span></a> : @<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#rev_right_loop"><span class="id" title="definition">rev_right_loop</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ZmoduleTheory.V"><span class="id" title="variable">V</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ZmoduleTheory.V"><span class="id" title="variable">V</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#221881b99d58ceaaa33c4172192f697e"><span class="id" title="notation">-%</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#221881b99d58ceaaa33c4172192f697e"><span class="id" title="notation">R</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#6c3404a70e11a79a0fa82b3d398aa71f"><span class="id" title="notation">+%</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#6c3404a70e11a79a0fa82b3d398aa71f"><span class="id" title="notation">R</span></a>.<br/>
+ <span class="id" title="keyword">Definition</span> <a name="GRing.subrK"><span class="id" title="definition">subrK</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.addrNK"><span class="id" title="lemma">addrNK</span></a>.<br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.subKr"><span class="id" title="lemma">subKr</span></a> <span class="id" title="var">x</span> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#involutive"><span class="id" title="definition">involutive</span></a> (<span class="id" title="keyword">fun</span> <span class="id" title="var">y</span> ⇒ <a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#4d4b9697032429ec46472e6332d1356a"><span class="id" title="notation">-</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#y"><span class="id" title="variable">y</span></a>).<br/>
+ <span class="id" title="keyword">Lemma</span> <a name="GRing.addrI"><span class="id" title="lemma">addrI</span></a> : @<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#right_injective"><span class="id" title="definition">right_injective</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ZmoduleTheory.V"><span class="id" title="variable">V</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ZmoduleTheory.V"><span class="id" title="variable">V</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ZmoduleTheory.V"><span class="id" title="variable">V</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#6c3404a70e11a79a0fa82b3d398aa71f"><span class="id" title="notation">+%</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#6c3404a70e11a79a0fa82b3d398aa71f"><span class="id" title="notation">R</span></a>.<br/>
+ <span class="id" title="keyword">Lemma</span> <a name="GRing.addIr"><span class="id" title="lemma">addIr</span></a> : @<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#left_injective"><span class="id" title="definition">left_injective</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ZmoduleTheory.V"><span class="id" title="variable">V</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ZmoduleTheory.V"><span class="id" title="variable">V</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ZmoduleTheory.V"><span class="id" title="variable">V</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#6c3404a70e11a79a0fa82b3d398aa71f"><span class="id" title="notation">+%</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#6c3404a70e11a79a0fa82b3d398aa71f"><span class="id" title="notation">R</span></a>.<br/>
+ <span class="id" title="keyword">Lemma</span> <a name="GRing.subrI"><span class="id" title="lemma">subrI</span></a> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#right_injective"><span class="id" title="definition">right_injective</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.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#4d4b9697032429ec46472e6332d1356a"><span class="id" title="notation">-</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#y"><span class="id" title="variable">y</span></a>).<br/>
+ <span class="id" title="keyword">Lemma</span> <a name="GRing.subIr"><span class="id" title="lemma">subIr</span></a> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#left_injective"><span class="id" title="definition">left_injective</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.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#4d4b9697032429ec46472e6332d1356a"><span class="id" title="notation">-</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#y"><span class="id" title="variable">y</span></a>).<br/>
+ <span class="id" title="keyword">Lemma</span> <a name="GRing.opprK"><span class="id" title="lemma">opprK</span></a> : @<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#involutive"><span class="id" title="definition">involutive</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ZmoduleTheory.V"><span class="id" title="variable">V</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#221881b99d58ceaaa33c4172192f697e"><span class="id" title="notation">-%</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#221881b99d58ceaaa33c4172192f697e"><span class="id" title="notation">R</span></a>.<br/>
+ <span class="id" title="keyword">Lemma</span> <a name="GRing.oppr_inj"><span class="id" title="lemma">oppr_inj</span></a> : @<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#injective"><span class="id" title="definition">injective</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ZmoduleTheory.V"><span class="id" title="variable">V</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ZmoduleTheory.V"><span class="id" title="variable">V</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#221881b99d58ceaaa33c4172192f697e"><span class="id" title="notation">-%</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#221881b99d58ceaaa33c4172192f697e"><span class="id" title="notation">R</span></a>.<br/>
+ <span class="id" title="keyword">Lemma</span> <a name="GRing.oppr0"><span class="id" title="lemma">oppr0</span></a> : <a class="idref" href="mathcomp.algebra.ssralg.html#eefae7eea8ed2b8fccf150cb653d7a7b"><span class="id" title="notation">-</span></a>0 <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#8f9364556521ebb498093f28eea2240f"><span class="id" title="notation">=</span></a> 0 <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#8f9364556521ebb498093f28eea2240f"><span class="id" title="notation">:&gt;</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ZmoduleTheory.V"><span class="id" title="variable">V</span></a>.<br/>
+ <span class="id" title="keyword">Lemma</span> <a name="GRing.oppr_eq0"><span class="id" title="lemma">oppr_eq0</span></a> <span class="id" title="var">x</span> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#eefae7eea8ed2b8fccf150cb653d7a7b"><span class="id" title="notation">-</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#17d28d004d0863cb022d4ce832ddaaae"><span class="id" title="notation">==</span></a> 0<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">)</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#17d28d004d0863cb022d4ce832ddaaae"><span class="id" title="notation">==</span></a> 0<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">)</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.subr0"><span class="id" title="lemma">subr0</span></a> <span class="id" title="var">x</span> : <a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#4d4b9697032429ec46472e6332d1356a"><span class="id" title="notation">-</span></a> 0 <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a>. <br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.sub0r"><span class="id" title="lemma">sub0r</span></a> <span class="id" title="var">x</span> : 0 <a class="idref" href="mathcomp.algebra.ssralg.html#4d4b9697032429ec46472e6332d1356a"><span class="id" title="notation">-</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#eefae7eea8ed2b8fccf150cb653d7a7b"><span class="id" title="notation">-</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a>. <br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.opprB"><span class="id" title="lemma">opprB</span></a> <span class="id" title="var">x</span> <span class="id" title="var">y</span> : <a class="idref" href="mathcomp.algebra.ssralg.html#eefae7eea8ed2b8fccf150cb653d7a7b"><span class="id" title="notation">-</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#eefae7eea8ed2b8fccf150cb653d7a7b"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#4d4b9697032429ec46472e6332d1356a"><span class="id" title="notation">-</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#y"><span class="id" title="variable">y</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#eefae7eea8ed2b8fccf150cb653d7a7b"><span class="id" title="notation">)</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#y"><span class="id" title="variable">y</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#4d4b9697032429ec46472e6332d1356a"><span class="id" title="notation">-</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.opprD"><span class="id" title="lemma">opprD</span></a> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#3014e73af2a90fd800d8681479d76336"><span class="id" title="notation">{</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#3014e73af2a90fd800d8681479d76336"><span class="id" title="notation">morph</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#221881b99d58ceaaa33c4172192f697e"><span class="id" title="notation">-%</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#221881b99d58ceaaa33c4172192f697e"><span class="id" title="notation">R</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#3014e73af2a90fd800d8681479d76336"><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/8.8.0/stdlib//Coq.ssr.ssrfun.html#3014e73af2a90fd800d8681479d76336"><span class="id" title="notation">/</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#338c5345074fd3586073fd29273c138a"><span class="id" title="notation">+</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#y"><span class="id" title="variable">y</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssreflect.html#4509b22bf26e3d6d771897e22bd8bc8f"><span class="id" title="notation">:</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ZmoduleTheory.V"><span class="id" title="variable">V</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#3014e73af2a90fd800d8681479d76336"><span class="id" title="notation">}</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.addrKA"><span class="id" title="lemma">addrKA</span></a> <span class="id" title="var">z</span> <span class="id" title="var">x</span> <span class="id" title="var">y</span> : <a class="idref" href="mathcomp.algebra.ssralg.html#4d4b9697032429ec46472e6332d1356a"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#338c5345074fd3586073fd29273c138a"><span class="id" title="notation">+</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#z"><span class="id" title="variable">z</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#4d4b9697032429ec46472e6332d1356a"><span class="id" title="notation">)</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#4d4b9697032429ec46472e6332d1356a"><span class="id" title="notation">-</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#4d4b9697032429ec46472e6332d1356a"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#z"><span class="id" title="variable">z</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#338c5345074fd3586073fd29273c138a"><span class="id" title="notation">+</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#y"><span class="id" title="variable">y</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#4d4b9697032429ec46472e6332d1356a"><span class="id" title="notation">)</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#4d4b9697032429ec46472e6332d1356a"><span class="id" title="notation">-</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#y"><span class="id" title="variable">y</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.subrKA"><span class="id" title="lemma">subrKA</span></a> <span class="id" title="var">z</span> <span class="id" title="var">x</span> <span class="id" title="var">y</span> : <a class="idref" href="mathcomp.algebra.ssralg.html#338c5345074fd3586073fd29273c138a"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#4d4b9697032429ec46472e6332d1356a"><span class="id" title="notation">-</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#z"><span class="id" title="variable">z</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#338c5345074fd3586073fd29273c138a"><span class="id" title="notation">)</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#338c5345074fd3586073fd29273c138a"><span class="id" title="notation">+</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#338c5345074fd3586073fd29273c138a"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#z"><span class="id" title="variable">z</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#338c5345074fd3586073fd29273c138a"><span class="id" title="notation">+</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#y"><span class="id" title="variable">y</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#338c5345074fd3586073fd29273c138a"><span class="id" title="notation">)</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#338c5345074fd3586073fd29273c138a"><span class="id" title="notation">+</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#y"><span class="id" title="variable">y</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.addr0_eq"><span class="id" title="lemma">addr0_eq</span></a> <span class="id" title="var">x</span> <span class="id" title="var">y</span> : <a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#338c5345074fd3586073fd29273c138a"><span class="id" title="notation">+</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#y"><span class="id" title="variable">y</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> 0 <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#eefae7eea8ed2b8fccf150cb653d7a7b"><span class="id" title="notation">-</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#y"><span class="id" title="variable">y</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.subr0_eq"><span class="id" title="lemma">subr0_eq</span></a> <span class="id" title="var">x</span> <span class="id" title="var">y</span> : <a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#4d4b9697032429ec46472e6332d1356a"><span class="id" title="notation">-</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#y"><span class="id" title="variable">y</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> 0 <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#y"><span class="id" title="variable">y</span></a>. <br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.subr_eq"><span class="id" title="lemma">subr_eq</span></a> <span class="id" title="var">x</span> <span class="id" title="var">y</span> <span class="id" title="var">z</span> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#4d4b9697032429ec46472e6332d1356a"><span class="id" title="notation">-</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#z"><span class="id" title="variable">z</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#17d28d004d0863cb022d4ce832ddaaae"><span class="id" title="notation">==</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#y"><span class="id" title="variable">y</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">)</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#17d28d004d0863cb022d4ce832ddaaae"><span class="id" title="notation">==</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#y"><span class="id" title="variable">y</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#338c5345074fd3586073fd29273c138a"><span class="id" title="notation">+</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#z"><span class="id" title="variable">z</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">)</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.subr_eq0"><span class="id" title="lemma">subr_eq0</span></a> <span class="id" title="var">x</span> <span class="id" title="var">y</span> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#4d4b9697032429ec46472e6332d1356a"><span class="id" title="notation">-</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#y"><span class="id" title="variable">y</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#17d28d004d0863cb022d4ce832ddaaae"><span class="id" title="notation">==</span></a> 0<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">)</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#17d28d004d0863cb022d4ce832ddaaae"><span class="id" title="notation">==</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#y"><span class="id" title="variable">y</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">)</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.addr_eq0"><span class="id" title="lemma">addr_eq0</span></a> <span class="id" title="var">x</span> <span class="id" title="var">y</span> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#338c5345074fd3586073fd29273c138a"><span class="id" title="notation">+</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#y"><span class="id" title="variable">y</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#17d28d004d0863cb022d4ce832ddaaae"><span class="id" title="notation">==</span></a> 0<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">)</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#17d28d004d0863cb022d4ce832ddaaae"><span class="id" title="notation">==</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#eefae7eea8ed2b8fccf150cb653d7a7b"><span class="id" title="notation">-</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#y"><span class="id" title="variable">y</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">)</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.eqr_opp"><span class="id" title="lemma">eqr_opp</span></a> <span class="id" title="var">x</span> <span class="id" title="var">y</span> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#eefae7eea8ed2b8fccf150cb653d7a7b"><span class="id" title="notation">-</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#17d28d004d0863cb022d4ce832ddaaae"><span class="id" title="notation">==</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#eefae7eea8ed2b8fccf150cb653d7a7b"><span class="id" title="notation">-</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#y"><span class="id" title="variable">y</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">)</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#17d28d004d0863cb022d4ce832ddaaae"><span class="id" title="notation">==</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#y"><span class="id" title="variable">y</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">)</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.eqr_oppLR"><span class="id" title="lemma">eqr_oppLR</span></a> <span class="id" title="var">x</span> <span class="id" title="var">y</span> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#eefae7eea8ed2b8fccf150cb653d7a7b"><span class="id" title="notation">-</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#17d28d004d0863cb022d4ce832ddaaae"><span class="id" title="notation">==</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#y"><span class="id" title="variable">y</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">)</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#17d28d004d0863cb022d4ce832ddaaae"><span class="id" title="notation">==</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#eefae7eea8ed2b8fccf150cb653d7a7b"><span class="id" title="notation">-</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#y"><span class="id" title="variable">y</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">)</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.mulr0n"><span class="id" title="lemma">mulr0n</span></a> <span class="id" title="var">x</span> : <a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#513eaa3129601ecbcc9e188a80d6155b"><span class="id" title="notation">*+</span></a> 0 <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> 0. <br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.mulr1n"><span class="id" title="lemma">mulr1n</span></a> <span class="id" title="var">x</span> : <a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#513eaa3129601ecbcc9e188a80d6155b"><span class="id" title="notation">*+</span></a> 1 <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a>. <br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.mulr2n"><span class="id" title="lemma">mulr2n</span></a> <span class="id" title="var">x</span> : <a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#513eaa3129601ecbcc9e188a80d6155b"><span class="id" title="notation">*+</span></a> 2 <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#338c5345074fd3586073fd29273c138a"><span class="id" title="notation">+</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a>. <br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.mulrS"><span class="id" title="lemma">mulrS</span></a> <span class="id" title="var">x</span> <span class="id" title="var">n</span> : <a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#513eaa3129601ecbcc9e188a80d6155b"><span class="id" title="notation">*+</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#n"><span class="id" title="variable">n</span></a><a class="idref" href="mathcomp.ssreflect.ssrnat.html#361454269931ea8643f7b402f2ab7222"><span class="id" title="notation">.+1</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#338c5345074fd3586073fd29273c138a"><span class="id" title="notation">+</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#513eaa3129601ecbcc9e188a80d6155b"><span class="id" title="notation">*+</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#n"><span class="id" title="variable">n</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.mulrSr"><span class="id" title="lemma">mulrSr</span></a> <span class="id" title="var">x</span> <span class="id" title="var">n</span> : <a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#513eaa3129601ecbcc9e188a80d6155b"><span class="id" title="notation">*+</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#n"><span class="id" title="variable">n</span></a><a class="idref" href="mathcomp.ssreflect.ssrnat.html#361454269931ea8643f7b402f2ab7222"><span class="id" title="notation">.+1</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#513eaa3129601ecbcc9e188a80d6155b"><span class="id" title="notation">*+</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#n"><span class="id" title="variable">n</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#338c5345074fd3586073fd29273c138a"><span class="id" title="notation">+</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.mulrb"><span class="id" title="lemma">mulrb</span></a> <span class="id" title="var">x</span> (<span class="id" title="var">b</span> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#bool"><span class="id" title="inductive">bool</span></a>) : <a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#513eaa3129601ecbcc9e188a80d6155b"><span class="id" title="notation">*+</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#b"><span class="id" title="variable">b</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">(</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssreflect.html#0348819abaa88c2cd747e8fa60dde7ae"><span class="id" title="notation">if</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#b"><span class="id" title="variable">b</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssreflect.html#0348819abaa88c2cd747e8fa60dde7ae"><span class="id" title="notation">then</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssreflect.html#0348819abaa88c2cd747e8fa60dde7ae"><span class="id" title="notation">else</span></a> 0<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">)</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.mul0rn"><span class="id" title="lemma">mul0rn</span></a> <span class="id" title="var">n</span> : 0 <a class="idref" href="mathcomp.algebra.ssralg.html#513eaa3129601ecbcc9e188a80d6155b"><span class="id" title="notation">*+</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#n"><span class="id" title="variable">n</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#8f9364556521ebb498093f28eea2240f"><span class="id" title="notation">=</span></a> 0 <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#8f9364556521ebb498093f28eea2240f"><span class="id" title="notation">:&gt;</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ZmoduleTheory.V"><span class="id" title="variable">V</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.mulNrn"><span class="id" title="lemma">mulNrn</span></a> <span class="id" title="var">x</span> <span class="id" title="var">n</span> : <a class="idref" href="mathcomp.algebra.ssralg.html#513eaa3129601ecbcc9e188a80d6155b"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#eefae7eea8ed2b8fccf150cb653d7a7b"><span class="id" title="notation">-</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#513eaa3129601ecbcc9e188a80d6155b"><span class="id" title="notation">)</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#513eaa3129601ecbcc9e188a80d6155b"><span class="id" title="notation">*+</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#n"><span class="id" title="variable">n</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#be9a273af87c6a30d88bd8379c802cbe"><span class="id" title="notation">*-</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#n"><span class="id" title="variable">n</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.mulrnDl"><span class="id" title="lemma">mulrnDl</span></a> <span class="id" title="var">n</span> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#3014e73af2a90fd800d8681479d76336"><span class="id" title="notation">{</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#3014e73af2a90fd800d8681479d76336"><span class="id" title="notation">morph</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#3014e73af2a90fd800d8681479d76336"><span class="id" title="notation">(</span></a><span class="id" title="keyword">fun</span> <span class="id" title="var">x</span> ⇒ <a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#513eaa3129601ecbcc9e188a80d6155b"><span class="id" title="notation">*+</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#n"><span class="id" title="variable">n</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#3014e73af2a90fd800d8681479d76336"><span class="id" title="notation">)</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#3014e73af2a90fd800d8681479d76336"><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/8.8.0/stdlib//Coq.ssr.ssrfun.html#3014e73af2a90fd800d8681479d76336"><span class="id" title="notation">/</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#338c5345074fd3586073fd29273c138a"><span class="id" title="notation">+</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#y"><span class="id" title="variable">y</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#3014e73af2a90fd800d8681479d76336"><span class="id" title="notation">}</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.mulrnDr"><span class="id" title="lemma">mulrnDr</span></a> <span class="id" title="var">x</span> <span class="id" title="var">m</span> <span class="id" title="var">n</span> : <a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#513eaa3129601ecbcc9e188a80d6155b"><span class="id" title="notation">*+</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#513eaa3129601ecbcc9e188a80d6155b"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#m"><span class="id" title="variable">m</span></a> <a class="idref" href="mathcomp.ssreflect.ssrnat.html#b3eea360671e1b32b18a26e15b3aace3"><span class="id" title="notation">+</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#n"><span class="id" title="variable">n</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#513eaa3129601ecbcc9e188a80d6155b"><span class="id" title="notation">)</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#513eaa3129601ecbcc9e188a80d6155b"><span class="id" title="notation">*+</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#m"><span class="id" title="variable">m</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#338c5345074fd3586073fd29273c138a"><span class="id" title="notation">+</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#513eaa3129601ecbcc9e188a80d6155b"><span class="id" title="notation">*+</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#n"><span class="id" title="variable">n</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.mulrnBl"><span class="id" title="lemma">mulrnBl</span></a> <span class="id" title="var">n</span> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#3014e73af2a90fd800d8681479d76336"><span class="id" title="notation">{</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#3014e73af2a90fd800d8681479d76336"><span class="id" title="notation">morph</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#3014e73af2a90fd800d8681479d76336"><span class="id" title="notation">(</span></a><span class="id" title="keyword">fun</span> <span class="id" title="var">x</span> ⇒ <a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#513eaa3129601ecbcc9e188a80d6155b"><span class="id" title="notation">*+</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#n"><span class="id" title="variable">n</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#3014e73af2a90fd800d8681479d76336"><span class="id" title="notation">)</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#3014e73af2a90fd800d8681479d76336"><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/8.8.0/stdlib//Coq.ssr.ssrfun.html#3014e73af2a90fd800d8681479d76336"><span class="id" title="notation">/</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#4d4b9697032429ec46472e6332d1356a"><span class="id" title="notation">-</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#y"><span class="id" title="variable">y</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#3014e73af2a90fd800d8681479d76336"><span class="id" title="notation">}</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.mulrnBr"><span class="id" title="lemma">mulrnBr</span></a> <span class="id" title="var">x</span> <span class="id" title="var">m</span> <span class="id" title="var">n</span> : <a class="idref" href="mathcomp.algebra.ssralg.html#n"><span class="id" title="variable">n</span></a> <a class="idref" href="mathcomp.ssreflect.ssrnat.html#9b077c369e19739ef880736ba34623ff"><span class="id" title="notation">≤</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#m"><span class="id" title="variable">m</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#513eaa3129601ecbcc9e188a80d6155b"><span class="id" title="notation">*+</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#513eaa3129601ecbcc9e188a80d6155b"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#m"><span class="id" title="variable">m</span></a> <a class="idref" href="mathcomp.ssreflect.ssrnat.html#9482aae3d3b06e249765c1225dbb8cbb"><span class="id" title="notation">-</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#n"><span class="id" title="variable">n</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#513eaa3129601ecbcc9e188a80d6155b"><span class="id" title="notation">)</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#513eaa3129601ecbcc9e188a80d6155b"><span class="id" title="notation">*+</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#m"><span class="id" title="variable">m</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#4d4b9697032429ec46472e6332d1356a"><span class="id" title="notation">-</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#513eaa3129601ecbcc9e188a80d6155b"><span class="id" title="notation">*+</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#n"><span class="id" title="variable">n</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.mulrnA"><span class="id" title="lemma">mulrnA</span></a> <span class="id" title="var">x</span> <span class="id" title="var">m</span> <span class="id" title="var">n</span> : <a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#513eaa3129601ecbcc9e188a80d6155b"><span class="id" title="notation">*+</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#513eaa3129601ecbcc9e188a80d6155b"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#m"><span class="id" title="variable">m</span></a> <a class="idref" href="mathcomp.ssreflect.ssrnat.html#697e4695610f677ae98a52af81f779d2"><span class="id" title="notation">×</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#n"><span class="id" title="variable">n</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#513eaa3129601ecbcc9e188a80d6155b"><span class="id" title="notation">)</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#513eaa3129601ecbcc9e188a80d6155b"><span class="id" title="notation">*+</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#m"><span class="id" title="variable">m</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#513eaa3129601ecbcc9e188a80d6155b"><span class="id" title="notation">*+</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#n"><span class="id" title="variable">n</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.mulrnAC"><span class="id" title="lemma">mulrnAC</span></a> <span class="id" title="var">x</span> <span class="id" title="var">m</span> <span class="id" title="var">n</span> : <a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#513eaa3129601ecbcc9e188a80d6155b"><span class="id" title="notation">*+</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#m"><span class="id" title="variable">m</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#513eaa3129601ecbcc9e188a80d6155b"><span class="id" title="notation">*+</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#n"><span class="id" title="variable">n</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#513eaa3129601ecbcc9e188a80d6155b"><span class="id" title="notation">*+</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#n"><span class="id" title="variable">n</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#513eaa3129601ecbcc9e188a80d6155b"><span class="id" title="notation">*+</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#m"><span class="id" title="variable">m</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.sumrN"><span class="id" title="lemma">sumrN</span></a> <span class="id" title="var">I</span> <span class="id" title="var">r</span> <span class="id" title="var">P</span> (<span class="id" title="var">F</span> : <a class="idref" href="mathcomp.algebra.ssralg.html#I"><span class="id" title="variable">I</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ZmoduleTheory.V"><span class="id" title="variable">V</span></a>) :<br/>
+&nbsp;&nbsp;(<a class="idref" href="mathcomp.algebra.ssralg.html#664ae738a3286983847c80e5ee4c8c6b"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#664ae738a3286983847c80e5ee4c8c6b"><span class="id" title="notation">sum_</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#664ae738a3286983847c80e5ee4c8c6b"><span class="id" title="notation">(</span></a><span class="id" title="var">i</span> <a class="idref" href="mathcomp.algebra.ssralg.html#664ae738a3286983847c80e5ee4c8c6b"><span class="id" title="notation">&lt;-</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#r"><span class="id" title="variable">r</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#664ae738a3286983847c80e5ee4c8c6b"><span class="id" title="notation">|</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#P"><span class="id" title="variable">P</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#i"><span class="id" title="variable">i</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#664ae738a3286983847c80e5ee4c8c6b"><span class="id" title="notation">)</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#eefae7eea8ed2b8fccf150cb653d7a7b"><span class="id" title="notation">-</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#F"><span class="id" title="variable">F</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#i"><span class="id" title="variable">i</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#eefae7eea8ed2b8fccf150cb653d7a7b"><span class="id" title="notation">-</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#eefae7eea8ed2b8fccf150cb653d7a7b"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#664ae738a3286983847c80e5ee4c8c6b"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#664ae738a3286983847c80e5ee4c8c6b"><span class="id" title="notation">sum_</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#664ae738a3286983847c80e5ee4c8c6b"><span class="id" title="notation">(</span></a><span class="id" title="var">i</span> <a class="idref" href="mathcomp.algebra.ssralg.html#664ae738a3286983847c80e5ee4c8c6b"><span class="id" title="notation">&lt;-</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#r"><span class="id" title="variable">r</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#664ae738a3286983847c80e5ee4c8c6b"><span class="id" title="notation">|</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#P"><span class="id" title="variable">P</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#i"><span class="id" title="variable">i</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#664ae738a3286983847c80e5ee4c8c6b"><span class="id" title="notation">)</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#F"><span class="id" title="variable">F</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#i"><span class="id" title="variable">i</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#eefae7eea8ed2b8fccf150cb653d7a7b"><span class="id" title="notation">)</span></a>).<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.sumrB"><span class="id" title="lemma">sumrB</span></a> <span class="id" title="var">I</span> <span class="id" title="var">r</span> (<span class="id" title="var">P</span> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#pred"><span class="id" title="definition">pred</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#I"><span class="id" title="variable">I</span></a>) (<span class="id" title="var">F1</span> <span class="id" title="var">F2</span> : <a class="idref" href="mathcomp.algebra.ssralg.html#I"><span class="id" title="variable">I</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ZmoduleTheory.V"><span class="id" title="variable">V</span></a>) :<br/>
+&nbsp;&nbsp;<a class="idref" href="mathcomp.algebra.ssralg.html#664ae738a3286983847c80e5ee4c8c6b"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#664ae738a3286983847c80e5ee4c8c6b"><span class="id" title="notation">sum_</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#664ae738a3286983847c80e5ee4c8c6b"><span class="id" title="notation">(</span></a><span class="id" title="var">i</span> <a class="idref" href="mathcomp.algebra.ssralg.html#664ae738a3286983847c80e5ee4c8c6b"><span class="id" title="notation">&lt;-</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#r"><span class="id" title="variable">r</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#664ae738a3286983847c80e5ee4c8c6b"><span class="id" title="notation">|</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#P"><span class="id" title="variable">P</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#i"><span class="id" title="variable">i</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#664ae738a3286983847c80e5ee4c8c6b"><span class="id" title="notation">)</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#664ae738a3286983847c80e5ee4c8c6b"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#F1"><span class="id" title="variable">F1</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#i"><span class="id" title="variable">i</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#4d4b9697032429ec46472e6332d1356a"><span class="id" title="notation">-</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#F2"><span class="id" title="variable">F2</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#i"><span class="id" title="variable">i</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#664ae738a3286983847c80e5ee4c8c6b"><span class="id" title="notation">)</span></a><br/>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#664ae738a3286983847c80e5ee4c8c6b"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#664ae738a3286983847c80e5ee4c8c6b"><span class="id" title="notation">sum_</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#664ae738a3286983847c80e5ee4c8c6b"><span class="id" title="notation">(</span></a><span class="id" title="var">i</span> <a class="idref" href="mathcomp.algebra.ssralg.html#664ae738a3286983847c80e5ee4c8c6b"><span class="id" title="notation">&lt;-</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#r"><span class="id" title="variable">r</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#664ae738a3286983847c80e5ee4c8c6b"><span class="id" title="notation">|</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#P"><span class="id" title="variable">P</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#i"><span class="id" title="variable">i</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#664ae738a3286983847c80e5ee4c8c6b"><span class="id" title="notation">)</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#F1"><span class="id" title="variable">F1</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#i"><span class="id" title="variable">i</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#4d4b9697032429ec46472e6332d1356a"><span class="id" title="notation">-</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#664ae738a3286983847c80e5ee4c8c6b"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#664ae738a3286983847c80e5ee4c8c6b"><span class="id" title="notation">sum_</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#664ae738a3286983847c80e5ee4c8c6b"><span class="id" title="notation">(</span></a><span class="id" title="var">i</span> <a class="idref" href="mathcomp.algebra.ssralg.html#664ae738a3286983847c80e5ee4c8c6b"><span class="id" title="notation">&lt;-</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#r"><span class="id" title="variable">r</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#664ae738a3286983847c80e5ee4c8c6b"><span class="id" title="notation">|</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#P"><span class="id" title="variable">P</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#i"><span class="id" title="variable">i</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#664ae738a3286983847c80e5ee4c8c6b"><span class="id" title="notation">)</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#F2"><span class="id" title="variable">F2</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#i"><span class="id" title="variable">i</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.sumrMnl"><span class="id" title="lemma">sumrMnl</span></a> <span class="id" title="var">I</span> <span class="id" title="var">r</span> <span class="id" title="var">P</span> (<span class="id" title="var">F</span> : <a class="idref" href="mathcomp.algebra.ssralg.html#I"><span class="id" title="variable">I</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ZmoduleTheory.V"><span class="id" title="variable">V</span></a>) <span class="id" title="var">n</span> :<br/>
+&nbsp;&nbsp;<a class="idref" href="mathcomp.algebra.ssralg.html#664ae738a3286983847c80e5ee4c8c6b"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#664ae738a3286983847c80e5ee4c8c6b"><span class="id" title="notation">sum_</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#664ae738a3286983847c80e5ee4c8c6b"><span class="id" title="notation">(</span></a><span class="id" title="var">i</span> <a class="idref" href="mathcomp.algebra.ssralg.html#664ae738a3286983847c80e5ee4c8c6b"><span class="id" title="notation">&lt;-</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#r"><span class="id" title="variable">r</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#664ae738a3286983847c80e5ee4c8c6b"><span class="id" title="notation">|</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#P"><span class="id" title="variable">P</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#i"><span class="id" title="variable">i</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#664ae738a3286983847c80e5ee4c8c6b"><span class="id" title="notation">)</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#F"><span class="id" title="variable">F</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#i"><span class="id" title="variable">i</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#513eaa3129601ecbcc9e188a80d6155b"><span class="id" title="notation">*+</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#n"><span class="id" title="variable">n</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#513eaa3129601ecbcc9e188a80d6155b"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#664ae738a3286983847c80e5ee4c8c6b"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#664ae738a3286983847c80e5ee4c8c6b"><span class="id" title="notation">sum_</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#664ae738a3286983847c80e5ee4c8c6b"><span class="id" title="notation">(</span></a><span class="id" title="var">i</span> <a class="idref" href="mathcomp.algebra.ssralg.html#664ae738a3286983847c80e5ee4c8c6b"><span class="id" title="notation">&lt;-</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#r"><span class="id" title="variable">r</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#664ae738a3286983847c80e5ee4c8c6b"><span class="id" title="notation">|</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#P"><span class="id" title="variable">P</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#i"><span class="id" title="variable">i</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#664ae738a3286983847c80e5ee4c8c6b"><span class="id" title="notation">)</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#F"><span class="id" title="variable">F</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#i"><span class="id" title="variable">i</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#513eaa3129601ecbcc9e188a80d6155b"><span class="id" title="notation">)</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#513eaa3129601ecbcc9e188a80d6155b"><span class="id" title="notation">*+</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#n"><span class="id" title="variable">n</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.sumrMnr"><span class="id" title="lemma">sumrMnr</span></a> <span class="id" title="var">x</span> <span class="id" title="var">I</span> <span class="id" title="var">r</span> <span class="id" title="var">P</span> (<span class="id" title="var">F</span> : <a class="idref" href="mathcomp.algebra.ssralg.html#I"><span class="id" title="variable">I</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#nat"><span class="id" title="inductive">nat</span></a>) :<br/>
+&nbsp;&nbsp;<a class="idref" href="mathcomp.algebra.ssralg.html#664ae738a3286983847c80e5ee4c8c6b"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#664ae738a3286983847c80e5ee4c8c6b"><span class="id" title="notation">sum_</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#664ae738a3286983847c80e5ee4c8c6b"><span class="id" title="notation">(</span></a><span class="id" title="var">i</span> <a class="idref" href="mathcomp.algebra.ssralg.html#664ae738a3286983847c80e5ee4c8c6b"><span class="id" title="notation">&lt;-</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#r"><span class="id" title="variable">r</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#664ae738a3286983847c80e5ee4c8c6b"><span class="id" title="notation">|</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#P"><span class="id" title="variable">P</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#i"><span class="id" title="variable">i</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#664ae738a3286983847c80e5ee4c8c6b"><span class="id" title="notation">)</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#513eaa3129601ecbcc9e188a80d6155b"><span class="id" title="notation">*+</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#F"><span class="id" title="variable">F</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#i"><span class="id" title="variable">i</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#513eaa3129601ecbcc9e188a80d6155b"><span class="id" title="notation">*+</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#513eaa3129601ecbcc9e188a80d6155b"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.ssreflect.bigop.html#ea7e35bae15685d5cd3430a8e48be02b"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.ssreflect.bigop.html#ea7e35bae15685d5cd3430a8e48be02b"><span class="id" title="notation">sum_</span></a><a class="idref" href="mathcomp.ssreflect.bigop.html#ea7e35bae15685d5cd3430a8e48be02b"><span class="id" title="notation">(</span></a><span class="id" title="var">i</span> <a class="idref" href="mathcomp.ssreflect.bigop.html#ea7e35bae15685d5cd3430a8e48be02b"><span class="id" title="notation">&lt;-</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#r"><span class="id" title="variable">r</span></a> <a class="idref" href="mathcomp.ssreflect.bigop.html#ea7e35bae15685d5cd3430a8e48be02b"><span class="id" title="notation">|</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#P"><span class="id" title="variable">P</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#i"><span class="id" title="variable">i</span></a><a class="idref" href="mathcomp.ssreflect.bigop.html#ea7e35bae15685d5cd3430a8e48be02b"><span class="id" title="notation">)</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#F"><span class="id" title="variable">F</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#i"><span class="id" title="variable">i</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#513eaa3129601ecbcc9e188a80d6155b"><span class="id" title="notation">)</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.sumr_const"><span class="id" title="lemma">sumr_const</span></a> (<span class="id" title="var">I</span> : <a class="idref" href="mathcomp.ssreflect.fintype.html#Finite.Exports.finType"><span class="id" title="abbreviation">finType</span></a>) (<span class="id" title="var">A</span> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#pred"><span class="id" title="definition">pred</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#I"><span class="id" title="variable">I</span></a>) (<span class="id" title="var">x</span> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ZmoduleTheory.V"><span class="id" title="variable">V</span></a>) :<br/>
+&nbsp;&nbsp;<a class="idref" href="mathcomp.algebra.ssralg.html#c6a5df59bc3b78ffe928e04ac98d6fa4"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#c6a5df59bc3b78ffe928e04ac98d6fa4"><span class="id" title="notation">sum_</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#c6a5df59bc3b78ffe928e04ac98d6fa4"><span class="id" title="notation">(</span></a><span class="id" title="var">i</span> <a class="idref" href="mathcomp.algebra.ssralg.html#c6a5df59bc3b78ffe928e04ac98d6fa4"><span class="id" title="notation">in</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#A"><span class="id" title="variable">A</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#c6a5df59bc3b78ffe928e04ac98d6fa4"><span class="id" title="notation">)</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#513eaa3129601ecbcc9e188a80d6155b"><span class="id" title="notation">*+</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#f01714bb99e6c7abc6cfb2e43eff7f6e"><span class="id" title="notation">#|</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#A"><span class="id" title="variable">A</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#f01714bb99e6c7abc6cfb2e43eff7f6e"><span class="id" title="notation">|</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.telescope_sumr"><span class="id" title="lemma">telescope_sumr</span></a> <span class="id" title="var">n</span> <span class="id" title="var">m</span> (<span class="id" title="var">f</span> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#nat"><span class="id" title="inductive">nat</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ZmoduleTheory.V"><span class="id" title="variable">V</span></a>) : <a class="idref" href="mathcomp.algebra.ssralg.html#n"><span class="id" title="variable">n</span></a> <a class="idref" href="mathcomp.ssreflect.ssrnat.html#9b077c369e19739ef880736ba34623ff"><span class="id" title="notation">≤</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#m"><span class="id" title="variable">m</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a><br/>
+&nbsp;&nbsp;<a class="idref" href="mathcomp.algebra.ssralg.html#309e5ebdf789a3828a9b458462d3e1bc"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#309e5ebdf789a3828a9b458462d3e1bc"><span class="id" title="notation">sum_</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#309e5ebdf789a3828a9b458462d3e1bc"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#n"><span class="id" title="variable">n</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#309e5ebdf789a3828a9b458462d3e1bc"><span class="id" title="notation">≤</span></a> <span class="id" title="var">k</span> <a class="idref" href="mathcomp.algebra.ssralg.html#309e5ebdf789a3828a9b458462d3e1bc"><span class="id" title="notation">&lt;</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#m"><span class="id" title="variable">m</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#309e5ebdf789a3828a9b458462d3e1bc"><span class="id" title="notation">)</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#309e5ebdf789a3828a9b458462d3e1bc"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#f"><span class="id" title="variable">f</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#k"><span class="id" title="variable">k</span></a><a class="idref" href="mathcomp.ssreflect.ssrnat.html#361454269931ea8643f7b402f2ab7222"><span class="id" title="notation">.+1</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#4d4b9697032429ec46472e6332d1356a"><span class="id" title="notation">-</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#f"><span class="id" title="variable">f</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#k"><span class="id" title="variable">k</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#309e5ebdf789a3828a9b458462d3e1bc"><span class="id" title="notation">)</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#f"><span class="id" title="variable">f</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#m"><span class="id" title="variable">m</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#4d4b9697032429ec46472e6332d1356a"><span class="id" title="notation">-</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#f"><span class="id" title="variable">f</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#n"><span class="id" title="variable">n</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Section</span> <a name="GRing.ZmoduleTheory.ClosedPredicates"><span class="id" title="section">ClosedPredicates</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Variable</span> <a name="GRing.ZmoduleTheory.ClosedPredicates.S"><span class="id" title="variable">S</span></a> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#predPredType"><span class="id" title="definition">predPredType</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ZmoduleTheory.V"><span class="id" title="variable">V</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.addr_closed"><span class="id" title="definition">addr_closed</span></a> := 0 <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">\</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">in</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ZmoduleTheory.ClosedPredicates.S"><span class="id" title="variable">S</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d82a7d96d3659d805ffe732283716822"><span class="id" title="notation">∧</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#2bba53854f326a714d377124cccec593"><span class="id" title="notation">{</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#2bba53854f326a714d377124cccec593"><span class="id" title="notation">in</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ZmoduleTheory.ClosedPredicates.S"><span class="id" title="variable">S</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#2bba53854f326a714d377124cccec593"><span class="id" title="notation">&amp;,</span></a> <span class="id" title="keyword">∀</span> <span class="id" title="var">u</span> <span class="id" title="var">v</span>, <a class="idref" href="mathcomp.algebra.ssralg.html#u"><span class="id" title="variable">u</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#338c5345074fd3586073fd29273c138a"><span class="id" title="notation">+</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#v"><span class="id" title="variable">v</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">\</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">in</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ZmoduleTheory.ClosedPredicates.S"><span class="id" title="variable">S</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#2bba53854f326a714d377124cccec593"><span class="id" title="notation">}</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.oppr_closed"><span class="id" title="definition">oppr_closed</span></a> := <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#5c59b35a0b51db520cf1fba473ecf127"><span class="id" title="notation">{</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#5c59b35a0b51db520cf1fba473ecf127"><span class="id" title="notation">in</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ZmoduleTheory.ClosedPredicates.S"><span class="id" title="variable">S</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#5c59b35a0b51db520cf1fba473ecf127"><span class="id" title="notation">,</span></a> <span class="id" title="keyword">∀</span> <span class="id" title="var">u</span>, <a class="idref" href="mathcomp.algebra.ssralg.html#eefae7eea8ed2b8fccf150cb653d7a7b"><span class="id" title="notation">-</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#u"><span class="id" title="variable">u</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">\</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">in</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ZmoduleTheory.ClosedPredicates.S"><span class="id" title="variable">S</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#5c59b35a0b51db520cf1fba473ecf127"><span class="id" title="notation">}</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.subr_2closed"><span class="id" title="definition">subr_2closed</span></a> := <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#2bba53854f326a714d377124cccec593"><span class="id" title="notation">{</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#2bba53854f326a714d377124cccec593"><span class="id" title="notation">in</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ZmoduleTheory.ClosedPredicates.S"><span class="id" title="variable">S</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#2bba53854f326a714d377124cccec593"><span class="id" title="notation">&amp;,</span></a> <span class="id" title="keyword">∀</span> <span class="id" title="var">u</span> <span class="id" title="var">v</span>, <a class="idref" href="mathcomp.algebra.ssralg.html#u"><span class="id" title="variable">u</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#4d4b9697032429ec46472e6332d1356a"><span class="id" title="notation">-</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#v"><span class="id" title="variable">v</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">\</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">in</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ZmoduleTheory.ClosedPredicates.S"><span class="id" title="variable">S</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#2bba53854f326a714d377124cccec593"><span class="id" title="notation">}</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.zmod_closed"><span class="id" title="definition">zmod_closed</span></a> := 0 <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">\</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">in</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ZmoduleTheory.ClosedPredicates.S"><span class="id" title="variable">S</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d82a7d96d3659d805ffe732283716822"><span class="id" title="notation">∧</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.subr_2closed"><span class="id" title="definition">subr_2closed</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.zmod_closedN"><span class="id" title="lemma">zmod_closedN</span></a> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.zmod_closed"><span class="id" title="definition">zmod_closed</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.oppr_closed"><span class="id" title="definition">oppr_closed</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.zmod_closedD"><span class="id" title="lemma">zmod_closedD</span></a> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.zmod_closed"><span class="id" title="definition">zmod_closed</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.addr_closed"><span class="id" title="definition">addr_closed</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">End</span> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ZmoduleTheory.ClosedPredicates"><span class="id" title="section">ClosedPredicates</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">End</span> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ZmoduleTheory"><span class="id" title="section">ZmoduleTheory</span></a>.<br/>
+
+<br/>
+
+<br/>
+<span class="id" title="keyword">Module</span> <a name="GRing.Ring"><span class="id" title="module">Ring</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Record</span> <a name="GRing.Ring.mixin_of"><span class="id" title="record">mixin_of</span></a> (<span class="id" title="var">R</span> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Zmodule.Exports.zmodType"><span class="id" title="abbreviation">zmodType</span></a>) : <span class="id" title="keyword">Type</span> := <a name="GRing.Ring.Mixin"><span class="id" title="constructor">Mixin</span></a> {<br/>
+&nbsp;&nbsp;<a name="GRing.Ring.one"><span class="id" title="projection">one</span></a> : <a class="idref" href="mathcomp.algebra.ssralg.html#R"><span class="id" title="variable">R</span></a>;<br/>
+&nbsp;&nbsp;<a name="GRing.Ring.mul"><span class="id" title="projection">mul</span></a> : <a class="idref" href="mathcomp.algebra.ssralg.html#R"><span class="id" title="variable">R</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#R"><span class="id" title="variable">R</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#R"><span class="id" title="variable">R</span></a>;<br/>
+&nbsp;&nbsp;<span class="id" title="var">_</span> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#associative"><span class="id" title="definition">associative</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#mul"><span class="id" title="method">mul</span></a>;<br/>
+&nbsp;&nbsp;<span class="id" title="var">_</span> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#left_id"><span class="id" title="definition">left_id</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#one"><span class="id" title="method">one</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#mul"><span class="id" title="method">mul</span></a>;<br/>
+&nbsp;&nbsp;<span class="id" title="var">_</span> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#right_id"><span class="id" title="definition">right_id</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#one"><span class="id" title="method">one</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#mul"><span class="id" title="method">mul</span></a>;<br/>
+&nbsp;&nbsp;<span class="id" title="var">_</span> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#left_distributive"><span class="id" title="definition">left_distributive</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#mul"><span class="id" title="method">mul</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#6c3404a70e11a79a0fa82b3d398aa71f"><span class="id" title="notation">+%</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#6c3404a70e11a79a0fa82b3d398aa71f"><span class="id" title="notation">R</span></a>;<br/>
+&nbsp;&nbsp;<span class="id" title="var">_</span> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#right_distributive"><span class="id" title="definition">right_distributive</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#mul"><span class="id" title="method">mul</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#6c3404a70e11a79a0fa82b3d398aa71f"><span class="id" title="notation">+%</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#6c3404a70e11a79a0fa82b3d398aa71f"><span class="id" title="notation">R</span></a>;<br/>
+&nbsp;&nbsp;<span class="id" title="var">_</span> : <a class="idref" href="mathcomp.algebra.ssralg.html#one"><span class="id" title="method">one</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#b1eeadc2feabc7422252baa895418c7b"><span class="id" title="notation">!=</span></a> 0<br/>
+}.<br/>
+
+<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Ring.EtaMixin"><span class="id" title="definition">EtaMixin</span></a> <span class="id" title="var">R</span> <span class="id" title="var">one</span> <span class="id" title="var">mul</span> <span class="id" title="var">mulA</span> <span class="id" title="var">mul1x</span> <span class="id" title="var">mulx1</span> <span class="id" title="var">mul_addl</span> <span class="id" title="var">mul_addr</span> <span class="id" title="var">nz1</span> :=<br/>
+&nbsp;&nbsp;<span class="id" title="keyword">let</span> <span class="id" title="var">_</span> := @<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Ring.Mixin"><span class="id" title="constructor">Mixin</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#R"><span class="id" title="variable">R</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#one"><span class="id" title="variable">one</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#mul"><span class="id" title="variable">mul</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#mulA"><span class="id" title="variable">mulA</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#mul1x"><span class="id" title="variable">mul1x</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#mulx1"><span class="id" title="variable">mulx1</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#mul_addl"><span class="id" title="variable">mul_addl</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#mul_addr"><span class="id" title="variable">mul_addr</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#nz1"><span class="id" title="variable">nz1</span></a> <span class="id" title="tactic">in</span><br/>
+&nbsp;&nbsp;@<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Ring.Mixin"><span class="id" title="constructor">Mixin</span></a> (<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Zmodule.Pack"><span class="id" title="constructor">Zmodule.Pack</span></a> (<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Zmodule.class"><span class="id" title="definition">Zmodule.class</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#R"><span class="id" title="variable">R</span></a>) <a class="idref" href="mathcomp.algebra.ssralg.html#R"><span class="id" title="variable">R</span></a>) <span class="id" title="var">_</span> <span class="id" title="var">_</span><br/>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a class="idref" href="mathcomp.algebra.ssralg.html#mulA"><span class="id" title="variable">mulA</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#mul1x"><span class="id" title="variable">mul1x</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#mulx1"><span class="id" title="variable">mulx1</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#mul_addl"><span class="id" title="variable">mul_addl</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#mul_addr"><span class="id" title="variable">mul_addr</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#nz1"><span class="id" title="variable">nz1</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Section</span> <a name="GRing.Ring.ClassDef"><span class="id" title="section">ClassDef</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Record</span> <a name="GRing.Ring.class_of"><span class="id" title="record">class_of</span></a> (<span class="id" title="var">R</span> : <span class="id" title="keyword">Type</span>) : <span class="id" title="keyword">Type</span> := <a name="GRing.Ring.Class"><span class="id" title="constructor">Class</span></a> {<br/>
+&nbsp;&nbsp;<a name="GRing.Ring.base"><span class="id" title="projection">base</span></a> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Zmodule.class_of"><span class="id" title="record">Zmodule.class_of</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#R"><span class="id" title="variable">R</span></a>;<br/>
+&nbsp;&nbsp;<a name="GRing.Ring.mixin"><span class="id" title="projection">mixin</span></a> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Ring.mixin_of"><span class="id" title="record">mixin_of</span></a> (<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Zmodule.Pack"><span class="id" title="constructor">Zmodule.Pack</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#base"><span class="id" title="method">base</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#R"><span class="id" title="variable">R</span></a>)<br/>
+}.<br/>
+
+<br/>
+<span class="id" title="keyword">Structure</span> <a name="GRing.Ring.type"><span class="id" title="record">type</span></a> := <a name="GRing.Ring.Pack"><span class="id" title="constructor">Pack</span></a> {<a name="GRing.Ring.sort"><span class="id" title="projection">sort</span></a>; <span class="id" title="var">_</span> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Ring.class_of"><span class="id" title="record">class_of</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#sort"><span class="id" title="method">sort</span></a>; <span class="id" title="var">_</span> : <span class="id" title="keyword">Type</span>}.<br/>
+<span class="id" title="keyword">Variables</span> (<a name="GRing.Ring.ClassDef.T"><span class="id" title="variable">T</span></a> : <span class="id" title="keyword">Type</span>) (<a name="GRing.Ring.ClassDef.cT"><span class="id" title="variable">cT</span></a> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Ring.type"><span class="id" title="record">type</span></a>).<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Ring.class"><span class="id" title="definition">class</span></a> := <span class="id" title="keyword">let</span>: <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Ring.Pack"><span class="id" title="constructor">Pack</span></a> <span class="id" title="var">_</span> <span class="id" title="var">c</span> <span class="id" title="var">_</span> <span class="id" title="keyword">as</span> <span class="id" title="var">cT'</span> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Ring.ClassDef.cT"><span class="id" title="variable">cT</span></a> <span class="id" title="keyword">return</span> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Ring.class_of"><span class="id" title="record">class_of</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#cT'"><span class="id" title="variable">cT'</span></a> <span class="id" title="tactic">in</span> <span class="id" title="var">c</span>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Ring.clone"><span class="id" title="definition">clone</span></a> <span class="id" title="var">c</span> <span class="id" title="keyword">of</span> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#phant_id"><span class="id" title="definition">phant_id</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Ring.class"><span class="id" title="definition">class</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#c"><span class="id" title="variable">c</span></a> := @<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Ring.Pack"><span class="id" title="constructor">Pack</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Ring.ClassDef.T"><span class="id" title="variable">T</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#c"><span class="id" title="variable">c</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Ring.ClassDef.T"><span class="id" title="variable">T</span></a>.<br/>
+<span class="id" title="keyword">Let</span> <a name="GRing.Ring.ClassDef.xT"><span class="id" title="variable">xT</span></a> := <span class="id" title="keyword">let</span>: <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Ring.Pack"><span class="id" title="constructor">Pack</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="mathcomp.algebra.ssralg.html#GRing.Ring.ClassDef.cT"><span class="id" title="variable">cT</span></a> <span class="id" title="tactic">in</span> <span class="id" title="var">T</span>.<br/>
+<span class="id" title="keyword">Notation</span> <a name="GRing.Ring.xclass"><span class="id" title="abbreviation">xclass</span></a> := (<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Ring.class"><span class="id" title="definition">class</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssreflect.html#4509b22bf26e3d6d771897e22bd8bc8f"><span class="id" title="notation">:</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Ring.class_of"><span class="id" title="record">class_of</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Ring.ClassDef.xT"><span class="id" title="variable">xT</span></a>).<br/>
+
+<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Ring.pack"><span class="id" title="definition">pack</span></a> <span class="id" title="var">b0</span> (<span class="id" title="var">m0</span> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Ring.mixin_of"><span class="id" title="record">mixin_of</span></a> (@<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Zmodule.Pack"><span class="id" title="constructor">Zmodule.Pack</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Ring.ClassDef.T"><span class="id" title="variable">T</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#b0"><span class="id" title="variable">b0</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Ring.ClassDef.T"><span class="id" title="variable">T</span></a>)) :=<br/>
+&nbsp;&nbsp;<span class="id" title="keyword">fun</span> <span class="id" title="var">bT</span> <span class="id" title="var">b</span> &amp; <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#phant_id"><span class="id" title="definition">phant_id</span></a> (<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Zmodule.class"><span class="id" title="definition">Zmodule.class</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#bT"><span class="id" title="variable">bT</span></a>) <a class="idref" href="mathcomp.algebra.ssralg.html#b"><span class="id" title="variable">b</span></a> ⇒<br/>
+&nbsp;&nbsp;<span class="id" title="keyword">fun</span> <span class="id" title="var">m</span> &amp; <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#phant_id"><span class="id" title="definition">phant_id</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#m0"><span class="id" title="variable">m0</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#m"><span class="id" title="variable">m</span></a> ⇒ <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Ring.Pack"><span class="id" title="constructor">Pack</span></a> (@<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Ring.Class"><span class="id" title="constructor">Class</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Ring.ClassDef.T"><span class="id" title="variable">T</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#b"><span class="id" title="variable">b</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#m"><span class="id" title="variable">m</span></a>) <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Ring.ClassDef.T"><span class="id" title="variable">T</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Ring.eqType"><span class="id" title="definition">eqType</span></a> := @<a class="idref" href="mathcomp.ssreflect.eqtype.html#Equality.Pack"><span class="id" title="constructor">Equality.Pack</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Ring.ClassDef.cT"><span class="id" title="variable">cT</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Ring.xclass"><span class="id" title="abbreviation">xclass</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Ring.ClassDef.xT"><span class="id" title="variable">xT</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Ring.choiceType"><span class="id" title="definition">choiceType</span></a> := @<a class="idref" href="mathcomp.ssreflect.choice.html#Choice.Pack"><span class="id" title="constructor">Choice.Pack</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Ring.ClassDef.cT"><span class="id" title="variable">cT</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Ring.xclass"><span class="id" title="abbreviation">xclass</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Ring.ClassDef.xT"><span class="id" title="variable">xT</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Ring.zmodType"><span class="id" title="definition">zmodType</span></a> := @<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Zmodule.Pack"><span class="id" title="constructor">Zmodule.Pack</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Ring.ClassDef.cT"><span class="id" title="variable">cT</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Ring.xclass"><span class="id" title="abbreviation">xclass</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Ring.ClassDef.xT"><span class="id" title="variable">xT</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">End</span> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Ring.ClassDef"><span class="id" title="section">ClassDef</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Module</span> <a name="GRing.Ring.Exports"><span class="id" title="module">Exports</span></a>.<br/>
+<span class="id" title="keyword">Coercion</span> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Ring.base"><span class="id" title="projection">base</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Ring.base"><span class="id" title="projection">:</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Ring.base"><span class="id" title="projection">class_of</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Ring.base"><span class="id" title="projection">&gt;-&gt;</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Ring.base"><span class="id" title="projection">Zmodule.class_of</span></a>.<br/>
+<span class="id" title="keyword">Coercion</span> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Ring.mixin"><span class="id" title="projection">mixin</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Ring.mixin"><span class="id" title="projection">:</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Ring.mixin"><span class="id" title="projection">class_of</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Ring.mixin"><span class="id" title="projection">&gt;-&gt;</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Ring.mixin"><span class="id" title="projection">mixin_of</span></a>.<br/>
+<span class="id" title="keyword">Coercion</span> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Ring.sort"><span class="id" title="projection">sort</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Ring.sort"><span class="id" title="projection">:</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Ring.sort"><span class="id" title="projection">type</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Ring.sort"><span class="id" title="projection">&gt;-&gt;</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Ring.sort"><span class="id" title="projection">Sortclass</span></a>.<br/>
+<span class="id" title="keyword">Coercion</span> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Ring.eqType"><span class="id" title="definition">eqType</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Ring.eqType"><span class="id" title="definition">:</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Ring.eqType"><span class="id" title="definition">type</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Ring.eqType"><span class="id" title="definition">&gt;-&gt;</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Ring.eqType"><span class="id" title="definition">Equality.type</span></a>.<br/>
+<span class="id" title="keyword">Canonical</span> <span class="id" title="var">eqType</span>.<br/>
+<span class="id" title="keyword">Coercion</span> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Ring.choiceType"><span class="id" title="definition">choiceType</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Ring.choiceType"><span class="id" title="definition">:</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Ring.choiceType"><span class="id" title="definition">type</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Ring.choiceType"><span class="id" title="definition">&gt;-&gt;</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Ring.choiceType"><span class="id" title="definition">Choice.type</span></a>.<br/>
+<span class="id" title="keyword">Canonical</span> <span class="id" title="var">choiceType</span>.<br/>
+<span class="id" title="keyword">Coercion</span> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Ring.zmodType"><span class="id" title="definition">zmodType</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Ring.zmodType"><span class="id" title="definition">:</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Ring.zmodType"><span class="id" title="definition">type</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Ring.zmodType"><span class="id" title="definition">&gt;-&gt;</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Ring.zmodType"><span class="id" title="definition">Zmodule.type</span></a>.<br/>
+<span class="id" title="keyword">Canonical</span> <span class="id" title="var">zmodType</span>.<br/>
+<span class="id" title="keyword">Notation</span> <a name="GRing.Ring.Exports.ringType"><span class="id" title="abbreviation">ringType</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Ring.type"><span class="id" title="record">type</span></a>.<br/>
+<span class="id" title="keyword">Notation</span> <a name="GRing.Ring.Exports.RingType"><span class="id" title="abbreviation">RingType</span></a> <span class="id" title="var">T</span> <span class="id" title="var">m</span> := (@<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Ring.pack"><span class="id" title="definition">pack</span></a> <span class="id" title="var">T</span> <span class="id" title="var">_</span> <span class="id" title="var">m</span> <span class="id" title="var">_</span> <span class="id" title="var">_</span> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#id"><span class="id" title="abbreviation">id</span></a> <span class="id" title="var">_</span> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#id"><span class="id" title="abbreviation">id</span></a>).<br/>
+<span class="id" title="keyword">Notation</span> <a name="GRing.Ring.Exports.RingMixin"><span class="id" title="abbreviation">RingMixin</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Ring.Mixin"><span class="id" title="constructor">Mixin</span></a>.<br/>
+<span class="id" title="keyword">Notation</span> <a name="35ecfd7bffc5e04ef0f8a2c421680259"><span class="id" title="notation">&quot;</span></a>[ 'ringType' 'of' T 'for' cT ]" := (@<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Ring.clone"><span class="id" title="definition">clone</span></a> <span class="id" title="var">T</span> <span class="id" title="var">cT</span> <span class="id" title="var">_</span> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#idfun"><span class="id" title="abbreviation">idfun</span></a>)<br/>
+&nbsp;&nbsp;(<span class="id" title="tactic">at</span> <span class="id" title="keyword">level</span> 0, <span class="id" title="var">format</span> "[ 'ringType' 'of' T 'for' cT ]") : <span class="id" title="var">form_scope</span>.<br/>
+<span class="id" title="keyword">Notation</span> <a name="dee4f3431027813095272c568fc6b5ce"><span class="id" title="notation">&quot;</span></a>[ 'ringType' 'of' T ]" := (@<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Ring.clone"><span class="id" title="definition">clone</span></a> <span class="id" title="var">T</span> <span class="id" title="var">_</span> <span class="id" title="var">_</span> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#id"><span class="id" title="abbreviation">id</span></a>)<br/>
+&nbsp;&nbsp;(<span class="id" title="tactic">at</span> <span class="id" title="keyword">level</span> 0, <span class="id" title="var">format</span> "[ 'ringType' 'of' T ]") : <span class="id" title="var">form_scope</span>.<br/>
+<span class="id" title="keyword">End</span> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Ring.Exports"><span class="id" title="module">Exports</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">End</span> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Ring"><span class="id" title="module">Ring</span></a>.<br/>
+<span class="id" title="keyword">Import</span> <span class="id" title="var">Ring.Exports</span>.<br/>
+
+<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.one"><span class="id" title="definition">one</span></a> (<span class="id" title="var">R</span> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ringType"><span class="id" title="abbreviation">ringType</span></a>) : <a class="idref" href="mathcomp.algebra.ssralg.html#R"><span class="id" title="variable">R</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.one"><span class="id" title="projection">Ring.one</span></a> (<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.class"><span class="id" title="definition">Ring.class</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#R"><span class="id" title="variable">R</span></a>).<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.mul"><span class="id" title="definition">mul</span></a> (<span class="id" title="var">R</span> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ringType"><span class="id" title="abbreviation">ringType</span></a>) : <a class="idref" href="mathcomp.algebra.ssralg.html#R"><span class="id" title="variable">R</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#R"><span class="id" title="variable">R</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#R"><span class="id" title="variable">R</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.mul"><span class="id" title="projection">Ring.mul</span></a> (<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.class"><span class="id" title="definition">Ring.class</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#R"><span class="id" title="variable">R</span></a>).<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.exp"><span class="id" title="definition">exp</span></a> <span class="id" title="var">R</span> <span class="id" title="var">x</span> <span class="id" title="var">n</span> := <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssreflect.html#nosimpl"><span class="id" title="abbreviation">nosimpl</span></a> <a class="idref" href="mathcomp.ssreflect.ssrnat.html#iterop"><span class="id" title="definition">iterop</span></a> <span class="id" title="var">_</span> <a class="idref" href="mathcomp.algebra.ssralg.html#n"><span class="id" title="variable">n</span></a> (@<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.mul"><span class="id" title="definition">mul</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#R"><span class="id" title="variable">R</span></a>) <a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a> (<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.one"><span class="id" title="definition">one</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#R"><span class="id" title="variable">R</span></a>).<br/>
+<span class="id" title="keyword">Notation</span> <a name="GRing.sign"><span class="id" title="abbreviation">sign</span></a> <span class="id" title="var">R</span> <span class="id" title="var">b</span> := (<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.exp"><span class="id" title="definition">exp</span></a> (<a class="idref" href="mathcomp.algebra.ssralg.html#eefae7eea8ed2b8fccf150cb653d7a7b"><span class="id" title="notation">-</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.one"><span class="id" title="definition">one</span></a> <span class="id" title="var">R</span>) (<a class="idref" href="mathcomp.ssreflect.ssrnat.html#nat_of_bool"><span class="id" title="definition">nat_of_bool</span></a> <span class="id" title="var">b</span>)) (<span class="id" title="var">only</span> <span class="id" title="var">parsing</span>).<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.comm"><span class="id" title="definition">comm</span></a> <span class="id" title="var">R</span> <span class="id" title="var">x</span> <span class="id" title="var">y</span> := @<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.mul"><span class="id" title="definition">mul</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#R"><span class="id" title="variable">R</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#y"><span class="id" title="variable">y</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.mul"><span class="id" title="definition">mul</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#y"><span class="id" title="variable">y</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.lreg"><span class="id" title="definition">lreg</span></a> <span class="id" title="var">R</span> <span class="id" title="var">x</span> := <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#injective"><span class="id" title="definition">injective</span></a> (@<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.mul"><span class="id" title="definition">mul</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#R"><span class="id" title="variable">R</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a>).<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.rreg"><span class="id" title="definition">rreg</span></a> <span class="id" title="var">R</span> <span class="id" title="var">x</span> := <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#injective"><span class="id" title="definition">injective</span></a> (<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#8f28bbd804547edd8de802d63ef85617"><span class="id" title="notation">(</span></a>@<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.mul"><span class="id" title="definition">mul</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#R"><span class="id" title="variable">R</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#8f28bbd804547edd8de802d63ef85617"><span class="id" title="notation">)^~</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a>).<br/>
+
+<br/>
+
+<br/>
+
+<br/>
+</div>
+
+<div class="doc">
+ The ``field'' characteristic; the definition, and many of the theorems,
+ has to apply to rings as well; indeed, we need the Frobenius automorphism
+ results for a non commutative ring in the proof of Gorenstein 2.6.3.
+</div>
+<div class="code">
+<span class="id" title="keyword">Definition</span> <a name="GRing.char"><span class="id" title="definition">char</span></a> (<span class="id" title="var">R</span> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.type"><span class="id" title="record">Ring.type</span></a>) <span class="id" title="keyword">of</span> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssreflect.html#phant"><span class="id" title="inductive">phant</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#R"><span class="id" title="variable">R</span></a> : <a class="idref" href="mathcomp.ssreflect.prime.html#nat_pred"><span class="id" title="definition">nat_pred</span></a> :=<br/>
+&nbsp;&nbsp;<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#b8288f36a4177926116f8c7429ee1d26"><span class="id" title="notation">[</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#b8288f36a4177926116f8c7429ee1d26"><span class="id" title="notation">pred</span></a> <span class="id" title="var">p</span> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#b8288f36a4177926116f8c7429ee1d26"><span class="id" title="notation">|</span></a> <a class="idref" href="mathcomp.ssreflect.prime.html#prime"><span class="id" title="definition">prime</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#p"><span class="id" title="variable">p</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#b8288f36a4177926116f8c7429ee1d26"><span class="id" title="notation">&amp;</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#p"><span class="id" title="variable">p</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#c191333b9c7c034282647fbffacc9d18"><span class="id" title="notation">%:</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#c191333b9c7c034282647fbffacc9d18"><span class="id" title="notation">R</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#340b60eb5a3e9913f807040630cb8d43"><span class="id" title="notation">==</span></a> 0 <a class="idref" href="mathcomp.ssreflect.eqtype.html#340b60eb5a3e9913f807040630cb8d43"><span class="id" title="notation">:&gt;</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#R"><span class="id" title="variable">R</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#b8288f36a4177926116f8c7429ee1d26"><span class="id" title="notation">]</span></a>.<br/>
+
+<br/>
+
+<br/>
+</div>
+
+<div class="doc">
+ Converse ring tag.
+</div>
+<div class="code">
+<span class="id" title="keyword">Definition</span> <a name="GRing.converse"><span class="id" title="definition">converse</span></a> <span class="id" title="var">R</span> : <span class="id" title="keyword">Type</span> := <a class="idref" href="mathcomp.algebra.ssralg.html#R"><span class="id" title="variable">R</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Section</span> <a name="GRing.RingTheory"><span class="id" title="section">RingTheory</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Variable</span> <a name="GRing.RingTheory.R"><span class="id" title="variable">R</span></a> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ringType"><span class="id" title="abbreviation">ringType</span></a>.<br/>
+<span class="id" title="keyword">Implicit</span> <span class="id" title="keyword">Types</span> <span class="id" title="var">x</span> <span class="id" title="var">y</span> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.RingTheory.R"><span class="id" title="variable">R</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.mulrA"><span class="id" title="lemma">mulrA</span></a> : @<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#associative"><span class="id" title="definition">associative</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.RingTheory.R"><span class="id" title="variable">R</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#6498e6e308d8a143464cf2d2ba603d36"><span class="id" title="notation">*%</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#6498e6e308d8a143464cf2d2ba603d36"><span class="id" title="notation">R</span></a>. <br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.mul1r"><span class="id" title="lemma">mul1r</span></a> : @<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#left_id"><span class="id" title="definition">left_id</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.RingTheory.R"><span class="id" title="variable">R</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.RingTheory.R"><span class="id" title="variable">R</span></a> 1 <a class="idref" href="mathcomp.algebra.ssralg.html#6498e6e308d8a143464cf2d2ba603d36"><span class="id" title="notation">*%</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#6498e6e308d8a143464cf2d2ba603d36"><span class="id" title="notation">R</span></a>. <br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.mulr1"><span class="id" title="lemma">mulr1</span></a> : @<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#right_id"><span class="id" title="definition">right_id</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.RingTheory.R"><span class="id" title="variable">R</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.RingTheory.R"><span class="id" title="variable">R</span></a> 1 <a class="idref" href="mathcomp.algebra.ssralg.html#6498e6e308d8a143464cf2d2ba603d36"><span class="id" title="notation">*%</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#6498e6e308d8a143464cf2d2ba603d36"><span class="id" title="notation">R</span></a>. <br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.mulrDl"><span class="id" title="lemma">mulrDl</span></a> : @<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#left_distributive"><span class="id" title="definition">left_distributive</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.RingTheory.R"><span class="id" title="variable">R</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.RingTheory.R"><span class="id" title="variable">R</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#6498e6e308d8a143464cf2d2ba603d36"><span class="id" title="notation">*%</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#6498e6e308d8a143464cf2d2ba603d36"><span class="id" title="notation">R</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#6c3404a70e11a79a0fa82b3d398aa71f"><span class="id" title="notation">+%</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#6c3404a70e11a79a0fa82b3d398aa71f"><span class="id" title="notation">R</span></a>.<br/>
+ <span class="id" title="keyword">Lemma</span> <a name="GRing.mulrDr"><span class="id" title="lemma">mulrDr</span></a> : @<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#right_distributive"><span class="id" title="definition">right_distributive</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.RingTheory.R"><span class="id" title="variable">R</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.RingTheory.R"><span class="id" title="variable">R</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#6498e6e308d8a143464cf2d2ba603d36"><span class="id" title="notation">*%</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#6498e6e308d8a143464cf2d2ba603d36"><span class="id" title="notation">R</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#6c3404a70e11a79a0fa82b3d398aa71f"><span class="id" title="notation">+%</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#6c3404a70e11a79a0fa82b3d398aa71f"><span class="id" title="notation">R</span></a>.<br/>
+ <span class="id" title="keyword">Lemma</span> <a name="GRing.oner_neq0"><span class="id" title="lemma">oner_neq0</span></a> : 1 <a class="idref" href="mathcomp.ssreflect.eqtype.html#9e45f909d1732d6d9e153b650829bccf"><span class="id" title="notation">!=</span></a> 0 <a class="idref" href="mathcomp.ssreflect.eqtype.html#9e45f909d1732d6d9e153b650829bccf"><span class="id" title="notation">:&gt;</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.RingTheory.R"><span class="id" title="variable">R</span></a>. <br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.oner_eq0"><span class="id" title="lemma">oner_eq0</span></a> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">(</span></a>1 <a class="idref" href="mathcomp.ssreflect.eqtype.html#340b60eb5a3e9913f807040630cb8d43"><span class="id" title="notation">==</span></a> 0 <a class="idref" href="mathcomp.ssreflect.eqtype.html#340b60eb5a3e9913f807040630cb8d43"><span class="id" title="notation">:&gt;</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.RingTheory.R"><span class="id" title="variable">R</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">)</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#false"><span class="id" title="constructor">false</span></a>. <br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.mul0r"><span class="id" title="lemma">mul0r</span></a> : @<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#left_zero"><span class="id" title="definition">left_zero</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.RingTheory.R"><span class="id" title="variable">R</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.RingTheory.R"><span class="id" title="variable">R</span></a> 0 <a class="idref" href="mathcomp.algebra.ssralg.html#6498e6e308d8a143464cf2d2ba603d36"><span class="id" title="notation">*%</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#6498e6e308d8a143464cf2d2ba603d36"><span class="id" title="notation">R</span></a>.<br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.mulr0"><span class="id" title="lemma">mulr0</span></a> : @<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#right_zero"><span class="id" title="definition">right_zero</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.RingTheory.R"><span class="id" title="variable">R</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.RingTheory.R"><span class="id" title="variable">R</span></a> 0 <a class="idref" href="mathcomp.algebra.ssralg.html#6498e6e308d8a143464cf2d2ba603d36"><span class="id" title="notation">*%</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#6498e6e308d8a143464cf2d2ba603d36"><span class="id" title="notation">R</span></a>.<br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.mulrN"><span class="id" title="lemma">mulrN</span></a> <span class="id" title="var">x</span> <span class="id" title="var">y</span> : <a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#ed99e7035d9a1f8a2c1515be81ac2e5f"><span class="id" title="notation">×</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#ed99e7035d9a1f8a2c1515be81ac2e5f"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#eefae7eea8ed2b8fccf150cb653d7a7b"><span class="id" title="notation">-</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#y"><span class="id" title="variable">y</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#ed99e7035d9a1f8a2c1515be81ac2e5f"><span class="id" title="notation">)</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#eefae7eea8ed2b8fccf150cb653d7a7b"><span class="id" title="notation">-</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#eefae7eea8ed2b8fccf150cb653d7a7b"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#ed99e7035d9a1f8a2c1515be81ac2e5f"><span class="id" title="notation">×</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#y"><span class="id" title="variable">y</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#eefae7eea8ed2b8fccf150cb653d7a7b"><span class="id" title="notation">)</span></a>.<br/>
+ <span class="id" title="keyword">Lemma</span> <a name="GRing.mulNr"><span class="id" title="lemma">mulNr</span></a> <span class="id" title="var">x</span> <span class="id" title="var">y</span> : <a class="idref" href="mathcomp.algebra.ssralg.html#ed99e7035d9a1f8a2c1515be81ac2e5f"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#eefae7eea8ed2b8fccf150cb653d7a7b"><span class="id" title="notation">-</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#ed99e7035d9a1f8a2c1515be81ac2e5f"><span class="id" title="notation">)</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#ed99e7035d9a1f8a2c1515be81ac2e5f"><span class="id" title="notation">×</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#y"><span class="id" title="variable">y</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#eefae7eea8ed2b8fccf150cb653d7a7b"><span class="id" title="notation">-</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#eefae7eea8ed2b8fccf150cb653d7a7b"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#ed99e7035d9a1f8a2c1515be81ac2e5f"><span class="id" title="notation">×</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#y"><span class="id" title="variable">y</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#eefae7eea8ed2b8fccf150cb653d7a7b"><span class="id" title="notation">)</span></a>.<br/>
+ <span class="id" title="keyword">Lemma</span> <a name="GRing.mulrNN"><span class="id" title="lemma">mulrNN</span></a> <span class="id" title="var">x</span> <span class="id" title="var">y</span> : <a class="idref" href="mathcomp.algebra.ssralg.html#ed99e7035d9a1f8a2c1515be81ac2e5f"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#eefae7eea8ed2b8fccf150cb653d7a7b"><span class="id" title="notation">-</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#ed99e7035d9a1f8a2c1515be81ac2e5f"><span class="id" title="notation">)</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#ed99e7035d9a1f8a2c1515be81ac2e5f"><span class="id" title="notation">×</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#ed99e7035d9a1f8a2c1515be81ac2e5f"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#eefae7eea8ed2b8fccf150cb653d7a7b"><span class="id" title="notation">-</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#y"><span class="id" title="variable">y</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#ed99e7035d9a1f8a2c1515be81ac2e5f"><span class="id" title="notation">)</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#ed99e7035d9a1f8a2c1515be81ac2e5f"><span class="id" title="notation">×</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#y"><span class="id" title="variable">y</span></a>.<br/>
+ <span class="id" title="keyword">Lemma</span> <a name="GRing.mulN1r"><span class="id" title="lemma">mulN1r</span></a> <span class="id" title="var">x</span> : -1 <a class="idref" href="mathcomp.algebra.ssralg.html#ed99e7035d9a1f8a2c1515be81ac2e5f"><span class="id" title="notation">×</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#eefae7eea8ed2b8fccf150cb653d7a7b"><span class="id" title="notation">-</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a>.<br/>
+ <span class="id" title="keyword">Lemma</span> <a name="GRing.mulrN1"><span class="id" title="lemma">mulrN1</span></a> <span class="id" title="var">x</span> : <a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#ed99e7035d9a1f8a2c1515be81ac2e5f"><span class="id" title="notation">×</span></a> -1 <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#eefae7eea8ed2b8fccf150cb653d7a7b"><span class="id" title="notation">-</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Canonical</span> <span class="id" title="var">mul_monoid</span> := <a class="idref" href="mathcomp.ssreflect.bigop.html#Monoid.Law"><span class="id" title="constructor">Monoid.Law</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.mulrA"><span class="id" title="lemma">mulrA</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.mul1r"><span class="id" title="lemma">mul1r</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.mulr1"><span class="id" title="lemma">mulr1</span></a>.<br/>
+<span class="id" title="keyword">Canonical</span> <span class="id" title="var">muloid</span> := <a class="idref" href="mathcomp.ssreflect.bigop.html#Monoid.MulLaw"><span class="id" title="constructor">Monoid.MulLaw</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.mul0r"><span class="id" title="lemma">mul0r</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.mulr0"><span class="id" title="lemma">mulr0</span></a>.<br/>
+<span class="id" title="keyword">Canonical</span> <span class="id" title="var">addoid</span> := <a class="idref" href="mathcomp.ssreflect.bigop.html#Monoid.AddLaw"><span class="id" title="constructor">Monoid.AddLaw</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.mulrDl"><span class="id" title="lemma">mulrDl</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.mulrDr"><span class="id" title="lemma">mulrDr</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.mulr_suml"><span class="id" title="lemma">mulr_suml</span></a> <span class="id" title="var">I</span> <span class="id" title="var">r</span> <span class="id" title="var">P</span> (<span class="id" title="var">F</span> : <a class="idref" href="mathcomp.algebra.ssralg.html#I"><span class="id" title="variable">I</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.RingTheory.R"><span class="id" title="variable">R</span></a>) <span class="id" title="var">x</span> :<br/>
+&nbsp;&nbsp;<a class="idref" href="mathcomp.algebra.ssralg.html#ed99e7035d9a1f8a2c1515be81ac2e5f"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#664ae738a3286983847c80e5ee4c8c6b"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#664ae738a3286983847c80e5ee4c8c6b"><span class="id" title="notation">sum_</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#664ae738a3286983847c80e5ee4c8c6b"><span class="id" title="notation">(</span></a><span class="id" title="var">i</span> <a class="idref" href="mathcomp.algebra.ssralg.html#664ae738a3286983847c80e5ee4c8c6b"><span class="id" title="notation">&lt;-</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#r"><span class="id" title="variable">r</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#664ae738a3286983847c80e5ee4c8c6b"><span class="id" title="notation">|</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#P"><span class="id" title="variable">P</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#i"><span class="id" title="variable">i</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#664ae738a3286983847c80e5ee4c8c6b"><span class="id" title="notation">)</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#F"><span class="id" title="variable">F</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#i"><span class="id" title="variable">i</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#ed99e7035d9a1f8a2c1515be81ac2e5f"><span class="id" title="notation">)</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#ed99e7035d9a1f8a2c1515be81ac2e5f"><span class="id" title="notation">×</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#664ae738a3286983847c80e5ee4c8c6b"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#664ae738a3286983847c80e5ee4c8c6b"><span class="id" title="notation">sum_</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#664ae738a3286983847c80e5ee4c8c6b"><span class="id" title="notation">(</span></a><span class="id" title="var">i</span> <a class="idref" href="mathcomp.algebra.ssralg.html#664ae738a3286983847c80e5ee4c8c6b"><span class="id" title="notation">&lt;-</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#r"><span class="id" title="variable">r</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#664ae738a3286983847c80e5ee4c8c6b"><span class="id" title="notation">|</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#P"><span class="id" title="variable">P</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#i"><span class="id" title="variable">i</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#664ae738a3286983847c80e5ee4c8c6b"><span class="id" title="notation">)</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#F"><span class="id" title="variable">F</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#i"><span class="id" title="variable">i</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#ed99e7035d9a1f8a2c1515be81ac2e5f"><span class="id" title="notation">×</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.mulr_sumr"><span class="id" title="lemma">mulr_sumr</span></a> <span class="id" title="var">I</span> <span class="id" title="var">r</span> <span class="id" title="var">P</span> (<span class="id" title="var">F</span> : <a class="idref" href="mathcomp.algebra.ssralg.html#I"><span class="id" title="variable">I</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.RingTheory.R"><span class="id" title="variable">R</span></a>) <span class="id" title="var">x</span> :<br/>
+&nbsp;&nbsp;<a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#ed99e7035d9a1f8a2c1515be81ac2e5f"><span class="id" title="notation">×</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#ed99e7035d9a1f8a2c1515be81ac2e5f"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#664ae738a3286983847c80e5ee4c8c6b"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#664ae738a3286983847c80e5ee4c8c6b"><span class="id" title="notation">sum_</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#664ae738a3286983847c80e5ee4c8c6b"><span class="id" title="notation">(</span></a><span class="id" title="var">i</span> <a class="idref" href="mathcomp.algebra.ssralg.html#664ae738a3286983847c80e5ee4c8c6b"><span class="id" title="notation">&lt;-</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#r"><span class="id" title="variable">r</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#664ae738a3286983847c80e5ee4c8c6b"><span class="id" title="notation">|</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#P"><span class="id" title="variable">P</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#i"><span class="id" title="variable">i</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#664ae738a3286983847c80e5ee4c8c6b"><span class="id" title="notation">)</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#F"><span class="id" title="variable">F</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#i"><span class="id" title="variable">i</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#ed99e7035d9a1f8a2c1515be81ac2e5f"><span class="id" title="notation">)</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#664ae738a3286983847c80e5ee4c8c6b"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#664ae738a3286983847c80e5ee4c8c6b"><span class="id" title="notation">sum_</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#664ae738a3286983847c80e5ee4c8c6b"><span class="id" title="notation">(</span></a><span class="id" title="var">i</span> <a class="idref" href="mathcomp.algebra.ssralg.html#664ae738a3286983847c80e5ee4c8c6b"><span class="id" title="notation">&lt;-</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#r"><span class="id" title="variable">r</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#664ae738a3286983847c80e5ee4c8c6b"><span class="id" title="notation">|</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#P"><span class="id" title="variable">P</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#i"><span class="id" title="variable">i</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#664ae738a3286983847c80e5ee4c8c6b"><span class="id" title="notation">)</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#ed99e7035d9a1f8a2c1515be81ac2e5f"><span class="id" title="notation">×</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#F"><span class="id" title="variable">F</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#i"><span class="id" title="variable">i</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.mulrBl"><span class="id" title="lemma">mulrBl</span></a> <span class="id" title="var">x</span> <span class="id" title="var">y</span> <span class="id" title="var">z</span> : <a class="idref" href="mathcomp.algebra.ssralg.html#ed99e7035d9a1f8a2c1515be81ac2e5f"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#y"><span class="id" title="variable">y</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#4d4b9697032429ec46472e6332d1356a"><span class="id" title="notation">-</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#z"><span class="id" title="variable">z</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#ed99e7035d9a1f8a2c1515be81ac2e5f"><span class="id" title="notation">)</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#ed99e7035d9a1f8a2c1515be81ac2e5f"><span class="id" title="notation">×</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#y"><span class="id" title="variable">y</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#ed99e7035d9a1f8a2c1515be81ac2e5f"><span class="id" title="notation">×</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#4d4b9697032429ec46472e6332d1356a"><span class="id" title="notation">-</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#z"><span class="id" title="variable">z</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#ed99e7035d9a1f8a2c1515be81ac2e5f"><span class="id" title="notation">×</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.mulrBr"><span class="id" title="lemma">mulrBr</span></a> <span class="id" title="var">x</span> <span class="id" title="var">y</span> <span class="id" title="var">z</span> : <a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#ed99e7035d9a1f8a2c1515be81ac2e5f"><span class="id" title="notation">×</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#ed99e7035d9a1f8a2c1515be81ac2e5f"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#y"><span class="id" title="variable">y</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#4d4b9697032429ec46472e6332d1356a"><span class="id" title="notation">-</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#z"><span class="id" title="variable">z</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#ed99e7035d9a1f8a2c1515be81ac2e5f"><span class="id" title="notation">)</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#ed99e7035d9a1f8a2c1515be81ac2e5f"><span class="id" title="notation">×</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#y"><span class="id" title="variable">y</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#4d4b9697032429ec46472e6332d1356a"><span class="id" title="notation">-</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#ed99e7035d9a1f8a2c1515be81ac2e5f"><span class="id" title="notation">×</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#z"><span class="id" title="variable">z</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.mulrnAl"><span class="id" title="lemma">mulrnAl</span></a> <span class="id" title="var">x</span> <span class="id" title="var">y</span> <span class="id" title="var">n</span> : <a class="idref" href="mathcomp.algebra.ssralg.html#ed99e7035d9a1f8a2c1515be81ac2e5f"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#513eaa3129601ecbcc9e188a80d6155b"><span class="id" title="notation">*+</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#n"><span class="id" title="variable">n</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#ed99e7035d9a1f8a2c1515be81ac2e5f"><span class="id" title="notation">)</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#ed99e7035d9a1f8a2c1515be81ac2e5f"><span class="id" title="notation">×</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#y"><span class="id" title="variable">y</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#513eaa3129601ecbcc9e188a80d6155b"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#ed99e7035d9a1f8a2c1515be81ac2e5f"><span class="id" title="notation">×</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#y"><span class="id" title="variable">y</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#513eaa3129601ecbcc9e188a80d6155b"><span class="id" title="notation">)</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#513eaa3129601ecbcc9e188a80d6155b"><span class="id" title="notation">*+</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#n"><span class="id" title="variable">n</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.mulrnAr"><span class="id" title="lemma">mulrnAr</span></a> <span class="id" title="var">x</span> <span class="id" title="var">y</span> <span class="id" title="var">n</span> : <a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#ed99e7035d9a1f8a2c1515be81ac2e5f"><span class="id" title="notation">×</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#ed99e7035d9a1f8a2c1515be81ac2e5f"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#y"><span class="id" title="variable">y</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#513eaa3129601ecbcc9e188a80d6155b"><span class="id" title="notation">*+</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#n"><span class="id" title="variable">n</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#ed99e7035d9a1f8a2c1515be81ac2e5f"><span class="id" title="notation">)</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#513eaa3129601ecbcc9e188a80d6155b"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#ed99e7035d9a1f8a2c1515be81ac2e5f"><span class="id" title="notation">×</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#y"><span class="id" title="variable">y</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#513eaa3129601ecbcc9e188a80d6155b"><span class="id" title="notation">)</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#513eaa3129601ecbcc9e188a80d6155b"><span class="id" title="notation">*+</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#n"><span class="id" title="variable">n</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.mulr_natl"><span class="id" title="lemma">mulr_natl</span></a> <span class="id" title="var">x</span> <span class="id" title="var">n</span> : <a class="idref" href="mathcomp.algebra.ssralg.html#n"><span class="id" title="variable">n</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#c191333b9c7c034282647fbffacc9d18"><span class="id" title="notation">%:</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#c191333b9c7c034282647fbffacc9d18"><span class="id" title="notation">R</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#ed99e7035d9a1f8a2c1515be81ac2e5f"><span class="id" title="notation">×</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#513eaa3129601ecbcc9e188a80d6155b"><span class="id" title="notation">*+</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#n"><span class="id" title="variable">n</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.mulr_natr"><span class="id" title="lemma">mulr_natr</span></a> <span class="id" title="var">x</span> <span class="id" title="var">n</span> : <a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#ed99e7035d9a1f8a2c1515be81ac2e5f"><span class="id" title="notation">×</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#n"><span class="id" title="variable">n</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#c191333b9c7c034282647fbffacc9d18"><span class="id" title="notation">%:</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#c191333b9c7c034282647fbffacc9d18"><span class="id" title="notation">R</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#513eaa3129601ecbcc9e188a80d6155b"><span class="id" title="notation">*+</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#n"><span class="id" title="variable">n</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.natrD"><span class="id" title="lemma">natrD</span></a> <span class="id" title="var">m</span> <span class="id" title="var">n</span> : <a class="idref" href="mathcomp.algebra.ssralg.html#c191333b9c7c034282647fbffacc9d18"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#m"><span class="id" title="variable">m</span></a> <a class="idref" href="mathcomp.ssreflect.ssrnat.html#b3eea360671e1b32b18a26e15b3aace3"><span class="id" title="notation">+</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#n"><span class="id" title="variable">n</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#c191333b9c7c034282647fbffacc9d18"><span class="id" title="notation">)%:</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#c191333b9c7c034282647fbffacc9d18"><span class="id" title="notation">R</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#8f9364556521ebb498093f28eea2240f"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#m"><span class="id" title="variable">m</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#c191333b9c7c034282647fbffacc9d18"><span class="id" title="notation">%:</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#c191333b9c7c034282647fbffacc9d18"><span class="id" title="notation">R</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#338c5345074fd3586073fd29273c138a"><span class="id" title="notation">+</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#n"><span class="id" title="variable">n</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#c191333b9c7c034282647fbffacc9d18"><span class="id" title="notation">%:</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#c191333b9c7c034282647fbffacc9d18"><span class="id" title="notation">R</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#8f9364556521ebb498093f28eea2240f"><span class="id" title="notation">:&gt;</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.RingTheory.R"><span class="id" title="variable">R</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.natrB"><span class="id" title="lemma">natrB</span></a> <span class="id" title="var">m</span> <span class="id" title="var">n</span> : <a class="idref" href="mathcomp.algebra.ssralg.html#n"><span class="id" title="variable">n</span></a> <a class="idref" href="mathcomp.ssreflect.ssrnat.html#9b077c369e19739ef880736ba34623ff"><span class="id" title="notation">≤</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#m"><span class="id" title="variable">m</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#c191333b9c7c034282647fbffacc9d18"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#m"><span class="id" title="variable">m</span></a> <a class="idref" href="mathcomp.ssreflect.ssrnat.html#9482aae3d3b06e249765c1225dbb8cbb"><span class="id" title="notation">-</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#n"><span class="id" title="variable">n</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#c191333b9c7c034282647fbffacc9d18"><span class="id" title="notation">)%:</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#c191333b9c7c034282647fbffacc9d18"><span class="id" title="notation">R</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#8f9364556521ebb498093f28eea2240f"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#m"><span class="id" title="variable">m</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#c191333b9c7c034282647fbffacc9d18"><span class="id" title="notation">%:</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#c191333b9c7c034282647fbffacc9d18"><span class="id" title="notation">R</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#4d4b9697032429ec46472e6332d1356a"><span class="id" title="notation">-</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#n"><span class="id" title="variable">n</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#c191333b9c7c034282647fbffacc9d18"><span class="id" title="notation">%:</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#c191333b9c7c034282647fbffacc9d18"><span class="id" title="notation">R</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#8f9364556521ebb498093f28eea2240f"><span class="id" title="notation">:&gt;</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.RingTheory.R"><span class="id" title="variable">R</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.natr_sum"><span class="id" title="definition">natr_sum</span></a> := <a class="idref" href="mathcomp.ssreflect.bigop.html#big_morph"><span class="id" title="lemma">big_morph</span></a> (<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.natmul"><span class="id" title="definition">natmul</span></a> 1) <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.natrD"><span class="id" title="lemma">natrD</span></a> (<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.mulr0n"><span class="id" title="lemma">mulr0n</span></a> 1).<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.natrM"><span class="id" title="lemma">natrM</span></a> <span class="id" title="var">m</span> <span class="id" title="var">n</span> : <a class="idref" href="mathcomp.algebra.ssralg.html#c191333b9c7c034282647fbffacc9d18"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#m"><span class="id" title="variable">m</span></a> <a class="idref" href="mathcomp.ssreflect.ssrnat.html#697e4695610f677ae98a52af81f779d2"><span class="id" title="notation">×</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#n"><span class="id" title="variable">n</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#c191333b9c7c034282647fbffacc9d18"><span class="id" title="notation">)%:</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#c191333b9c7c034282647fbffacc9d18"><span class="id" title="notation">R</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#8f9364556521ebb498093f28eea2240f"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#m"><span class="id" title="variable">m</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#c191333b9c7c034282647fbffacc9d18"><span class="id" title="notation">%:</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#c191333b9c7c034282647fbffacc9d18"><span class="id" title="notation">R</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#ed99e7035d9a1f8a2c1515be81ac2e5f"><span class="id" title="notation">×</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#n"><span class="id" title="variable">n</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#c191333b9c7c034282647fbffacc9d18"><span class="id" title="notation">%:</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#c191333b9c7c034282647fbffacc9d18"><span class="id" title="notation">R</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#8f9364556521ebb498093f28eea2240f"><span class="id" title="notation">:&gt;</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.RingTheory.R"><span class="id" title="variable">R</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.expr0"><span class="id" title="lemma">expr0</span></a> <span class="id" title="var">x</span> : <a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#b5a6699e28c97bb33352772cfa3ea869"><span class="id" title="notation">^+</span></a> 0 <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> 1. <br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.expr1"><span class="id" title="lemma">expr1</span></a> <span class="id" title="var">x</span> : <a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#b5a6699e28c97bb33352772cfa3ea869"><span class="id" title="notation">^+</span></a> 1 <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a>. <br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.expr2"><span class="id" title="lemma">expr2</span></a> <span class="id" title="var">x</span> : <a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#b5a6699e28c97bb33352772cfa3ea869"><span class="id" title="notation">^+</span></a> 2 <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#ed99e7035d9a1f8a2c1515be81ac2e5f"><span class="id" title="notation">×</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a>. <br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.exprS"><span class="id" title="lemma">exprS</span></a> <span class="id" title="var">x</span> <span class="id" title="var">n</span> : <a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#b5a6699e28c97bb33352772cfa3ea869"><span class="id" title="notation">^+</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#n"><span class="id" title="variable">n</span></a><a class="idref" href="mathcomp.ssreflect.ssrnat.html#361454269931ea8643f7b402f2ab7222"><span class="id" title="notation">.+1</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#ed99e7035d9a1f8a2c1515be81ac2e5f"><span class="id" title="notation">×</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#b5a6699e28c97bb33352772cfa3ea869"><span class="id" title="notation">^+</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#n"><span class="id" title="variable">n</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.expr0n"><span class="id" title="lemma">expr0n</span></a> <span class="id" title="var">n</span> : 0 <a class="idref" href="mathcomp.algebra.ssralg.html#b5a6699e28c97bb33352772cfa3ea869"><span class="id" title="notation">^+</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#n"><span class="id" title="variable">n</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#8f9364556521ebb498093f28eea2240f"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#c191333b9c7c034282647fbffacc9d18"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#n"><span class="id" title="variable">n</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#17d28d004d0863cb022d4ce832ddaaae"><span class="id" title="notation">==</span></a> 0%<span class="id" title="var">N</span><a class="idref" href="mathcomp.algebra.ssralg.html#c191333b9c7c034282647fbffacc9d18"><span class="id" title="notation">)%:</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#c191333b9c7c034282647fbffacc9d18"><span class="id" title="notation">R</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#8f9364556521ebb498093f28eea2240f"><span class="id" title="notation">:&gt;</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.RingTheory.R"><span class="id" title="variable">R</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.expr1n"><span class="id" title="lemma">expr1n</span></a> <span class="id" title="var">n</span> : 1 <a class="idref" href="mathcomp.algebra.ssralg.html#b5a6699e28c97bb33352772cfa3ea869"><span class="id" title="notation">^+</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#n"><span class="id" title="variable">n</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#8f9364556521ebb498093f28eea2240f"><span class="id" title="notation">=</span></a> 1 <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#8f9364556521ebb498093f28eea2240f"><span class="id" title="notation">:&gt;</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.RingTheory.R"><span class="id" title="variable">R</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.exprD"><span class="id" title="lemma">exprD</span></a> <span class="id" title="var">x</span> <span class="id" title="var">m</span> <span class="id" title="var">n</span> : <a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#b5a6699e28c97bb33352772cfa3ea869"><span class="id" title="notation">^+</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#b5a6699e28c97bb33352772cfa3ea869"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#m"><span class="id" title="variable">m</span></a> <a class="idref" href="mathcomp.ssreflect.ssrnat.html#b3eea360671e1b32b18a26e15b3aace3"><span class="id" title="notation">+</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#n"><span class="id" title="variable">n</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#b5a6699e28c97bb33352772cfa3ea869"><span class="id" title="notation">)</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#b5a6699e28c97bb33352772cfa3ea869"><span class="id" title="notation">^+</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#m"><span class="id" title="variable">m</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#ed99e7035d9a1f8a2c1515be81ac2e5f"><span class="id" title="notation">×</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#b5a6699e28c97bb33352772cfa3ea869"><span class="id" title="notation">^+</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#n"><span class="id" title="variable">n</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.exprSr"><span class="id" title="lemma">exprSr</span></a> <span class="id" title="var">x</span> <span class="id" title="var">n</span> : <a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#b5a6699e28c97bb33352772cfa3ea869"><span class="id" title="notation">^+</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#n"><span class="id" title="variable">n</span></a><a class="idref" href="mathcomp.ssreflect.ssrnat.html#361454269931ea8643f7b402f2ab7222"><span class="id" title="notation">.+1</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#b5a6699e28c97bb33352772cfa3ea869"><span class="id" title="notation">^+</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#n"><span class="id" title="variable">n</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#ed99e7035d9a1f8a2c1515be81ac2e5f"><span class="id" title="notation">×</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.commr_sym"><span class="id" title="lemma">commr_sym</span></a> <span class="id" title="var">x</span> <span class="id" title="var">y</span> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.comm"><span class="id" title="definition">comm</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#y"><span class="id" title="variable">y</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.comm"><span class="id" title="definition">comm</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#y"><span class="id" title="variable">y</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a>. <br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.commr_refl"><span class="id" title="lemma">commr_refl</span></a> <span class="id" title="var">x</span> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.comm"><span class="id" title="definition">comm</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a>. <br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.commr0"><span class="id" title="lemma">commr0</span></a> <span class="id" title="var">x</span> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.comm"><span class="id" title="definition">comm</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a> 0.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.commr1"><span class="id" title="lemma">commr1</span></a> <span class="id" title="var">x</span> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.comm"><span class="id" title="definition">comm</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a> 1.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.commrN"><span class="id" title="lemma">commrN</span></a> <span class="id" title="var">x</span> <span class="id" title="var">y</span> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.comm"><span class="id" title="definition">comm</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#y"><span class="id" title="variable">y</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.comm"><span class="id" title="definition">comm</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a> (<a class="idref" href="mathcomp.algebra.ssralg.html#eefae7eea8ed2b8fccf150cb653d7a7b"><span class="id" title="notation">-</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#y"><span class="id" title="variable">y</span></a>).<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.commrN1"><span class="id" title="lemma">commrN1</span></a> <span class="id" title="var">x</span> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.comm"><span class="id" title="definition">comm</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a> (-1).<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.commrD"><span class="id" title="lemma">commrD</span></a> <span class="id" title="var">x</span> <span class="id" title="var">y</span> <span class="id" title="var">z</span> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.comm"><span class="id" title="definition">comm</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#y"><span class="id" title="variable">y</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.comm"><span class="id" title="definition">comm</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#z"><span class="id" title="variable">z</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.comm"><span class="id" title="definition">comm</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a> (<a class="idref" href="mathcomp.algebra.ssralg.html#y"><span class="id" title="variable">y</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#338c5345074fd3586073fd29273c138a"><span class="id" title="notation">+</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#z"><span class="id" title="variable">z</span></a>).<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.commrMn"><span class="id" title="lemma">commrMn</span></a> <span class="id" title="var">x</span> <span class="id" title="var">y</span> <span class="id" title="var">n</span> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.comm"><span class="id" title="definition">comm</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#y"><span class="id" title="variable">y</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.comm"><span class="id" title="definition">comm</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a> (<a class="idref" href="mathcomp.algebra.ssralg.html#y"><span class="id" title="variable">y</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#513eaa3129601ecbcc9e188a80d6155b"><span class="id" title="notation">*+</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#n"><span class="id" title="variable">n</span></a>).<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.commrM"><span class="id" title="lemma">commrM</span></a> <span class="id" title="var">x</span> <span class="id" title="var">y</span> <span class="id" title="var">z</span> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.comm"><span class="id" title="definition">comm</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#y"><span class="id" title="variable">y</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.comm"><span class="id" title="definition">comm</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#z"><span class="id" title="variable">z</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.comm"><span class="id" title="definition">comm</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a> (<a class="idref" href="mathcomp.algebra.ssralg.html#y"><span class="id" title="variable">y</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#ed99e7035d9a1f8a2c1515be81ac2e5f"><span class="id" title="notation">×</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#z"><span class="id" title="variable">z</span></a>).<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.commr_nat"><span class="id" title="lemma">commr_nat</span></a> <span class="id" title="var">x</span> <span class="id" title="var">n</span> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.comm"><span class="id" title="definition">comm</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#n"><span class="id" title="variable">n</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#c191333b9c7c034282647fbffacc9d18"><span class="id" title="notation">%:</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#c191333b9c7c034282647fbffacc9d18"><span class="id" title="notation">R</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.commrX"><span class="id" title="lemma">commrX</span></a> <span class="id" title="var">x</span> <span class="id" title="var">y</span> <span class="id" title="var">n</span> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.comm"><span class="id" title="definition">comm</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#y"><span class="id" title="variable">y</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.comm"><span class="id" title="definition">comm</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a> (<a class="idref" href="mathcomp.algebra.ssralg.html#y"><span class="id" title="variable">y</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#b5a6699e28c97bb33352772cfa3ea869"><span class="id" title="notation">^+</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#n"><span class="id" title="variable">n</span></a>).<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.exprMn_comm"><span class="id" title="lemma">exprMn_comm</span></a> <span class="id" title="var">x</span> <span class="id" title="var">y</span> <span class="id" title="var">n</span> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.comm"><span class="id" title="definition">comm</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#y"><span class="id" title="variable">y</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#b5a6699e28c97bb33352772cfa3ea869"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#ed99e7035d9a1f8a2c1515be81ac2e5f"><span class="id" title="notation">×</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#y"><span class="id" title="variable">y</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#b5a6699e28c97bb33352772cfa3ea869"><span class="id" title="notation">)</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#b5a6699e28c97bb33352772cfa3ea869"><span class="id" title="notation">^+</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#n"><span class="id" title="variable">n</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#b5a6699e28c97bb33352772cfa3ea869"><span class="id" title="notation">^+</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#n"><span class="id" title="variable">n</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#ed99e7035d9a1f8a2c1515be81ac2e5f"><span class="id" title="notation">×</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#y"><span class="id" title="variable">y</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#b5a6699e28c97bb33352772cfa3ea869"><span class="id" title="notation">^+</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#n"><span class="id" title="variable">n</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.commr_sign"><span class="id" title="lemma">commr_sign</span></a> <span class="id" title="var">x</span> <span class="id" title="var">n</span> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.comm"><span class="id" title="definition">comm</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a> (<a class="idref" href="mathcomp.algebra.ssralg.html#b5a6699e28c97bb33352772cfa3ea869"><span class="id" title="notation">(</span></a>-1<a class="idref" href="mathcomp.algebra.ssralg.html#b5a6699e28c97bb33352772cfa3ea869"><span class="id" title="notation">)</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#b5a6699e28c97bb33352772cfa3ea869"><span class="id" title="notation">^+</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#n"><span class="id" title="variable">n</span></a>).<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.exprMn_n"><span class="id" title="lemma">exprMn_n</span></a> <span class="id" title="var">x</span> <span class="id" title="var">m</span> <span class="id" title="var">n</span> : <a class="idref" href="mathcomp.algebra.ssralg.html#b5a6699e28c97bb33352772cfa3ea869"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#513eaa3129601ecbcc9e188a80d6155b"><span class="id" title="notation">*+</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#m"><span class="id" title="variable">m</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#b5a6699e28c97bb33352772cfa3ea869"><span class="id" title="notation">)</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#b5a6699e28c97bb33352772cfa3ea869"><span class="id" title="notation">^+</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#n"><span class="id" title="variable">n</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#8f9364556521ebb498093f28eea2240f"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#b5a6699e28c97bb33352772cfa3ea869"><span class="id" title="notation">^+</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#n"><span class="id" title="variable">n</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#513eaa3129601ecbcc9e188a80d6155b"><span class="id" title="notation">*+</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#513eaa3129601ecbcc9e188a80d6155b"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#m"><span class="id" title="variable">m</span></a> <a class="idref" href="mathcomp.ssreflect.ssrnat.html#4c362bcf0e947e2792a2e6989b44aeb0"><span class="id" title="notation">^</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#n"><span class="id" title="variable">n</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#513eaa3129601ecbcc9e188a80d6155b"><span class="id" title="notation">)</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#8f9364556521ebb498093f28eea2240f"><span class="id" title="notation">:&gt;</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.RingTheory.R"><span class="id" title="variable">R</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.exprM"><span class="id" title="lemma">exprM</span></a> <span class="id" title="var">x</span> <span class="id" title="var">m</span> <span class="id" title="var">n</span> : <a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#b5a6699e28c97bb33352772cfa3ea869"><span class="id" title="notation">^+</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#b5a6699e28c97bb33352772cfa3ea869"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#m"><span class="id" title="variable">m</span></a> <a class="idref" href="mathcomp.ssreflect.ssrnat.html#697e4695610f677ae98a52af81f779d2"><span class="id" title="notation">×</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#n"><span class="id" title="variable">n</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#b5a6699e28c97bb33352772cfa3ea869"><span class="id" title="notation">)</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#b5a6699e28c97bb33352772cfa3ea869"><span class="id" title="notation">^+</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#m"><span class="id" title="variable">m</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#b5a6699e28c97bb33352772cfa3ea869"><span class="id" title="notation">^+</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#n"><span class="id" title="variable">n</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.exprAC"><span class="id" title="lemma">exprAC</span></a> <span class="id" title="var">x</span> <span class="id" title="var">m</span> <span class="id" title="var">n</span> : <a class="idref" href="mathcomp.algebra.ssralg.html#b5a6699e28c97bb33352772cfa3ea869"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#b5a6699e28c97bb33352772cfa3ea869"><span class="id" title="notation">^+</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#m"><span class="id" title="variable">m</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#b5a6699e28c97bb33352772cfa3ea869"><span class="id" title="notation">)</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#b5a6699e28c97bb33352772cfa3ea869"><span class="id" title="notation">^+</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#n"><span class="id" title="variable">n</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#b5a6699e28c97bb33352772cfa3ea869"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#b5a6699e28c97bb33352772cfa3ea869"><span class="id" title="notation">^+</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#n"><span class="id" title="variable">n</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#b5a6699e28c97bb33352772cfa3ea869"><span class="id" title="notation">)</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#b5a6699e28c97bb33352772cfa3ea869"><span class="id" title="notation">^+</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#m"><span class="id" title="variable">m</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.expr_mod"><span class="id" title="lemma">expr_mod</span></a> <span class="id" title="var">n</span> <span class="id" title="var">x</span> <span class="id" title="var">i</span> : <a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#b5a6699e28c97bb33352772cfa3ea869"><span class="id" title="notation">^+</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#n"><span class="id" title="variable">n</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> 1 <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#b5a6699e28c97bb33352772cfa3ea869"><span class="id" title="notation">^+</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#b5a6699e28c97bb33352772cfa3ea869"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#i"><span class="id" title="variable">i</span></a> <a class="idref" href="mathcomp.ssreflect.div.html#2179ac53e82aa7c0b2f2f5a16b5510ea"><span class="id" title="notation">%%</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#n"><span class="id" title="variable">n</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#b5a6699e28c97bb33352772cfa3ea869"><span class="id" title="notation">)</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#b5a6699e28c97bb33352772cfa3ea869"><span class="id" title="notation">^+</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#i"><span class="id" title="variable">i</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.expr_dvd"><span class="id" title="lemma">expr_dvd</span></a> <span class="id" title="var">n</span> <span class="id" title="var">x</span> <span class="id" title="var">i</span> : <a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#b5a6699e28c97bb33352772cfa3ea869"><span class="id" title="notation">^+</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#n"><span class="id" title="variable">n</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> 1 <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#n"><span class="id" title="variable">n</span></a> <a class="idref" href="mathcomp.ssreflect.div.html#aa34fd1c61c5cf0a3356b624a5d2afed"><span class="id" title="notation">%|</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#i"><span class="id" title="variable">i</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#b5a6699e28c97bb33352772cfa3ea869"><span class="id" title="notation">^+</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#i"><span class="id" title="variable">i</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> 1.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.natrX"><span class="id" title="lemma">natrX</span></a> <span class="id" title="var">n</span> <span class="id" title="var">k</span> : <a class="idref" href="mathcomp.algebra.ssralg.html#c191333b9c7c034282647fbffacc9d18"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#n"><span class="id" title="variable">n</span></a> <a class="idref" href="mathcomp.ssreflect.ssrnat.html#4c362bcf0e947e2792a2e6989b44aeb0"><span class="id" title="notation">^</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#k"><span class="id" title="variable">k</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#c191333b9c7c034282647fbffacc9d18"><span class="id" title="notation">)%:</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#c191333b9c7c034282647fbffacc9d18"><span class="id" title="notation">R</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#8f9364556521ebb498093f28eea2240f"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#n"><span class="id" title="variable">n</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#c191333b9c7c034282647fbffacc9d18"><span class="id" title="notation">%:</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#c191333b9c7c034282647fbffacc9d18"><span class="id" title="notation">R</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#b5a6699e28c97bb33352772cfa3ea869"><span class="id" title="notation">^+</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#k"><span class="id" title="variable">k</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#8f9364556521ebb498093f28eea2240f"><span class="id" title="notation">:&gt;</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.RingTheory.R"><span class="id" title="variable">R</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.signr_odd"><span class="id" title="lemma">signr_odd</span></a> <span class="id" title="var">n</span> : <a class="idref" href="mathcomp.algebra.ssralg.html#b5a6699e28c97bb33352772cfa3ea869"><span class="id" title="notation">(</span></a>-1<a class="idref" href="mathcomp.algebra.ssralg.html#b5a6699e28c97bb33352772cfa3ea869"><span class="id" title="notation">)</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#b5a6699e28c97bb33352772cfa3ea869"><span class="id" title="notation">^+</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#b5a6699e28c97bb33352772cfa3ea869"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.ssreflect.ssrnat.html#odd"><span class="id" title="definition">odd</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#n"><span class="id" title="variable">n</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#b5a6699e28c97bb33352772cfa3ea869"><span class="id" title="notation">)</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#8f9364556521ebb498093f28eea2240f"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#b5a6699e28c97bb33352772cfa3ea869"><span class="id" title="notation">(</span></a>-1<a class="idref" href="mathcomp.algebra.ssralg.html#b5a6699e28c97bb33352772cfa3ea869"><span class="id" title="notation">)</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#b5a6699e28c97bb33352772cfa3ea869"><span class="id" title="notation">^+</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#n"><span class="id" title="variable">n</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#8f9364556521ebb498093f28eea2240f"><span class="id" title="notation">:&gt;</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.RingTheory.R"><span class="id" title="variable">R</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.signr_eq0"><span class="id" title="lemma">signr_eq0</span></a> <span class="id" title="var">n</span> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#b5a6699e28c97bb33352772cfa3ea869"><span class="id" title="notation">(</span></a>-1<a class="idref" href="mathcomp.algebra.ssralg.html#b5a6699e28c97bb33352772cfa3ea869"><span class="id" title="notation">)</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#b5a6699e28c97bb33352772cfa3ea869"><span class="id" title="notation">^+</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#n"><span class="id" title="variable">n</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#340b60eb5a3e9913f807040630cb8d43"><span class="id" title="notation">==</span></a> 0 <a class="idref" href="mathcomp.ssreflect.eqtype.html#340b60eb5a3e9913f807040630cb8d43"><span class="id" title="notation">:&gt;</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.RingTheory.R"><span class="id" title="variable">R</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">)</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#false"><span class="id" title="constructor">false</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.mulr_sign"><span class="id" title="lemma">mulr_sign</span></a> (<span class="id" title="var">b</span> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#bool"><span class="id" title="inductive">bool</span></a>) <span class="id" title="var">x</span> : <a class="idref" href="mathcomp.algebra.ssralg.html#b5a6699e28c97bb33352772cfa3ea869"><span class="id" title="notation">(</span></a>-1<a class="idref" href="mathcomp.algebra.ssralg.html#b5a6699e28c97bb33352772cfa3ea869"><span class="id" title="notation">)</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#b5a6699e28c97bb33352772cfa3ea869"><span class="id" title="notation">^+</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#b"><span class="id" title="variable">b</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#ed99e7035d9a1f8a2c1515be81ac2e5f"><span class="id" title="notation">×</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">(</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssreflect.html#0348819abaa88c2cd747e8fa60dde7ae"><span class="id" title="notation">if</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#b"><span class="id" title="variable">b</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssreflect.html#0348819abaa88c2cd747e8fa60dde7ae"><span class="id" title="notation">then</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#eefae7eea8ed2b8fccf150cb653d7a7b"><span class="id" title="notation">-</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssreflect.html#0348819abaa88c2cd747e8fa60dde7ae"><span class="id" title="notation">else</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">)</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.signr_addb"><span class="id" title="lemma">signr_addb</span></a> <span class="id" title="var">b1</span> <span class="id" title="var">b2</span> : <a class="idref" href="mathcomp.algebra.ssralg.html#b5a6699e28c97bb33352772cfa3ea869"><span class="id" title="notation">(</span></a>-1<a class="idref" href="mathcomp.algebra.ssralg.html#b5a6699e28c97bb33352772cfa3ea869"><span class="id" title="notation">)</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#b5a6699e28c97bb33352772cfa3ea869"><span class="id" title="notation">^+</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#b5a6699e28c97bb33352772cfa3ea869"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#b1"><span class="id" title="variable">b1</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#ef177bde7d01ae97c98f9cba81f6c95b"><span class="id" title="notation">(+)</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#b2"><span class="id" title="variable">b2</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#b5a6699e28c97bb33352772cfa3ea869"><span class="id" title="notation">)</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#8f9364556521ebb498093f28eea2240f"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#b5a6699e28c97bb33352772cfa3ea869"><span class="id" title="notation">(</span></a>-1<a class="idref" href="mathcomp.algebra.ssralg.html#b5a6699e28c97bb33352772cfa3ea869"><span class="id" title="notation">)</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#b5a6699e28c97bb33352772cfa3ea869"><span class="id" title="notation">^+</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#b1"><span class="id" title="variable">b1</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#ed99e7035d9a1f8a2c1515be81ac2e5f"><span class="id" title="notation">×</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#b5a6699e28c97bb33352772cfa3ea869"><span class="id" title="notation">(</span></a>-1<a class="idref" href="mathcomp.algebra.ssralg.html#b5a6699e28c97bb33352772cfa3ea869"><span class="id" title="notation">)</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#b5a6699e28c97bb33352772cfa3ea869"><span class="id" title="notation">^+</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#b2"><span class="id" title="variable">b2</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#8f9364556521ebb498093f28eea2240f"><span class="id" title="notation">:&gt;</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.RingTheory.R"><span class="id" title="variable">R</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.signrE"><span class="id" title="lemma">signrE</span></a> (<span class="id" title="var">b</span> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#bool"><span class="id" title="inductive">bool</span></a>) : <a class="idref" href="mathcomp.algebra.ssralg.html#b5a6699e28c97bb33352772cfa3ea869"><span class="id" title="notation">(</span></a>-1<a class="idref" href="mathcomp.algebra.ssralg.html#b5a6699e28c97bb33352772cfa3ea869"><span class="id" title="notation">)</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#b5a6699e28c97bb33352772cfa3ea869"><span class="id" title="notation">^+</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#b"><span class="id" title="variable">b</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#8f9364556521ebb498093f28eea2240f"><span class="id" title="notation">=</span></a> 1 <a class="idref" href="mathcomp.algebra.ssralg.html#4d4b9697032429ec46472e6332d1356a"><span class="id" title="notation">-</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#b"><span class="id" title="variable">b</span></a><a class="idref" href="mathcomp.ssreflect.ssrnat.html#f460b977ac49dd1a229be682bc38c411"><span class="id" title="notation">.*2</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#c191333b9c7c034282647fbffacc9d18"><span class="id" title="notation">%:</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#c191333b9c7c034282647fbffacc9d18"><span class="id" title="notation">R</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#8f9364556521ebb498093f28eea2240f"><span class="id" title="notation">:&gt;</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.RingTheory.R"><span class="id" title="variable">R</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.signrN"><span class="id" title="lemma">signrN</span></a> <span class="id" title="var">b</span> : <a class="idref" href="mathcomp.algebra.ssralg.html#b5a6699e28c97bb33352772cfa3ea869"><span class="id" title="notation">(</span></a>-1<a class="idref" href="mathcomp.algebra.ssralg.html#b5a6699e28c97bb33352772cfa3ea869"><span class="id" title="notation">)</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#b5a6699e28c97bb33352772cfa3ea869"><span class="id" title="notation">^+</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#b5a6699e28c97bb33352772cfa3ea869"><span class="id" title="notation">(</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#4b80c70cdb231351c5e129ba61f7f956"><span class="id" title="notation">~~</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#b"><span class="id" title="variable">b</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#b5a6699e28c97bb33352772cfa3ea869"><span class="id" title="notation">)</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#8f9364556521ebb498093f28eea2240f"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#eefae7eea8ed2b8fccf150cb653d7a7b"><span class="id" title="notation">-</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#b5a6699e28c97bb33352772cfa3ea869"><span class="id" title="notation">(</span></a>-1<a class="idref" href="mathcomp.algebra.ssralg.html#b5a6699e28c97bb33352772cfa3ea869"><span class="id" title="notation">)</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#b5a6699e28c97bb33352772cfa3ea869"><span class="id" title="notation">^+</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#b"><span class="id" title="variable">b</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#8f9364556521ebb498093f28eea2240f"><span class="id" title="notation">:&gt;</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.RingTheory.R"><span class="id" title="variable">R</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.mulr_signM"><span class="id" title="lemma">mulr_signM</span></a> (<span class="id" title="var">b1</span> <span class="id" title="var">b2</span> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#bool"><span class="id" title="inductive">bool</span></a>) <span class="id" title="var">x1</span> <span class="id" title="var">x2</span> :<br/>
+&nbsp;&nbsp;<a class="idref" href="mathcomp.algebra.ssralg.html#ed99e7035d9a1f8a2c1515be81ac2e5f"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#b5a6699e28c97bb33352772cfa3ea869"><span class="id" title="notation">(</span></a>-1<a class="idref" href="mathcomp.algebra.ssralg.html#b5a6699e28c97bb33352772cfa3ea869"><span class="id" title="notation">)</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#b5a6699e28c97bb33352772cfa3ea869"><span class="id" title="notation">^+</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#b1"><span class="id" title="variable">b1</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#ed99e7035d9a1f8a2c1515be81ac2e5f"><span class="id" title="notation">×</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#x1"><span class="id" title="variable">x1</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#ed99e7035d9a1f8a2c1515be81ac2e5f"><span class="id" title="notation">)</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#ed99e7035d9a1f8a2c1515be81ac2e5f"><span class="id" title="notation">×</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#ed99e7035d9a1f8a2c1515be81ac2e5f"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#b5a6699e28c97bb33352772cfa3ea869"><span class="id" title="notation">(</span></a>-1<a class="idref" href="mathcomp.algebra.ssralg.html#b5a6699e28c97bb33352772cfa3ea869"><span class="id" title="notation">)</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#b5a6699e28c97bb33352772cfa3ea869"><span class="id" title="notation">^+</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#b2"><span class="id" title="variable">b2</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#ed99e7035d9a1f8a2c1515be81ac2e5f"><span class="id" title="notation">×</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#x2"><span class="id" title="variable">x2</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#ed99e7035d9a1f8a2c1515be81ac2e5f"><span class="id" title="notation">)</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#b5a6699e28c97bb33352772cfa3ea869"><span class="id" title="notation">(</span></a>-1<a class="idref" href="mathcomp.algebra.ssralg.html#b5a6699e28c97bb33352772cfa3ea869"><span class="id" title="notation">)</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#b5a6699e28c97bb33352772cfa3ea869"><span class="id" title="notation">^+</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#b5a6699e28c97bb33352772cfa3ea869"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#b1"><span class="id" title="variable">b1</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#ef177bde7d01ae97c98f9cba81f6c95b"><span class="id" title="notation">(+)</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#b2"><span class="id" title="variable">b2</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#b5a6699e28c97bb33352772cfa3ea869"><span class="id" title="notation">)</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#ed99e7035d9a1f8a2c1515be81ac2e5f"><span class="id" title="notation">×</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#ed99e7035d9a1f8a2c1515be81ac2e5f"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#x1"><span class="id" title="variable">x1</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#ed99e7035d9a1f8a2c1515be81ac2e5f"><span class="id" title="notation">×</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#x2"><span class="id" title="variable">x2</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#ed99e7035d9a1f8a2c1515be81ac2e5f"><span class="id" title="notation">)</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.exprNn"><span class="id" title="lemma">exprNn</span></a> <span class="id" title="var">x</span> <span class="id" title="var">n</span> : <a class="idref" href="mathcomp.algebra.ssralg.html#b5a6699e28c97bb33352772cfa3ea869"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#eefae7eea8ed2b8fccf150cb653d7a7b"><span class="id" title="notation">-</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#b5a6699e28c97bb33352772cfa3ea869"><span class="id" title="notation">)</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#b5a6699e28c97bb33352772cfa3ea869"><span class="id" title="notation">^+</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#n"><span class="id" title="variable">n</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#8f9364556521ebb498093f28eea2240f"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#b5a6699e28c97bb33352772cfa3ea869"><span class="id" title="notation">(</span></a>-1<a class="idref" href="mathcomp.algebra.ssralg.html#b5a6699e28c97bb33352772cfa3ea869"><span class="id" title="notation">)</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#b5a6699e28c97bb33352772cfa3ea869"><span class="id" title="notation">^+</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#n"><span class="id" title="variable">n</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#ed99e7035d9a1f8a2c1515be81ac2e5f"><span class="id" title="notation">×</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#b5a6699e28c97bb33352772cfa3ea869"><span class="id" title="notation">^+</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#n"><span class="id" title="variable">n</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#8f9364556521ebb498093f28eea2240f"><span class="id" title="notation">:&gt;</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.RingTheory.R"><span class="id" title="variable">R</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.sqrrN"><span class="id" title="lemma">sqrrN</span></a> <span class="id" title="var">x</span> : <a class="idref" href="mathcomp.algebra.ssralg.html#b5a6699e28c97bb33352772cfa3ea869"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#eefae7eea8ed2b8fccf150cb653d7a7b"><span class="id" title="notation">-</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#b5a6699e28c97bb33352772cfa3ea869"><span class="id" title="notation">)</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#b5a6699e28c97bb33352772cfa3ea869"><span class="id" title="notation">^+</span></a> 2 <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#b5a6699e28c97bb33352772cfa3ea869"><span class="id" title="notation">^+</span></a> 2.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.sqrr_sign"><span class="id" title="lemma">sqrr_sign</span></a> <span class="id" title="var">n</span> : <a class="idref" href="mathcomp.algebra.ssralg.html#b5a6699e28c97bb33352772cfa3ea869"><span class="id" title="notation">((</span></a>-1<a class="idref" href="mathcomp.algebra.ssralg.html#b5a6699e28c97bb33352772cfa3ea869"><span class="id" title="notation">)</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#b5a6699e28c97bb33352772cfa3ea869"><span class="id" title="notation">^+</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#n"><span class="id" title="variable">n</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#b5a6699e28c97bb33352772cfa3ea869"><span class="id" title="notation">)</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#b5a6699e28c97bb33352772cfa3ea869"><span class="id" title="notation">^+</span></a> 2 <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#8f9364556521ebb498093f28eea2240f"><span class="id" title="notation">=</span></a> 1 <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#8f9364556521ebb498093f28eea2240f"><span class="id" title="notation">:&gt;</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.RingTheory.R"><span class="id" title="variable">R</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.signrMK"><span class="id" title="lemma">signrMK</span></a> <span class="id" title="var">n</span> : @<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#involutive"><span class="id" title="definition">involutive</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.RingTheory.R"><span class="id" title="variable">R</span></a> ( <a class="idref" href="mathcomp.algebra.ssralg.html#6498e6e308d8a143464cf2d2ba603d36"><span class="id" title="notation">*%</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#6498e6e308d8a143464cf2d2ba603d36"><span class="id" title="notation">R</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#6498e6e308d8a143464cf2d2ba603d36"><span class="id" title="notation">((-1)</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#6498e6e308d8a143464cf2d2ba603d36"><span class="id" title="notation">^+</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#6498e6e308d8a143464cf2d2ba603d36"><span class="id" title="notation">n</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#6498e6e308d8a143464cf2d2ba603d36"><span class="id" title="notation">)</span></a>).<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.mulrI_eq0"><span class="id" title="lemma">mulrI_eq0</span></a> <span class="id" title="var">x</span> <span class="id" title="var">y</span> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.lreg"><span class="id" title="definition">lreg</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#ed99e7035d9a1f8a2c1515be81ac2e5f"><span class="id" title="notation">×</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#y"><span class="id" title="variable">y</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#17d28d004d0863cb022d4ce832ddaaae"><span class="id" title="notation">==</span></a> 0<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">)</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#y"><span class="id" title="variable">y</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#17d28d004d0863cb022d4ce832ddaaae"><span class="id" title="notation">==</span></a> 0<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">)</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.lreg_neq0"><span class="id" title="lemma">lreg_neq0</span></a> <span class="id" title="var">x</span> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.lreg"><span class="id" title="definition">lreg</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#b1eeadc2feabc7422252baa895418c7b"><span class="id" title="notation">!=</span></a> 0.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.mulrI0_lreg"><span class="id" title="lemma">mulrI0_lreg</span></a> <span class="id" title="var">x</span> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><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.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#ed99e7035d9a1f8a2c1515be81ac2e5f"><span class="id" title="notation">×</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#y"><span class="id" title="variable">y</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> 0 <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#y"><span class="id" title="variable">y</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> 0<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">)</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.lreg"><span class="id" title="definition">lreg</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.lregN"><span class="id" title="lemma">lregN</span></a> <span class="id" title="var">x</span> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.lreg"><span class="id" title="definition">lreg</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.lreg"><span class="id" title="definition">lreg</span></a> (<a class="idref" href="mathcomp.algebra.ssralg.html#eefae7eea8ed2b8fccf150cb653d7a7b"><span class="id" title="notation">-</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a>).<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.lreg1"><span class="id" title="lemma">lreg1</span></a> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.lreg"><span class="id" title="definition">lreg</span></a> (1 <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssreflect.html#4509b22bf26e3d6d771897e22bd8bc8f"><span class="id" title="notation">:</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.RingTheory.R"><span class="id" title="variable">R</span></a>).<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.lregM"><span class="id" title="lemma">lregM</span></a> <span class="id" title="var">x</span> <span class="id" title="var">y</span> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.lreg"><span class="id" title="definition">lreg</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.lreg"><span class="id" title="definition">lreg</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#y"><span class="id" title="variable">y</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.lreg"><span class="id" title="definition">lreg</span></a> (<a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#ed99e7035d9a1f8a2c1515be81ac2e5f"><span class="id" title="notation">×</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#y"><span class="id" title="variable">y</span></a>).<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.lregX"><span class="id" title="lemma">lregX</span></a> <span class="id" title="var">x</span> <span class="id" title="var">n</span> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.lreg"><span class="id" title="definition">lreg</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.lreg"><span class="id" title="definition">lreg</span></a> (<a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#b5a6699e28c97bb33352772cfa3ea869"><span class="id" title="notation">^+</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#n"><span class="id" title="variable">n</span></a>).<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.lreg_sign"><span class="id" title="lemma">lreg_sign</span></a> <span class="id" title="var">n</span> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.lreg"><span class="id" title="definition">lreg</span></a> (<a class="idref" href="mathcomp.algebra.ssralg.html#b5a6699e28c97bb33352772cfa3ea869"><span class="id" title="notation">(</span></a>-1<a class="idref" href="mathcomp.algebra.ssralg.html#b5a6699e28c97bb33352772cfa3ea869"><span class="id" title="notation">)</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#b5a6699e28c97bb33352772cfa3ea869"><span class="id" title="notation">^+</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#n"><span class="id" title="variable">n</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssreflect.html#4509b22bf26e3d6d771897e22bd8bc8f"><span class="id" title="notation">:</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.RingTheory.R"><span class="id" title="variable">R</span></a>).<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.prodr_const"><span class="id" title="lemma">prodr_const</span></a> (<span class="id" title="var">I</span> : <a class="idref" href="mathcomp.ssreflect.fintype.html#Finite.Exports.finType"><span class="id" title="abbreviation">finType</span></a>) (<span class="id" title="var">A</span> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#pred"><span class="id" title="definition">pred</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#I"><span class="id" title="variable">I</span></a>) (<span class="id" title="var">x</span> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.RingTheory.R"><span class="id" title="variable">R</span></a>) :<br/>
+&nbsp;&nbsp;<a class="idref" href="mathcomp.algebra.ssralg.html#3d9b33c1fff84830fd684d3347f0b504"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#3d9b33c1fff84830fd684d3347f0b504"><span class="id" title="notation">prod_</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#3d9b33c1fff84830fd684d3347f0b504"><span class="id" title="notation">(</span></a><span class="id" title="var">i</span> <a class="idref" href="mathcomp.algebra.ssralg.html#3d9b33c1fff84830fd684d3347f0b504"><span class="id" title="notation">in</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#A"><span class="id" title="variable">A</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#3d9b33c1fff84830fd684d3347f0b504"><span class="id" title="notation">)</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#b5a6699e28c97bb33352772cfa3ea869"><span class="id" title="notation">^+</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#f01714bb99e6c7abc6cfb2e43eff7f6e"><span class="id" title="notation">#|</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#A"><span class="id" title="variable">A</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#f01714bb99e6c7abc6cfb2e43eff7f6e"><span class="id" title="notation">|</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.prodrXr"><span class="id" title="lemma">prodrXr</span></a> <span class="id" title="var">x</span> <span class="id" title="var">I</span> <span class="id" title="var">r</span> <span class="id" title="var">P</span> (<span class="id" title="var">F</span> : <a class="idref" href="mathcomp.algebra.ssralg.html#I"><span class="id" title="variable">I</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#nat"><span class="id" title="inductive">nat</span></a>) :<br/>
+&nbsp;&nbsp;<a class="idref" href="mathcomp.algebra.ssralg.html#3f1a950be6bcb72c9434150471b42417"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#3f1a950be6bcb72c9434150471b42417"><span class="id" title="notation">prod_</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#3f1a950be6bcb72c9434150471b42417"><span class="id" title="notation">(</span></a><span class="id" title="var">i</span> <a class="idref" href="mathcomp.algebra.ssralg.html#3f1a950be6bcb72c9434150471b42417"><span class="id" title="notation">&lt;-</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#r"><span class="id" title="variable">r</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#3f1a950be6bcb72c9434150471b42417"><span class="id" title="notation">|</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#P"><span class="id" title="variable">P</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#i"><span class="id" title="variable">i</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#3f1a950be6bcb72c9434150471b42417"><span class="id" title="notation">)</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#b5a6699e28c97bb33352772cfa3ea869"><span class="id" title="notation">^+</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#F"><span class="id" title="variable">F</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#i"><span class="id" title="variable">i</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#b5a6699e28c97bb33352772cfa3ea869"><span class="id" title="notation">^+</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#b5a6699e28c97bb33352772cfa3ea869"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.ssreflect.bigop.html#ea7e35bae15685d5cd3430a8e48be02b"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.ssreflect.bigop.html#ea7e35bae15685d5cd3430a8e48be02b"><span class="id" title="notation">sum_</span></a><a class="idref" href="mathcomp.ssreflect.bigop.html#ea7e35bae15685d5cd3430a8e48be02b"><span class="id" title="notation">(</span></a><span class="id" title="var">i</span> <a class="idref" href="mathcomp.ssreflect.bigop.html#ea7e35bae15685d5cd3430a8e48be02b"><span class="id" title="notation">&lt;-</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#r"><span class="id" title="variable">r</span></a> <a class="idref" href="mathcomp.ssreflect.bigop.html#ea7e35bae15685d5cd3430a8e48be02b"><span class="id" title="notation">|</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#P"><span class="id" title="variable">P</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#i"><span class="id" title="variable">i</span></a><a class="idref" href="mathcomp.ssreflect.bigop.html#ea7e35bae15685d5cd3430a8e48be02b"><span class="id" title="notation">)</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#F"><span class="id" title="variable">F</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#i"><span class="id" title="variable">i</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#b5a6699e28c97bb33352772cfa3ea869"><span class="id" title="notation">)</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.prodrN"><span class="id" title="lemma">prodrN</span></a> (<span class="id" title="var">I</span> : <a class="idref" href="mathcomp.ssreflect.fintype.html#Finite.Exports.finType"><span class="id" title="abbreviation">finType</span></a>) (<span class="id" title="var">A</span> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#pred"><span class="id" title="definition">pred</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#I"><span class="id" title="variable">I</span></a>) (<span class="id" title="var">F</span> : <a class="idref" href="mathcomp.algebra.ssralg.html#I"><span class="id" title="variable">I</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.RingTheory.R"><span class="id" title="variable">R</span></a>) :<br/>
+&nbsp;&nbsp;<a class="idref" href="mathcomp.algebra.ssralg.html#3d9b33c1fff84830fd684d3347f0b504"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#3d9b33c1fff84830fd684d3347f0b504"><span class="id" title="notation">prod_</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#3d9b33c1fff84830fd684d3347f0b504"><span class="id" title="notation">(</span></a><span class="id" title="var">i</span> <a class="idref" href="mathcomp.algebra.ssralg.html#3d9b33c1fff84830fd684d3347f0b504"><span class="id" title="notation">in</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#A"><span class="id" title="variable">A</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#3d9b33c1fff84830fd684d3347f0b504"><span class="id" title="notation">)</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#eefae7eea8ed2b8fccf150cb653d7a7b"><span class="id" title="notation">-</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#F"><span class="id" title="variable">F</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#i"><span class="id" title="variable">i</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#b5a6699e28c97bb33352772cfa3ea869"><span class="id" title="notation">(</span></a>- 1<a class="idref" href="mathcomp.algebra.ssralg.html#b5a6699e28c97bb33352772cfa3ea869"><span class="id" title="notation">)</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#b5a6699e28c97bb33352772cfa3ea869"><span class="id" title="notation">^+</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#f01714bb99e6c7abc6cfb2e43eff7f6e"><span class="id" title="notation">#|</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#A"><span class="id" title="variable">A</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#f01714bb99e6c7abc6cfb2e43eff7f6e"><span class="id" title="notation">|</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#ed99e7035d9a1f8a2c1515be81ac2e5f"><span class="id" title="notation">×</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#3d9b33c1fff84830fd684d3347f0b504"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#3d9b33c1fff84830fd684d3347f0b504"><span class="id" title="notation">prod_</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#3d9b33c1fff84830fd684d3347f0b504"><span class="id" title="notation">(</span></a><span class="id" title="var">i</span> <a class="idref" href="mathcomp.algebra.ssralg.html#3d9b33c1fff84830fd684d3347f0b504"><span class="id" title="notation">in</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#A"><span class="id" title="variable">A</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#3d9b33c1fff84830fd684d3347f0b504"><span class="id" title="notation">)</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#F"><span class="id" title="variable">F</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#i"><span class="id" title="variable">i</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.prodrMn"><span class="id" title="lemma">prodrMn</span></a> <span class="id" title="var">n</span> (<span class="id" title="var">I</span> : <a class="idref" href="mathcomp.ssreflect.fintype.html#Finite.Exports.finType"><span class="id" title="abbreviation">finType</span></a>) (<span class="id" title="var">A</span> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#pred"><span class="id" title="definition">pred</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#I"><span class="id" title="variable">I</span></a>) (<span class="id" title="var">F</span> : <a class="idref" href="mathcomp.algebra.ssralg.html#I"><span class="id" title="variable">I</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.RingTheory.R"><span class="id" title="variable">R</span></a>) :<br/>
+&nbsp;&nbsp;<a class="idref" href="mathcomp.algebra.ssralg.html#3d9b33c1fff84830fd684d3347f0b504"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#3d9b33c1fff84830fd684d3347f0b504"><span class="id" title="notation">prod_</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#3d9b33c1fff84830fd684d3347f0b504"><span class="id" title="notation">(</span></a><span class="id" title="var">i</span> <a class="idref" href="mathcomp.algebra.ssralg.html#3d9b33c1fff84830fd684d3347f0b504"><span class="id" title="notation">in</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#A"><span class="id" title="variable">A</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#3d9b33c1fff84830fd684d3347f0b504"><span class="id" title="notation">)</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#3d9b33c1fff84830fd684d3347f0b504"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#F"><span class="id" title="variable">F</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#i"><span class="id" title="variable">i</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#513eaa3129601ecbcc9e188a80d6155b"><span class="id" title="notation">*+</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#n"><span class="id" title="variable">n</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#3d9b33c1fff84830fd684d3347f0b504"><span class="id" title="notation">)</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#3d9b33c1fff84830fd684d3347f0b504"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#3d9b33c1fff84830fd684d3347f0b504"><span class="id" title="notation">prod_</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#3d9b33c1fff84830fd684d3347f0b504"><span class="id" title="notation">(</span></a><span class="id" title="var">i</span> <a class="idref" href="mathcomp.algebra.ssralg.html#3d9b33c1fff84830fd684d3347f0b504"><span class="id" title="notation">in</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#A"><span class="id" title="variable">A</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#3d9b33c1fff84830fd684d3347f0b504"><span class="id" title="notation">)</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#F"><span class="id" title="variable">F</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#i"><span class="id" title="variable">i</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#513eaa3129601ecbcc9e188a80d6155b"><span class="id" title="notation">*+</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#n"><span class="id" title="variable">n</span></a> <a class="idref" href="mathcomp.ssreflect.ssrnat.html#4c362bcf0e947e2792a2e6989b44aeb0"><span class="id" title="notation">^</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#f01714bb99e6c7abc6cfb2e43eff7f6e"><span class="id" title="notation">#|</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#A"><span class="id" title="variable">A</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#f01714bb99e6c7abc6cfb2e43eff7f6e"><span class="id" title="notation">|</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.natr_prod"><span class="id" title="lemma">natr_prod</span></a> <span class="id" title="var">I</span> <span class="id" title="var">r</span> <span class="id" title="var">P</span> (<span class="id" title="var">F</span> : <a class="idref" href="mathcomp.algebra.ssralg.html#I"><span class="id" title="variable">I</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#nat"><span class="id" title="inductive">nat</span></a>) :<br/>
+&nbsp;&nbsp;<a class="idref" href="mathcomp.algebra.ssralg.html#c191333b9c7c034282647fbffacc9d18"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.ssreflect.bigop.html#9d27735af9c069a15e48cb2f0aad6a15"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.ssreflect.bigop.html#9d27735af9c069a15e48cb2f0aad6a15"><span class="id" title="notation">prod_</span></a><a class="idref" href="mathcomp.ssreflect.bigop.html#9d27735af9c069a15e48cb2f0aad6a15"><span class="id" title="notation">(</span></a><span class="id" title="var">i</span> <a class="idref" href="mathcomp.ssreflect.bigop.html#9d27735af9c069a15e48cb2f0aad6a15"><span class="id" title="notation">&lt;-</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#r"><span class="id" title="variable">r</span></a> <a class="idref" href="mathcomp.ssreflect.bigop.html#9d27735af9c069a15e48cb2f0aad6a15"><span class="id" title="notation">|</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#P"><span class="id" title="variable">P</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#i"><span class="id" title="variable">i</span></a><a class="idref" href="mathcomp.ssreflect.bigop.html#9d27735af9c069a15e48cb2f0aad6a15"><span class="id" title="notation">)</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#F"><span class="id" title="variable">F</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#i"><span class="id" title="variable">i</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#c191333b9c7c034282647fbffacc9d18"><span class="id" title="notation">)%:</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#c191333b9c7c034282647fbffacc9d18"><span class="id" title="notation">R</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#8f9364556521ebb498093f28eea2240f"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#3f1a950be6bcb72c9434150471b42417"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#3f1a950be6bcb72c9434150471b42417"><span class="id" title="notation">prod_</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#3f1a950be6bcb72c9434150471b42417"><span class="id" title="notation">(</span></a><span class="id" title="var">i</span> <a class="idref" href="mathcomp.algebra.ssralg.html#3f1a950be6bcb72c9434150471b42417"><span class="id" title="notation">&lt;-</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#r"><span class="id" title="variable">r</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#3f1a950be6bcb72c9434150471b42417"><span class="id" title="notation">|</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#P"><span class="id" title="variable">P</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#i"><span class="id" title="variable">i</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#3f1a950be6bcb72c9434150471b42417"><span class="id" title="notation">)</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#c191333b9c7c034282647fbffacc9d18"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#F"><span class="id" title="variable">F</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#i"><span class="id" title="variable">i</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#c191333b9c7c034282647fbffacc9d18"><span class="id" title="notation">)%:</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#c191333b9c7c034282647fbffacc9d18"><span class="id" title="notation">R</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#8f9364556521ebb498093f28eea2240f"><span class="id" title="notation">:&gt;</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.RingTheory.R"><span class="id" title="variable">R</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.exprDn_comm"><span class="id" title="lemma">exprDn_comm</span></a> <span class="id" title="var">x</span> <span class="id" title="var">y</span> <span class="id" title="var">n</span> (<span class="id" title="var">cxy</span> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.comm"><span class="id" title="definition">comm</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#y"><span class="id" title="variable">y</span></a>) :<br/>
+&nbsp;&nbsp;<a class="idref" href="mathcomp.algebra.ssralg.html#b5a6699e28c97bb33352772cfa3ea869"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#338c5345074fd3586073fd29273c138a"><span class="id" title="notation">+</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#y"><span class="id" title="variable">y</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#b5a6699e28c97bb33352772cfa3ea869"><span class="id" title="notation">)</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#b5a6699e28c97bb33352772cfa3ea869"><span class="id" title="notation">^+</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#n"><span class="id" title="variable">n</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#33f78485f60ea5a637d17f41367f37d2"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#33f78485f60ea5a637d17f41367f37d2"><span class="id" title="notation">sum_</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#33f78485f60ea5a637d17f41367f37d2"><span class="id" title="notation">(</span></a><span class="id" title="var">i</span> <a class="idref" href="mathcomp.algebra.ssralg.html#33f78485f60ea5a637d17f41367f37d2"><span class="id" title="notation">&lt;</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#n"><span class="id" title="variable">n</span></a><a class="idref" href="mathcomp.ssreflect.ssrnat.html#361454269931ea8643f7b402f2ab7222"><span class="id" title="notation">.+1</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#33f78485f60ea5a637d17f41367f37d2"><span class="id" title="notation">)</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#513eaa3129601ecbcc9e188a80d6155b"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#b5a6699e28c97bb33352772cfa3ea869"><span class="id" title="notation">^+</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#b5a6699e28c97bb33352772cfa3ea869"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#n"><span class="id" title="variable">n</span></a> <a class="idref" href="mathcomp.ssreflect.ssrnat.html#9482aae3d3b06e249765c1225dbb8cbb"><span class="id" title="notation">-</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#i"><span class="id" title="variable">i</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#b5a6699e28c97bb33352772cfa3ea869"><span class="id" title="notation">)</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#ed99e7035d9a1f8a2c1515be81ac2e5f"><span class="id" title="notation">×</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#y"><span class="id" title="variable">y</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#b5a6699e28c97bb33352772cfa3ea869"><span class="id" title="notation">^+</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#i"><span class="id" title="variable">i</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#513eaa3129601ecbcc9e188a80d6155b"><span class="id" title="notation">)</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#513eaa3129601ecbcc9e188a80d6155b"><span class="id" title="notation">*+</span></a> <a class="idref" href="mathcomp.ssreflect.binomial.html#f55f24aacb42fe0283014d29bcccb8c2"><span class="id" title="notation">'</span></a><a class="idref" href="mathcomp.ssreflect.binomial.html#f55f24aacb42fe0283014d29bcccb8c2"><span class="id" title="notation">C</span></a><a class="idref" href="mathcomp.ssreflect.binomial.html#f55f24aacb42fe0283014d29bcccb8c2"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#n"><span class="id" title="variable">n</span></a><a class="idref" href="mathcomp.ssreflect.binomial.html#f55f24aacb42fe0283014d29bcccb8c2"><span class="id" title="notation">,</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#i"><span class="id" title="variable">i</span></a><a class="idref" href="mathcomp.ssreflect.binomial.html#f55f24aacb42fe0283014d29bcccb8c2"><span class="id" title="notation">)</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.exprBn_comm"><span class="id" title="lemma">exprBn_comm</span></a> <span class="id" title="var">x</span> <span class="id" title="var">y</span> <span class="id" title="var">n</span> (<span class="id" title="var">cxy</span> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.comm"><span class="id" title="definition">comm</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#y"><span class="id" title="variable">y</span></a>) :<br/>
+&nbsp;&nbsp;<a class="idref" href="mathcomp.algebra.ssralg.html#b5a6699e28c97bb33352772cfa3ea869"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#4d4b9697032429ec46472e6332d1356a"><span class="id" title="notation">-</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#y"><span class="id" title="variable">y</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#b5a6699e28c97bb33352772cfa3ea869"><span class="id" title="notation">)</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#b5a6699e28c97bb33352772cfa3ea869"><span class="id" title="notation">^+</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#n"><span class="id" title="variable">n</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a><br/>
+&nbsp;&nbsp;&nbsp;&nbsp;<a class="idref" href="mathcomp.algebra.ssralg.html#33f78485f60ea5a637d17f41367f37d2"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#33f78485f60ea5a637d17f41367f37d2"><span class="id" title="notation">sum_</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#33f78485f60ea5a637d17f41367f37d2"><span class="id" title="notation">(</span></a><span class="id" title="var">i</span> <a class="idref" href="mathcomp.algebra.ssralg.html#33f78485f60ea5a637d17f41367f37d2"><span class="id" title="notation">&lt;</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#n"><span class="id" title="variable">n</span></a><a class="idref" href="mathcomp.ssreflect.ssrnat.html#361454269931ea8643f7b402f2ab7222"><span class="id" title="notation">.+1</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#33f78485f60ea5a637d17f41367f37d2"><span class="id" title="notation">)</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#513eaa3129601ecbcc9e188a80d6155b"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#b5a6699e28c97bb33352772cfa3ea869"><span class="id" title="notation">(</span></a>-1<a class="idref" href="mathcomp.algebra.ssralg.html#b5a6699e28c97bb33352772cfa3ea869"><span class="id" title="notation">)</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#b5a6699e28c97bb33352772cfa3ea869"><span class="id" title="notation">^+</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#i"><span class="id" title="variable">i</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#ed99e7035d9a1f8a2c1515be81ac2e5f"><span class="id" title="notation">×</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#b5a6699e28c97bb33352772cfa3ea869"><span class="id" title="notation">^+</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#b5a6699e28c97bb33352772cfa3ea869"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#n"><span class="id" title="variable">n</span></a> <a class="idref" href="mathcomp.ssreflect.ssrnat.html#9482aae3d3b06e249765c1225dbb8cbb"><span class="id" title="notation">-</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#i"><span class="id" title="variable">i</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#b5a6699e28c97bb33352772cfa3ea869"><span class="id" title="notation">)</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#ed99e7035d9a1f8a2c1515be81ac2e5f"><span class="id" title="notation">×</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#y"><span class="id" title="variable">y</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#b5a6699e28c97bb33352772cfa3ea869"><span class="id" title="notation">^+</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#i"><span class="id" title="variable">i</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#513eaa3129601ecbcc9e188a80d6155b"><span class="id" title="notation">)</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#513eaa3129601ecbcc9e188a80d6155b"><span class="id" title="notation">*+</span></a> <a class="idref" href="mathcomp.ssreflect.binomial.html#f55f24aacb42fe0283014d29bcccb8c2"><span class="id" title="notation">'</span></a><a class="idref" href="mathcomp.ssreflect.binomial.html#f55f24aacb42fe0283014d29bcccb8c2"><span class="id" title="notation">C</span></a><a class="idref" href="mathcomp.ssreflect.binomial.html#f55f24aacb42fe0283014d29bcccb8c2"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#n"><span class="id" title="variable">n</span></a><a class="idref" href="mathcomp.ssreflect.binomial.html#f55f24aacb42fe0283014d29bcccb8c2"><span class="id" title="notation">,</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#i"><span class="id" title="variable">i</span></a><a class="idref" href="mathcomp.ssreflect.binomial.html#f55f24aacb42fe0283014d29bcccb8c2"><span class="id" title="notation">)</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.subrXX_comm"><span class="id" title="lemma">subrXX_comm</span></a> <span class="id" title="var">x</span> <span class="id" title="var">y</span> <span class="id" title="var">n</span> (<span class="id" title="var">cxy</span> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.comm"><span class="id" title="definition">comm</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#y"><span class="id" title="variable">y</span></a>) :<br/>
+&nbsp;&nbsp;<a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#b5a6699e28c97bb33352772cfa3ea869"><span class="id" title="notation">^+</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#n"><span class="id" title="variable">n</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#4d4b9697032429ec46472e6332d1356a"><span class="id" title="notation">-</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#y"><span class="id" title="variable">y</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#b5a6699e28c97bb33352772cfa3ea869"><span class="id" title="notation">^+</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#n"><span class="id" title="variable">n</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#ed99e7035d9a1f8a2c1515be81ac2e5f"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#4d4b9697032429ec46472e6332d1356a"><span class="id" title="notation">-</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#y"><span class="id" title="variable">y</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#ed99e7035d9a1f8a2c1515be81ac2e5f"><span class="id" title="notation">)</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#ed99e7035d9a1f8a2c1515be81ac2e5f"><span class="id" title="notation">×</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#ed99e7035d9a1f8a2c1515be81ac2e5f"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#33f78485f60ea5a637d17f41367f37d2"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#33f78485f60ea5a637d17f41367f37d2"><span class="id" title="notation">sum_</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#33f78485f60ea5a637d17f41367f37d2"><span class="id" title="notation">(</span></a><span class="id" title="var">i</span> <a class="idref" href="mathcomp.algebra.ssralg.html#33f78485f60ea5a637d17f41367f37d2"><span class="id" title="notation">&lt;</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#n"><span class="id" title="variable">n</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#33f78485f60ea5a637d17f41367f37d2"><span class="id" title="notation">)</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#b5a6699e28c97bb33352772cfa3ea869"><span class="id" title="notation">^+</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#b5a6699e28c97bb33352772cfa3ea869"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#n"><span class="id" title="variable">n</span></a><a class="idref" href="mathcomp.ssreflect.ssrnat.html#1d63841e595f2805afd872744cbb1cce"><span class="id" title="notation">.-1</span></a> <a class="idref" href="mathcomp.ssreflect.ssrnat.html#9482aae3d3b06e249765c1225dbb8cbb"><span class="id" title="notation">-</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#i"><span class="id" title="variable">i</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#b5a6699e28c97bb33352772cfa3ea869"><span class="id" title="notation">)</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#ed99e7035d9a1f8a2c1515be81ac2e5f"><span class="id" title="notation">×</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#y"><span class="id" title="variable">y</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#b5a6699e28c97bb33352772cfa3ea869"><span class="id" title="notation">^+</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#i"><span class="id" title="variable">i</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#ed99e7035d9a1f8a2c1515be81ac2e5f"><span class="id" title="notation">)</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.exprD1n"><span class="id" title="lemma">exprD1n</span></a> <span class="id" title="var">x</span> <span class="id" title="var">n</span> : <a class="idref" href="mathcomp.algebra.ssralg.html#b5a6699e28c97bb33352772cfa3ea869"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#338c5345074fd3586073fd29273c138a"><span class="id" title="notation">+</span></a> 1<a class="idref" href="mathcomp.algebra.ssralg.html#b5a6699e28c97bb33352772cfa3ea869"><span class="id" title="notation">)</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#b5a6699e28c97bb33352772cfa3ea869"><span class="id" title="notation">^+</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#n"><span class="id" title="variable">n</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#33f78485f60ea5a637d17f41367f37d2"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#33f78485f60ea5a637d17f41367f37d2"><span class="id" title="notation">sum_</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#33f78485f60ea5a637d17f41367f37d2"><span class="id" title="notation">(</span></a><span class="id" title="var">i</span> <a class="idref" href="mathcomp.algebra.ssralg.html#33f78485f60ea5a637d17f41367f37d2"><span class="id" title="notation">&lt;</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#n"><span class="id" title="variable">n</span></a><a class="idref" href="mathcomp.ssreflect.ssrnat.html#361454269931ea8643f7b402f2ab7222"><span class="id" title="notation">.+1</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#33f78485f60ea5a637d17f41367f37d2"><span class="id" title="notation">)</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#b5a6699e28c97bb33352772cfa3ea869"><span class="id" title="notation">^+</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#i"><span class="id" title="variable">i</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#513eaa3129601ecbcc9e188a80d6155b"><span class="id" title="notation">*+</span></a> <a class="idref" href="mathcomp.ssreflect.binomial.html#f55f24aacb42fe0283014d29bcccb8c2"><span class="id" title="notation">'</span></a><a class="idref" href="mathcomp.ssreflect.binomial.html#f55f24aacb42fe0283014d29bcccb8c2"><span class="id" title="notation">C</span></a><a class="idref" href="mathcomp.ssreflect.binomial.html#f55f24aacb42fe0283014d29bcccb8c2"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#n"><span class="id" title="variable">n</span></a><a class="idref" href="mathcomp.ssreflect.binomial.html#f55f24aacb42fe0283014d29bcccb8c2"><span class="id" title="notation">,</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#i"><span class="id" title="variable">i</span></a><a class="idref" href="mathcomp.ssreflect.binomial.html#f55f24aacb42fe0283014d29bcccb8c2"><span class="id" title="notation">)</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.subrX1"><span class="id" title="lemma">subrX1</span></a> <span class="id" title="var">x</span> <span class="id" title="var">n</span> : <a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#b5a6699e28c97bb33352772cfa3ea869"><span class="id" title="notation">^+</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#n"><span class="id" title="variable">n</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#4d4b9697032429ec46472e6332d1356a"><span class="id" title="notation">-</span></a> 1 <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#ed99e7035d9a1f8a2c1515be81ac2e5f"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#4d4b9697032429ec46472e6332d1356a"><span class="id" title="notation">-</span></a> 1<a class="idref" href="mathcomp.algebra.ssralg.html#ed99e7035d9a1f8a2c1515be81ac2e5f"><span class="id" title="notation">)</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#ed99e7035d9a1f8a2c1515be81ac2e5f"><span class="id" title="notation">×</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#ed99e7035d9a1f8a2c1515be81ac2e5f"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#33f78485f60ea5a637d17f41367f37d2"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#33f78485f60ea5a637d17f41367f37d2"><span class="id" title="notation">sum_</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#33f78485f60ea5a637d17f41367f37d2"><span class="id" title="notation">(</span></a><span class="id" title="var">i</span> <a class="idref" href="mathcomp.algebra.ssralg.html#33f78485f60ea5a637d17f41367f37d2"><span class="id" title="notation">&lt;</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#n"><span class="id" title="variable">n</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#33f78485f60ea5a637d17f41367f37d2"><span class="id" title="notation">)</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#b5a6699e28c97bb33352772cfa3ea869"><span class="id" title="notation">^+</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#i"><span class="id" title="variable">i</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#ed99e7035d9a1f8a2c1515be81ac2e5f"><span class="id" title="notation">)</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.sqrrD1"><span class="id" title="lemma">sqrrD1</span></a> <span class="id" title="var">x</span> : <a class="idref" href="mathcomp.algebra.ssralg.html#b5a6699e28c97bb33352772cfa3ea869"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#338c5345074fd3586073fd29273c138a"><span class="id" title="notation">+</span></a> 1<a class="idref" href="mathcomp.algebra.ssralg.html#b5a6699e28c97bb33352772cfa3ea869"><span class="id" title="notation">)</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#b5a6699e28c97bb33352772cfa3ea869"><span class="id" title="notation">^+</span></a> 2 <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#b5a6699e28c97bb33352772cfa3ea869"><span class="id" title="notation">^+</span></a> 2 <a class="idref" href="mathcomp.algebra.ssralg.html#338c5345074fd3586073fd29273c138a"><span class="id" title="notation">+</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#513eaa3129601ecbcc9e188a80d6155b"><span class="id" title="notation">*+</span></a> 2 <a class="idref" href="mathcomp.algebra.ssralg.html#338c5345074fd3586073fd29273c138a"><span class="id" title="notation">+</span></a> 1.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.sqrrB1"><span class="id" title="lemma">sqrrB1</span></a> <span class="id" title="var">x</span> : <a class="idref" href="mathcomp.algebra.ssralg.html#b5a6699e28c97bb33352772cfa3ea869"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#4d4b9697032429ec46472e6332d1356a"><span class="id" title="notation">-</span></a> 1<a class="idref" href="mathcomp.algebra.ssralg.html#b5a6699e28c97bb33352772cfa3ea869"><span class="id" title="notation">)</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#b5a6699e28c97bb33352772cfa3ea869"><span class="id" title="notation">^+</span></a> 2 <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#b5a6699e28c97bb33352772cfa3ea869"><span class="id" title="notation">^+</span></a> 2 <a class="idref" href="mathcomp.algebra.ssralg.html#4d4b9697032429ec46472e6332d1356a"><span class="id" title="notation">-</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#513eaa3129601ecbcc9e188a80d6155b"><span class="id" title="notation">*+</span></a> 2 <a class="idref" href="mathcomp.algebra.ssralg.html#338c5345074fd3586073fd29273c138a"><span class="id" title="notation">+</span></a> 1.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.subr_sqr_1"><span class="id" title="lemma">subr_sqr_1</span></a> <span class="id" title="var">x</span> : <a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#b5a6699e28c97bb33352772cfa3ea869"><span class="id" title="notation">^+</span></a> 2 <a class="idref" href="mathcomp.algebra.ssralg.html#4d4b9697032429ec46472e6332d1356a"><span class="id" title="notation">-</span></a> 1 <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#ed99e7035d9a1f8a2c1515be81ac2e5f"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#4d4b9697032429ec46472e6332d1356a"><span class="id" title="notation">-</span></a> 1<a class="idref" href="mathcomp.algebra.ssralg.html#ed99e7035d9a1f8a2c1515be81ac2e5f"><span class="id" title="notation">)</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#ed99e7035d9a1f8a2c1515be81ac2e5f"><span class="id" title="notation">×</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#ed99e7035d9a1f8a2c1515be81ac2e5f"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#338c5345074fd3586073fd29273c138a"><span class="id" title="notation">+</span></a> 1<a class="idref" href="mathcomp.algebra.ssralg.html#ed99e7035d9a1f8a2c1515be81ac2e5f"><span class="id" title="notation">)</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Frobenius_aut"><span class="id" title="definition">Frobenius_aut</span></a> <span class="id" title="var">p</span> <span class="id" title="keyword">of</span> <a class="idref" href="mathcomp.algebra.ssralg.html#p"><span class="id" title="variable">p</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">\</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">in</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#51fab11b73193ca5e8e7a62cac129ebc"><span class="id" title="notation">[</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#51fab11b73193ca5e8e7a62cac129ebc"><span class="id" title="notation">char</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.RingTheory.R"><span class="id" title="variable">R</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#51fab11b73193ca5e8e7a62cac129ebc"><span class="id" title="notation">]</span></a> := <span class="id" title="keyword">fun</span> <span class="id" title="var">x</span> ⇒ <a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#b5a6699e28c97bb33352772cfa3ea869"><span class="id" title="notation">^+</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#p"><span class="id" title="variable">p</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Section</span> <a name="GRing.RingTheory.FrobeniusAutomorphism"><span class="id" title="section">FrobeniusAutomorphism</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Variable</span> <a name="GRing.RingTheory.FrobeniusAutomorphism.p"><span class="id" title="variable">p</span></a> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#nat"><span class="id" title="inductive">nat</span></a>.<br/>
+<span class="id" title="keyword">Hypothesis</span> <a name="GRing.RingTheory.FrobeniusAutomorphism.charFp"><span class="id" title="variable">charFp</span></a> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.RingTheory.FrobeniusAutomorphism.p"><span class="id" title="variable">p</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">\</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">in</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#51fab11b73193ca5e8e7a62cac129ebc"><span class="id" title="notation">[</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#51fab11b73193ca5e8e7a62cac129ebc"><span class="id" title="notation">char</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.RingTheory.R"><span class="id" title="variable">R</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#51fab11b73193ca5e8e7a62cac129ebc"><span class="id" title="notation">]</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.charf0"><span class="id" title="lemma">charf0</span></a> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.RingTheory.FrobeniusAutomorphism.p"><span class="id" title="variable">p</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#c191333b9c7c034282647fbffacc9d18"><span class="id" title="notation">%:</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#c191333b9c7c034282647fbffacc9d18"><span class="id" title="notation">R</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#8f9364556521ebb498093f28eea2240f"><span class="id" title="notation">=</span></a> 0 <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#8f9364556521ebb498093f28eea2240f"><span class="id" title="notation">:&gt;</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.RingTheory.R"><span class="id" title="variable">R</span></a>. <br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.charf_prime"><span class="id" title="lemma">charf_prime</span></a> : <a class="idref" href="mathcomp.ssreflect.prime.html#prime"><span class="id" title="definition">prime</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.RingTheory.FrobeniusAutomorphism.p"><span class="id" title="variable">p</span></a>. <br/>
+<span class="id" title="keyword">Hint Resolve</span> <span class="id" title="var">charf_prime</span>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.mulrn_char"><span class="id" title="lemma">mulrn_char</span></a> <span class="id" title="var">x</span> : <a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#513eaa3129601ecbcc9e188a80d6155b"><span class="id" title="notation">*+</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.RingTheory.FrobeniusAutomorphism.p"><span class="id" title="variable">p</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> 0. <br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.natr_mod_char"><span class="id" title="lemma">natr_mod_char</span></a> <span class="id" title="var">n</span> : <a class="idref" href="mathcomp.algebra.ssralg.html#c191333b9c7c034282647fbffacc9d18"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#n"><span class="id" title="variable">n</span></a> <a class="idref" href="mathcomp.ssreflect.div.html#2179ac53e82aa7c0b2f2f5a16b5510ea"><span class="id" title="notation">%%</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.RingTheory.FrobeniusAutomorphism.p"><span class="id" title="variable">p</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#c191333b9c7c034282647fbffacc9d18"><span class="id" title="notation">)%:</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#c191333b9c7c034282647fbffacc9d18"><span class="id" title="notation">R</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#8f9364556521ebb498093f28eea2240f"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#n"><span class="id" title="variable">n</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#c191333b9c7c034282647fbffacc9d18"><span class="id" title="notation">%:</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#c191333b9c7c034282647fbffacc9d18"><span class="id" title="notation">R</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#8f9364556521ebb498093f28eea2240f"><span class="id" title="notation">:&gt;</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.RingTheory.R"><span class="id" title="variable">R</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.dvdn_charf"><span class="id" title="lemma">dvdn_charf</span></a> <span class="id" title="var">n</span> : (<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.RingTheory.FrobeniusAutomorphism.p"><span class="id" title="variable">p</span></a> <a class="idref" href="mathcomp.ssreflect.div.html#aa34fd1c61c5cf0a3356b624a5d2afed"><span class="id" title="notation">%|</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#n"><span class="id" title="variable">n</span></a>)%<span class="id" title="var">N</span> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#n"><span class="id" title="variable">n</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#c191333b9c7c034282647fbffacc9d18"><span class="id" title="notation">%:</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#c191333b9c7c034282647fbffacc9d18"><span class="id" title="notation">R</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#340b60eb5a3e9913f807040630cb8d43"><span class="id" title="notation">==</span></a> 0 <a class="idref" href="mathcomp.ssreflect.eqtype.html#340b60eb5a3e9913f807040630cb8d43"><span class="id" title="notation">:&gt;</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.RingTheory.R"><span class="id" title="variable">R</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">)</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.charf_eq"><span class="id" title="lemma">charf_eq</span></a> : <a class="idref" href="mathcomp.algebra.ssralg.html#51fab11b73193ca5e8e7a62cac129ebc"><span class="id" title="notation">[</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#51fab11b73193ca5e8e7a62cac129ebc"><span class="id" title="notation">char</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.RingTheory.R"><span class="id" title="variable">R</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#51fab11b73193ca5e8e7a62cac129ebc"><span class="id" title="notation">]</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#20bf07099d6d8cf369383b22fd37862e"><span class="id" title="notation">=</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#20bf07099d6d8cf369383b22fd37862e"><span class="id" title="notation">i</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#20bf07099d6d8cf369383b22fd37862e"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#GRing.RingTheory.FrobeniusAutomorphism.p"><span class="id" title="variable">p</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssreflect.html#4509b22bf26e3d6d771897e22bd8bc8f"><span class="id" title="notation">:</span></a> <a class="idref" href="mathcomp.ssreflect.prime.html#nat_pred"><span class="id" title="definition">nat_pred</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#20bf07099d6d8cf369383b22fd37862e"><span class="id" title="notation">)</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.bin_lt_charf_0"><span class="id" title="lemma">bin_lt_charf_0</span></a> <span class="id" title="var">k</span> : 0 <a class="idref" href="mathcomp.ssreflect.ssrnat.html#432e31800fc09abd260feb634dbbd1af"><span class="id" title="notation">&lt;</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#k"><span class="id" title="variable">k</span></a> <a class="idref" href="mathcomp.ssreflect.ssrnat.html#432e31800fc09abd260feb634dbbd1af"><span class="id" title="notation">&lt;</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.RingTheory.FrobeniusAutomorphism.p"><span class="id" title="variable">p</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.ssreflect.binomial.html#f55f24aacb42fe0283014d29bcccb8c2"><span class="id" title="notation">'</span></a><a class="idref" href="mathcomp.ssreflect.binomial.html#f55f24aacb42fe0283014d29bcccb8c2"><span class="id" title="notation">C</span></a><a class="idref" href="mathcomp.ssreflect.binomial.html#f55f24aacb42fe0283014d29bcccb8c2"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#GRing.RingTheory.FrobeniusAutomorphism.p"><span class="id" title="variable">p</span></a><a class="idref" href="mathcomp.ssreflect.binomial.html#f55f24aacb42fe0283014d29bcccb8c2"><span class="id" title="notation">,</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#k"><span class="id" title="variable">k</span></a><a class="idref" href="mathcomp.ssreflect.binomial.html#f55f24aacb42fe0283014d29bcccb8c2"><span class="id" title="notation">)</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#c191333b9c7c034282647fbffacc9d18"><span class="id" title="notation">%:</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#c191333b9c7c034282647fbffacc9d18"><span class="id" title="notation">R</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#8f9364556521ebb498093f28eea2240f"><span class="id" title="notation">=</span></a> 0 <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#8f9364556521ebb498093f28eea2240f"><span class="id" title="notation">:&gt;</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.RingTheory.R"><span class="id" title="variable">R</span></a>.<br/>
+
+<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.Frobenius_autE"><span class="id" title="lemma">Frobenius_autE</span></a> <span class="id" title="var">x</span> : <a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#258e0db845a269f145e1328806c3365d"><span class="id" title="notation">^</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#258e0db845a269f145e1328806c3365d"><span class="id" title="notation">f</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#b5a6699e28c97bb33352772cfa3ea869"><span class="id" title="notation">^+</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.RingTheory.FrobeniusAutomorphism.p"><span class="id" title="variable">p</span></a>. <br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.Frobenius_aut0"><span class="id" title="lemma">Frobenius_aut0</span></a> : 0<a class="idref" href="mathcomp.algebra.ssralg.html#258e0db845a269f145e1328806c3365d"><span class="id" title="notation">^</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#258e0db845a269f145e1328806c3365d"><span class="id" title="notation">f</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> 0.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.Frobenius_aut1"><span class="id" title="lemma">Frobenius_aut1</span></a> : 1<a class="idref" href="mathcomp.algebra.ssralg.html#258e0db845a269f145e1328806c3365d"><span class="id" title="notation">^</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#258e0db845a269f145e1328806c3365d"><span class="id" title="notation">f</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> 1.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.Frobenius_autD_comm"><span class="id" title="lemma">Frobenius_autD_comm</span></a> <span class="id" title="var">x</span> <span class="id" title="var">y</span> (<span class="id" title="var">cxy</span> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.comm"><span class="id" title="definition">comm</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#y"><span class="id" title="variable">y</span></a>) : <a class="idref" href="mathcomp.algebra.ssralg.html#258e0db845a269f145e1328806c3365d"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#338c5345074fd3586073fd29273c138a"><span class="id" title="notation">+</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#y"><span class="id" title="variable">y</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#258e0db845a269f145e1328806c3365d"><span class="id" title="notation">)^</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#258e0db845a269f145e1328806c3365d"><span class="id" title="notation">f</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#258e0db845a269f145e1328806c3365d"><span class="id" title="notation">^</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#258e0db845a269f145e1328806c3365d"><span class="id" title="notation">f</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#338c5345074fd3586073fd29273c138a"><span class="id" title="notation">+</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#y"><span class="id" title="variable">y</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#258e0db845a269f145e1328806c3365d"><span class="id" title="notation">^</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#258e0db845a269f145e1328806c3365d"><span class="id" title="notation">f</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.Frobenius_autMn"><span class="id" title="lemma">Frobenius_autMn</span></a> <span class="id" title="var">x</span> <span class="id" title="var">n</span> : <a class="idref" href="mathcomp.algebra.ssralg.html#258e0db845a269f145e1328806c3365d"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#513eaa3129601ecbcc9e188a80d6155b"><span class="id" title="notation">*+</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#n"><span class="id" title="variable">n</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#258e0db845a269f145e1328806c3365d"><span class="id" title="notation">)^</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#258e0db845a269f145e1328806c3365d"><span class="id" title="notation">f</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#258e0db845a269f145e1328806c3365d"><span class="id" title="notation">^</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#258e0db845a269f145e1328806c3365d"><span class="id" title="notation">f</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#513eaa3129601ecbcc9e188a80d6155b"><span class="id" title="notation">*+</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#n"><span class="id" title="variable">n</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.Frobenius_aut_nat"><span class="id" title="lemma">Frobenius_aut_nat</span></a> <span class="id" title="var">n</span> : <a class="idref" href="mathcomp.algebra.ssralg.html#258e0db845a269f145e1328806c3365d"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#n"><span class="id" title="variable">n</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#c191333b9c7c034282647fbffacc9d18"><span class="id" title="notation">%:</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#c191333b9c7c034282647fbffacc9d18"><span class="id" title="notation">R</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#258e0db845a269f145e1328806c3365d"><span class="id" title="notation">)^</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#258e0db845a269f145e1328806c3365d"><span class="id" title="notation">f</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#n"><span class="id" title="variable">n</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#c191333b9c7c034282647fbffacc9d18"><span class="id" title="notation">%:</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#c191333b9c7c034282647fbffacc9d18"><span class="id" title="notation">R</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.Frobenius_autM_comm"><span class="id" title="lemma">Frobenius_autM_comm</span></a> <span class="id" title="var">x</span> <span class="id" title="var">y</span> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.comm"><span class="id" title="definition">comm</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#y"><span class="id" title="variable">y</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#258e0db845a269f145e1328806c3365d"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#ed99e7035d9a1f8a2c1515be81ac2e5f"><span class="id" title="notation">×</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#y"><span class="id" title="variable">y</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#258e0db845a269f145e1328806c3365d"><span class="id" title="notation">)^</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#258e0db845a269f145e1328806c3365d"><span class="id" title="notation">f</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#258e0db845a269f145e1328806c3365d"><span class="id" title="notation">^</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#258e0db845a269f145e1328806c3365d"><span class="id" title="notation">f</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#ed99e7035d9a1f8a2c1515be81ac2e5f"><span class="id" title="notation">×</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#y"><span class="id" title="variable">y</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#258e0db845a269f145e1328806c3365d"><span class="id" title="notation">^</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#258e0db845a269f145e1328806c3365d"><span class="id" title="notation">f</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.Frobenius_autX"><span class="id" title="lemma">Frobenius_autX</span></a> <span class="id" title="var">x</span> <span class="id" title="var">n</span> : <a class="idref" href="mathcomp.algebra.ssralg.html#258e0db845a269f145e1328806c3365d"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#b5a6699e28c97bb33352772cfa3ea869"><span class="id" title="notation">^+</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#n"><span class="id" title="variable">n</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#258e0db845a269f145e1328806c3365d"><span class="id" title="notation">)^</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#258e0db845a269f145e1328806c3365d"><span class="id" title="notation">f</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#258e0db845a269f145e1328806c3365d"><span class="id" title="notation">^</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#258e0db845a269f145e1328806c3365d"><span class="id" title="notation">f</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#b5a6699e28c97bb33352772cfa3ea869"><span class="id" title="notation">^+</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#n"><span class="id" title="variable">n</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.Frobenius_autN"><span class="id" title="lemma">Frobenius_autN</span></a> <span class="id" title="var">x</span> : <a class="idref" href="mathcomp.algebra.ssralg.html#258e0db845a269f145e1328806c3365d"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#eefae7eea8ed2b8fccf150cb653d7a7b"><span class="id" title="notation">-</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#258e0db845a269f145e1328806c3365d"><span class="id" title="notation">)^</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#258e0db845a269f145e1328806c3365d"><span class="id" title="notation">f</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#eefae7eea8ed2b8fccf150cb653d7a7b"><span class="id" title="notation">-</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#258e0db845a269f145e1328806c3365d"><span class="id" title="notation">^</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#258e0db845a269f145e1328806c3365d"><span class="id" title="notation">f</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.Frobenius_autB_comm"><span class="id" title="lemma">Frobenius_autB_comm</span></a> <span class="id" title="var">x</span> <span class="id" title="var">y</span> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.comm"><span class="id" title="definition">comm</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#y"><span class="id" title="variable">y</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#258e0db845a269f145e1328806c3365d"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#4d4b9697032429ec46472e6332d1356a"><span class="id" title="notation">-</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#y"><span class="id" title="variable">y</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#258e0db845a269f145e1328806c3365d"><span class="id" title="notation">)^</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#258e0db845a269f145e1328806c3365d"><span class="id" title="notation">f</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#258e0db845a269f145e1328806c3365d"><span class="id" title="notation">^</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#258e0db845a269f145e1328806c3365d"><span class="id" title="notation">f</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#4d4b9697032429ec46472e6332d1356a"><span class="id" title="notation">-</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#y"><span class="id" title="variable">y</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#258e0db845a269f145e1328806c3365d"><span class="id" title="notation">^</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#258e0db845a269f145e1328806c3365d"><span class="id" title="notation">f</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">End</span> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.RingTheory.FrobeniusAutomorphism"><span class="id" title="section">FrobeniusAutomorphism</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.exprNn_char"><span class="id" title="lemma">exprNn_char</span></a> <span class="id" title="var">x</span> <span class="id" title="var">n</span> : <a class="idref" href="mathcomp.algebra.ssralg.html#51fab11b73193ca5e8e7a62cac129ebc"><span class="id" title="notation">[</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#51fab11b73193ca5e8e7a62cac129ebc"><span class="id" title="notation">char</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.RingTheory.R"><span class="id" title="variable">R</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#51fab11b73193ca5e8e7a62cac129ebc"><span class="id" title="notation">]</span></a><a class="idref" href="mathcomp.ssreflect.prime.html#8663a77d1d910826e10ba42d1e8d2a02"><span class="id" title="notation">.-</span></a><a class="idref" href="mathcomp.ssreflect.prime.html#8663a77d1d910826e10ba42d1e8d2a02"><span class="id" title="notation">nat</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#n"><span class="id" title="variable">n</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#b5a6699e28c97bb33352772cfa3ea869"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#eefae7eea8ed2b8fccf150cb653d7a7b"><span class="id" title="notation">-</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#b5a6699e28c97bb33352772cfa3ea869"><span class="id" title="notation">)</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#b5a6699e28c97bb33352772cfa3ea869"><span class="id" title="notation">^+</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#n"><span class="id" title="variable">n</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#eefae7eea8ed2b8fccf150cb653d7a7b"><span class="id" title="notation">-</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#eefae7eea8ed2b8fccf150cb653d7a7b"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#b5a6699e28c97bb33352772cfa3ea869"><span class="id" title="notation">^+</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#n"><span class="id" title="variable">n</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#eefae7eea8ed2b8fccf150cb653d7a7b"><span class="id" title="notation">)</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Section</span> <a name="GRing.RingTheory.Char2"><span class="id" title="section">Char2</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Hypothesis</span> <a name="GRing.RingTheory.Char2.charR2"><span class="id" title="variable">charR2</span></a> : 2 <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">\</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">in</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#51fab11b73193ca5e8e7a62cac129ebc"><span class="id" title="notation">[</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#51fab11b73193ca5e8e7a62cac129ebc"><span class="id" title="notation">char</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.RingTheory.R"><span class="id" title="variable">R</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#51fab11b73193ca5e8e7a62cac129ebc"><span class="id" title="notation">]</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.addrr_char2"><span class="id" title="lemma">addrr_char2</span></a> <span class="id" title="var">x</span> : <a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#338c5345074fd3586073fd29273c138a"><span class="id" title="notation">+</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> 0. <br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.oppr_char2"><span class="id" title="lemma">oppr_char2</span></a> <span class="id" title="var">x</span> : <a class="idref" href="mathcomp.algebra.ssralg.html#eefae7eea8ed2b8fccf150cb653d7a7b"><span class="id" title="notation">-</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.subr_char2"><span class="id" title="lemma">subr_char2</span></a> <span class="id" title="var">x</span> <span class="id" title="var">y</span> : <a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#4d4b9697032429ec46472e6332d1356a"><span class="id" title="notation">-</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#y"><span class="id" title="variable">y</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#338c5345074fd3586073fd29273c138a"><span class="id" title="notation">+</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#y"><span class="id" title="variable">y</span></a>. <br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.addrK_char2"><span class="id" title="lemma">addrK_char2</span></a> <span class="id" title="var">x</span> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#involutive"><span class="id" title="definition">involutive</span></a> (<a class="idref" href="mathcomp.algebra.ssralg.html#6c3404a70e11a79a0fa82b3d398aa71f"><span class="id" title="notation">+%</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#6c3404a70e11a79a0fa82b3d398aa71f"><span class="id" title="notation">R</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#8f28bbd804547edd8de802d63ef85617"><span class="id" title="notation">^~</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a>).<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.addKr_char2"><span class="id" title="lemma">addKr_char2</span></a> <span class="id" title="var">x</span> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#involutive"><span class="id" title="definition">involutive</span></a> (<a class="idref" href="mathcomp.algebra.ssralg.html#6c3404a70e11a79a0fa82b3d398aa71f"><span class="id" title="notation">+%</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#6c3404a70e11a79a0fa82b3d398aa71f"><span class="id" title="notation">R</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#6c3404a70e11a79a0fa82b3d398aa71f"><span class="id" title="notation">x</span></a>).<br/>
+
+<br/>
+<span class="id" title="keyword">End</span> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.RingTheory.Char2"><span class="id" title="section">Char2</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Canonical</span> <span class="id" title="var">converse_eqType</span> := <a class="idref" href="mathcomp.ssreflect.eqtype.html#cb062fd562aed512787df99359c6e3f2"><span class="id" title="notation">[</span></a><a class="idref" href="mathcomp.ssreflect.eqtype.html#cb062fd562aed512787df99359c6e3f2"><span class="id" title="notation">eqType</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#cb062fd562aed512787df99359c6e3f2"><span class="id" title="notation">of</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.RingTheory.R"><span class="id" title="variable">R</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#a92cdad26f40e318882f385be2783a4c"><span class="id" title="notation">^</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#a92cdad26f40e318882f385be2783a4c"><span class="id" title="notation">c</span></a><a class="idref" href="mathcomp.ssreflect.eqtype.html#cb062fd562aed512787df99359c6e3f2"><span class="id" title="notation">]</span></a>.<br/>
+<span class="id" title="keyword">Canonical</span> <span class="id" title="var">converse_choiceType</span> := <a class="idref" href="mathcomp.ssreflect.choice.html#1731a28227324c9e5fc49499029635b3"><span class="id" title="notation">[</span></a><a class="idref" href="mathcomp.ssreflect.choice.html#1731a28227324c9e5fc49499029635b3"><span class="id" title="notation">choiceType</span></a> <a class="idref" href="mathcomp.ssreflect.choice.html#1731a28227324c9e5fc49499029635b3"><span class="id" title="notation">of</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.RingTheory.R"><span class="id" title="variable">R</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#a92cdad26f40e318882f385be2783a4c"><span class="id" title="notation">^</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#a92cdad26f40e318882f385be2783a4c"><span class="id" title="notation">c</span></a><a class="idref" href="mathcomp.ssreflect.choice.html#1731a28227324c9e5fc49499029635b3"><span class="id" title="notation">]</span></a>.<br/>
+<span class="id" title="keyword">Canonical</span> <span class="id" title="var">converse_zmodType</span> := <a class="idref" href="mathcomp.algebra.ssralg.html#af6385fc2df84aeeec6855073f75cc68"><span class="id" title="notation">[</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#af6385fc2df84aeeec6855073f75cc68"><span class="id" title="notation">zmodType</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#af6385fc2df84aeeec6855073f75cc68"><span class="id" title="notation">of</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.RingTheory.R"><span class="id" title="variable">R</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#a92cdad26f40e318882f385be2783a4c"><span class="id" title="notation">^</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#a92cdad26f40e318882f385be2783a4c"><span class="id" title="notation">c</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#af6385fc2df84aeeec6855073f75cc68"><span class="id" title="notation">]</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.converse_ringMixin"><span class="id" title="definition">converse_ringMixin</span></a> :=<br/>
+&nbsp;&nbsp;<span class="id" title="keyword">let</span> <span class="id" title="var">mul'</span> <span class="id" title="var">x</span> <span class="id" title="var">y</span> := <a class="idref" href="mathcomp.algebra.ssralg.html#y"><span class="id" title="variable">y</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#ed99e7035d9a1f8a2c1515be81ac2e5f"><span class="id" title="notation">×</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a> <span class="id" title="tactic">in</span><br/>
+&nbsp;&nbsp;<span class="id" title="keyword">let</span> <span class="id" title="var">mulrA'</span> <span class="id" title="var">x</span> <span class="id" title="var">y</span> <span class="id" title="var">z</span> := <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#esym"><span class="id" title="definition">esym</span></a> (<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.mulrA"><span class="id" title="lemma">mulrA</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#z"><span class="id" title="variable">z</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#y"><span class="id" title="variable">y</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a>) <span class="id" title="tactic">in</span><br/>
+&nbsp;&nbsp;<span class="id" title="keyword">let</span> <span class="id" title="var">mulrDl'</span> <span class="id" title="var">x</span> <span class="id" title="var">y</span> <span class="id" title="var">z</span> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.mulrDr"><span class="id" title="lemma">mulrDr</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#z"><span class="id" title="variable">z</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#y"><span class="id" title="variable">y</span></a> <span class="id" title="tactic">in</span><br/>
+&nbsp;&nbsp;<span class="id" title="keyword">let</span> <span class="id" title="var">mulrDr'</span> <span class="id" title="var">x</span> <span class="id" title="var">y</span> <span class="id" title="var">z</span> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.mulrDl"><span class="id" title="lemma">mulrDl</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#y"><span class="id" title="variable">y</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#z"><span class="id" title="variable">z</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a> <span class="id" title="tactic">in</span><br/>
+&nbsp;&nbsp;@<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Mixin"><span class="id" title="constructor">Ring.Mixin</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.converse_zmodType"><span class="id" title="definition">converse_zmodType</span></a><br/>
+&nbsp;&nbsp;&nbsp;&nbsp;1 <a class="idref" href="mathcomp.algebra.ssralg.html#mul'"><span class="id" title="variable">mul'</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#mulrA'"><span class="id" title="variable">mulrA'</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.mulr1"><span class="id" title="lemma">mulr1</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.mul1r"><span class="id" title="lemma">mul1r</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#mulrDl'"><span class="id" title="variable">mulrDl'</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#mulrDr'"><span class="id" title="variable">mulrDr'</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.oner_neq0"><span class="id" title="lemma">oner_neq0</span></a>.<br/>
+<span class="id" title="keyword">Canonical</span> <span class="id" title="var">converse_ringType</span> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.RingType"><span class="id" title="abbreviation">RingType</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.RingTheory.R"><span class="id" title="variable">R</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#a92cdad26f40e318882f385be2783a4c"><span class="id" title="notation">^</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#a92cdad26f40e318882f385be2783a4c"><span class="id" title="notation">c</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.converse_ringMixin"><span class="id" title="definition">converse_ringMixin</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Section</span> <a name="GRing.RingTheory.ClosedPredicates"><span class="id" title="section">ClosedPredicates</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Variable</span> <a name="GRing.RingTheory.ClosedPredicates.S"><span class="id" title="variable">S</span></a> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#predPredType"><span class="id" title="definition">predPredType</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.RingTheory.R"><span class="id" title="variable">R</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.mulr_2closed"><span class="id" title="definition">mulr_2closed</span></a> := <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#2bba53854f326a714d377124cccec593"><span class="id" title="notation">{</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#2bba53854f326a714d377124cccec593"><span class="id" title="notation">in</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.RingTheory.ClosedPredicates.S"><span class="id" title="variable">S</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#2bba53854f326a714d377124cccec593"><span class="id" title="notation">&amp;,</span></a> <span class="id" title="keyword">∀</span> <span class="id" title="var">u</span> <span class="id" title="var">v</span>, <a class="idref" href="mathcomp.algebra.ssralg.html#u"><span class="id" title="variable">u</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#ed99e7035d9a1f8a2c1515be81ac2e5f"><span class="id" title="notation">×</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#v"><span class="id" title="variable">v</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">\</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">in</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.RingTheory.ClosedPredicates.S"><span class="id" title="variable">S</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#2bba53854f326a714d377124cccec593"><span class="id" title="notation">}</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.mulr_closed"><span class="id" title="definition">mulr_closed</span></a> := 1 <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">\</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">in</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.RingTheory.ClosedPredicates.S"><span class="id" title="variable">S</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d82a7d96d3659d805ffe732283716822"><span class="id" title="notation">∧</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.mulr_2closed"><span class="id" title="definition">mulr_2closed</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.smulr_closed"><span class="id" title="definition">smulr_closed</span></a> := -1 <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">\</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">in</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.RingTheory.ClosedPredicates.S"><span class="id" title="variable">S</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d82a7d96d3659d805ffe732283716822"><span class="id" title="notation">∧</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.mulr_2closed"><span class="id" title="definition">mulr_2closed</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.semiring_closed"><span class="id" title="definition">semiring_closed</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.addr_closed"><span class="id" title="definition">addr_closed</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.RingTheory.ClosedPredicates.S"><span class="id" title="variable">S</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d82a7d96d3659d805ffe732283716822"><span class="id" title="notation">∧</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.mulr_closed"><span class="id" title="definition">mulr_closed</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.subring_closed"><span class="id" title="definition">subring_closed</span></a> := <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#962a3cb7af009aedac7986e261646bd1"><span class="id" title="notation">[/\</span></a> 1 <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">\</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">in</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.RingTheory.ClosedPredicates.S"><span class="id" title="variable">S</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#962a3cb7af009aedac7986e261646bd1"><span class="id" title="notation">,</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.subr_2closed"><span class="id" title="definition">subr_2closed</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.RingTheory.ClosedPredicates.S"><span class="id" title="variable">S</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#962a3cb7af009aedac7986e261646bd1"><span class="id" title="notation">&amp;</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.mulr_2closed"><span class="id" title="definition">mulr_2closed</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#962a3cb7af009aedac7986e261646bd1"><span class="id" title="notation">]</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.smulr_closedM"><span class="id" title="lemma">smulr_closedM</span></a> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.smulr_closed"><span class="id" title="definition">smulr_closed</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.mulr_closed"><span class="id" title="definition">mulr_closed</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.smulr_closedN"><span class="id" title="lemma">smulr_closedN</span></a> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.smulr_closed"><span class="id" title="definition">smulr_closed</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.oppr_closed"><span class="id" title="definition">oppr_closed</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.RingTheory.ClosedPredicates.S"><span class="id" title="variable">S</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.semiring_closedD"><span class="id" title="lemma">semiring_closedD</span></a> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.semiring_closed"><span class="id" title="definition">semiring_closed</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.addr_closed"><span class="id" title="definition">addr_closed</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.RingTheory.ClosedPredicates.S"><span class="id" title="variable">S</span></a>. <br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.semiring_closedM"><span class="id" title="lemma">semiring_closedM</span></a> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.semiring_closed"><span class="id" title="definition">semiring_closed</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.mulr_closed"><span class="id" title="definition">mulr_closed</span></a>. <br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.subring_closedB"><span class="id" title="lemma">subring_closedB</span></a> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.subring_closed"><span class="id" title="definition">subring_closed</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.zmod_closed"><span class="id" title="definition">zmod_closed</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.RingTheory.ClosedPredicates.S"><span class="id" title="variable">S</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.subring_closedM"><span class="id" title="lemma">subring_closedM</span></a> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.subring_closed"><span class="id" title="definition">subring_closed</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.smulr_closed"><span class="id" title="definition">smulr_closed</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.subring_closed_semi"><span class="id" title="lemma">subring_closed_semi</span></a> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.subring_closed"><span class="id" title="definition">subring_closed</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.semiring_closed"><span class="id" title="definition">semiring_closed</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">End</span> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.RingTheory.ClosedPredicates"><span class="id" title="section">ClosedPredicates</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">End</span> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.RingTheory"><span class="id" title="section">RingTheory</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Section</span> <a name="GRing.RightRegular"><span class="id" title="section">RightRegular</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Variable</span> <a name="GRing.RightRegular.R"><span class="id" title="variable">R</span></a> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ringType"><span class="id" title="abbreviation">ringType</span></a>.<br/>
+<span class="id" title="keyword">Implicit</span> <span class="id" title="keyword">Types</span> <span class="id" title="var">x</span> <span class="id" title="var">y</span> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.RightRegular.R"><span class="id" title="variable">R</span></a>.<br/>
+<span class="id" title="keyword">Let</span> <a name="GRing.RightRegular.Rc"><span class="id" title="variable">Rc</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.converse_ringType"><span class="id" title="definition">converse_ringType</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.RightRegular.R"><span class="id" title="variable">R</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.mulIr_eq0"><span class="id" title="lemma">mulIr_eq0</span></a> <span class="id" title="var">x</span> <span class="id" title="var">y</span> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.rreg"><span class="id" title="definition">rreg</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#y"><span class="id" title="variable">y</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#ed99e7035d9a1f8a2c1515be81ac2e5f"><span class="id" title="notation">×</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#17d28d004d0863cb022d4ce832ddaaae"><span class="id" title="notation">==</span></a> 0<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">)</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#y"><span class="id" title="variable">y</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#17d28d004d0863cb022d4ce832ddaaae"><span class="id" title="notation">==</span></a> 0<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">)</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.mulIr0_rreg"><span class="id" title="lemma">mulIr0_rreg</span></a> <span class="id" title="var">x</span> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><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.algebra.ssralg.html#y"><span class="id" title="variable">y</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#ed99e7035d9a1f8a2c1515be81ac2e5f"><span class="id" title="notation">×</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> 0 <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#y"><span class="id" title="variable">y</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> 0<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">)</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.rreg"><span class="id" title="definition">rreg</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.rreg_neq0"><span class="id" title="lemma">rreg_neq0</span></a> <span class="id" title="var">x</span> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.rreg"><span class="id" title="definition">rreg</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#b1eeadc2feabc7422252baa895418c7b"><span class="id" title="notation">!=</span></a> 0.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.rregN"><span class="id" title="lemma">rregN</span></a> <span class="id" title="var">x</span> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.rreg"><span class="id" title="definition">rreg</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.rreg"><span class="id" title="definition">rreg</span></a> (<a class="idref" href="mathcomp.algebra.ssralg.html#eefae7eea8ed2b8fccf150cb653d7a7b"><span class="id" title="notation">-</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a>).<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.rreg1"><span class="id" title="lemma">rreg1</span></a> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.rreg"><span class="id" title="definition">rreg</span></a> (1 <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssreflect.html#4509b22bf26e3d6d771897e22bd8bc8f"><span class="id" title="notation">:</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.RightRegular.R"><span class="id" title="variable">R</span></a>).<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.rregM"><span class="id" title="lemma">rregM</span></a> <span class="id" title="var">x</span> <span class="id" title="var">y</span> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.rreg"><span class="id" title="definition">rreg</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.rreg"><span class="id" title="definition">rreg</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#y"><span class="id" title="variable">y</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.rreg"><span class="id" title="definition">rreg</span></a> (<a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#ed99e7035d9a1f8a2c1515be81ac2e5f"><span class="id" title="notation">×</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#y"><span class="id" title="variable">y</span></a>).<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.revrX"><span class="id" title="lemma">revrX</span></a> <span class="id" title="var">x</span> <span class="id" title="var">n</span> : <a class="idref" href="mathcomp.algebra.ssralg.html#b5a6699e28c97bb33352772cfa3ea869"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssreflect.html#4509b22bf26e3d6d771897e22bd8bc8f"><span class="id" title="notation">:</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.RightRegular.Rc"><span class="id" title="variable">Rc</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#b5a6699e28c97bb33352772cfa3ea869"><span class="id" title="notation">)</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#b5a6699e28c97bb33352772cfa3ea869"><span class="id" title="notation">^+</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#n"><span class="id" title="variable">n</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#b5a6699e28c97bb33352772cfa3ea869"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssreflect.html#4509b22bf26e3d6d771897e22bd8bc8f"><span class="id" title="notation">:</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.RightRegular.R"><span class="id" title="variable">R</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#b5a6699e28c97bb33352772cfa3ea869"><span class="id" title="notation">)</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#b5a6699e28c97bb33352772cfa3ea869"><span class="id" title="notation">^+</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#n"><span class="id" title="variable">n</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.rregX"><span class="id" title="lemma">rregX</span></a> <span class="id" title="var">x</span> <span class="id" title="var">n</span> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.rreg"><span class="id" title="definition">rreg</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.rreg"><span class="id" title="definition">rreg</span></a> (<a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#b5a6699e28c97bb33352772cfa3ea869"><span class="id" title="notation">^+</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#n"><span class="id" title="variable">n</span></a>).<br/>
+
+<br/>
+<span class="id" title="keyword">End</span> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.RightRegular"><span class="id" title="section">RightRegular</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Module</span> <a name="GRing.Lmodule"><span class="id" title="module">Lmodule</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Structure</span> <a name="GRing.Lmodule.mixin_of"><span class="id" title="record">mixin_of</span></a> (<span class="id" title="var">R</span> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Ring.Exports.ringType"><span class="id" title="abbreviation">ringType</span></a>) (<span class="id" title="var">V</span> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Zmodule.Exports.zmodType"><span class="id" title="abbreviation">zmodType</span></a>) : <span class="id" title="keyword">Type</span> := <a name="GRing.Lmodule.Mixin"><span class="id" title="constructor">Mixin</span></a> {<br/>
+&nbsp;&nbsp;<a name="GRing.Lmodule.scale"><span class="id" title="projection">scale</span></a> : <a class="idref" href="mathcomp.algebra.ssralg.html#R"><span class="id" title="variable">R</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#V"><span class="id" title="variable">V</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#V"><span class="id" title="variable">V</span></a>;<br/>
+&nbsp;&nbsp;<span class="id" title="var">_</span> : <span class="id" title="keyword">∀</span> <span class="id" title="var">a</span> <span class="id" title="var">b</span> <span class="id" title="var">v</span>, <a class="idref" href="mathcomp.algebra.ssralg.html#scale"><span class="id" title="method">scale</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#a"><span class="id" title="variable">a</span></a> (<a class="idref" href="mathcomp.algebra.ssralg.html#scale"><span class="id" title="method">scale</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#b"><span class="id" title="variable">b</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#v"><span class="id" title="variable">v</span></a>) <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#scale"><span class="id" title="method">scale</span></a> (<a class="idref" href="mathcomp.algebra.ssralg.html#a"><span class="id" title="variable">a</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#ed99e7035d9a1f8a2c1515be81ac2e5f"><span class="id" title="notation">×</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#b"><span class="id" title="variable">b</span></a>) <a class="idref" href="mathcomp.algebra.ssralg.html#v"><span class="id" title="variable">v</span></a>;<br/>
+&nbsp;&nbsp;<span class="id" title="var">_</span> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#left_id"><span class="id" title="definition">left_id</span></a> 1 <a class="idref" href="mathcomp.algebra.ssralg.html#scale"><span class="id" title="method">scale</span></a>;<br/>
+&nbsp;&nbsp;<span class="id" title="var">_</span> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#right_distributive"><span class="id" title="definition">right_distributive</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#scale"><span class="id" title="method">scale</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#6c3404a70e11a79a0fa82b3d398aa71f"><span class="id" title="notation">+%</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#6c3404a70e11a79a0fa82b3d398aa71f"><span class="id" title="notation">R</span></a>;<br/>
+&nbsp;&nbsp;<span class="id" title="var">_</span> : <span class="id" title="keyword">∀</span> <span class="id" title="var">v</span>, <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#3014e73af2a90fd800d8681479d76336"><span class="id" title="notation">{</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#3014e73af2a90fd800d8681479d76336"><span class="id" title="notation">morph</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#scale"><span class="id" title="method">scale</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#8f28bbd804547edd8de802d63ef85617"><span class="id" title="notation">^~</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#v"><span class="id" title="variable">v</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#3014e73af2a90fd800d8681479d76336"><span class="id" title="notation">:</span></a> <span class="id" title="var">a</span> <span class="id" title="var">b</span> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#3014e73af2a90fd800d8681479d76336"><span class="id" title="notation">/</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#a"><span class="id" title="variable">a</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#338c5345074fd3586073fd29273c138a"><span class="id" title="notation">+</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#b"><span class="id" title="variable">b</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#3014e73af2a90fd800d8681479d76336"><span class="id" title="notation">}</span></a><br/>
+}.<br/>
+
+<br/>
+<span class="id" title="keyword">Section</span> <a name="GRing.Lmodule.ClassDef"><span class="id" title="section">ClassDef</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Variable</span> <a name="GRing.Lmodule.ClassDef.R"><span class="id" title="variable">R</span></a> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Ring.Exports.ringType"><span class="id" title="abbreviation">ringType</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Structure</span> <a name="GRing.Lmodule.class_of"><span class="id" title="record">class_of</span></a> <span class="id" title="var">V</span> := <a name="GRing.Lmodule.Class"><span class="id" title="constructor">Class</span></a> {<br/>
+&nbsp;&nbsp;<a name="GRing.Lmodule.base"><span class="id" title="projection">base</span></a> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Zmodule.class_of"><span class="id" title="record">Zmodule.class_of</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#V"><span class="id" title="variable">V</span></a>;<br/>
+&nbsp;&nbsp;<a name="GRing.Lmodule.mixin"><span class="id" title="projection">mixin</span></a> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Lmodule.mixin_of"><span class="id" title="record">mixin_of</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Lmodule.ClassDef.R"><span class="id" title="variable">R</span></a> (<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Zmodule.Pack"><span class="id" title="constructor">Zmodule.Pack</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#base"><span class="id" title="method">base</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#V"><span class="id" title="variable">V</span></a>)<br/>
+}.<br/>
+
+<br/>
+<span class="id" title="keyword">Structure</span> <a name="GRing.Lmodule.type"><span class="id" title="record">type</span></a> (<span class="id" title="var">phR</span> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssreflect.html#phant"><span class="id" title="inductive">phant</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Lmodule.ClassDef.R"><span class="id" title="variable">R</span></a>) := <a name="GRing.Lmodule.Pack"><span class="id" title="constructor">Pack</span></a> {<a name="GRing.Lmodule.sort"><span class="id" title="projection">sort</span></a>; <span class="id" title="var">_</span> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Lmodule.class_of"><span class="id" title="record">class_of</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#sort"><span class="id" title="method">sort</span></a>; <span class="id" title="var">_</span> : <span class="id" title="keyword">Type</span>}.<br/>
+<span class="id" title="keyword">Variable</span> (<a name="GRing.Lmodule.ClassDef.phR"><span class="id" title="variable">phR</span></a> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssreflect.html#phant"><span class="id" title="inductive">phant</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Lmodule.ClassDef.R"><span class="id" title="variable">R</span></a>) (<a name="GRing.Lmodule.ClassDef.T"><span class="id" title="variable">T</span></a> : <span class="id" title="keyword">Type</span>) (<a name="GRing.Lmodule.ClassDef.cT"><span class="id" title="variable">cT</span></a> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Lmodule.type"><span class="id" title="record">type</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#phR"><span class="id" title="variable">phR</span></a>).<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Lmodule.class"><span class="id" title="definition">class</span></a> := <span class="id" title="keyword">let</span>: <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Lmodule.Pack"><span class="id" title="constructor">Pack</span></a> <span class="id" title="var">_</span> <span class="id" title="var">c</span> <span class="id" title="var">_</span> <span class="id" title="keyword">as</span> <span class="id" title="var">cT'</span> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Lmodule.ClassDef.cT"><span class="id" title="variable">cT</span></a> <span class="id" title="keyword">return</span> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Lmodule.class_of"><span class="id" title="record">class_of</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#cT'"><span class="id" title="variable">cT'</span></a> <span class="id" title="tactic">in</span> <span class="id" title="var">c</span>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Lmodule.clone"><span class="id" title="definition">clone</span></a> <span class="id" title="var">c</span> <span class="id" title="keyword">of</span> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#phant_id"><span class="id" title="definition">phant_id</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Lmodule.class"><span class="id" title="definition">class</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#c"><span class="id" title="variable">c</span></a> := @<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Lmodule.Pack"><span class="id" title="constructor">Pack</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Lmodule.ClassDef.phR"><span class="id" title="variable">phR</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Lmodule.ClassDef.T"><span class="id" title="variable">T</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#c"><span class="id" title="variable">c</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Lmodule.ClassDef.T"><span class="id" title="variable">T</span></a>.<br/>
+<span class="id" title="keyword">Let</span> <a name="GRing.Lmodule.ClassDef.xT"><span class="id" title="variable">xT</span></a> := <span class="id" title="keyword">let</span>: <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Lmodule.Pack"><span class="id" title="constructor">Pack</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="mathcomp.algebra.ssralg.html#GRing.Lmodule.ClassDef.cT"><span class="id" title="variable">cT</span></a> <span class="id" title="tactic">in</span> <span class="id" title="var">T</span>.<br/>
+<span class="id" title="keyword">Notation</span> <a name="GRing.Lmodule.xclass"><span class="id" title="abbreviation">xclass</span></a> := (<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Lmodule.class"><span class="id" title="definition">class</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssreflect.html#4509b22bf26e3d6d771897e22bd8bc8f"><span class="id" title="notation">:</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Lmodule.class_of"><span class="id" title="record">class_of</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Lmodule.ClassDef.xT"><span class="id" title="variable">xT</span></a>).<br/>
+
+<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Lmodule.pack"><span class="id" title="definition">pack</span></a> <span class="id" title="var">b0</span> (<span class="id" title="var">m0</span> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Lmodule.mixin_of"><span class="id" title="record">mixin_of</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Lmodule.ClassDef.R"><span class="id" title="variable">R</span></a> (@<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Zmodule.Pack"><span class="id" title="constructor">Zmodule.Pack</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Lmodule.ClassDef.T"><span class="id" title="variable">T</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#b0"><span class="id" title="variable">b0</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Lmodule.ClassDef.T"><span class="id" title="variable">T</span></a>)) :=<br/>
+&nbsp;&nbsp;<span class="id" title="keyword">fun</span> <span class="id" title="var">bT</span> <span class="id" title="var">b</span> &amp; <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#phant_id"><span class="id" title="definition">phant_id</span></a> (<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Zmodule.class"><span class="id" title="definition">Zmodule.class</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#bT"><span class="id" title="variable">bT</span></a>) <a class="idref" href="mathcomp.algebra.ssralg.html#b"><span class="id" title="variable">b</span></a> ⇒<br/>
+&nbsp;&nbsp;<span class="id" title="keyword">fun</span> <span class="id" title="var">m</span> &amp; <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#phant_id"><span class="id" title="definition">phant_id</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#m0"><span class="id" title="variable">m0</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#m"><span class="id" title="variable">m</span></a> ⇒ <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Lmodule.Pack"><span class="id" title="constructor">Pack</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Lmodule.ClassDef.phR"><span class="id" title="variable">phR</span></a> (@<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Lmodule.Class"><span class="id" title="constructor">Class</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Lmodule.ClassDef.T"><span class="id" title="variable">T</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#b"><span class="id" title="variable">b</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#m"><span class="id" title="variable">m</span></a>) <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Lmodule.ClassDef.T"><span class="id" title="variable">T</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Lmodule.eqType"><span class="id" title="definition">eqType</span></a> := @<a class="idref" href="mathcomp.ssreflect.eqtype.html#Equality.Pack"><span class="id" title="constructor">Equality.Pack</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Lmodule.ClassDef.cT"><span class="id" title="variable">cT</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Lmodule.xclass"><span class="id" title="abbreviation">xclass</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Lmodule.ClassDef.xT"><span class="id" title="variable">xT</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Lmodule.choiceType"><span class="id" title="definition">choiceType</span></a> := @<a class="idref" href="mathcomp.ssreflect.choice.html#Choice.Pack"><span class="id" title="constructor">Choice.Pack</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Lmodule.ClassDef.cT"><span class="id" title="variable">cT</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Lmodule.xclass"><span class="id" title="abbreviation">xclass</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Lmodule.ClassDef.xT"><span class="id" title="variable">xT</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Lmodule.zmodType"><span class="id" title="definition">zmodType</span></a> := @<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Zmodule.Pack"><span class="id" title="constructor">Zmodule.Pack</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Lmodule.ClassDef.cT"><span class="id" title="variable">cT</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Lmodule.xclass"><span class="id" title="abbreviation">xclass</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Lmodule.ClassDef.xT"><span class="id" title="variable">xT</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">End</span> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Lmodule.ClassDef"><span class="id" title="section">ClassDef</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Module</span> <span class="id" title="keyword">Import</span> <a name="GRing.Lmodule.Exports"><span class="id" title="module">Exports</span></a>.<br/>
+<span class="id" title="keyword">Coercion</span> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Lmodule.base"><span class="id" title="projection">base</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Lmodule.base"><span class="id" title="projection">:</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Lmodule.base"><span class="id" title="projection">class_of</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Lmodule.base"><span class="id" title="projection">&gt;-&gt;</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Lmodule.base"><span class="id" title="projection">Zmodule.class_of</span></a>.<br/>
+<span class="id" title="keyword">Coercion</span> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Lmodule.mixin"><span class="id" title="projection">mixin</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Lmodule.mixin"><span class="id" title="projection">:</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Lmodule.mixin"><span class="id" title="projection">class_of</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Lmodule.mixin"><span class="id" title="projection">&gt;-&gt;</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Lmodule.mixin"><span class="id" title="projection">mixin_of</span></a>.<br/>
+<span class="id" title="keyword">Coercion</span> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Lmodule.sort"><span class="id" title="projection">sort</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Lmodule.sort"><span class="id" title="projection">:</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Lmodule.sort"><span class="id" title="projection">type</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Lmodule.sort"><span class="id" title="projection">&gt;-&gt;</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Lmodule.sort"><span class="id" title="projection">Sortclass</span></a>.<br/>
+<span class="id" title="keyword">Coercion</span> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Lmodule.eqType"><span class="id" title="definition">eqType</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Lmodule.eqType"><span class="id" title="definition">:</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Lmodule.eqType"><span class="id" title="definition">type</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Lmodule.eqType"><span class="id" title="definition">&gt;-&gt;</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Lmodule.eqType"><span class="id" title="definition">Equality.type</span></a>.<br/>
+<span class="id" title="keyword">Canonical</span> <span class="id" title="var">eqType</span>.<br/>
+<span class="id" title="keyword">Coercion</span> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Lmodule.choiceType"><span class="id" title="definition">choiceType</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Lmodule.choiceType"><span class="id" title="definition">:</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Lmodule.choiceType"><span class="id" title="definition">type</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Lmodule.choiceType"><span class="id" title="definition">&gt;-&gt;</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Lmodule.choiceType"><span class="id" title="definition">Choice.type</span></a>.<br/>
+<span class="id" title="keyword">Canonical</span> <span class="id" title="var">choiceType</span>.<br/>
+<span class="id" title="keyword">Coercion</span> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Lmodule.zmodType"><span class="id" title="definition">zmodType</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Lmodule.zmodType"><span class="id" title="definition">:</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Lmodule.zmodType"><span class="id" title="definition">type</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Lmodule.zmodType"><span class="id" title="definition">&gt;-&gt;</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Lmodule.zmodType"><span class="id" title="definition">Zmodule.type</span></a>.<br/>
+<span class="id" title="keyword">Canonical</span> <span class="id" title="var">zmodType</span>.<br/>
+<span class="id" title="keyword">Notation</span> <a name="GRing.Lmodule.Exports.lmodType"><span class="id" title="abbreviation">lmodType</span></a> <span class="id" title="var">R</span> := (<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Lmodule.type"><span class="id" title="record">type</span></a> (<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssreflect.html#Phant"><span class="id" title="constructor">Phant</span></a> <span class="id" title="var">R</span>)).<br/>
+<span class="id" title="keyword">Notation</span> <a name="GRing.Lmodule.Exports.LmodType"><span class="id" title="abbreviation">LmodType</span></a> <span class="id" title="var">R</span> <span class="id" title="var">T</span> <span class="id" title="var">m</span> := (@<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Lmodule.pack"><span class="id" title="definition">pack</span></a> <span class="id" title="var">_</span> (<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssreflect.html#Phant"><span class="id" title="constructor">Phant</span></a> <span class="id" title="var">R</span>) <span class="id" title="var">T</span> <span class="id" title="var">_</span> <span class="id" title="var">m</span> <span class="id" title="var">_</span> <span class="id" title="var">_</span> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#id"><span class="id" title="abbreviation">id</span></a> <span class="id" title="var">_</span> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#id"><span class="id" title="abbreviation">id</span></a>).<br/>
+<span class="id" title="keyword">Notation</span> <a name="GRing.Lmodule.Exports.LmodMixin"><span class="id" title="abbreviation">LmodMixin</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Lmodule.Mixin"><span class="id" title="constructor">Mixin</span></a>.<br/>
+<span class="id" title="keyword">Notation</span> <a name="7ae3f0c4bde1f78bffc254ec020999a6"><span class="id" title="notation">&quot;</span></a>[ 'lmodType' R 'of' T 'for' cT ]" := (@<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Lmodule.clone"><span class="id" title="definition">clone</span></a> <span class="id" title="var">_</span> (<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssreflect.html#Phant"><span class="id" title="constructor">Phant</span></a> <span class="id" title="var">R</span>) <span class="id" title="var">T</span> <span class="id" title="var">cT</span> <span class="id" title="var">_</span> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#idfun"><span class="id" title="abbreviation">idfun</span></a>)<br/>
+&nbsp;&nbsp;(<span class="id" title="tactic">at</span> <span class="id" title="keyword">level</span> 0, <span class="id" title="var">format</span> "[ 'lmodType' R 'of' T 'for' cT ]") : <span class="id" title="var">form_scope</span>.<br/>
+<span class="id" title="keyword">Notation</span> <a name="f5696ebf026860a6f9c8dd4d23269df7"><span class="id" title="notation">&quot;</span></a>[ 'lmodType' R 'of' T ]" := (@<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Lmodule.clone"><span class="id" title="definition">clone</span></a> <span class="id" title="var">_</span> (<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssreflect.html#Phant"><span class="id" title="constructor">Phant</span></a> <span class="id" title="var">R</span>) <span class="id" title="var">T</span> <span class="id" title="var">_</span> <span class="id" title="var">_</span> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#id"><span class="id" title="abbreviation">id</span></a>)<br/>
+&nbsp;&nbsp;(<span class="id" title="tactic">at</span> <span class="id" title="keyword">level</span> 0, <span class="id" title="var">format</span> "[ 'lmodType' R 'of' T ]") : <span class="id" title="var">form_scope</span>.<br/>
+<span class="id" title="keyword">End</span> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Lmodule.Exports"><span class="id" title="module">Exports</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">End</span> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Lmodule"><span class="id" title="module">Lmodule</span></a>.<br/>
+<span class="id" title="keyword">Import</span> <span class="id" title="var">Lmodule.Exports</span>.<br/>
+
+<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.scale"><span class="id" title="definition">scale</span></a> (<span class="id" title="var">R</span> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ringType"><span class="id" title="abbreviation">ringType</span></a>) (<span class="id" title="var">V</span> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.lmodType"><span class="id" title="abbreviation">lmodType</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#R"><span class="id" title="variable">R</span></a>) :=<br/>
+&nbsp;&nbsp;<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.scale"><span class="id" title="projection">Lmodule.scale</span></a> (<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.class"><span class="id" title="definition">Lmodule.class</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#V"><span class="id" title="variable">V</span></a>).<br/>
+
+<br/>
+
+<br/>
+<span class="id" title="keyword">Section</span> <a name="GRing.LmoduleTheory"><span class="id" title="section">LmoduleTheory</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Variables</span> (<a name="GRing.LmoduleTheory.R"><span class="id" title="variable">R</span></a> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ringType"><span class="id" title="abbreviation">ringType</span></a>) (<a name="GRing.LmoduleTheory.V"><span class="id" title="variable">V</span></a> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.lmodType"><span class="id" title="abbreviation">lmodType</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#R"><span class="id" title="variable">R</span></a>).<br/>
+<span class="id" title="keyword">Implicit</span> <span class="id" title="keyword">Types</span> (<span class="id" title="var">a</span> <span class="id" title="var">b</span> <span class="id" title="var">c</span> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.LmoduleTheory.R"><span class="id" title="variable">R</span></a>) (<span class="id" title="var">u</span> <span class="id" title="var">v</span> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.LmoduleTheory.V"><span class="id" title="variable">V</span></a>).<br/>
+
+<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.scalerA"><span class="id" title="lemma">scalerA</span></a> <span class="id" title="var">a</span> <span class="id" title="var">b</span> <span class="id" title="var">v</span> : <a class="idref" href="mathcomp.algebra.ssralg.html#a"><span class="id" title="variable">a</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#5aa7bcc9ac922e77482767d325fdbb69"><span class="id" title="notation">*:</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#5aa7bcc9ac922e77482767d325fdbb69"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#b"><span class="id" title="variable">b</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#5aa7bcc9ac922e77482767d325fdbb69"><span class="id" title="notation">*:</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#v"><span class="id" title="variable">v</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#5aa7bcc9ac922e77482767d325fdbb69"><span class="id" title="notation">)</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#a"><span class="id" title="variable">a</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#ed99e7035d9a1f8a2c1515be81ac2e5f"><span class="id" title="notation">×</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#b"><span class="id" title="variable">b</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#5aa7bcc9ac922e77482767d325fdbb69"><span class="id" title="notation">*:</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#v"><span class="id" title="variable">v</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.scale1r"><span class="id" title="lemma">scale1r</span></a> : @<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#left_id"><span class="id" title="definition">left_id</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.LmoduleTheory.R"><span class="id" title="variable">R</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.LmoduleTheory.V"><span class="id" title="variable">V</span></a> 1 <a class="idref" href="mathcomp.algebra.ssralg.html#7afd8be1b339ff7cc68808fc72d11109"><span class="id" title="notation">*:%</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#7afd8be1b339ff7cc68808fc72d11109"><span class="id" title="notation">R</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.scalerDr"><span class="id" title="lemma">scalerDr</span></a> <span class="id" title="var">a</span> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#3014e73af2a90fd800d8681479d76336"><span class="id" title="notation">{</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#3014e73af2a90fd800d8681479d76336"><span class="id" title="notation">morph</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#7afd8be1b339ff7cc68808fc72d11109"><span class="id" title="notation">*:%</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#7afd8be1b339ff7cc68808fc72d11109"><span class="id" title="notation">R</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#7afd8be1b339ff7cc68808fc72d11109"><span class="id" title="notation">a</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#3014e73af2a90fd800d8681479d76336"><span class="id" title="notation">:</span></a> <span class="id" title="var">u</span> <span class="id" title="var">v</span> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#3014e73af2a90fd800d8681479d76336"><span class="id" title="notation">/</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#u"><span class="id" title="variable">u</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#338c5345074fd3586073fd29273c138a"><span class="id" title="notation">+</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#v"><span class="id" title="variable">v</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#3014e73af2a90fd800d8681479d76336"><span class="id" title="notation">}</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.scalerDl"><span class="id" title="lemma">scalerDl</span></a> <span class="id" title="var">v</span> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#3014e73af2a90fd800d8681479d76336"><span class="id" title="notation">{</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#3014e73af2a90fd800d8681479d76336"><span class="id" title="notation">morph</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#7afd8be1b339ff7cc68808fc72d11109"><span class="id" title="notation">*:%</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#7afd8be1b339ff7cc68808fc72d11109"><span class="id" title="notation">R</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#8f28bbd804547edd8de802d63ef85617"><span class="id" title="notation">^~</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#v"><span class="id" title="variable">v</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#3014e73af2a90fd800d8681479d76336"><span class="id" title="notation">:</span></a> <span class="id" title="var">a</span> <span class="id" title="var">b</span> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#3014e73af2a90fd800d8681479d76336"><span class="id" title="notation">/</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#a"><span class="id" title="variable">a</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#338c5345074fd3586073fd29273c138a"><span class="id" title="notation">+</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#b"><span class="id" title="variable">b</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#3014e73af2a90fd800d8681479d76336"><span class="id" title="notation">}</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.scale0r"><span class="id" title="lemma">scale0r</span></a> <span class="id" title="var">v</span> : 0 <a class="idref" href="mathcomp.algebra.ssralg.html#5aa7bcc9ac922e77482767d325fdbb69"><span class="id" title="notation">*:</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#v"><span class="id" title="variable">v</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> 0.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.scaler0"><span class="id" title="lemma">scaler0</span></a> <span class="id" title="var">a</span> : <a class="idref" href="mathcomp.algebra.ssralg.html#a"><span class="id" title="variable">a</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#5aa7bcc9ac922e77482767d325fdbb69"><span class="id" title="notation">*:</span></a> 0 <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#8f9364556521ebb498093f28eea2240f"><span class="id" title="notation">=</span></a> 0 <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#8f9364556521ebb498093f28eea2240f"><span class="id" title="notation">:&gt;</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.LmoduleTheory.V"><span class="id" title="variable">V</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.scaleNr"><span class="id" title="lemma">scaleNr</span></a> <span class="id" title="var">a</span> <span class="id" title="var">v</span> : <a class="idref" href="mathcomp.algebra.ssralg.html#eefae7eea8ed2b8fccf150cb653d7a7b"><span class="id" title="notation">-</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#a"><span class="id" title="variable">a</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#5aa7bcc9ac922e77482767d325fdbb69"><span class="id" title="notation">*:</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#v"><span class="id" title="variable">v</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#eefae7eea8ed2b8fccf150cb653d7a7b"><span class="id" title="notation">-</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#eefae7eea8ed2b8fccf150cb653d7a7b"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#a"><span class="id" title="variable">a</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#5aa7bcc9ac922e77482767d325fdbb69"><span class="id" title="notation">*:</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#v"><span class="id" title="variable">v</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#eefae7eea8ed2b8fccf150cb653d7a7b"><span class="id" title="notation">)</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.scaleN1r"><span class="id" title="lemma">scaleN1r</span></a> <span class="id" title="var">v</span> : <a class="idref" href="mathcomp.algebra.ssralg.html#5aa7bcc9ac922e77482767d325fdbb69"><span class="id" title="notation">(</span></a>- 1<a class="idref" href="mathcomp.algebra.ssralg.html#5aa7bcc9ac922e77482767d325fdbb69"><span class="id" title="notation">)</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#5aa7bcc9ac922e77482767d325fdbb69"><span class="id" title="notation">*:</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#v"><span class="id" title="variable">v</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#eefae7eea8ed2b8fccf150cb653d7a7b"><span class="id" title="notation">-</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#v"><span class="id" title="variable">v</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.scalerN"><span class="id" title="lemma">scalerN</span></a> <span class="id" title="var">a</span> <span class="id" title="var">v</span> : <a class="idref" href="mathcomp.algebra.ssralg.html#a"><span class="id" title="variable">a</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#5aa7bcc9ac922e77482767d325fdbb69"><span class="id" title="notation">*:</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#5aa7bcc9ac922e77482767d325fdbb69"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#eefae7eea8ed2b8fccf150cb653d7a7b"><span class="id" title="notation">-</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#v"><span class="id" title="variable">v</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#5aa7bcc9ac922e77482767d325fdbb69"><span class="id" title="notation">)</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#eefae7eea8ed2b8fccf150cb653d7a7b"><span class="id" title="notation">-</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#eefae7eea8ed2b8fccf150cb653d7a7b"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#a"><span class="id" title="variable">a</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#5aa7bcc9ac922e77482767d325fdbb69"><span class="id" title="notation">*:</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#v"><span class="id" title="variable">v</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#eefae7eea8ed2b8fccf150cb653d7a7b"><span class="id" title="notation">)</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.scalerBl"><span class="id" title="lemma">scalerBl</span></a> <span class="id" title="var">a</span> <span class="id" title="var">b</span> <span class="id" title="var">v</span> : <a class="idref" href="mathcomp.algebra.ssralg.html#5aa7bcc9ac922e77482767d325fdbb69"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#a"><span class="id" title="variable">a</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#4d4b9697032429ec46472e6332d1356a"><span class="id" title="notation">-</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#b"><span class="id" title="variable">b</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#5aa7bcc9ac922e77482767d325fdbb69"><span class="id" title="notation">)</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#5aa7bcc9ac922e77482767d325fdbb69"><span class="id" title="notation">*:</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#v"><span class="id" title="variable">v</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#a"><span class="id" title="variable">a</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#5aa7bcc9ac922e77482767d325fdbb69"><span class="id" title="notation">*:</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#v"><span class="id" title="variable">v</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#4d4b9697032429ec46472e6332d1356a"><span class="id" title="notation">-</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#b"><span class="id" title="variable">b</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#5aa7bcc9ac922e77482767d325fdbb69"><span class="id" title="notation">*:</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#v"><span class="id" title="variable">v</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.scalerBr"><span class="id" title="lemma">scalerBr</span></a> <span class="id" title="var">a</span> <span class="id" title="var">u</span> <span class="id" title="var">v</span> : <a class="idref" href="mathcomp.algebra.ssralg.html#a"><span class="id" title="variable">a</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#5aa7bcc9ac922e77482767d325fdbb69"><span class="id" title="notation">*:</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#5aa7bcc9ac922e77482767d325fdbb69"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#u"><span class="id" title="variable">u</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#4d4b9697032429ec46472e6332d1356a"><span class="id" title="notation">-</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#v"><span class="id" title="variable">v</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#5aa7bcc9ac922e77482767d325fdbb69"><span class="id" title="notation">)</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#a"><span class="id" title="variable">a</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#5aa7bcc9ac922e77482767d325fdbb69"><span class="id" title="notation">*:</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#u"><span class="id" title="variable">u</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#4d4b9697032429ec46472e6332d1356a"><span class="id" title="notation">-</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#a"><span class="id" title="variable">a</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#5aa7bcc9ac922e77482767d325fdbb69"><span class="id" title="notation">*:</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#v"><span class="id" title="variable">v</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.scaler_nat"><span class="id" title="lemma">scaler_nat</span></a> <span class="id" title="var">n</span> <span class="id" title="var">v</span> : <a class="idref" href="mathcomp.algebra.ssralg.html#n"><span class="id" title="variable">n</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#c191333b9c7c034282647fbffacc9d18"><span class="id" title="notation">%:</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#c191333b9c7c034282647fbffacc9d18"><span class="id" title="notation">R</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#5aa7bcc9ac922e77482767d325fdbb69"><span class="id" title="notation">*:</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#v"><span class="id" title="variable">v</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#v"><span class="id" title="variable">v</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#513eaa3129601ecbcc9e188a80d6155b"><span class="id" title="notation">*+</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#n"><span class="id" title="variable">n</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.scaler_sign"><span class="id" title="lemma">scaler_sign</span></a> (<span class="id" title="var">b</span> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#bool"><span class="id" title="inductive">bool</span></a>) <span class="id" title="var">v</span>: <a class="idref" href="mathcomp.algebra.ssralg.html#b5a6699e28c97bb33352772cfa3ea869"><span class="id" title="notation">(</span></a>-1<a class="idref" href="mathcomp.algebra.ssralg.html#b5a6699e28c97bb33352772cfa3ea869"><span class="id" title="notation">)</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#b5a6699e28c97bb33352772cfa3ea869"><span class="id" title="notation">^+</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#b"><span class="id" title="variable">b</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#5aa7bcc9ac922e77482767d325fdbb69"><span class="id" title="notation">*:</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#v"><span class="id" title="variable">v</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">(</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssreflect.html#0348819abaa88c2cd747e8fa60dde7ae"><span class="id" title="notation">if</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#b"><span class="id" title="variable">b</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssreflect.html#0348819abaa88c2cd747e8fa60dde7ae"><span class="id" title="notation">then</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#eefae7eea8ed2b8fccf150cb653d7a7b"><span class="id" title="notation">-</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#v"><span class="id" title="variable">v</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssreflect.html#0348819abaa88c2cd747e8fa60dde7ae"><span class="id" title="notation">else</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#v"><span class="id" title="variable">v</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">)</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.signrZK"><span class="id" title="lemma">signrZK</span></a> <span class="id" title="var">n</span> : @<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#involutive"><span class="id" title="definition">involutive</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.LmoduleTheory.V"><span class="id" title="variable">V</span></a> ( <a class="idref" href="mathcomp.algebra.ssralg.html#7afd8be1b339ff7cc68808fc72d11109"><span class="id" title="notation">*:%</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#7afd8be1b339ff7cc68808fc72d11109"><span class="id" title="notation">R</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#7afd8be1b339ff7cc68808fc72d11109"><span class="id" title="notation">((-1)</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#7afd8be1b339ff7cc68808fc72d11109"><span class="id" title="notation">^+</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#7afd8be1b339ff7cc68808fc72d11109"><span class="id" title="notation">n</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#7afd8be1b339ff7cc68808fc72d11109"><span class="id" title="notation">)</span></a>).<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.scalerMnl"><span class="id" title="lemma">scalerMnl</span></a> <span class="id" title="var">a</span> <span class="id" title="var">v</span> <span class="id" title="var">n</span> : <a class="idref" href="mathcomp.algebra.ssralg.html#a"><span class="id" title="variable">a</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#5aa7bcc9ac922e77482767d325fdbb69"><span class="id" title="notation">*:</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#v"><span class="id" title="variable">v</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#513eaa3129601ecbcc9e188a80d6155b"><span class="id" title="notation">*+</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#n"><span class="id" title="variable">n</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#5aa7bcc9ac922e77482767d325fdbb69"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#a"><span class="id" title="variable">a</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#513eaa3129601ecbcc9e188a80d6155b"><span class="id" title="notation">*+</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#n"><span class="id" title="variable">n</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#5aa7bcc9ac922e77482767d325fdbb69"><span class="id" title="notation">)</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#5aa7bcc9ac922e77482767d325fdbb69"><span class="id" title="notation">*:</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#v"><span class="id" title="variable">v</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.scalerMnr"><span class="id" title="lemma">scalerMnr</span></a> <span class="id" title="var">a</span> <span class="id" title="var">v</span> <span class="id" title="var">n</span> : <a class="idref" href="mathcomp.algebra.ssralg.html#a"><span class="id" title="variable">a</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#5aa7bcc9ac922e77482767d325fdbb69"><span class="id" title="notation">*:</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#v"><span class="id" title="variable">v</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#513eaa3129601ecbcc9e188a80d6155b"><span class="id" title="notation">*+</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#n"><span class="id" title="variable">n</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#a"><span class="id" title="variable">a</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#5aa7bcc9ac922e77482767d325fdbb69"><span class="id" title="notation">*:</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#5aa7bcc9ac922e77482767d325fdbb69"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#v"><span class="id" title="variable">v</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#513eaa3129601ecbcc9e188a80d6155b"><span class="id" title="notation">*+</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#n"><span class="id" title="variable">n</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#5aa7bcc9ac922e77482767d325fdbb69"><span class="id" title="notation">)</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.scaler_suml"><span class="id" title="lemma">scaler_suml</span></a> <span class="id" title="var">v</span> <span class="id" title="var">I</span> <span class="id" title="var">r</span> (<span class="id" title="var">P</span> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#pred"><span class="id" title="definition">pred</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#I"><span class="id" title="variable">I</span></a>) <span class="id" title="var">F</span> :<br/>
+&nbsp;&nbsp;<a class="idref" href="mathcomp.algebra.ssralg.html#5aa7bcc9ac922e77482767d325fdbb69"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#664ae738a3286983847c80e5ee4c8c6b"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#664ae738a3286983847c80e5ee4c8c6b"><span class="id" title="notation">sum_</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#664ae738a3286983847c80e5ee4c8c6b"><span class="id" title="notation">(</span></a><span class="id" title="var">i</span> <a class="idref" href="mathcomp.algebra.ssralg.html#664ae738a3286983847c80e5ee4c8c6b"><span class="id" title="notation">&lt;-</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#r"><span class="id" title="variable">r</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#664ae738a3286983847c80e5ee4c8c6b"><span class="id" title="notation">|</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#P"><span class="id" title="variable">P</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#i"><span class="id" title="variable">i</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#664ae738a3286983847c80e5ee4c8c6b"><span class="id" title="notation">)</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#F"><span class="id" title="variable">F</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#i"><span class="id" title="variable">i</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#5aa7bcc9ac922e77482767d325fdbb69"><span class="id" title="notation">)</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#5aa7bcc9ac922e77482767d325fdbb69"><span class="id" title="notation">*:</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#v"><span class="id" title="variable">v</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#664ae738a3286983847c80e5ee4c8c6b"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#664ae738a3286983847c80e5ee4c8c6b"><span class="id" title="notation">sum_</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#664ae738a3286983847c80e5ee4c8c6b"><span class="id" title="notation">(</span></a><span class="id" title="var">i</span> <a class="idref" href="mathcomp.algebra.ssralg.html#664ae738a3286983847c80e5ee4c8c6b"><span class="id" title="notation">&lt;-</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#r"><span class="id" title="variable">r</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#664ae738a3286983847c80e5ee4c8c6b"><span class="id" title="notation">|</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#P"><span class="id" title="variable">P</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#i"><span class="id" title="variable">i</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#664ae738a3286983847c80e5ee4c8c6b"><span class="id" title="notation">)</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#F"><span class="id" title="variable">F</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#i"><span class="id" title="variable">i</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#5aa7bcc9ac922e77482767d325fdbb69"><span class="id" title="notation">*:</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#v"><span class="id" title="variable">v</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.scaler_sumr"><span class="id" title="lemma">scaler_sumr</span></a> <span class="id" title="var">a</span> <span class="id" title="var">I</span> <span class="id" title="var">r</span> (<span class="id" title="var">P</span> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#pred"><span class="id" title="definition">pred</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#I"><span class="id" title="variable">I</span></a>) (<span class="id" title="var">F</span> : <a class="idref" href="mathcomp.algebra.ssralg.html#I"><span class="id" title="variable">I</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.LmoduleTheory.V"><span class="id" title="variable">V</span></a>) :<br/>
+&nbsp;&nbsp;<a class="idref" href="mathcomp.algebra.ssralg.html#a"><span class="id" title="variable">a</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#5aa7bcc9ac922e77482767d325fdbb69"><span class="id" title="notation">*:</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#5aa7bcc9ac922e77482767d325fdbb69"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#664ae738a3286983847c80e5ee4c8c6b"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#664ae738a3286983847c80e5ee4c8c6b"><span class="id" title="notation">sum_</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#664ae738a3286983847c80e5ee4c8c6b"><span class="id" title="notation">(</span></a><span class="id" title="var">i</span> <a class="idref" href="mathcomp.algebra.ssralg.html#664ae738a3286983847c80e5ee4c8c6b"><span class="id" title="notation">&lt;-</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#r"><span class="id" title="variable">r</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#664ae738a3286983847c80e5ee4c8c6b"><span class="id" title="notation">|</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#P"><span class="id" title="variable">P</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#i"><span class="id" title="variable">i</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#664ae738a3286983847c80e5ee4c8c6b"><span class="id" title="notation">)</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#F"><span class="id" title="variable">F</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#i"><span class="id" title="variable">i</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#5aa7bcc9ac922e77482767d325fdbb69"><span class="id" title="notation">)</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#664ae738a3286983847c80e5ee4c8c6b"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#664ae738a3286983847c80e5ee4c8c6b"><span class="id" title="notation">sum_</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#664ae738a3286983847c80e5ee4c8c6b"><span class="id" title="notation">(</span></a><span class="id" title="var">i</span> <a class="idref" href="mathcomp.algebra.ssralg.html#664ae738a3286983847c80e5ee4c8c6b"><span class="id" title="notation">&lt;-</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#r"><span class="id" title="variable">r</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#664ae738a3286983847c80e5ee4c8c6b"><span class="id" title="notation">|</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#P"><span class="id" title="variable">P</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#i"><span class="id" title="variable">i</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#664ae738a3286983847c80e5ee4c8c6b"><span class="id" title="notation">)</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#a"><span class="id" title="variable">a</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#5aa7bcc9ac922e77482767d325fdbb69"><span class="id" title="notation">*:</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#F"><span class="id" title="variable">F</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#i"><span class="id" title="variable">i</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Section</span> <a name="GRing.LmoduleTheory.ClosedPredicates"><span class="id" title="section">ClosedPredicates</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Variable</span> <a name="GRing.LmoduleTheory.ClosedPredicates.S"><span class="id" title="variable">S</span></a> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#predPredType"><span class="id" title="definition">predPredType</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.LmoduleTheory.V"><span class="id" title="variable">V</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.scaler_closed"><span class="id" title="definition">scaler_closed</span></a> := <span class="id" title="keyword">∀</span> <span class="id" title="var">a</span>, <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#5c59b35a0b51db520cf1fba473ecf127"><span class="id" title="notation">{</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#5c59b35a0b51db520cf1fba473ecf127"><span class="id" title="notation">in</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.LmoduleTheory.ClosedPredicates.S"><span class="id" title="variable">S</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#5c59b35a0b51db520cf1fba473ecf127"><span class="id" title="notation">,</span></a> <span class="id" title="keyword">∀</span> <span class="id" title="var">v</span>, <a class="idref" href="mathcomp.algebra.ssralg.html#a"><span class="id" title="variable">a</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#5aa7bcc9ac922e77482767d325fdbb69"><span class="id" title="notation">*:</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#v"><span class="id" title="variable">v</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">\</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">in</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.LmoduleTheory.ClosedPredicates.S"><span class="id" title="variable">S</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#5c59b35a0b51db520cf1fba473ecf127"><span class="id" title="notation">}</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.linear_closed"><span class="id" title="definition">linear_closed</span></a> := <span class="id" title="keyword">∀</span> <span class="id" title="var">a</span>, <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#2bba53854f326a714d377124cccec593"><span class="id" title="notation">{</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#2bba53854f326a714d377124cccec593"><span class="id" title="notation">in</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.LmoduleTheory.ClosedPredicates.S"><span class="id" title="variable">S</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#2bba53854f326a714d377124cccec593"><span class="id" title="notation">&amp;,</span></a> <span class="id" title="keyword">∀</span> <span class="id" title="var">u</span> <span class="id" title="var">v</span>, <a class="idref" href="mathcomp.algebra.ssralg.html#a"><span class="id" title="variable">a</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#5aa7bcc9ac922e77482767d325fdbb69"><span class="id" title="notation">*:</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#u"><span class="id" title="variable">u</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#338c5345074fd3586073fd29273c138a"><span class="id" title="notation">+</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#v"><span class="id" title="variable">v</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">\</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">in</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.LmoduleTheory.ClosedPredicates.S"><span class="id" title="variable">S</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#2bba53854f326a714d377124cccec593"><span class="id" title="notation">}</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.submod_closed"><span class="id" title="definition">submod_closed</span></a> := 0 <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">\</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">in</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.LmoduleTheory.ClosedPredicates.S"><span class="id" title="variable">S</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d82a7d96d3659d805ffe732283716822"><span class="id" title="notation">∧</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.linear_closed"><span class="id" title="definition">linear_closed</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.linear_closedB"><span class="id" title="lemma">linear_closedB</span></a> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.linear_closed"><span class="id" title="definition">linear_closed</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.subr_2closed"><span class="id" title="definition">subr_2closed</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.LmoduleTheory.ClosedPredicates.S"><span class="id" title="variable">S</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.submod_closedB"><span class="id" title="lemma">submod_closedB</span></a> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.submod_closed"><span class="id" title="definition">submod_closed</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.zmod_closed"><span class="id" title="definition">zmod_closed</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.LmoduleTheory.ClosedPredicates.S"><span class="id" title="variable">S</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.submod_closedZ"><span class="id" title="lemma">submod_closedZ</span></a> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.submod_closed"><span class="id" title="definition">submod_closed</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.scaler_closed"><span class="id" title="definition">scaler_closed</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">End</span> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.LmoduleTheory.ClosedPredicates"><span class="id" title="section">ClosedPredicates</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">End</span> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.LmoduleTheory"><span class="id" title="section">LmoduleTheory</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Module</span> <a name="GRing.Lalgebra"><span class="id" title="module">Lalgebra</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Lalgebra.axiom"><span class="id" title="definition">axiom</span></a> (<span class="id" title="var">R</span> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Ring.Exports.ringType"><span class="id" title="abbreviation">ringType</span></a>) (<span class="id" title="var">V</span> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Lmodule.Exports.lmodType"><span class="id" title="abbreviation">lmodType</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#R"><span class="id" title="variable">R</span></a>) (<span class="id" title="var">mul</span> : <a class="idref" href="mathcomp.algebra.ssralg.html#V"><span class="id" title="variable">V</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#V"><span class="id" title="variable">V</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#V"><span class="id" title="variable">V</span></a>) :=<br/>
+&nbsp;&nbsp;<span class="id" title="keyword">∀</span> <span class="id" title="var">a</span> <span class="id" title="var">u</span> <span class="id" title="var">v</span>, <a class="idref" href="mathcomp.algebra.ssralg.html#a"><span class="id" title="variable">a</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#5aa7bcc9ac922e77482767d325fdbb69"><span class="id" title="notation">*:</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#mul"><span class="id" title="variable">mul</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#u"><span class="id" title="variable">u</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#v"><span class="id" title="variable">v</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#mul"><span class="id" title="variable">mul</span></a> (<a class="idref" href="mathcomp.algebra.ssralg.html#a"><span class="id" title="variable">a</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#5aa7bcc9ac922e77482767d325fdbb69"><span class="id" title="notation">*:</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#u"><span class="id" title="variable">u</span></a>) <a class="idref" href="mathcomp.algebra.ssralg.html#v"><span class="id" title="variable">v</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Section</span> <a name="GRing.Lalgebra.ClassDef"><span class="id" title="section">ClassDef</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Variable</span> <a name="GRing.Lalgebra.ClassDef.R"><span class="id" title="variable">R</span></a> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Ring.Exports.ringType"><span class="id" title="abbreviation">ringType</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Record</span> <a name="GRing.Lalgebra.class_of"><span class="id" title="record">class_of</span></a> (<span class="id" title="var">T</span> : <span class="id" title="keyword">Type</span>) : <span class="id" title="keyword">Type</span> := <a name="GRing.Lalgebra.Class"><span class="id" title="constructor">Class</span></a> {<br/>
+&nbsp;&nbsp;<a name="GRing.Lalgebra.base"><span class="id" title="projection">base</span></a> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Ring.class_of"><span class="id" title="record">Ring.class_of</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#T"><span class="id" title="variable">T</span></a>;<br/>
+&nbsp;&nbsp;<a name="GRing.Lalgebra.mixin"><span class="id" title="projection">mixin</span></a> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Lmodule.mixin_of"><span class="id" title="record">Lmodule.mixin_of</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Lalgebra.ClassDef.R"><span class="id" title="variable">R</span></a> (<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Zmodule.Pack"><span class="id" title="constructor">Zmodule.Pack</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#base"><span class="id" title="method">base</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#T"><span class="id" title="variable">T</span></a>);<br/>
+&nbsp;&nbsp;<a name="GRing.Lalgebra.ext"><span class="id" title="projection">ext</span></a> : @<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Lalgebra.axiom"><span class="id" title="definition">axiom</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Lalgebra.ClassDef.R"><span class="id" title="variable">R</span></a> (<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Lmodule.Pack"><span class="id" title="constructor">Lmodule.Pack</span></a> <span class="id" title="var">_</span> (<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Lmodule.Class"><span class="id" title="constructor">Lmodule.Class</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#mixin"><span class="id" title="method">mixin</span></a>) <a class="idref" href="mathcomp.algebra.ssralg.html#T"><span class="id" title="variable">T</span></a>) (<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Ring.mul"><span class="id" title="projection">Ring.mul</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#base"><span class="id" title="method">base</span></a>)<br/>
+}.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Lalgebra.base2"><span class="id" title="definition">base2</span></a> <span class="id" title="var">R</span> <span class="id" title="var">m</span> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Lmodule.Class"><span class="id" title="constructor">Lmodule.Class</span></a> (@<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Lalgebra.mixin"><span class="id" title="projection">mixin</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#R"><span class="id" title="variable">R</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#m"><span class="id" title="variable">m</span></a>).<br/>
+
+<br/>
+<span class="id" title="keyword">Structure</span> <a name="GRing.Lalgebra.type"><span class="id" title="record">type</span></a> (<span class="id" title="var">phR</span> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssreflect.html#phant"><span class="id" title="inductive">phant</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Lalgebra.ClassDef.R"><span class="id" title="variable">R</span></a>) := <a name="GRing.Lalgebra.Pack"><span class="id" title="constructor">Pack</span></a> {<a name="GRing.Lalgebra.sort"><span class="id" title="projection">sort</span></a>; <span class="id" title="var">_</span> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Lalgebra.class_of"><span class="id" title="record">class_of</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#sort"><span class="id" title="method">sort</span></a>; <span class="id" title="var">_</span> : <span class="id" title="keyword">Type</span>}.<br/>
+<span class="id" title="keyword">Variable</span> (<a name="GRing.Lalgebra.ClassDef.phR"><span class="id" title="variable">phR</span></a> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssreflect.html#phant"><span class="id" title="inductive">phant</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Lalgebra.ClassDef.R"><span class="id" title="variable">R</span></a>) (<a name="GRing.Lalgebra.ClassDef.T"><span class="id" title="variable">T</span></a> : <span class="id" title="keyword">Type</span>) (<a name="GRing.Lalgebra.ClassDef.cT"><span class="id" title="variable">cT</span></a> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Lalgebra.type"><span class="id" title="record">type</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#phR"><span class="id" title="variable">phR</span></a>).<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Lalgebra.class"><span class="id" title="definition">class</span></a> := <span class="id" title="keyword">let</span>: <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Lalgebra.Pack"><span class="id" title="constructor">Pack</span></a> <span class="id" title="var">_</span> <span class="id" title="var">c</span> <span class="id" title="var">_</span> <span class="id" title="keyword">as</span> <span class="id" title="var">cT'</span> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Lalgebra.ClassDef.cT"><span class="id" title="variable">cT</span></a> <span class="id" title="keyword">return</span> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Lalgebra.class_of"><span class="id" title="record">class_of</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#cT'"><span class="id" title="variable">cT'</span></a> <span class="id" title="tactic">in</span> <span class="id" title="var">c</span>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Lalgebra.clone"><span class="id" title="definition">clone</span></a> <span class="id" title="var">c</span> <span class="id" title="keyword">of</span> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#phant_id"><span class="id" title="definition">phant_id</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Lalgebra.class"><span class="id" title="definition">class</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#c"><span class="id" title="variable">c</span></a> := @<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Lalgebra.Pack"><span class="id" title="constructor">Pack</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Lalgebra.ClassDef.phR"><span class="id" title="variable">phR</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Lalgebra.ClassDef.T"><span class="id" title="variable">T</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#c"><span class="id" title="variable">c</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Lalgebra.ClassDef.T"><span class="id" title="variable">T</span></a>.<br/>
+<span class="id" title="keyword">Let</span> <a name="GRing.Lalgebra.ClassDef.xT"><span class="id" title="variable">xT</span></a> := <span class="id" title="keyword">let</span>: <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Lalgebra.Pack"><span class="id" title="constructor">Pack</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="mathcomp.algebra.ssralg.html#GRing.Lalgebra.ClassDef.cT"><span class="id" title="variable">cT</span></a> <span class="id" title="tactic">in</span> <span class="id" title="var">T</span>.<br/>
+<span class="id" title="keyword">Notation</span> <a name="GRing.Lalgebra.xclass"><span class="id" title="abbreviation">xclass</span></a> := (<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Lalgebra.class"><span class="id" title="definition">class</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssreflect.html#4509b22bf26e3d6d771897e22bd8bc8f"><span class="id" title="notation">:</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Lalgebra.class_of"><span class="id" title="record">class_of</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Lalgebra.ClassDef.xT"><span class="id" title="variable">xT</span></a>).<br/>
+
+<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Lalgebra.pack"><span class="id" title="definition">pack</span></a> <span class="id" title="var">T</span> <span class="id" title="var">b0</span> <span class="id" title="var">mul0</span> (<span class="id" title="var">axT</span> : @<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Lalgebra.axiom"><span class="id" title="definition">axiom</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Lalgebra.ClassDef.R"><span class="id" title="variable">R</span></a> (@<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Lmodule.Pack"><span class="id" title="constructor">Lmodule.Pack</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Lalgebra.ClassDef.R"><span class="id" title="variable">R</span></a> <span class="id" title="var">_</span> <a class="idref" href="mathcomp.algebra.ssralg.html#T"><span class="id" title="variable">T</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#b0"><span class="id" title="variable">b0</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#T"><span class="id" title="variable">T</span></a>) <a class="idref" href="mathcomp.algebra.ssralg.html#mul0"><span class="id" title="variable">mul0</span></a>) :=<br/>
+&nbsp;&nbsp;<span class="id" title="keyword">fun</span> <span class="id" title="var">bT</span> <span class="id" title="var">b</span> &amp; <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#phant_id"><span class="id" title="definition">phant_id</span></a> (<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Ring.class"><span class="id" title="definition">Ring.class</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#bT"><span class="id" title="variable">bT</span></a>) (<a class="idref" href="mathcomp.algebra.ssralg.html#b"><span class="id" title="variable">b</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssreflect.html#4509b22bf26e3d6d771897e22bd8bc8f"><span class="id" title="notation">:</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Ring.class_of"><span class="id" title="record">Ring.class_of</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#T"><span class="id" title="variable">T</span></a>) ⇒<br/>
+&nbsp;&nbsp;<span class="id" title="keyword">fun</span> <span class="id" title="var">mT</span> <span class="id" title="var">m</span> &amp; <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#phant_id"><span class="id" title="definition">phant_id</span></a> (@<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Lmodule.class"><span class="id" title="definition">Lmodule.class</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Lalgebra.ClassDef.R"><span class="id" title="variable">R</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Lalgebra.ClassDef.phR"><span class="id" title="variable">phR</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#mT"><span class="id" title="variable">mT</span></a>) (@<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Lmodule.Class"><span class="id" title="constructor">Lmodule.Class</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Lalgebra.ClassDef.R"><span class="id" title="variable">R</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#T"><span class="id" title="variable">T</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#b"><span class="id" title="variable">b</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#m"><span class="id" title="variable">m</span></a>) ⇒<br/>
+&nbsp;&nbsp;<span class="id" title="keyword">fun</span> <span class="id" title="var">ax</span> &amp; <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#phant_id"><span class="id" title="definition">phant_id</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#axT"><span class="id" title="variable">axT</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#ax"><span class="id" title="variable">ax</span></a> ⇒<br/>
+&nbsp;&nbsp;<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Lalgebra.Pack"><span class="id" title="constructor">Pack</span></a> (<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssreflect.html#Phant"><span class="id" title="constructor">Phant</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Lalgebra.ClassDef.R"><span class="id" title="variable">R</span></a>) (@<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Lalgebra.Class"><span class="id" title="constructor">Class</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#T"><span class="id" title="variable">T</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#b"><span class="id" title="variable">b</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#m"><span class="id" title="variable">m</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#ax"><span class="id" title="variable">ax</span></a>) <a class="idref" href="mathcomp.algebra.ssralg.html#T"><span class="id" title="variable">T</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Lalgebra.eqType"><span class="id" title="definition">eqType</span></a> := @<a class="idref" href="mathcomp.ssreflect.eqtype.html#Equality.Pack"><span class="id" title="constructor">Equality.Pack</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Lalgebra.ClassDef.cT"><span class="id" title="variable">cT</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Lalgebra.xclass"><span class="id" title="abbreviation">xclass</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Lalgebra.ClassDef.xT"><span class="id" title="variable">xT</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Lalgebra.choiceType"><span class="id" title="definition">choiceType</span></a> := @<a class="idref" href="mathcomp.ssreflect.choice.html#Choice.Pack"><span class="id" title="constructor">Choice.Pack</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Lalgebra.ClassDef.cT"><span class="id" title="variable">cT</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Lalgebra.xclass"><span class="id" title="abbreviation">xclass</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Lalgebra.ClassDef.xT"><span class="id" title="variable">xT</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Lalgebra.zmodType"><span class="id" title="definition">zmodType</span></a> := @<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Zmodule.Pack"><span class="id" title="constructor">Zmodule.Pack</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Lalgebra.ClassDef.cT"><span class="id" title="variable">cT</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Lalgebra.xclass"><span class="id" title="abbreviation">xclass</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Lalgebra.ClassDef.xT"><span class="id" title="variable">xT</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Lalgebra.ringType"><span class="id" title="definition">ringType</span></a> := @<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Ring.Pack"><span class="id" title="constructor">Ring.Pack</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Lalgebra.ClassDef.cT"><span class="id" title="variable">cT</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Lalgebra.xclass"><span class="id" title="abbreviation">xclass</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Lalgebra.ClassDef.xT"><span class="id" title="variable">xT</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Lalgebra.lmodType"><span class="id" title="definition">lmodType</span></a> := @<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Lmodule.Pack"><span class="id" title="constructor">Lmodule.Pack</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Lalgebra.ClassDef.R"><span class="id" title="variable">R</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Lalgebra.ClassDef.phR"><span class="id" title="variable">phR</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Lalgebra.ClassDef.cT"><span class="id" title="variable">cT</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Lalgebra.xclass"><span class="id" title="abbreviation">xclass</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Lalgebra.ClassDef.xT"><span class="id" title="variable">xT</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Lalgebra.lmod_ringType"><span class="id" title="definition">lmod_ringType</span></a> := @<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Lmodule.Pack"><span class="id" title="constructor">Lmodule.Pack</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Lalgebra.ClassDef.R"><span class="id" title="variable">R</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Lalgebra.ClassDef.phR"><span class="id" title="variable">phR</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Lalgebra.ringType"><span class="id" title="definition">ringType</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Lalgebra.xclass"><span class="id" title="abbreviation">xclass</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Lalgebra.ClassDef.xT"><span class="id" title="variable">xT</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">End</span> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Lalgebra.ClassDef"><span class="id" title="section">ClassDef</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Module</span> <a name="GRing.Lalgebra.Exports"><span class="id" title="module">Exports</span></a>.<br/>
+<span class="id" title="keyword">Coercion</span> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Lalgebra.base"><span class="id" title="projection">base</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Lalgebra.base"><span class="id" title="projection">:</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Lalgebra.base"><span class="id" title="projection">class_of</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Lalgebra.base"><span class="id" title="projection">&gt;-&gt;</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Lalgebra.base"><span class="id" title="projection">Ring.class_of</span></a>.<br/>
+<span class="id" title="keyword">Coercion</span> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Lalgebra.base2"><span class="id" title="definition">base2</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Lalgebra.base2"><span class="id" title="definition">:</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Lalgebra.base2"><span class="id" title="definition">class_of</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Lalgebra.base2"><span class="id" title="definition">&gt;-&gt;</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Lalgebra.base2"><span class="id" title="definition">Lmodule.class_of</span></a>.<br/>
+<span class="id" title="keyword">Coercion</span> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Lalgebra.sort"><span class="id" title="projection">sort</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Lalgebra.sort"><span class="id" title="projection">:</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Lalgebra.sort"><span class="id" title="projection">type</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Lalgebra.sort"><span class="id" title="projection">&gt;-&gt;</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Lalgebra.sort"><span class="id" title="projection">Sortclass</span></a>.<br/>
+<span class="id" title="keyword">Coercion</span> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Lalgebra.eqType"><span class="id" title="definition">eqType</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Lalgebra.eqType"><span class="id" title="definition">:</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Lalgebra.eqType"><span class="id" title="definition">type</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Lalgebra.eqType"><span class="id" title="definition">&gt;-&gt;</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Lalgebra.eqType"><span class="id" title="definition">Equality.type</span></a>.<br/>
+<span class="id" title="keyword">Canonical</span> <span class="id" title="var">eqType</span>.<br/>
+<span class="id" title="keyword">Coercion</span> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Lalgebra.choiceType"><span class="id" title="definition">choiceType</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Lalgebra.choiceType"><span class="id" title="definition">:</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Lalgebra.choiceType"><span class="id" title="definition">type</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Lalgebra.choiceType"><span class="id" title="definition">&gt;-&gt;</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Lalgebra.choiceType"><span class="id" title="definition">Choice.type</span></a>.<br/>
+<span class="id" title="keyword">Canonical</span> <span class="id" title="var">choiceType</span>.<br/>
+<span class="id" title="keyword">Coercion</span> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Lalgebra.zmodType"><span class="id" title="definition">zmodType</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Lalgebra.zmodType"><span class="id" title="definition">:</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Lalgebra.zmodType"><span class="id" title="definition">type</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Lalgebra.zmodType"><span class="id" title="definition">&gt;-&gt;</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Lalgebra.zmodType"><span class="id" title="definition">Zmodule.type</span></a>.<br/>
+<span class="id" title="keyword">Canonical</span> <span class="id" title="var">zmodType</span>.<br/>
+<span class="id" title="keyword">Coercion</span> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Lalgebra.ringType"><span class="id" title="definition">ringType</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Lalgebra.ringType"><span class="id" title="definition">:</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Lalgebra.ringType"><span class="id" title="definition">type</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Lalgebra.ringType"><span class="id" title="definition">&gt;-&gt;</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Lalgebra.ringType"><span class="id" title="definition">Ring.type</span></a>.<br/>
+<span class="id" title="keyword">Canonical</span> <span class="id" title="var">ringType</span>.<br/>
+<span class="id" title="keyword">Coercion</span> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Lalgebra.lmodType"><span class="id" title="definition">lmodType</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Lalgebra.lmodType"><span class="id" title="definition">:</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Lalgebra.lmodType"><span class="id" title="definition">type</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Lalgebra.lmodType"><span class="id" title="definition">&gt;-&gt;</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Lalgebra.lmodType"><span class="id" title="definition">Lmodule.type</span></a>.<br/>
+<span class="id" title="keyword">Canonical</span> <span class="id" title="var">lmodType</span>.<br/>
+<span class="id" title="keyword">Canonical</span> <span class="id" title="var">lmod_ringType</span>.<br/>
+<span class="id" title="keyword">Notation</span> <a name="GRing.Lalgebra.Exports.lalgType"><span class="id" title="abbreviation">lalgType</span></a> <span class="id" title="var">R</span> := (<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Lalgebra.type"><span class="id" title="record">type</span></a> (<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssreflect.html#Phant"><span class="id" title="constructor">Phant</span></a> <span class="id" title="var">R</span>)).<br/>
+<span class="id" title="keyword">Notation</span> <a name="GRing.Lalgebra.Exports.LalgType"><span class="id" title="abbreviation">LalgType</span></a> <span class="id" title="var">R</span> <span class="id" title="var">T</span> <span class="id" title="var">a</span> := (@<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Lalgebra.pack"><span class="id" title="definition">pack</span></a> <span class="id" title="var">_</span> (<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssreflect.html#Phant"><span class="id" title="constructor">Phant</span></a> <span class="id" title="var">R</span>) <span class="id" title="var">T</span> <span class="id" title="var">_</span> <span class="id" title="var">_</span> <span class="id" title="var">a</span> <span class="id" title="var">_</span> <span class="id" title="var">_</span> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#id"><span class="id" title="abbreviation">id</span></a> <span class="id" title="var">_</span> <span class="id" title="var">_</span> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#id"><span class="id" title="abbreviation">id</span></a> <span class="id" title="var">_</span> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#id"><span class="id" title="abbreviation">id</span></a>).<br/>
+<span class="id" title="keyword">Notation</span> <a name="d808753be7e4a961b68bffadddfcdf30"><span class="id" title="notation">&quot;</span></a>[ 'lalgType' R 'of' T 'for' cT ]" := (@<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Lalgebra.clone"><span class="id" title="definition">clone</span></a> <span class="id" title="var">_</span> (<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssreflect.html#Phant"><span class="id" title="constructor">Phant</span></a> <span class="id" title="var">R</span>) <span class="id" title="var">T</span> <span class="id" title="var">cT</span> <span class="id" title="var">_</span> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#idfun"><span class="id" title="abbreviation">idfun</span></a>)<br/>
+&nbsp;&nbsp;(<span class="id" title="tactic">at</span> <span class="id" title="keyword">level</span> 0, <span class="id" title="var">format</span> "[ 'lalgType' R 'of' T 'for' cT ]")<br/>
+&nbsp;&nbsp;: <span class="id" title="var">form_scope</span>.<br/>
+<span class="id" title="keyword">Notation</span> <a name="e01b377a4a68dd74ced1f2b445ae1568"><span class="id" title="notation">&quot;</span></a>[ 'lalgType' R 'of' T ]" := (@<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Lalgebra.clone"><span class="id" title="definition">clone</span></a> <span class="id" title="var">_</span> (<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssreflect.html#Phant"><span class="id" title="constructor">Phant</span></a> <span class="id" title="var">R</span>) <span class="id" title="var">T</span> <span class="id" title="var">_</span> <span class="id" title="var">_</span> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#id"><span class="id" title="abbreviation">id</span></a>)<br/>
+&nbsp;&nbsp;(<span class="id" title="tactic">at</span> <span class="id" title="keyword">level</span> 0, <span class="id" title="var">format</span> "[ 'lalgType' R 'of' T ]") : <span class="id" title="var">form_scope</span>.<br/>
+<span class="id" title="keyword">End</span> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Lalgebra.Exports"><span class="id" title="module">Exports</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">End</span> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Lalgebra"><span class="id" title="module">Lalgebra</span></a>.<br/>
+<span class="id" title="keyword">Import</span> <span class="id" title="var">Lalgebra.Exports</span>.<br/>
+
+<br/>
+</div>
+
+<div class="doc">
+ Scalar injection (see the definition of in_alg A below).
+</div>
+<div class="code">
+
+<br/>
+</div>
+
+<div class="doc">
+ Regular ring algebra tag.
+</div>
+<div class="code">
+<span class="id" title="keyword">Definition</span> <a name="GRing.regular"><span class="id" title="definition">regular</span></a> <span class="id" title="var">R</span> : <span class="id" title="keyword">Type</span> := <a class="idref" href="mathcomp.algebra.ssralg.html#R"><span class="id" title="variable">R</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Section</span> <a name="GRing.LalgebraTheory"><span class="id" title="section">LalgebraTheory</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Variables</span> (<a name="GRing.LalgebraTheory.R"><span class="id" title="variable">R</span></a> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ringType"><span class="id" title="abbreviation">ringType</span></a>) (<a name="GRing.LalgebraTheory.A"><span class="id" title="variable">A</span></a> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.lalgType"><span class="id" title="abbreviation">lalgType</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#R"><span class="id" title="variable">R</span></a>).<br/>
+<span class="id" title="keyword">Implicit</span> <span class="id" title="keyword">Types</span> <span class="id" title="var">x</span> <span class="id" title="var">y</span> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.LalgebraTheory.A"><span class="id" title="variable">A</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.scalerAl"><span class="id" title="lemma">scalerAl</span></a> <span class="id" title="var">k</span> (<span class="id" title="var">x</span> <span class="id" title="var">y</span> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.LalgebraTheory.A"><span class="id" title="variable">A</span></a>) : <a class="idref" href="mathcomp.algebra.ssralg.html#k"><span class="id" title="variable">k</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#5aa7bcc9ac922e77482767d325fdbb69"><span class="id" title="notation">*:</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#5aa7bcc9ac922e77482767d325fdbb69"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#ed99e7035d9a1f8a2c1515be81ac2e5f"><span class="id" title="notation">×</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#y"><span class="id" title="variable">y</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#5aa7bcc9ac922e77482767d325fdbb69"><span class="id" title="notation">)</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#k"><span class="id" title="variable">k</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#5aa7bcc9ac922e77482767d325fdbb69"><span class="id" title="notation">*:</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#ed99e7035d9a1f8a2c1515be81ac2e5f"><span class="id" title="notation">×</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#y"><span class="id" title="variable">y</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.mulr_algl"><span class="id" title="lemma">mulr_algl</span></a> <span class="id" title="var">a</span> <span class="id" title="var">x</span> : <a class="idref" href="mathcomp.algebra.ssralg.html#a"><span class="id" title="variable">a</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#a9486b60fd4d51d8247008b3f8b21d21"><span class="id" title="notation">%:</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#a9486b60fd4d51d8247008b3f8b21d21"><span class="id" title="notation">A</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#ed99e7035d9a1f8a2c1515be81ac2e5f"><span class="id" title="notation">×</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#a"><span class="id" title="variable">a</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#5aa7bcc9ac922e77482767d325fdbb69"><span class="id" title="notation">*:</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Canonical</span> <span class="id" title="var">regular_eqType</span> := <a class="idref" href="mathcomp.ssreflect.eqtype.html#cb062fd562aed512787df99359c6e3f2"><span class="id" title="notation">[</span></a><a class="idref" href="mathcomp.ssreflect.eqtype.html#cb062fd562aed512787df99359c6e3f2"><span class="id" title="notation">eqType</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#cb062fd562aed512787df99359c6e3f2"><span class="id" title="notation">of</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.LalgebraTheory.R"><span class="id" title="variable">R</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#44fd865ce10e1d30970d09bdd85a0c8e"><span class="id" title="notation">^</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#44fd865ce10e1d30970d09bdd85a0c8e"><span class="id" title="notation">o</span></a><a class="idref" href="mathcomp.ssreflect.eqtype.html#cb062fd562aed512787df99359c6e3f2"><span class="id" title="notation">]</span></a>.<br/>
+<span class="id" title="keyword">Canonical</span> <span class="id" title="var">regular_choiceType</span> := <a class="idref" href="mathcomp.ssreflect.choice.html#1731a28227324c9e5fc49499029635b3"><span class="id" title="notation">[</span></a><a class="idref" href="mathcomp.ssreflect.choice.html#1731a28227324c9e5fc49499029635b3"><span class="id" title="notation">choiceType</span></a> <a class="idref" href="mathcomp.ssreflect.choice.html#1731a28227324c9e5fc49499029635b3"><span class="id" title="notation">of</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.LalgebraTheory.R"><span class="id" title="variable">R</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#44fd865ce10e1d30970d09bdd85a0c8e"><span class="id" title="notation">^</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#44fd865ce10e1d30970d09bdd85a0c8e"><span class="id" title="notation">o</span></a><a class="idref" href="mathcomp.ssreflect.choice.html#1731a28227324c9e5fc49499029635b3"><span class="id" title="notation">]</span></a>.<br/>
+<span class="id" title="keyword">Canonical</span> <span class="id" title="var">regular_zmodType</span> := <a class="idref" href="mathcomp.algebra.ssralg.html#af6385fc2df84aeeec6855073f75cc68"><span class="id" title="notation">[</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#af6385fc2df84aeeec6855073f75cc68"><span class="id" title="notation">zmodType</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#af6385fc2df84aeeec6855073f75cc68"><span class="id" title="notation">of</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.LalgebraTheory.R"><span class="id" title="variable">R</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#44fd865ce10e1d30970d09bdd85a0c8e"><span class="id" title="notation">^</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#44fd865ce10e1d30970d09bdd85a0c8e"><span class="id" title="notation">o</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#af6385fc2df84aeeec6855073f75cc68"><span class="id" title="notation">]</span></a>.<br/>
+<span class="id" title="keyword">Canonical</span> <span class="id" title="var">regular_ringType</span> := <a class="idref" href="mathcomp.algebra.ssralg.html#dee4f3431027813095272c568fc6b5ce"><span class="id" title="notation">[</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#dee4f3431027813095272c568fc6b5ce"><span class="id" title="notation">ringType</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#dee4f3431027813095272c568fc6b5ce"><span class="id" title="notation">of</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.LalgebraTheory.R"><span class="id" title="variable">R</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#44fd865ce10e1d30970d09bdd85a0c8e"><span class="id" title="notation">^</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#44fd865ce10e1d30970d09bdd85a0c8e"><span class="id" title="notation">o</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#dee4f3431027813095272c568fc6b5ce"><span class="id" title="notation">]</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.regular_lmodMixin"><span class="id" title="definition">regular_lmodMixin</span></a> :=<br/>
+&nbsp;&nbsp;<span class="id" title="keyword">let</span> <span class="id" title="var">mkMixin</span> := @<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Mixin"><span class="id" title="constructor">Lmodule.Mixin</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.LalgebraTheory.R"><span class="id" title="variable">R</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.regular_zmodType"><span class="id" title="definition">regular_zmodType</span></a> (@<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.mul"><span class="id" title="definition">mul</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.LalgebraTheory.R"><span class="id" title="variable">R</span></a>) <span class="id" title="tactic">in</span><br/>
+&nbsp;&nbsp;<a class="idref" href="mathcomp.algebra.ssralg.html#mkMixin"><span class="id" title="variable">mkMixin</span></a> (@<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.mulrA"><span class="id" title="lemma">mulrA</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.LalgebraTheory.R"><span class="id" title="variable">R</span></a>) (@<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.mul1r"><span class="id" title="lemma">mul1r</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.LalgebraTheory.R"><span class="id" title="variable">R</span></a>) (@<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.mulrDr"><span class="id" title="lemma">mulrDr</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.LalgebraTheory.R"><span class="id" title="variable">R</span></a>) (<span class="id" title="keyword">fun</span> <span class="id" title="var">v</span> <span class="id" title="var">a</span> <span class="id" title="var">b</span> ⇒ <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.mulrDl"><span class="id" title="lemma">mulrDl</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#a"><span class="id" title="variable">a</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#b"><span class="id" title="variable">b</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#v"><span class="id" title="variable">v</span></a>).<br/>
+
+<br/>
+<span class="id" title="keyword">Canonical</span> <span class="id" title="var">regular_lmodType</span> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.LmodType"><span class="id" title="abbreviation">LmodType</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.LalgebraTheory.R"><span class="id" title="variable">R</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.LalgebraTheory.R"><span class="id" title="variable">R</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#44fd865ce10e1d30970d09bdd85a0c8e"><span class="id" title="notation">^</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#44fd865ce10e1d30970d09bdd85a0c8e"><span class="id" title="notation">o</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.regular_lmodMixin"><span class="id" title="definition">regular_lmodMixin</span></a>.<br/>
+<span class="id" title="keyword">Canonical</span> <span class="id" title="var">regular_lalgType</span> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.LalgType"><span class="id" title="abbreviation">LalgType</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.LalgebraTheory.R"><span class="id" title="variable">R</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.LalgebraTheory.R"><span class="id" title="variable">R</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#44fd865ce10e1d30970d09bdd85a0c8e"><span class="id" title="notation">^</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#44fd865ce10e1d30970d09bdd85a0c8e"><span class="id" title="notation">o</span></a> (@<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.mulrA"><span class="id" title="lemma">mulrA</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.regular_ringType"><span class="id" title="definition">regular_ringType</span></a>).<br/>
+
+<br/>
+<span class="id" title="keyword">Section</span> <a name="GRing.LalgebraTheory.ClosedPredicates"><span class="id" title="section">ClosedPredicates</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Variable</span> <a name="GRing.LalgebraTheory.ClosedPredicates.S"><span class="id" title="variable">S</span></a> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#predPredType"><span class="id" title="definition">predPredType</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.LalgebraTheory.A"><span class="id" title="variable">A</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.subalg_closed"><span class="id" title="definition">subalg_closed</span></a> := <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#962a3cb7af009aedac7986e261646bd1"><span class="id" title="notation">[/\</span></a> 1 <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">\</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">in</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.LalgebraTheory.ClosedPredicates.S"><span class="id" title="variable">S</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#962a3cb7af009aedac7986e261646bd1"><span class="id" title="notation">,</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.linear_closed"><span class="id" title="definition">linear_closed</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.LalgebraTheory.ClosedPredicates.S"><span class="id" title="variable">S</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#962a3cb7af009aedac7986e261646bd1"><span class="id" title="notation">&amp;</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.mulr_2closed"><span class="id" title="definition">mulr_2closed</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.LalgebraTheory.ClosedPredicates.S"><span class="id" title="variable">S</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#962a3cb7af009aedac7986e261646bd1"><span class="id" title="notation">]</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.subalg_closedZ"><span class="id" title="lemma">subalg_closedZ</span></a> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.subalg_closed"><span class="id" title="definition">subalg_closed</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.submod_closed"><span class="id" title="definition">submod_closed</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.LalgebraTheory.ClosedPredicates.S"><span class="id" title="variable">S</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.subalg_closedBM"><span class="id" title="lemma">subalg_closedBM</span></a> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.subalg_closed"><span class="id" title="definition">subalg_closed</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.subring_closed"><span class="id" title="definition">subring_closed</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.LalgebraTheory.ClosedPredicates.S"><span class="id" title="variable">S</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">End</span> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.LalgebraTheory.ClosedPredicates"><span class="id" title="section">ClosedPredicates</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">End</span> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.LalgebraTheory"><span class="id" title="section">LalgebraTheory</span></a>.<br/>
+
+<br/>
+</div>
+
+<div class="doc">
+ Morphism hierarchy.
+</div>
+<div class="code">
+
+<br/>
+<span class="id" title="keyword">Module</span> <a name="GRing.Additive"><span class="id" title="module">Additive</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Section</span> <a name="GRing.Additive.ClassDef"><span class="id" title="section">ClassDef</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Variables</span> <a name="GRing.Additive.ClassDef.U"><span class="id" title="variable">U</span></a> <a name="GRing.Additive.ClassDef.V"><span class="id" title="variable">V</span></a> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Zmodule.Exports.zmodType"><span class="id" title="abbreviation">zmodType</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Additive.axiom"><span class="id" title="definition">axiom</span></a> (<span class="id" title="var">f</span> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Additive.ClassDef.U"><span class="id" title="variable">U</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Additive.ClassDef.V"><span class="id" title="variable">V</span></a>) := <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#3014e73af2a90fd800d8681479d76336"><span class="id" title="notation">{</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#3014e73af2a90fd800d8681479d76336"><span class="id" title="notation">morph</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#f"><span class="id" title="variable">f</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#3014e73af2a90fd800d8681479d76336"><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/8.8.0/stdlib//Coq.ssr.ssrfun.html#3014e73af2a90fd800d8681479d76336"><span class="id" title="notation">/</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#4d4b9697032429ec46472e6332d1356a"><span class="id" title="notation">-</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#y"><span class="id" title="variable">y</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#3014e73af2a90fd800d8681479d76336"><span class="id" title="notation">}</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Structure</span> <a name="GRing.Additive.map"><span class="id" title="record">map</span></a> (<span class="id" title="var">phUV</span> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssreflect.html#phant"><span class="id" title="inductive">phant</span></a> (<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Additive.ClassDef.U"><span class="id" title="variable">U</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Additive.ClassDef.V"><span class="id" title="variable">V</span></a>)) := <a name="GRing.Additive.Pack"><span class="id" title="constructor">Pack</span></a> {<a name="GRing.Additive.apply"><span class="id" title="projection">apply</span></a>; <span class="id" title="var">_</span> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Additive.axiom"><span class="id" title="definition">axiom</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#apply"><span class="id" title="method">apply</span></a>}.<br/>
+
+<br/>
+<span class="id" title="keyword">Variables</span> (<a name="GRing.Additive.ClassDef.phUV"><span class="id" title="variable">phUV</span></a> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssreflect.html#phant"><span class="id" title="inductive">phant</span></a> (<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Additive.ClassDef.U"><span class="id" title="variable">U</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Additive.ClassDef.V"><span class="id" title="variable">V</span></a>)) (<a name="GRing.Additive.ClassDef.f"><span class="id" title="variable">f</span></a> <a name="GRing.Additive.ClassDef.g"><span class="id" title="variable">g</span></a> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Additive.ClassDef.U"><span class="id" title="variable">U</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Additive.ClassDef.V"><span class="id" title="variable">V</span></a>) (<a name="GRing.Additive.ClassDef.cF"><span class="id" title="variable">cF</span></a> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Additive.map"><span class="id" title="record">map</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#phUV"><span class="id" title="variable">phUV</span></a>).<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Additive.class"><span class="id" title="definition">class</span></a> := <span class="id" title="keyword">let</span>: <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Additive.Pack"><span class="id" title="constructor">Pack</span></a> <span class="id" title="var">_</span> <span class="id" title="var">c</span> <span class="id" title="keyword">as</span> <span class="id" title="var">cF'</span> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Additive.ClassDef.cF"><span class="id" title="variable">cF</span></a> <span class="id" title="keyword">return</span> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Additive.axiom"><span class="id" title="definition">axiom</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#cF'"><span class="id" title="variable">cF'</span></a> <span class="id" title="tactic">in</span> <span class="id" title="var">c</span>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Additive.clone"><span class="id" title="definition">clone</span></a> <span class="id" title="var">fA</span> <span class="id" title="keyword">of</span> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#phant_id"><span class="id" title="definition">phant_id</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Additive.ClassDef.g"><span class="id" title="variable">g</span></a> (<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Additive.apply"><span class="id" title="projection">apply</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Additive.ClassDef.cF"><span class="id" title="variable">cF</span></a>) &amp; <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#phant_id"><span class="id" title="definition">phant_id</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#fA"><span class="id" title="variable">fA</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Additive.class"><span class="id" title="definition">class</span></a> :=<br/>
+&nbsp;&nbsp;@<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Additive.Pack"><span class="id" title="constructor">Pack</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Additive.ClassDef.phUV"><span class="id" title="variable">phUV</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Additive.ClassDef.f"><span class="id" title="variable">f</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#fA"><span class="id" title="variable">fA</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">End</span> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Additive.ClassDef"><span class="id" title="section">ClassDef</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Module</span> <a name="GRing.Additive.Exports"><span class="id" title="module">Exports</span></a>.<br/>
+<span class="id" title="keyword">Notation</span> <a name="GRing.Additive.Exports.additive"><span class="id" title="abbreviation">additive</span></a> <span class="id" title="var">f</span> := (<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Additive.axiom"><span class="id" title="definition">axiom</span></a> <span class="id" title="var">f</span>).<br/>
+<span class="id" title="keyword">Coercion</span> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Additive.apply"><span class="id" title="projection">apply</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Additive.apply"><span class="id" title="projection">:</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Additive.apply"><span class="id" title="projection">map</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Additive.apply"><span class="id" title="projection">&gt;-&gt;</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Additive.apply"><span class="id" title="projection">Funclass</span></a>.<br/>
+<span class="id" title="keyword">Notation</span> <a name="GRing.Additive.Exports.Additive"><span class="id" title="abbreviation">Additive</span></a> <span class="id" title="var">fA</span> := (<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Additive.Pack"><span class="id" title="constructor">Pack</span></a> (<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssreflect.html#Phant"><span class="id" title="constructor">Phant</span></a> <span class="id" title="var">_</span>) <span class="id" title="var">fA</span>).<br/>
+<span class="id" title="keyword">Notation</span> <a name="6566b94c06c342b0768c3d2d73badf6e"><span class="id" title="notation">&quot;</span></a>{ 'additive' fUV }" := (<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Additive.map"><span class="id" title="record">map</span></a> (<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssreflect.html#Phant"><span class="id" title="constructor">Phant</span></a> <span class="id" title="var">fUV</span>))<br/>
+&nbsp;&nbsp;(<span class="id" title="tactic">at</span> <span class="id" title="keyword">level</span> 0, <span class="id" title="var">format</span> "{ 'additive' fUV }") : <span class="id" title="var">ring_scope</span>.<br/>
+<span class="id" title="keyword">Notation</span> <a name="e25de7b1e68b5f1ea5f04a4e9520c4da"><span class="id" title="notation">&quot;</span></a>[ 'additive' 'of' f 'as' g ]" := (@<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Additive.clone"><span class="id" title="definition">clone</span></a> <span class="id" title="var">_</span> <span class="id" title="var">_</span> <span class="id" title="var">_</span> <span class="id" title="var">f</span> <span class="id" title="var">g</span> <span class="id" title="var">_</span> <span class="id" title="var">_</span> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#idfun"><span class="id" title="abbreviation">idfun</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#id"><span class="id" title="abbreviation">id</span></a>)<br/>
+&nbsp;&nbsp;(<span class="id" title="tactic">at</span> <span class="id" title="keyword">level</span> 0, <span class="id" title="var">format</span> "[ 'additive' 'of' f 'as' g ]") : <span class="id" title="var">form_scope</span>.<br/>
+<span class="id" title="keyword">Notation</span> <a name="f4cde972a26515a86aeac58343f1e022"><span class="id" title="notation">&quot;</span></a>[ 'additive' 'of' f ]" := (@<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Additive.clone"><span class="id" title="definition">clone</span></a> <span class="id" title="var">_</span> <span class="id" title="var">_</span> <span class="id" title="var">_</span> <span class="id" title="var">f</span> <span class="id" title="var">f</span> <span class="id" title="var">_</span> <span class="id" title="var">_</span> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#id"><span class="id" title="abbreviation">id</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#id"><span class="id" title="abbreviation">id</span></a>)<br/>
+&nbsp;&nbsp;(<span class="id" title="tactic">at</span> <span class="id" title="keyword">level</span> 0, <span class="id" title="var">format</span> "[ 'additive' 'of' f ]") : <span class="id" title="var">form_scope</span>.<br/>
+<span class="id" title="keyword">End</span> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Additive.Exports"><span class="id" title="module">Exports</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">End</span> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Additive"><span class="id" title="module">Additive</span></a>.<br/>
+<span class="id" title="keyword">Include</span> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Additive.Exports"><span class="id" title="module">Additive.Exports</span></a>. <span class="comment">(*&nbsp;Allows&nbsp;GRing.additive&nbsp;to&nbsp;resolve&nbsp;conflicts.&nbsp;*)</span><br/>
+
+<br/>
+</div>
+
+<div class="doc">
+ Lifted additive operations.
+</div>
+<div class="code">
+<span class="id" title="keyword">Section</span> <a name="GRing.LiftedZmod"><span class="id" title="section">LiftedZmod</span></a>.<br/>
+<span class="id" title="keyword">Variables</span> (<a name="GRing.LiftedZmod.U"><span class="id" title="variable">U</span></a> : <span class="id" title="keyword">Type</span>) (<a name="GRing.LiftedZmod.V"><span class="id" title="variable">V</span></a> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.zmodType"><span class="id" title="abbreviation">zmodType</span></a>).<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.null_fun_head"><span class="id" title="definition">null_fun_head</span></a> (<span class="id" title="var">phV</span> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssreflect.html#phant"><span class="id" title="inductive">phant</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.LiftedZmod.V"><span class="id" title="variable">V</span></a>) <span class="id" title="keyword">of</span> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.LiftedZmod.U"><span class="id" title="variable">U</span></a> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.LiftedZmod.V"><span class="id" title="variable">V</span></a> := <span class="id" title="keyword">let</span>: <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssreflect.html#Phant"><span class="id" title="constructor">Phant</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#phV"><span class="id" title="variable">phV</span></a> <span class="id" title="tactic">in</span> 0.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.add_fun_head"><span class="id" title="definition">add_fun_head</span></a> <span class="id" title="var">t</span> (<span class="id" title="var">f</span> <span class="id" title="var">g</span> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.LiftedZmod.U"><span class="id" title="variable">U</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.LiftedZmod.V"><span class="id" title="variable">V</span></a>) <span class="id" title="var">x</span> := <span class="id" title="keyword">let</span>: <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#tt"><span class="id" title="constructor">tt</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#t"><span class="id" title="variable">t</span></a> <span class="id" title="tactic">in</span> <a class="idref" href="mathcomp.algebra.ssralg.html#f"><span class="id" title="variable">f</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#338c5345074fd3586073fd29273c138a"><span class="id" title="notation">+</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#g"><span class="id" title="variable">g</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.sub_fun_head"><span class="id" title="definition">sub_fun_head</span></a> <span class="id" title="var">t</span> (<span class="id" title="var">f</span> <span class="id" title="var">g</span> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.LiftedZmod.U"><span class="id" title="variable">U</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.LiftedZmod.V"><span class="id" title="variable">V</span></a>) <span class="id" title="var">x</span> := <span class="id" title="keyword">let</span>: <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#tt"><span class="id" title="constructor">tt</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#t"><span class="id" title="variable">t</span></a> <span class="id" title="tactic">in</span> <a class="idref" href="mathcomp.algebra.ssralg.html#f"><span class="id" title="variable">f</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#4d4b9697032429ec46472e6332d1356a"><span class="id" title="notation">-</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#g"><span class="id" title="variable">g</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a>.<br/>
+<span class="id" title="keyword">End</span> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.LiftedZmod"><span class="id" title="section">LiftedZmod</span></a>.<br/>
+
+<br/>
+</div>
+
+<div class="doc">
+ Lifted multiplication.
+</div>
+<div class="code">
+<span class="id" title="keyword">Section</span> <a name="GRing.LiftedRing"><span class="id" title="section">LiftedRing</span></a>.<br/>
+<span class="id" title="keyword">Variables</span> (<a name="GRing.LiftedRing.R"><span class="id" title="variable">R</span></a> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ringType"><span class="id" title="abbreviation">ringType</span></a>) (<a name="GRing.LiftedRing.T"><span class="id" title="variable">T</span></a> : <span class="id" title="keyword">Type</span>).<br/>
+<span class="id" title="keyword">Implicit</span> <span class="id" title="keyword">Type</span> <span class="id" title="var">f</span> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.LiftedRing.T"><span class="id" title="variable">T</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.LiftedRing.R"><span class="id" title="variable">R</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.mull_fun_head"><span class="id" title="definition">mull_fun_head</span></a> <span class="id" title="var">t</span> <span class="id" title="var">a</span> <span class="id" title="var">f</span> <span class="id" title="var">x</span> := <span class="id" title="keyword">let</span>: <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#tt"><span class="id" title="constructor">tt</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#t"><span class="id" title="variable">t</span></a> <span class="id" title="tactic">in</span> <a class="idref" href="mathcomp.algebra.ssralg.html#a"><span class="id" title="variable">a</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#ed99e7035d9a1f8a2c1515be81ac2e5f"><span class="id" title="notation">×</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#f"><span class="id" title="variable">f</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.mulr_fun_head"><span class="id" title="definition">mulr_fun_head</span></a> <span class="id" title="var">t</span> <span class="id" title="var">a</span> <span class="id" title="var">f</span> <span class="id" title="var">x</span> := <span class="id" title="keyword">let</span>: <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#tt"><span class="id" title="constructor">tt</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#t"><span class="id" title="variable">t</span></a> <span class="id" title="tactic">in</span> <a class="idref" href="mathcomp.algebra.ssralg.html#f"><span class="id" title="variable">f</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#ed99e7035d9a1f8a2c1515be81ac2e5f"><span class="id" title="notation">×</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#a"><span class="id" title="variable">a</span></a>.<br/>
+<span class="id" title="keyword">End</span> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.LiftedRing"><span class="id" title="section">LiftedRing</span></a>.<br/>
+
+<br/>
+</div>
+
+<div class="doc">
+ Lifted linear operations.
+</div>
+<div class="code">
+<span class="id" title="keyword">Section</span> <a name="GRing.LiftedScale"><span class="id" title="section">LiftedScale</span></a>.<br/>
+<span class="id" title="keyword">Variables</span> (<a name="GRing.LiftedScale.R"><span class="id" title="variable">R</span></a> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ringType"><span class="id" title="abbreviation">ringType</span></a>) (<a name="GRing.LiftedScale.U"><span class="id" title="variable">U</span></a> : <span class="id" title="keyword">Type</span>) (<a name="GRing.LiftedScale.V"><span class="id" title="variable">V</span></a> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.lmodType"><span class="id" title="abbreviation">lmodType</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#R"><span class="id" title="variable">R</span></a>) (<a name="GRing.LiftedScale.A"><span class="id" title="variable">A</span></a> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.lalgType"><span class="id" title="abbreviation">lalgType</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#R"><span class="id" title="variable">R</span></a>).<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.scale_fun_head"><span class="id" title="definition">scale_fun_head</span></a> <span class="id" title="var">t</span> <span class="id" title="var">a</span> (<span class="id" title="var">f</span> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.LiftedScale.U"><span class="id" title="variable">U</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.LiftedScale.V"><span class="id" title="variable">V</span></a>) <span class="id" title="var">x</span> := <span class="id" title="keyword">let</span>: <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#tt"><span class="id" title="constructor">tt</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#t"><span class="id" title="variable">t</span></a> <span class="id" title="tactic">in</span> <a class="idref" href="mathcomp.algebra.ssralg.html#a"><span class="id" title="variable">a</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#5aa7bcc9ac922e77482767d325fdbb69"><span class="id" title="notation">*:</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#f"><span class="id" title="variable">f</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.in_alg_head"><span class="id" title="definition">in_alg_head</span></a> (<span class="id" title="var">phA</span> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssreflect.html#phant"><span class="id" title="inductive">phant</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.LiftedScale.A"><span class="id" title="variable">A</span></a>) <span class="id" title="var">k</span> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.LiftedScale.A"><span class="id" title="variable">A</span></a> := <span class="id" title="keyword">let</span>: <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssreflect.html#Phant"><span class="id" title="constructor">Phant</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#phA"><span class="id" title="variable">phA</span></a> <span class="id" title="tactic">in</span> <a class="idref" href="mathcomp.algebra.ssralg.html#k"><span class="id" title="variable">k</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#a9486b60fd4d51d8247008b3f8b21d21"><span class="id" title="notation">%:</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#a9486b60fd4d51d8247008b3f8b21d21"><span class="id" title="notation">A</span></a>.<br/>
+<span class="id" title="keyword">End</span> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.LiftedScale"><span class="id" title="section">LiftedScale</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Notation</span> <a name="GRing.null_fun"><span class="id" title="abbreviation">null_fun</span></a> <span class="id" title="var">V</span> := (<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.null_fun_head"><span class="id" title="definition">null_fun_head</span></a> (<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssreflect.html#Phant"><span class="id" title="constructor">Phant</span></a> <span class="id" title="var">V</span>)) (<span class="id" title="var">only</span> <span class="id" title="var">parsing</span>).<br/>
+</div>
+
+<div class="doc">
+ The real in_alg notation is declared after GRing.Theory so that at least
+ in Coq 8.2 it gets precedence when GRing.Theory is not imported.
+</div>
+<div class="code">
+
+<br/>
+
+<br/>
+<span class="id" title="keyword">Section</span> <a name="GRing.AdditiveTheory"><span class="id" title="section">AdditiveTheory</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Section</span> <a name="GRing.AdditiveTheory.Properties"><span class="id" title="section">Properties</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Variables</span> (<a name="GRing.AdditiveTheory.Properties.U"><span class="id" title="variable">U</span></a> <a name="GRing.AdditiveTheory.Properties.V"><span class="id" title="variable">V</span></a> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.zmodType"><span class="id" title="abbreviation">zmodType</span></a>) (<a name="GRing.AdditiveTheory.Properties.k"><span class="id" title="variable">k</span></a> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#unit"><span class="id" title="inductive">unit</span></a>) (<a name="GRing.AdditiveTheory.Properties.f"><span class="id" title="variable">f</span></a> : <a class="idref" href="mathcomp.algebra.ssralg.html#6566b94c06c342b0768c3d2d73badf6e"><span class="id" title="notation">{</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#6566b94c06c342b0768c3d2d73badf6e"><span class="id" title="notation">additive</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#U"><span class="id" title="variable">U</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#V"><span class="id" title="variable">V</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#6566b94c06c342b0768c3d2d73badf6e"><span class="id" title="notation">}</span></a>).<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.raddfB"><span class="id" title="lemma">raddfB</span></a> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#3014e73af2a90fd800d8681479d76336"><span class="id" title="notation">{</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#3014e73af2a90fd800d8681479d76336"><span class="id" title="notation">morph</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.AdditiveTheory.Properties.f"><span class="id" title="variable">f</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#3014e73af2a90fd800d8681479d76336"><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/8.8.0/stdlib//Coq.ssr.ssrfun.html#3014e73af2a90fd800d8681479d76336"><span class="id" title="notation">/</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#4d4b9697032429ec46472e6332d1356a"><span class="id" title="notation">-</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#y"><span class="id" title="variable">y</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#3014e73af2a90fd800d8681479d76336"><span class="id" title="notation">}</span></a>. <br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.raddf0"><span class="id" title="lemma">raddf0</span></a> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.AdditiveTheory.Properties.f"><span class="id" title="variable">f</span></a> 0 <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> 0.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.raddf_eq0"><span class="id" title="lemma">raddf_eq0</span></a> <span class="id" title="var">x</span> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#injective"><span class="id" title="definition">injective</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.AdditiveTheory.Properties.f"><span class="id" title="variable">f</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#GRing.AdditiveTheory.Properties.f"><span class="id" title="variable">f</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#17d28d004d0863cb022d4ce832ddaaae"><span class="id" title="notation">==</span></a> 0<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">)</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#17d28d004d0863cb022d4ce832ddaaae"><span class="id" title="notation">==</span></a> 0<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">)</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.raddfN"><span class="id" title="lemma">raddfN</span></a> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#c3c88e2b30b681cd767a54649faf5973"><span class="id" title="notation">{</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#c3c88e2b30b681cd767a54649faf5973"><span class="id" title="notation">morph</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.AdditiveTheory.Properties.f"><span class="id" title="variable">f</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#c3c88e2b30b681cd767a54649faf5973"><span class="id" title="notation">:</span></a> <span class="id" title="var">x</span> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#c3c88e2b30b681cd767a54649faf5973"><span class="id" title="notation">/</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#eefae7eea8ed2b8fccf150cb653d7a7b"><span class="id" title="notation">-</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#c3c88e2b30b681cd767a54649faf5973"><span class="id" title="notation">}</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.raddfD"><span class="id" title="lemma">raddfD</span></a> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#3014e73af2a90fd800d8681479d76336"><span class="id" title="notation">{</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#3014e73af2a90fd800d8681479d76336"><span class="id" title="notation">morph</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.AdditiveTheory.Properties.f"><span class="id" title="variable">f</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#3014e73af2a90fd800d8681479d76336"><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/8.8.0/stdlib//Coq.ssr.ssrfun.html#3014e73af2a90fd800d8681479d76336"><span class="id" title="notation">/</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#338c5345074fd3586073fd29273c138a"><span class="id" title="notation">+</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#y"><span class="id" title="variable">y</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#3014e73af2a90fd800d8681479d76336"><span class="id" title="notation">}</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.raddfMn"><span class="id" title="lemma">raddfMn</span></a> <span class="id" title="var">n</span> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#c3c88e2b30b681cd767a54649faf5973"><span class="id" title="notation">{</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#c3c88e2b30b681cd767a54649faf5973"><span class="id" title="notation">morph</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.AdditiveTheory.Properties.f"><span class="id" title="variable">f</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#c3c88e2b30b681cd767a54649faf5973"><span class="id" title="notation">:</span></a> <span class="id" title="var">x</span> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#c3c88e2b30b681cd767a54649faf5973"><span class="id" title="notation">/</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#513eaa3129601ecbcc9e188a80d6155b"><span class="id" title="notation">*+</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#n"><span class="id" title="variable">n</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#c3c88e2b30b681cd767a54649faf5973"><span class="id" title="notation">}</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.raddfMNn"><span class="id" title="lemma">raddfMNn</span></a> <span class="id" title="var">n</span> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#c3c88e2b30b681cd767a54649faf5973"><span class="id" title="notation">{</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#c3c88e2b30b681cd767a54649faf5973"><span class="id" title="notation">morph</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.AdditiveTheory.Properties.f"><span class="id" title="variable">f</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#c3c88e2b30b681cd767a54649faf5973"><span class="id" title="notation">:</span></a> <span class="id" title="var">x</span> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#c3c88e2b30b681cd767a54649faf5973"><span class="id" title="notation">/</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#be9a273af87c6a30d88bd8379c802cbe"><span class="id" title="notation">*-</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#n"><span class="id" title="variable">n</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#c3c88e2b30b681cd767a54649faf5973"><span class="id" title="notation">}</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.raddf_sum"><span class="id" title="lemma">raddf_sum</span></a> <span class="id" title="var">I</span> <span class="id" title="var">r</span> (<span class="id" title="var">P</span> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#pred"><span class="id" title="definition">pred</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#I"><span class="id" title="variable">I</span></a>) <span class="id" title="var">E</span> :<br/>
+&nbsp;&nbsp;<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.AdditiveTheory.Properties.f"><span class="id" title="variable">f</span></a> (<a class="idref" href="mathcomp.algebra.ssralg.html#664ae738a3286983847c80e5ee4c8c6b"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#664ae738a3286983847c80e5ee4c8c6b"><span class="id" title="notation">sum_</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#664ae738a3286983847c80e5ee4c8c6b"><span class="id" title="notation">(</span></a><span class="id" title="var">i</span> <a class="idref" href="mathcomp.algebra.ssralg.html#664ae738a3286983847c80e5ee4c8c6b"><span class="id" title="notation">&lt;-</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#r"><span class="id" title="variable">r</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#664ae738a3286983847c80e5ee4c8c6b"><span class="id" title="notation">|</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#P"><span class="id" title="variable">P</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#i"><span class="id" title="variable">i</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#664ae738a3286983847c80e5ee4c8c6b"><span class="id" title="notation">)</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#E"><span class="id" title="variable">E</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#i"><span class="id" title="variable">i</span></a>) <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#664ae738a3286983847c80e5ee4c8c6b"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#664ae738a3286983847c80e5ee4c8c6b"><span class="id" title="notation">sum_</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#664ae738a3286983847c80e5ee4c8c6b"><span class="id" title="notation">(</span></a><span class="id" title="var">i</span> <a class="idref" href="mathcomp.algebra.ssralg.html#664ae738a3286983847c80e5ee4c8c6b"><span class="id" title="notation">&lt;-</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#r"><span class="id" title="variable">r</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#664ae738a3286983847c80e5ee4c8c6b"><span class="id" title="notation">|</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#P"><span class="id" title="variable">P</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#i"><span class="id" title="variable">i</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#664ae738a3286983847c80e5ee4c8c6b"><span class="id" title="notation">)</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.AdditiveTheory.Properties.f"><span class="id" title="variable">f</span></a> (<a class="idref" href="mathcomp.algebra.ssralg.html#E"><span class="id" title="variable">E</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#i"><span class="id" title="variable">i</span></a>).<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.can2_additive"><span class="id" title="lemma">can2_additive</span></a> <span class="id" title="var">f'</span> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#cancel"><span class="id" title="definition">cancel</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.AdditiveTheory.Properties.f"><span class="id" title="variable">f</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#f'"><span class="id" title="variable">f'</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#cancel"><span class="id" title="definition">cancel</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#f'"><span class="id" title="variable">f'</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.AdditiveTheory.Properties.f"><span class="id" title="variable">f</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.additive"><span class="id" title="abbreviation">additive</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#f'"><span class="id" title="variable">f'</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.bij_additive"><span class="id" title="lemma">bij_additive</span></a> :<br/>
+&nbsp;&nbsp;<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#bijective"><span class="id" title="inductive">bijective</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.AdditiveTheory.Properties.f"><span class="id" title="variable">f</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#fe60c20831f772c0c3c288abf68cc42a"><span class="id" title="notation">exists2</span></a> <span class="id" title="var">f'</span> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#fe60c20831f772c0c3c288abf68cc42a"><span class="id" title="notation">:</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#6566b94c06c342b0768c3d2d73badf6e"><span class="id" title="notation">{</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#6566b94c06c342b0768c3d2d73badf6e"><span class="id" title="notation">additive</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.AdditiveTheory.Properties.V"><span class="id" title="variable">V</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.AdditiveTheory.Properties.U"><span class="id" title="variable">U</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#6566b94c06c342b0768c3d2d73badf6e"><span class="id" title="notation">}</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#fe60c20831f772c0c3c288abf68cc42a"><span class="id" title="notation">,</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#cancel"><span class="id" title="definition">cancel</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.AdditiveTheory.Properties.f"><span class="id" title="variable">f</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#f'"><span class="id" title="variable">f'</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#fe60c20831f772c0c3c288abf68cc42a"><span class="id" title="notation">&amp;</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#cancel"><span class="id" title="definition">cancel</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#f'"><span class="id" title="variable">f'</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.AdditiveTheory.Properties.f"><span class="id" title="variable">f</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Fact</span> <a name="GRing.locked_is_additive"><span class="id" title="lemma">locked_is_additive</span></a> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.additive"><span class="id" title="abbreviation">additive</span></a> (<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssreflect.html#locked_with"><span class="id" title="definition">locked_with</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.AdditiveTheory.Properties.k"><span class="id" title="variable">k</span></a> (<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.AdditiveTheory.Properties.f"><span class="id" title="variable">f</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssreflect.html#4509b22bf26e3d6d771897e22bd8bc8f"><span class="id" title="notation">:</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.AdditiveTheory.Properties.U"><span class="id" title="variable">U</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.AdditiveTheory.Properties.V"><span class="id" title="variable">V</span></a>)).<br/>
+ <span class="id" title="keyword">Canonical</span> <span class="id" title="var">locked_additive</span> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Additive"><span class="id" title="abbreviation">Additive</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.locked_is_additive"><span class="id" title="lemma">locked_is_additive</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">End</span> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.AdditiveTheory.Properties"><span class="id" title="section">Properties</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Section</span> <a name="GRing.AdditiveTheory.RingProperties"><span class="id" title="section">RingProperties</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Variables</span> (<a name="GRing.AdditiveTheory.RingProperties.R"><span class="id" title="variable">R</span></a> <a name="GRing.AdditiveTheory.RingProperties.S"><span class="id" title="variable">S</span></a> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ringType"><span class="id" title="abbreviation">ringType</span></a>) (<a name="GRing.AdditiveTheory.RingProperties.f"><span class="id" title="variable">f</span></a> : <a class="idref" href="mathcomp.algebra.ssralg.html#6566b94c06c342b0768c3d2d73badf6e"><span class="id" title="notation">{</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#6566b94c06c342b0768c3d2d73badf6e"><span class="id" title="notation">additive</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#R"><span class="id" title="variable">R</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#S"><span class="id" title="variable">S</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#6566b94c06c342b0768c3d2d73badf6e"><span class="id" title="notation">}</span></a>).<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.raddfMnat"><span class="id" title="lemma">raddfMnat</span></a> <span class="id" title="var">n</span> <span class="id" title="var">x</span> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.AdditiveTheory.RingProperties.f"><span class="id" title="variable">f</span></a> (<a class="idref" href="mathcomp.algebra.ssralg.html#n"><span class="id" title="variable">n</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#c191333b9c7c034282647fbffacc9d18"><span class="id" title="notation">%:</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#c191333b9c7c034282647fbffacc9d18"><span class="id" title="notation">R</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#ed99e7035d9a1f8a2c1515be81ac2e5f"><span class="id" title="notation">×</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a>) <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#n"><span class="id" title="variable">n</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#c191333b9c7c034282647fbffacc9d18"><span class="id" title="notation">%:</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#c191333b9c7c034282647fbffacc9d18"><span class="id" title="notation">R</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#ed99e7035d9a1f8a2c1515be81ac2e5f"><span class="id" title="notation">×</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.AdditiveTheory.RingProperties.f"><span class="id" title="variable">f</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.raddfMsign"><span class="id" title="lemma">raddfMsign</span></a> <span class="id" title="var">n</span> <span class="id" title="var">x</span> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.AdditiveTheory.RingProperties.f"><span class="id" title="variable">f</span></a> (<a class="idref" href="mathcomp.algebra.ssralg.html#b5a6699e28c97bb33352772cfa3ea869"><span class="id" title="notation">(</span></a>-1<a class="idref" href="mathcomp.algebra.ssralg.html#b5a6699e28c97bb33352772cfa3ea869"><span class="id" title="notation">)</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#b5a6699e28c97bb33352772cfa3ea869"><span class="id" title="notation">^+</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#n"><span class="id" title="variable">n</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#ed99e7035d9a1f8a2c1515be81ac2e5f"><span class="id" title="notation">×</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a>) <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#b5a6699e28c97bb33352772cfa3ea869"><span class="id" title="notation">(</span></a>-1<a class="idref" href="mathcomp.algebra.ssralg.html#b5a6699e28c97bb33352772cfa3ea869"><span class="id" title="notation">)</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#b5a6699e28c97bb33352772cfa3ea869"><span class="id" title="notation">^+</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#n"><span class="id" title="variable">n</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#ed99e7035d9a1f8a2c1515be81ac2e5f"><span class="id" title="notation">×</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.AdditiveTheory.RingProperties.f"><span class="id" title="variable">f</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Variables</span> (<a name="GRing.AdditiveTheory.RingProperties.U"><span class="id" title="variable">U</span></a> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.lmodType"><span class="id" title="abbreviation">lmodType</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.AdditiveTheory.RingProperties.R"><span class="id" title="variable">R</span></a>) (<a name="GRing.AdditiveTheory.RingProperties.V"><span class="id" title="variable">V</span></a> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.lmodType"><span class="id" title="abbreviation">lmodType</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.AdditiveTheory.RingProperties.S"><span class="id" title="variable">S</span></a>) (<a name="GRing.AdditiveTheory.RingProperties.h"><span class="id" title="variable">h</span></a> : <a class="idref" href="mathcomp.algebra.ssralg.html#6566b94c06c342b0768c3d2d73badf6e"><span class="id" title="notation">{</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#6566b94c06c342b0768c3d2d73badf6e"><span class="id" title="notation">additive</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#U"><span class="id" title="variable">U</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#V"><span class="id" title="variable">V</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#6566b94c06c342b0768c3d2d73badf6e"><span class="id" title="notation">}</span></a>).<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.raddfZnat"><span class="id" title="lemma">raddfZnat</span></a> <span class="id" title="var">n</span> <span class="id" title="var">u</span> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.AdditiveTheory.RingProperties.h"><span class="id" title="variable">h</span></a> (<a class="idref" href="mathcomp.algebra.ssralg.html#n"><span class="id" title="variable">n</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#c191333b9c7c034282647fbffacc9d18"><span class="id" title="notation">%:</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#c191333b9c7c034282647fbffacc9d18"><span class="id" title="notation">R</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#5aa7bcc9ac922e77482767d325fdbb69"><span class="id" title="notation">*:</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#u"><span class="id" title="variable">u</span></a>) <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#n"><span class="id" title="variable">n</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#c191333b9c7c034282647fbffacc9d18"><span class="id" title="notation">%:</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#c191333b9c7c034282647fbffacc9d18"><span class="id" title="notation">R</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#5aa7bcc9ac922e77482767d325fdbb69"><span class="id" title="notation">*:</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.AdditiveTheory.RingProperties.h"><span class="id" title="variable">h</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#u"><span class="id" title="variable">u</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.raddfZsign"><span class="id" title="lemma">raddfZsign</span></a> <span class="id" title="var">n</span> <span class="id" title="var">u</span> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.AdditiveTheory.RingProperties.h"><span class="id" title="variable">h</span></a> (<a class="idref" href="mathcomp.algebra.ssralg.html#b5a6699e28c97bb33352772cfa3ea869"><span class="id" title="notation">(</span></a>-1<a class="idref" href="mathcomp.algebra.ssralg.html#b5a6699e28c97bb33352772cfa3ea869"><span class="id" title="notation">)</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#b5a6699e28c97bb33352772cfa3ea869"><span class="id" title="notation">^+</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#n"><span class="id" title="variable">n</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#5aa7bcc9ac922e77482767d325fdbb69"><span class="id" title="notation">*:</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#u"><span class="id" title="variable">u</span></a>) <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#b5a6699e28c97bb33352772cfa3ea869"><span class="id" title="notation">(</span></a>-1<a class="idref" href="mathcomp.algebra.ssralg.html#b5a6699e28c97bb33352772cfa3ea869"><span class="id" title="notation">)</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#b5a6699e28c97bb33352772cfa3ea869"><span class="id" title="notation">^+</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#n"><span class="id" title="variable">n</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#5aa7bcc9ac922e77482767d325fdbb69"><span class="id" title="notation">*:</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.AdditiveTheory.RingProperties.h"><span class="id" title="variable">h</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#u"><span class="id" title="variable">u</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">End</span> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.AdditiveTheory.RingProperties"><span class="id" title="section">RingProperties</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Section</span> <a name="GRing.AdditiveTheory.AddFun"><span class="id" title="section">AddFun</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Variables</span> (<a name="GRing.AdditiveTheory.AddFun.U"><span class="id" title="variable">U</span></a> <a name="GRing.AdditiveTheory.AddFun.V"><span class="id" title="variable">V</span></a> <a name="GRing.AdditiveTheory.AddFun.W"><span class="id" title="variable">W</span></a> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.zmodType"><span class="id" title="abbreviation">zmodType</span></a>) (<a name="GRing.AdditiveTheory.AddFun.f"><span class="id" title="variable">f</span></a> <a name="GRing.AdditiveTheory.AddFun.g"><span class="id" title="variable">g</span></a> : <a class="idref" href="mathcomp.algebra.ssralg.html#6566b94c06c342b0768c3d2d73badf6e"><span class="id" title="notation">{</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#6566b94c06c342b0768c3d2d73badf6e"><span class="id" title="notation">additive</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#V"><span class="id" title="variable">V</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#W"><span class="id" title="variable">W</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#6566b94c06c342b0768c3d2d73badf6e"><span class="id" title="notation">}</span></a>) (<a name="GRing.AdditiveTheory.AddFun.h"><span class="id" title="variable">h</span></a> : <a class="idref" href="mathcomp.algebra.ssralg.html#6566b94c06c342b0768c3d2d73badf6e"><span class="id" title="notation">{</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#6566b94c06c342b0768c3d2d73badf6e"><span class="id" title="notation">additive</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#U"><span class="id" title="variable">U</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#V"><span class="id" title="variable">V</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#6566b94c06c342b0768c3d2d73badf6e"><span class="id" title="notation">}</span></a>).<br/>
+
+<br/>
+<span class="id" title="keyword">Fact</span> <a name="GRing.idfun_is_additive"><span class="id" title="lemma">idfun_is_additive</span></a> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.additive"><span class="id" title="abbreviation">additive</span></a> (<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#cc5a9586eb997be35b65ea12b2a985a9"><span class="id" title="notation">@</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#cc5a9586eb997be35b65ea12b2a985a9"><span class="id" title="notation">idfun</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.AdditiveTheory.AddFun.U"><span class="id" title="variable">U</span></a>).<br/>
+ <span class="id" title="keyword">Canonical</span> <span class="id" title="var">idfun_additive</span> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Additive"><span class="id" title="abbreviation">Additive</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.idfun_is_additive"><span class="id" title="lemma">idfun_is_additive</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Fact</span> <a name="GRing.comp_is_additive"><span class="id" title="lemma">comp_is_additive</span></a> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.additive"><span class="id" title="abbreviation">additive</span></a> (<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.AdditiveTheory.AddFun.f"><span class="id" title="variable">f</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#1b4394c5c1740ef3dc9e4224084970bb"><span class="id" title="notation">\</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#1b4394c5c1740ef3dc9e4224084970bb"><span class="id" title="notation">o</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.AdditiveTheory.AddFun.h"><span class="id" title="variable">h</span></a>).<br/>
+ <span class="id" title="keyword">Canonical</span> <span class="id" title="var">comp_additive</span> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Additive"><span class="id" title="abbreviation">Additive</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.comp_is_additive"><span class="id" title="lemma">comp_is_additive</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Fact</span> <a name="GRing.opp_is_additive"><span class="id" title="lemma">opp_is_additive</span></a> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.additive"><span class="id" title="abbreviation">additive</span></a> (<a class="idref" href="mathcomp.algebra.ssralg.html#221881b99d58ceaaa33c4172192f697e"><span class="id" title="notation">-%</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#221881b99d58ceaaa33c4172192f697e"><span class="id" title="notation">R</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssreflect.html#4509b22bf26e3d6d771897e22bd8bc8f"><span class="id" title="notation">:</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.AdditiveTheory.AddFun.U"><span class="id" title="variable">U</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.AdditiveTheory.AddFun.U"><span class="id" title="variable">U</span></a>).<br/>
+ <span class="id" title="keyword">Canonical</span> <span class="id" title="var">opp_additive</span> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Additive"><span class="id" title="abbreviation">Additive</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.opp_is_additive"><span class="id" title="lemma">opp_is_additive</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Fact</span> <a name="GRing.null_fun_is_additive"><span class="id" title="lemma">null_fun_is_additive</span></a> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.additive"><span class="id" title="abbreviation">additive</span></a> (<a class="idref" href="mathcomp.algebra.ssralg.html#1b9a40373c4c41de4d5793af234729fd"><span class="id" title="notation">\0</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssreflect.html#4509b22bf26e3d6d771897e22bd8bc8f"><span class="id" title="notation">:</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.AdditiveTheory.AddFun.U"><span class="id" title="variable">U</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.AdditiveTheory.AddFun.V"><span class="id" title="variable">V</span></a>).<br/>
+ <span class="id" title="keyword">Canonical</span> <span class="id" title="var">null_fun_additive</span> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Additive"><span class="id" title="abbreviation">Additive</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.null_fun_is_additive"><span class="id" title="lemma">null_fun_is_additive</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Fact</span> <a name="GRing.add_fun_is_additive"><span class="id" title="lemma">add_fun_is_additive</span></a> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.additive"><span class="id" title="abbreviation">additive</span></a> (<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.AdditiveTheory.AddFun.f"><span class="id" title="variable">f</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#f2f8c9cbf6197be0e03c235df75623a4"><span class="id" title="notation">\+</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.AdditiveTheory.AddFun.g"><span class="id" title="variable">g</span></a>).<br/>
+<span class="id" title="keyword">Canonical</span> <span class="id" title="var">add_fun_additive</span> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Additive"><span class="id" title="abbreviation">Additive</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.add_fun_is_additive"><span class="id" title="lemma">add_fun_is_additive</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Fact</span> <a name="GRing.sub_fun_is_additive"><span class="id" title="lemma">sub_fun_is_additive</span></a> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.additive"><span class="id" title="abbreviation">additive</span></a> (<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.AdditiveTheory.AddFun.f"><span class="id" title="variable">f</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#8af655ace12546ccf393660f3321db1e"><span class="id" title="notation">\-</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.AdditiveTheory.AddFun.g"><span class="id" title="variable">g</span></a>).<br/>
+<span class="id" title="keyword">Canonical</span> <span class="id" title="var">sub_fun_additive</span> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Additive"><span class="id" title="abbreviation">Additive</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.sub_fun_is_additive"><span class="id" title="lemma">sub_fun_is_additive</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">End</span> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.AdditiveTheory.AddFun"><span class="id" title="section">AddFun</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Section</span> <a name="GRing.AdditiveTheory.MulFun"><span class="id" title="section">MulFun</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Variables</span> (<a name="GRing.AdditiveTheory.MulFun.R"><span class="id" title="variable">R</span></a> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ringType"><span class="id" title="abbreviation">ringType</span></a>) (<a name="GRing.AdditiveTheory.MulFun.U"><span class="id" title="variable">U</span></a> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.zmodType"><span class="id" title="abbreviation">zmodType</span></a>).<br/>
+<span class="id" title="keyword">Variables</span> (<a name="GRing.AdditiveTheory.MulFun.a"><span class="id" title="variable">a</span></a> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.AdditiveTheory.MulFun.R"><span class="id" title="variable">R</span></a>) (<a name="GRing.AdditiveTheory.MulFun.f"><span class="id" title="variable">f</span></a> : <a class="idref" href="mathcomp.algebra.ssralg.html#6566b94c06c342b0768c3d2d73badf6e"><span class="id" title="notation">{</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#6566b94c06c342b0768c3d2d73badf6e"><span class="id" title="notation">additive</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.AdditiveTheory.MulFun.U"><span class="id" title="variable">U</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.AdditiveTheory.MulFun.R"><span class="id" title="variable">R</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#6566b94c06c342b0768c3d2d73badf6e"><span class="id" title="notation">}</span></a>).<br/>
+
+<br/>
+<span class="id" title="keyword">Fact</span> <a name="GRing.mull_fun_is_additive"><span class="id" title="lemma">mull_fun_is_additive</span></a> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.additive"><span class="id" title="abbreviation">additive</span></a> (<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.AdditiveTheory.MulFun.a"><span class="id" title="variable">a</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#82b32d32eab6e1eab8147f667d41c846"><span class="id" title="notation">\*</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#82b32d32eab6e1eab8147f667d41c846"><span class="id" title="notation">o</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.AdditiveTheory.MulFun.f"><span class="id" title="variable">f</span></a>).<br/>
+ <span class="id" title="keyword">Canonical</span> <span class="id" title="var">mull_fun_additive</span> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Additive"><span class="id" title="abbreviation">Additive</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.mull_fun_is_additive"><span class="id" title="lemma">mull_fun_is_additive</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Fact</span> <a name="GRing.mulr_fun_is_additive"><span class="id" title="lemma">mulr_fun_is_additive</span></a> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.additive"><span class="id" title="abbreviation">additive</span></a> (<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.AdditiveTheory.MulFun.a"><span class="id" title="variable">a</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#2b0f3ec783c950f59954eab0f90dbfa8"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#2b0f3ec783c950f59954eab0f90dbfa8"><span class="id" title="notation">o</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#2b0f3ec783c950f59954eab0f90dbfa8"><span class="id" title="notation">×</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.AdditiveTheory.MulFun.f"><span class="id" title="variable">f</span></a>).<br/>
+ <span class="id" title="keyword">Canonical</span> <span class="id" title="var">mulr_fun_additive</span> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Additive"><span class="id" title="abbreviation">Additive</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.mulr_fun_is_additive"><span class="id" title="lemma">mulr_fun_is_additive</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">End</span> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.AdditiveTheory.MulFun"><span class="id" title="section">MulFun</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Section</span> <a name="GRing.AdditiveTheory.ScaleFun"><span class="id" title="section">ScaleFun</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Variables</span> (<a name="GRing.AdditiveTheory.ScaleFun.R"><span class="id" title="variable">R</span></a> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ringType"><span class="id" title="abbreviation">ringType</span></a>) (<a name="GRing.AdditiveTheory.ScaleFun.U"><span class="id" title="variable">U</span></a> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.zmodType"><span class="id" title="abbreviation">zmodType</span></a>) (<a name="GRing.AdditiveTheory.ScaleFun.V"><span class="id" title="variable">V</span></a> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.lmodType"><span class="id" title="abbreviation">lmodType</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#R"><span class="id" title="variable">R</span></a>).<br/>
+<span class="id" title="keyword">Variables</span> (<a name="GRing.AdditiveTheory.ScaleFun.a"><span class="id" title="variable">a</span></a> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.AdditiveTheory.ScaleFun.R"><span class="id" title="variable">R</span></a>) (<a name="GRing.AdditiveTheory.ScaleFun.f"><span class="id" title="variable">f</span></a> : <a class="idref" href="mathcomp.algebra.ssralg.html#6566b94c06c342b0768c3d2d73badf6e"><span class="id" title="notation">{</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#6566b94c06c342b0768c3d2d73badf6e"><span class="id" title="notation">additive</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.AdditiveTheory.ScaleFun.U"><span class="id" title="variable">U</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.AdditiveTheory.ScaleFun.V"><span class="id" title="variable">V</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#6566b94c06c342b0768c3d2d73badf6e"><span class="id" title="notation">}</span></a>).<br/>
+
+<br/>
+<span class="id" title="keyword">Canonical</span> <span class="id" title="var">scale_additive</span> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Additive"><span class="id" title="abbreviation">Additive</span></a> (@<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.scalerBr"><span class="id" title="lemma">scalerBr</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.AdditiveTheory.ScaleFun.R"><span class="id" title="variable">R</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.AdditiveTheory.ScaleFun.V"><span class="id" title="variable">V</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.AdditiveTheory.ScaleFun.a"><span class="id" title="variable">a</span></a>).<br/>
+<span class="id" title="keyword">Canonical</span> <span class="id" title="var">scale_fun_additive</span> := <a class="idref" href="mathcomp.algebra.ssralg.html#e25de7b1e68b5f1ea5f04a4e9520c4da"><span class="id" title="notation">[</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#e25de7b1e68b5f1ea5f04a4e9520c4da"><span class="id" title="notation">additive</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#e25de7b1e68b5f1ea5f04a4e9520c4da"><span class="id" title="notation">of</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.AdditiveTheory.ScaleFun.a"><span class="id" title="variable">a</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#9df698f0b10c644da28c4afd9af58cf4"><span class="id" title="notation">\*:</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.AdditiveTheory.ScaleFun.f"><span class="id" title="variable">f</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#e25de7b1e68b5f1ea5f04a4e9520c4da"><span class="id" title="notation">as</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.AdditiveTheory.ScaleFun.f"><span class="id" title="variable">f</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#c42c5cb909c30537f9f6acfcf01cf7e1"><span class="id" title="notation">\;</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#9d4bc68f8a37455428efb931e05d31ce"><span class="id" title="notation">*:%</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#9d4bc68f8a37455428efb931e05d31ce"><span class="id" title="notation">R</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#9d4bc68f8a37455428efb931e05d31ce"><span class="id" title="notation">a</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#e25de7b1e68b5f1ea5f04a4e9520c4da"><span class="id" title="notation">]</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">End</span> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.AdditiveTheory.ScaleFun"><span class="id" title="section">ScaleFun</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">End</span> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.AdditiveTheory"><span class="id" title="section">AdditiveTheory</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Module</span> <a name="GRing.RMorphism"><span class="id" title="module">RMorphism</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Section</span> <a name="GRing.RMorphism.ClassDef"><span class="id" title="section">ClassDef</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Variables</span> <a name="GRing.RMorphism.ClassDef.R"><span class="id" title="variable">R</span></a> <a name="GRing.RMorphism.ClassDef.S"><span class="id" title="variable">S</span></a> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Ring.Exports.ringType"><span class="id" title="abbreviation">ringType</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.RMorphism.mixin_of"><span class="id" title="definition">mixin_of</span></a> (<span class="id" title="var">f</span> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.RMorphism.ClassDef.R"><span class="id" title="variable">R</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.RMorphism.ClassDef.S"><span class="id" title="variable">S</span></a>) :=<br/>
+&nbsp;&nbsp;<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#3014e73af2a90fd800d8681479d76336"><span class="id" title="notation">{</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#3014e73af2a90fd800d8681479d76336"><span class="id" title="notation">morph</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#f"><span class="id" title="variable">f</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#3014e73af2a90fd800d8681479d76336"><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/8.8.0/stdlib//Coq.ssr.ssrfun.html#3014e73af2a90fd800d8681479d76336"><span class="id" title="notation">/</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#ed99e7035d9a1f8a2c1515be81ac2e5f"><span class="id" title="notation">×</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#y"><span class="id" title="variable">y</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#3014e73af2a90fd800d8681479d76336"><span class="id" title="notation">}</span></a>%<span class="id" title="var">R</span> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#d19c7eafd0e2d195d10df94b392087b5"><span class="id" title="notation">×</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#d19c7eafd0e2d195d10df94b392087b5"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#f"><span class="id" title="variable">f</span></a> 1 <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> 1<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#d19c7eafd0e2d195d10df94b392087b5"><span class="id" title="notation">)</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssreflect.html#0fffdc558ce71ab561d36c8a8094dbe5"><span class="id" title="notation">:</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssreflect.html#0fffdc558ce71ab561d36c8a8094dbe5"><span class="id" title="notation">Prop</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Record</span> <a name="GRing.RMorphism.class_of"><span class="id" title="record">class_of</span></a> <span class="id" title="var">f</span> : <span class="id" title="keyword">Prop</span> := <a name="GRing.RMorphism.Class"><span class="id" title="constructor">Class</span></a> {<a name="GRing.RMorphism.base"><span class="id" title="projection">base</span></a> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.additive"><span class="id" title="abbreviation">additive</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#f"><span class="id" title="variable">f</span></a>; <a name="GRing.RMorphism.mixin"><span class="id" title="projection">mixin</span></a> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.RMorphism.mixin_of"><span class="id" title="definition">mixin_of</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#f"><span class="id" title="variable">f</span></a>}.<br/>
+
+<br/>
+<span class="id" title="keyword">Structure</span> <a name="GRing.RMorphism.map"><span class="id" title="record">map</span></a> (<span class="id" title="var">phRS</span> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssreflect.html#phant"><span class="id" title="inductive">phant</span></a> (<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.RMorphism.ClassDef.R"><span class="id" title="variable">R</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.RMorphism.ClassDef.S"><span class="id" title="variable">S</span></a>)) := <a name="GRing.RMorphism.Pack"><span class="id" title="constructor">Pack</span></a> {<a name="GRing.RMorphism.apply"><span class="id" title="projection">apply</span></a>; <span class="id" title="var">_</span> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.RMorphism.class_of"><span class="id" title="record">class_of</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#apply"><span class="id" title="method">apply</span></a>}.<br/>
+<span class="id" title="keyword">Variables</span> (<a name="GRing.RMorphism.ClassDef.phRS"><span class="id" title="variable">phRS</span></a> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssreflect.html#phant"><span class="id" title="inductive">phant</span></a> (<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.RMorphism.ClassDef.R"><span class="id" title="variable">R</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.RMorphism.ClassDef.S"><span class="id" title="variable">S</span></a>)) (<a name="GRing.RMorphism.ClassDef.f"><span class="id" title="variable">f</span></a> <a name="GRing.RMorphism.ClassDef.g"><span class="id" title="variable">g</span></a> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.RMorphism.ClassDef.R"><span class="id" title="variable">R</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.RMorphism.ClassDef.S"><span class="id" title="variable">S</span></a>) (<a name="GRing.RMorphism.ClassDef.cF"><span class="id" title="variable">cF</span></a> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.RMorphism.map"><span class="id" title="record">map</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#phRS"><span class="id" title="variable">phRS</span></a>).<br/>
+
+<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.RMorphism.class"><span class="id" title="definition">class</span></a> := <span class="id" title="keyword">let</span>: <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.RMorphism.Pack"><span class="id" title="constructor">Pack</span></a> <span class="id" title="var">_</span> <span class="id" title="var">c</span> <span class="id" title="keyword">as</span> <span class="id" title="var">cF'</span> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.RMorphism.ClassDef.cF"><span class="id" title="variable">cF</span></a> <span class="id" title="keyword">return</span> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.RMorphism.class_of"><span class="id" title="record">class_of</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#cF'"><span class="id" title="variable">cF'</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="GRing.RMorphism.clone"><span class="id" title="definition">clone</span></a> <span class="id" title="var">fM</span> <span class="id" title="keyword">of</span> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#phant_id"><span class="id" title="definition">phant_id</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.RMorphism.ClassDef.g"><span class="id" title="variable">g</span></a> (<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.RMorphism.apply"><span class="id" title="projection">apply</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.RMorphism.ClassDef.cF"><span class="id" title="variable">cF</span></a>) &amp; <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#phant_id"><span class="id" title="definition">phant_id</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#fM"><span class="id" title="variable">fM</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.RMorphism.class"><span class="id" title="definition">class</span></a> :=<br/>
+&nbsp;&nbsp;@<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.RMorphism.Pack"><span class="id" title="constructor">Pack</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.RMorphism.ClassDef.phRS"><span class="id" title="variable">phRS</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.RMorphism.ClassDef.f"><span class="id" title="variable">f</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#fM"><span class="id" title="variable">fM</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.RMorphism.pack"><span class="id" title="definition">pack</span></a> (<span class="id" title="var">fM</span> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.RMorphism.mixin_of"><span class="id" title="definition">mixin_of</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.RMorphism.ClassDef.f"><span class="id" title="variable">f</span></a>) :=<br/>
+&nbsp;&nbsp;<span class="id" title="keyword">fun</span> (<span class="id" title="var">bF</span> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Additive.map"><span class="id" title="record">Additive.map</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.RMorphism.ClassDef.phRS"><span class="id" title="variable">phRS</span></a>) <span class="id" title="var">fA</span> &amp; <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#phant_id"><span class="id" title="definition">phant_id</span></a> (<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Additive.class"><span class="id" title="definition">Additive.class</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#bF"><span class="id" title="variable">bF</span></a>) <a class="idref" href="mathcomp.algebra.ssralg.html#fA"><span class="id" title="variable">fA</span></a> ⇒<br/>
+&nbsp;&nbsp;<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.RMorphism.Pack"><span class="id" title="constructor">Pack</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.RMorphism.ClassDef.phRS"><span class="id" title="variable">phRS</span></a> (<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.RMorphism.Class"><span class="id" title="constructor">Class</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#fA"><span class="id" title="variable">fA</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#fM"><span class="id" title="variable">fM</span></a>).<br/>
+
+<br/>
+<span class="id" title="keyword">Canonical</span> <span class="id" title="var">additive</span> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Additive.Pack"><span class="id" title="constructor">Additive.Pack</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.RMorphism.ClassDef.phRS"><span class="id" title="variable">phRS</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.RMorphism.class"><span class="id" title="definition">class</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">End</span> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.RMorphism.ClassDef"><span class="id" title="section">ClassDef</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Module</span> <a name="GRing.RMorphism.Exports"><span class="id" title="module">Exports</span></a>.<br/>
+<span class="id" title="keyword">Notation</span> <a name="GRing.RMorphism.Exports.multiplicative"><span class="id" title="abbreviation">multiplicative</span></a> <span class="id" title="var">f</span> := (<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.RMorphism.mixin_of"><span class="id" title="definition">mixin_of</span></a> <span class="id" title="var">f</span>).<br/>
+<span class="id" title="keyword">Notation</span> <a name="GRing.RMorphism.Exports.rmorphism"><span class="id" title="abbreviation">rmorphism</span></a> <span class="id" title="var">f</span> := (<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.RMorphism.class_of"><span class="id" title="record">class_of</span></a> <span class="id" title="var">f</span>).<br/>
+<span class="id" title="keyword">Coercion</span> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.RMorphism.base"><span class="id" title="projection">base</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.RMorphism.base"><span class="id" title="projection">:</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.RMorphism.base"><span class="id" title="projection">rmorphism</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.RMorphism.base"><span class="id" title="projection">&gt;-&gt;</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.RMorphism.base"><span class="id" title="projection">Additive.axiom</span></a>.<br/>
+<span class="id" title="keyword">Coercion</span> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.RMorphism.mixin"><span class="id" title="projection">mixin</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.RMorphism.mixin"><span class="id" title="projection">:</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.RMorphism.mixin"><span class="id" title="projection">rmorphism</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.RMorphism.mixin"><span class="id" title="projection">&gt;-&gt;</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.RMorphism.mixin"><span class="id" title="projection">multiplicative</span></a>.<br/>
+<span class="id" title="keyword">Coercion</span> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.RMorphism.apply"><span class="id" title="projection">apply</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.RMorphism.apply"><span class="id" title="projection">:</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.RMorphism.apply"><span class="id" title="projection">map</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.RMorphism.apply"><span class="id" title="projection">&gt;-&gt;</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.RMorphism.apply"><span class="id" title="projection">Funclass</span></a>.<br/>
+<span class="id" title="keyword">Notation</span> <a name="GRing.RMorphism.Exports.RMorphism"><span class="id" title="abbreviation">RMorphism</span></a> <span class="id" title="var">fM</span> := (<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.RMorphism.Pack"><span class="id" title="constructor">Pack</span></a> (<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssreflect.html#Phant"><span class="id" title="constructor">Phant</span></a> <span class="id" title="var">_</span>) <span class="id" title="var">fM</span>).<br/>
+<span class="id" title="keyword">Notation</span> <a name="GRing.RMorphism.Exports.AddRMorphism"><span class="id" title="abbreviation">AddRMorphism</span></a> <span class="id" title="var">fM</span> := (<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.RMorphism.pack"><span class="id" title="definition">pack</span></a> <span class="id" title="var">fM</span> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#id"><span class="id" title="abbreviation">id</span></a>).<br/>
+<span class="id" title="keyword">Notation</span> <a name="0c709ebe43ddbd7719f75250a7b916d9"><span class="id" title="notation">&quot;</span></a>{ 'rmorphism' fRS }" := (<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.RMorphism.map"><span class="id" title="record">map</span></a> (<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssreflect.html#Phant"><span class="id" title="constructor">Phant</span></a> <span class="id" title="var">fRS</span>))<br/>
+&nbsp;&nbsp;(<span class="id" title="tactic">at</span> <span class="id" title="keyword">level</span> 0, <span class="id" title="var">format</span> "{ 'rmorphism' fRS }") : <span class="id" title="var">ring_scope</span>.<br/>
+<span class="id" title="keyword">Notation</span> <a name="665e1724a466fd5a4c6ba181bb2c140c"><span class="id" title="notation">&quot;</span></a>[ 'rmorphism' 'of' f 'as' g ]" := (@<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.RMorphism.clone"><span class="id" title="definition">clone</span></a> <span class="id" title="var">_</span> <span class="id" title="var">_</span> <span class="id" title="var">_</span> <span class="id" title="var">f</span> <span class="id" title="var">g</span> <span class="id" title="var">_</span> <span class="id" title="var">_</span> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#idfun"><span class="id" title="abbreviation">idfun</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#id"><span class="id" title="abbreviation">id</span></a>)<br/>
+&nbsp;&nbsp;(<span class="id" title="tactic">at</span> <span class="id" title="keyword">level</span> 0, <span class="id" title="var">format</span> "[ 'rmorphism' 'of' f 'as' g ]") : <span class="id" title="var">form_scope</span>.<br/>
+<span class="id" title="keyword">Notation</span> <a name="778d861598c34ba1d4bea8b9adaae863"><span class="id" title="notation">&quot;</span></a>[ 'rmorphism' 'of' f ]" := (@<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.RMorphism.clone"><span class="id" title="definition">clone</span></a> <span class="id" title="var">_</span> <span class="id" title="var">_</span> <span class="id" title="var">_</span> <span class="id" title="var">f</span> <span class="id" title="var">f</span> <span class="id" title="var">_</span> <span class="id" title="var">_</span> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#id"><span class="id" title="abbreviation">id</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#id"><span class="id" title="abbreviation">id</span></a>)<br/>
+&nbsp;&nbsp;(<span class="id" title="tactic">at</span> <span class="id" title="keyword">level</span> 0, <span class="id" title="var">format</span> "[ 'rmorphism' 'of' f ]") : <span class="id" title="var">form_scope</span>.<br/>
+<span class="id" title="keyword">Coercion</span> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.RMorphism.additive"><span class="id" title="definition">additive</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.RMorphism.additive"><span class="id" title="definition">:</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.RMorphism.additive"><span class="id" title="definition">map</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.RMorphism.additive"><span class="id" title="definition">&gt;-&gt;</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.RMorphism.additive"><span class="id" title="definition">Additive.map</span></a>.<br/>
+<span class="id" title="keyword">Canonical</span> <span class="id" title="var">additive</span>.<br/>
+<span class="id" title="keyword">End</span> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.RMorphism.Exports"><span class="id" title="module">Exports</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">End</span> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.RMorphism"><span class="id" title="module">RMorphism</span></a>.<br/>
+<span class="id" title="keyword">Include</span> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.RMorphism.Exports"><span class="id" title="module">RMorphism.Exports</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Section</span> <a name="GRing.RmorphismTheory"><span class="id" title="section">RmorphismTheory</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Section</span> <a name="GRing.RmorphismTheory.Properties"><span class="id" title="section">Properties</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Variables</span> (<a name="GRing.RmorphismTheory.Properties.R"><span class="id" title="variable">R</span></a> <a name="GRing.RmorphismTheory.Properties.S"><span class="id" title="variable">S</span></a> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ringType"><span class="id" title="abbreviation">ringType</span></a>) (<a name="GRing.RmorphismTheory.Properties.k"><span class="id" title="variable">k</span></a> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#unit"><span class="id" title="inductive">unit</span></a>) (<a name="GRing.RmorphismTheory.Properties.f"><span class="id" title="variable">f</span></a> : <a class="idref" href="mathcomp.algebra.ssralg.html#0c709ebe43ddbd7719f75250a7b916d9"><span class="id" title="notation">{</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#0c709ebe43ddbd7719f75250a7b916d9"><span class="id" title="notation">rmorphism</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#R"><span class="id" title="variable">R</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#S"><span class="id" title="variable">S</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#0c709ebe43ddbd7719f75250a7b916d9"><span class="id" title="notation">}</span></a>).<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.rmorph0"><span class="id" title="lemma">rmorph0</span></a> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.RmorphismTheory.Properties.f"><span class="id" title="variable">f</span></a> 0 <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> 0. <br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.rmorphN"><span class="id" title="lemma">rmorphN</span></a> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#c3c88e2b30b681cd767a54649faf5973"><span class="id" title="notation">{</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#c3c88e2b30b681cd767a54649faf5973"><span class="id" title="notation">morph</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.RmorphismTheory.Properties.f"><span class="id" title="variable">f</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#c3c88e2b30b681cd767a54649faf5973"><span class="id" title="notation">:</span></a> <span class="id" title="var">x</span> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#c3c88e2b30b681cd767a54649faf5973"><span class="id" title="notation">/</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#eefae7eea8ed2b8fccf150cb653d7a7b"><span class="id" title="notation">-</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#c3c88e2b30b681cd767a54649faf5973"><span class="id" title="notation">}</span></a>. <br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.rmorphD"><span class="id" title="lemma">rmorphD</span></a> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#3014e73af2a90fd800d8681479d76336"><span class="id" title="notation">{</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#3014e73af2a90fd800d8681479d76336"><span class="id" title="notation">morph</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.RmorphismTheory.Properties.f"><span class="id" title="variable">f</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#3014e73af2a90fd800d8681479d76336"><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/8.8.0/stdlib//Coq.ssr.ssrfun.html#3014e73af2a90fd800d8681479d76336"><span class="id" title="notation">/</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#338c5345074fd3586073fd29273c138a"><span class="id" title="notation">+</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#y"><span class="id" title="variable">y</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#3014e73af2a90fd800d8681479d76336"><span class="id" title="notation">}</span></a>. <br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.rmorphB"><span class="id" title="lemma">rmorphB</span></a> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#3014e73af2a90fd800d8681479d76336"><span class="id" title="notation">{</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#3014e73af2a90fd800d8681479d76336"><span class="id" title="notation">morph</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.RmorphismTheory.Properties.f"><span class="id" title="variable">f</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#3014e73af2a90fd800d8681479d76336"><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/8.8.0/stdlib//Coq.ssr.ssrfun.html#3014e73af2a90fd800d8681479d76336"><span class="id" title="notation">/</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#4d4b9697032429ec46472e6332d1356a"><span class="id" title="notation">-</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#y"><span class="id" title="variable">y</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#3014e73af2a90fd800d8681479d76336"><span class="id" title="notation">}</span></a>. <br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.rmorphMn"><span class="id" title="lemma">rmorphMn</span></a> <span class="id" title="var">n</span> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#c3c88e2b30b681cd767a54649faf5973"><span class="id" title="notation">{</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#c3c88e2b30b681cd767a54649faf5973"><span class="id" title="notation">morph</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.RmorphismTheory.Properties.f"><span class="id" title="variable">f</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#c3c88e2b30b681cd767a54649faf5973"><span class="id" title="notation">:</span></a> <span class="id" title="var">x</span> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#c3c88e2b30b681cd767a54649faf5973"><span class="id" title="notation">/</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#513eaa3129601ecbcc9e188a80d6155b"><span class="id" title="notation">*+</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#n"><span class="id" title="variable">n</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#c3c88e2b30b681cd767a54649faf5973"><span class="id" title="notation">}</span></a>. <br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.rmorphMNn"><span class="id" title="lemma">rmorphMNn</span></a> <span class="id" title="var">n</span> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#c3c88e2b30b681cd767a54649faf5973"><span class="id" title="notation">{</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#c3c88e2b30b681cd767a54649faf5973"><span class="id" title="notation">morph</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.RmorphismTheory.Properties.f"><span class="id" title="variable">f</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#c3c88e2b30b681cd767a54649faf5973"><span class="id" title="notation">:</span></a> <span class="id" title="var">x</span> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#c3c88e2b30b681cd767a54649faf5973"><span class="id" title="notation">/</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#be9a273af87c6a30d88bd8379c802cbe"><span class="id" title="notation">*-</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#n"><span class="id" title="variable">n</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#c3c88e2b30b681cd767a54649faf5973"><span class="id" title="notation">}</span></a>. <br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.rmorph_sum"><span class="id" title="lemma">rmorph_sum</span></a> <span class="id" title="var">I</span> <span class="id" title="var">r</span> (<span class="id" title="var">P</span> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#pred"><span class="id" title="definition">pred</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#I"><span class="id" title="variable">I</span></a>) <span class="id" title="var">E</span> :<br/>
+&nbsp;&nbsp;<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.RmorphismTheory.Properties.f"><span class="id" title="variable">f</span></a> (<a class="idref" href="mathcomp.algebra.ssralg.html#664ae738a3286983847c80e5ee4c8c6b"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#664ae738a3286983847c80e5ee4c8c6b"><span class="id" title="notation">sum_</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#664ae738a3286983847c80e5ee4c8c6b"><span class="id" title="notation">(</span></a><span class="id" title="var">i</span> <a class="idref" href="mathcomp.algebra.ssralg.html#664ae738a3286983847c80e5ee4c8c6b"><span class="id" title="notation">&lt;-</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#r"><span class="id" title="variable">r</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#664ae738a3286983847c80e5ee4c8c6b"><span class="id" title="notation">|</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#P"><span class="id" title="variable">P</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#i"><span class="id" title="variable">i</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#664ae738a3286983847c80e5ee4c8c6b"><span class="id" title="notation">)</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#E"><span class="id" title="variable">E</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#i"><span class="id" title="variable">i</span></a>) <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#664ae738a3286983847c80e5ee4c8c6b"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#664ae738a3286983847c80e5ee4c8c6b"><span class="id" title="notation">sum_</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#664ae738a3286983847c80e5ee4c8c6b"><span class="id" title="notation">(</span></a><span class="id" title="var">i</span> <a class="idref" href="mathcomp.algebra.ssralg.html#664ae738a3286983847c80e5ee4c8c6b"><span class="id" title="notation">&lt;-</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#r"><span class="id" title="variable">r</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#664ae738a3286983847c80e5ee4c8c6b"><span class="id" title="notation">|</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#P"><span class="id" title="variable">P</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#i"><span class="id" title="variable">i</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#664ae738a3286983847c80e5ee4c8c6b"><span class="id" title="notation">)</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.RmorphismTheory.Properties.f"><span class="id" title="variable">f</span></a> (<a class="idref" href="mathcomp.algebra.ssralg.html#E"><span class="id" title="variable">E</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#i"><span class="id" title="variable">i</span></a>).<br/>
+ <span class="id" title="keyword">Lemma</span> <a name="GRing.rmorphMsign"><span class="id" title="lemma">rmorphMsign</span></a> <span class="id" title="var">n</span> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#c3c88e2b30b681cd767a54649faf5973"><span class="id" title="notation">{</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#c3c88e2b30b681cd767a54649faf5973"><span class="id" title="notation">morph</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.RmorphismTheory.Properties.f"><span class="id" title="variable">f</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#c3c88e2b30b681cd767a54649faf5973"><span class="id" title="notation">:</span></a> <span class="id" title="var">x</span> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#c3c88e2b30b681cd767a54649faf5973"><span class="id" title="notation">/</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#b5a6699e28c97bb33352772cfa3ea869"><span class="id" title="notation">(</span></a>- 1<a class="idref" href="mathcomp.algebra.ssralg.html#b5a6699e28c97bb33352772cfa3ea869"><span class="id" title="notation">)</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#b5a6699e28c97bb33352772cfa3ea869"><span class="id" title="notation">^+</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#n"><span class="id" title="variable">n</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#ed99e7035d9a1f8a2c1515be81ac2e5f"><span class="id" title="notation">×</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#c3c88e2b30b681cd767a54649faf5973"><span class="id" title="notation">}</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.rmorphismP"><span class="id" title="lemma">rmorphismP</span></a> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.rmorphism"><span class="id" title="abbreviation">rmorphism</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.RmorphismTheory.Properties.f"><span class="id" title="variable">f</span></a>. <br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.rmorphismMP"><span class="id" title="lemma">rmorphismMP</span></a> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.multiplicative"><span class="id" title="abbreviation">multiplicative</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.RmorphismTheory.Properties.f"><span class="id" title="variable">f</span></a>. <br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.rmorph1"><span class="id" title="lemma">rmorph1</span></a> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.RmorphismTheory.Properties.f"><span class="id" title="variable">f</span></a> 1 <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> 1. <br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.rmorphM"><span class="id" title="lemma">rmorphM</span></a> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#3014e73af2a90fd800d8681479d76336"><span class="id" title="notation">{</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#3014e73af2a90fd800d8681479d76336"><span class="id" title="notation">morph</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.RmorphismTheory.Properties.f"><span class="id" title="variable">f</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#3014e73af2a90fd800d8681479d76336"><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/8.8.0/stdlib//Coq.ssr.ssrfun.html#3014e73af2a90fd800d8681479d76336"><span class="id" title="notation">/</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#ed99e7035d9a1f8a2c1515be81ac2e5f"><span class="id" title="notation">×</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#y"><span class="id" title="variable">y</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#3014e73af2a90fd800d8681479d76336"><span class="id" title="notation">}</span></a>. <br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.rmorph_prod"><span class="id" title="lemma">rmorph_prod</span></a> <span class="id" title="var">I</span> <span class="id" title="var">r</span> (<span class="id" title="var">P</span> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#pred"><span class="id" title="definition">pred</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#I"><span class="id" title="variable">I</span></a>) <span class="id" title="var">E</span> :<br/>
+&nbsp;&nbsp;<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.RmorphismTheory.Properties.f"><span class="id" title="variable">f</span></a> (<a class="idref" href="mathcomp.algebra.ssralg.html#3f1a950be6bcb72c9434150471b42417"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#3f1a950be6bcb72c9434150471b42417"><span class="id" title="notation">prod_</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#3f1a950be6bcb72c9434150471b42417"><span class="id" title="notation">(</span></a><span class="id" title="var">i</span> <a class="idref" href="mathcomp.algebra.ssralg.html#3f1a950be6bcb72c9434150471b42417"><span class="id" title="notation">&lt;-</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#r"><span class="id" title="variable">r</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#3f1a950be6bcb72c9434150471b42417"><span class="id" title="notation">|</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#P"><span class="id" title="variable">P</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#i"><span class="id" title="variable">i</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#3f1a950be6bcb72c9434150471b42417"><span class="id" title="notation">)</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#E"><span class="id" title="variable">E</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#i"><span class="id" title="variable">i</span></a>) <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#3f1a950be6bcb72c9434150471b42417"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#3f1a950be6bcb72c9434150471b42417"><span class="id" title="notation">prod_</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#3f1a950be6bcb72c9434150471b42417"><span class="id" title="notation">(</span></a><span class="id" title="var">i</span> <a class="idref" href="mathcomp.algebra.ssralg.html#3f1a950be6bcb72c9434150471b42417"><span class="id" title="notation">&lt;-</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#r"><span class="id" title="variable">r</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#3f1a950be6bcb72c9434150471b42417"><span class="id" title="notation">|</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#P"><span class="id" title="variable">P</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#i"><span class="id" title="variable">i</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#3f1a950be6bcb72c9434150471b42417"><span class="id" title="notation">)</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.RmorphismTheory.Properties.f"><span class="id" title="variable">f</span></a> (<a class="idref" href="mathcomp.algebra.ssralg.html#E"><span class="id" title="variable">E</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#i"><span class="id" title="variable">i</span></a>).<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.rmorphX"><span class="id" title="lemma">rmorphX</span></a> <span class="id" title="var">n</span> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#c3c88e2b30b681cd767a54649faf5973"><span class="id" title="notation">{</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#c3c88e2b30b681cd767a54649faf5973"><span class="id" title="notation">morph</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.RmorphismTheory.Properties.f"><span class="id" title="variable">f</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#c3c88e2b30b681cd767a54649faf5973"><span class="id" title="notation">:</span></a> <span class="id" title="var">x</span> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#c3c88e2b30b681cd767a54649faf5973"><span class="id" title="notation">/</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#b5a6699e28c97bb33352772cfa3ea869"><span class="id" title="notation">^+</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#n"><span class="id" title="variable">n</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#c3c88e2b30b681cd767a54649faf5973"><span class="id" title="notation">}</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.rmorph_nat"><span class="id" title="lemma">rmorph_nat</span></a> <span class="id" title="var">n</span> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.RmorphismTheory.Properties.f"><span class="id" title="variable">f</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#n"><span class="id" title="variable">n</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#c191333b9c7c034282647fbffacc9d18"><span class="id" title="notation">%:</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#c191333b9c7c034282647fbffacc9d18"><span class="id" title="notation">R</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#n"><span class="id" title="variable">n</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#c191333b9c7c034282647fbffacc9d18"><span class="id" title="notation">%:</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#c191333b9c7c034282647fbffacc9d18"><span class="id" title="notation">R</span></a>. <br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.rmorphN1"><span class="id" title="lemma">rmorphN1</span></a> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.RmorphismTheory.Properties.f"><span class="id" title="variable">f</span></a> (- 1) <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">(</span></a>- 1<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">)</span></a>. <br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.rmorph_sign"><span class="id" title="lemma">rmorph_sign</span></a> <span class="id" title="var">n</span> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.RmorphismTheory.Properties.f"><span class="id" title="variable">f</span></a> (<a class="idref" href="mathcomp.algebra.ssralg.html#b5a6699e28c97bb33352772cfa3ea869"><span class="id" title="notation">(</span></a>- 1<a class="idref" href="mathcomp.algebra.ssralg.html#b5a6699e28c97bb33352772cfa3ea869"><span class="id" title="notation">)</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#b5a6699e28c97bb33352772cfa3ea869"><span class="id" title="notation">^+</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#n"><span class="id" title="variable">n</span></a>) <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#b5a6699e28c97bb33352772cfa3ea869"><span class="id" title="notation">(</span></a>- 1<a class="idref" href="mathcomp.algebra.ssralg.html#b5a6699e28c97bb33352772cfa3ea869"><span class="id" title="notation">)</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#b5a6699e28c97bb33352772cfa3ea869"><span class="id" title="notation">^+</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#n"><span class="id" title="variable">n</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.rmorph_char"><span class="id" title="lemma">rmorph_char</span></a> <span class="id" title="var">p</span> : <a class="idref" href="mathcomp.algebra.ssralg.html#p"><span class="id" title="variable">p</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">\</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">in</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#51fab11b73193ca5e8e7a62cac129ebc"><span class="id" title="notation">[</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#51fab11b73193ca5e8e7a62cac129ebc"><span class="id" title="notation">char</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.RmorphismTheory.Properties.R"><span class="id" title="variable">R</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#51fab11b73193ca5e8e7a62cac129ebc"><span class="id" title="notation">]</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#p"><span class="id" title="variable">p</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">\</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">in</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#51fab11b73193ca5e8e7a62cac129ebc"><span class="id" title="notation">[</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#51fab11b73193ca5e8e7a62cac129ebc"><span class="id" title="notation">char</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.RmorphismTheory.Properties.S"><span class="id" title="variable">S</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#51fab11b73193ca5e8e7a62cac129ebc"><span class="id" title="notation">]</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.rmorph_eq_nat"><span class="id" title="lemma">rmorph_eq_nat</span></a> <span class="id" title="var">x</span> <span class="id" title="var">n</span> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#injective"><span class="id" title="definition">injective</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.RmorphismTheory.Properties.f"><span class="id" title="variable">f</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#GRing.RmorphismTheory.Properties.f"><span class="id" title="variable">f</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#17d28d004d0863cb022d4ce832ddaaae"><span class="id" title="notation">==</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#n"><span class="id" title="variable">n</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#c191333b9c7c034282647fbffacc9d18"><span class="id" title="notation">%:</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#c191333b9c7c034282647fbffacc9d18"><span class="id" title="notation">R</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">)</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#17d28d004d0863cb022d4ce832ddaaae"><span class="id" title="notation">==</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#n"><span class="id" title="variable">n</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#c191333b9c7c034282647fbffacc9d18"><span class="id" title="notation">%:</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#c191333b9c7c034282647fbffacc9d18"><span class="id" title="notation">R</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">)</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.rmorph_eq1"><span class="id" title="lemma">rmorph_eq1</span></a> <span class="id" title="var">x</span> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#injective"><span class="id" title="definition">injective</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.RmorphismTheory.Properties.f"><span class="id" title="variable">f</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#GRing.RmorphismTheory.Properties.f"><span class="id" title="variable">f</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#17d28d004d0863cb022d4ce832ddaaae"><span class="id" title="notation">==</span></a> 1<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">)</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#17d28d004d0863cb022d4ce832ddaaae"><span class="id" title="notation">==</span></a> 1<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">)</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.can2_rmorphism"><span class="id" title="lemma">can2_rmorphism</span></a> <span class="id" title="var">f'</span> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#cancel"><span class="id" title="definition">cancel</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.RmorphismTheory.Properties.f"><span class="id" title="variable">f</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#f'"><span class="id" title="variable">f'</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#cancel"><span class="id" title="definition">cancel</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#f'"><span class="id" title="variable">f'</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.RmorphismTheory.Properties.f"><span class="id" title="variable">f</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.rmorphism"><span class="id" title="abbreviation">rmorphism</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#f'"><span class="id" title="variable">f'</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.bij_rmorphism"><span class="id" title="lemma">bij_rmorphism</span></a> :<br/>
+&nbsp;&nbsp;<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#bijective"><span class="id" title="inductive">bijective</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.RmorphismTheory.Properties.f"><span class="id" title="variable">f</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#fe60c20831f772c0c3c288abf68cc42a"><span class="id" title="notation">exists2</span></a> <span class="id" title="var">f'</span> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#fe60c20831f772c0c3c288abf68cc42a"><span class="id" title="notation">:</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#0c709ebe43ddbd7719f75250a7b916d9"><span class="id" title="notation">{</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#0c709ebe43ddbd7719f75250a7b916d9"><span class="id" title="notation">rmorphism</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.RmorphismTheory.Properties.S"><span class="id" title="variable">S</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.RmorphismTheory.Properties.R"><span class="id" title="variable">R</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#0c709ebe43ddbd7719f75250a7b916d9"><span class="id" title="notation">}</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#fe60c20831f772c0c3c288abf68cc42a"><span class="id" title="notation">,</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#cancel"><span class="id" title="definition">cancel</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.RmorphismTheory.Properties.f"><span class="id" title="variable">f</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#f'"><span class="id" title="variable">f'</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#fe60c20831f772c0c3c288abf68cc42a"><span class="id" title="notation">&amp;</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#cancel"><span class="id" title="definition">cancel</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#f'"><span class="id" title="variable">f'</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.RmorphismTheory.Properties.f"><span class="id" title="variable">f</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Fact</span> <a name="GRing.locked_is_multiplicative"><span class="id" title="lemma">locked_is_multiplicative</span></a> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.multiplicative"><span class="id" title="abbreviation">multiplicative</span></a> (<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssreflect.html#locked_with"><span class="id" title="definition">locked_with</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.RmorphismTheory.Properties.k"><span class="id" title="variable">k</span></a> (<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.RmorphismTheory.Properties.f"><span class="id" title="variable">f</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssreflect.html#4509b22bf26e3d6d771897e22bd8bc8f"><span class="id" title="notation">:</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.RmorphismTheory.Properties.R"><span class="id" title="variable">R</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.RmorphismTheory.Properties.S"><span class="id" title="variable">S</span></a>)).<br/>
+ <span class="id" title="keyword">Canonical</span> <span class="id" title="var">locked_rmorphism</span> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.AddRMorphism"><span class="id" title="abbreviation">AddRMorphism</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.locked_is_multiplicative"><span class="id" title="lemma">locked_is_multiplicative</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">End</span> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.RmorphismTheory.Properties"><span class="id" title="section">Properties</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Section</span> <a name="GRing.RmorphismTheory.Projections"><span class="id" title="section">Projections</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Variables</span> (<a name="GRing.RmorphismTheory.Projections.R"><span class="id" title="variable">R</span></a> <a name="GRing.RmorphismTheory.Projections.S"><span class="id" title="variable">S</span></a> <a name="GRing.RmorphismTheory.Projections.T"><span class="id" title="variable">T</span></a> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ringType"><span class="id" title="abbreviation">ringType</span></a>) (<a name="GRing.RmorphismTheory.Projections.f"><span class="id" title="variable">f</span></a> : <a class="idref" href="mathcomp.algebra.ssralg.html#0c709ebe43ddbd7719f75250a7b916d9"><span class="id" title="notation">{</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#0c709ebe43ddbd7719f75250a7b916d9"><span class="id" title="notation">rmorphism</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#S"><span class="id" title="variable">S</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#T"><span class="id" title="variable">T</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#0c709ebe43ddbd7719f75250a7b916d9"><span class="id" title="notation">}</span></a>) (<a name="GRing.RmorphismTheory.Projections.g"><span class="id" title="variable">g</span></a> : <a class="idref" href="mathcomp.algebra.ssralg.html#0c709ebe43ddbd7719f75250a7b916d9"><span class="id" title="notation">{</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#0c709ebe43ddbd7719f75250a7b916d9"><span class="id" title="notation">rmorphism</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#R"><span class="id" title="variable">R</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#S"><span class="id" title="variable">S</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#0c709ebe43ddbd7719f75250a7b916d9"><span class="id" title="notation">}</span></a>).<br/>
+
+<br/>
+<span class="id" title="keyword">Fact</span> <a name="GRing.idfun_is_multiplicative"><span class="id" title="lemma">idfun_is_multiplicative</span></a> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.multiplicative"><span class="id" title="abbreviation">multiplicative</span></a> (<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#cc5a9586eb997be35b65ea12b2a985a9"><span class="id" title="notation">@</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#cc5a9586eb997be35b65ea12b2a985a9"><span class="id" title="notation">idfun</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.RmorphismTheory.Projections.R"><span class="id" title="variable">R</span></a>).<br/>
+ <span class="id" title="keyword">Canonical</span> <span class="id" title="var">idfun_rmorphism</span> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.AddRMorphism"><span class="id" title="abbreviation">AddRMorphism</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.idfun_is_multiplicative"><span class="id" title="lemma">idfun_is_multiplicative</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Fact</span> <a name="GRing.comp_is_multiplicative"><span class="id" title="lemma">comp_is_multiplicative</span></a> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.multiplicative"><span class="id" title="abbreviation">multiplicative</span></a> (<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.RmorphismTheory.Projections.f"><span class="id" title="variable">f</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#1b4394c5c1740ef3dc9e4224084970bb"><span class="id" title="notation">\</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#1b4394c5c1740ef3dc9e4224084970bb"><span class="id" title="notation">o</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.RmorphismTheory.Projections.g"><span class="id" title="variable">g</span></a>).<br/>
+ <span class="id" title="keyword">Canonical</span> <span class="id" title="var">comp_rmorphism</span> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.AddRMorphism"><span class="id" title="abbreviation">AddRMorphism</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.comp_is_multiplicative"><span class="id" title="lemma">comp_is_multiplicative</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">End</span> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.RmorphismTheory.Projections"><span class="id" title="section">Projections</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Section</span> <a name="GRing.RmorphismTheory.InAlgebra"><span class="id" title="section">InAlgebra</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Variables</span> (<a name="GRing.RmorphismTheory.InAlgebra.R"><span class="id" title="variable">R</span></a> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ringType"><span class="id" title="abbreviation">ringType</span></a>) (<a name="GRing.RmorphismTheory.InAlgebra.A"><span class="id" title="variable">A</span></a> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.lalgType"><span class="id" title="abbreviation">lalgType</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#R"><span class="id" title="variable">R</span></a>).<br/>
+
+<br/>
+<span class="id" title="keyword">Fact</span> <a name="GRing.in_alg_is_rmorphism"><span class="id" title="lemma">in_alg_is_rmorphism</span></a> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.rmorphism"><span class="id" title="abbreviation">rmorphism</span></a> (<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.in_alg_loc"><span class="id" title="abbreviation">in_alg_loc</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.RmorphismTheory.InAlgebra.A"><span class="id" title="variable">A</span></a>).<br/>
+<span class="id" title="keyword">Canonical</span> <span class="id" title="var">in_alg_additive</span> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Additive"><span class="id" title="abbreviation">Additive</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.in_alg_is_rmorphism"><span class="id" title="lemma">in_alg_is_rmorphism</span></a>.<br/>
+<span class="id" title="keyword">Canonical</span> <span class="id" title="var">in_alg_rmorphism</span> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.RMorphism"><span class="id" title="abbreviation">RMorphism</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.in_alg_is_rmorphism"><span class="id" title="lemma">in_alg_is_rmorphism</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.in_algE"><span class="id" title="lemma">in_algE</span></a> <span class="id" title="var">a</span> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.in_alg_loc"><span class="id" title="abbreviation">in_alg_loc</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.RmorphismTheory.InAlgebra.A"><span class="id" title="variable">A</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#a"><span class="id" title="variable">a</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#a"><span class="id" title="variable">a</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#a9486b60fd4d51d8247008b3f8b21d21"><span class="id" title="notation">%:</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#a9486b60fd4d51d8247008b3f8b21d21"><span class="id" title="notation">A</span></a>. <br/>
+
+<br/>
+<span class="id" title="keyword">End</span> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.RmorphismTheory.InAlgebra"><span class="id" title="section">InAlgebra</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">End</span> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.RmorphismTheory"><span class="id" title="section">RmorphismTheory</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Module</span> <a name="GRing.Scale"><span class="id" title="module">Scale</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Section</span> <a name="GRing.Scale.ScaleLaw"><span class="id" title="section">ScaleLaw</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Structure</span> <a name="GRing.Scale.law"><span class="id" title="record">law</span></a> (<span class="id" title="var">R</span> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Ring.Exports.ringType"><span class="id" title="abbreviation">ringType</span></a>) (<span class="id" title="var">V</span> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Zmodule.Exports.zmodType"><span class="id" title="abbreviation">zmodType</span></a>) (<span class="id" title="var">s</span> : <a class="idref" href="mathcomp.algebra.ssralg.html#R"><span class="id" title="variable">R</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#V"><span class="id" title="variable">V</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#V"><span class="id" title="variable">V</span></a>) := <a name="GRing.Scale.Law"><span class="id" title="constructor">Law</span></a> {<br/>
+&nbsp;&nbsp;<a name="GRing.Scale.op"><span class="id" title="projection">op</span></a> : <a class="idref" href="mathcomp.algebra.ssralg.html#R"><span class="id" title="variable">R</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#V"><span class="id" title="variable">V</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#V"><span class="id" title="variable">V</span></a>;<br/>
+&nbsp;&nbsp;<span class="id" title="var">_</span> : <a class="idref" href="mathcomp.algebra.ssralg.html#op"><span class="id" title="method">op</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#s"><span class="id" title="variable">s</span></a>;<br/>
+&nbsp;&nbsp;<span class="id" title="var">_</span> : <a class="idref" href="mathcomp.algebra.ssralg.html#op"><span class="id" title="method">op</span></a> (-1) <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#2500d48ed8e862ccfda98a44dff88963"><span class="id" title="notation">=1</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#221881b99d58ceaaa33c4172192f697e"><span class="id" title="notation">-%</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#221881b99d58ceaaa33c4172192f697e"><span class="id" title="notation">R</span></a>;<br/>
+&nbsp;&nbsp;<span class="id" title="var">_</span> : <span class="id" title="keyword">∀</span> <span class="id" title="var">a</span>, <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.additive"><span class="id" title="abbreviation">additive</span></a> (<a class="idref" href="mathcomp.algebra.ssralg.html#op"><span class="id" title="method">op</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#a"><span class="id" title="variable">a</span></a>)<br/>
+}.<br/>
+
+<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Scale.mul_law"><span class="id" title="definition">mul_law</span></a> <span class="id" title="var">R</span> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Scale.Law"><span class="id" title="constructor">Law</span></a> (<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#erefl"><span class="id" title="abbreviation">erefl</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#6498e6e308d8a143464cf2d2ba603d36"><span class="id" title="notation">*%</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#6498e6e308d8a143464cf2d2ba603d36"><span class="id" title="notation">R</span></a>) (@<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.mulN1r"><span class="id" title="lemma">mulN1r</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#R"><span class="id" title="variable">R</span></a>) (@<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.mulrBr"><span class="id" title="lemma">mulrBr</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#R"><span class="id" title="variable">R</span></a>).<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Scale.scale_law"><span class="id" title="definition">scale_law</span></a> <span class="id" title="var">R</span> <span class="id" title="var">U</span> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Scale.Law"><span class="id" title="constructor">Law</span></a> (<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#erefl"><span class="id" title="abbreviation">erefl</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#9d4bc68f8a37455428efb931e05d31ce"><span class="id" title="notation">*:%</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#9d4bc68f8a37455428efb931e05d31ce"><span class="id" title="notation">R</span></a>) (@<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.scaleN1r"><span class="id" title="lemma">scaleN1r</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#R"><span class="id" title="variable">R</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#U"><span class="id" title="variable">U</span></a>) (@<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.scalerBr"><span class="id" title="lemma">scalerBr</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#R"><span class="id" title="variable">R</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#U"><span class="id" title="variable">U</span></a>).<br/>
+
+<br/>
+<span class="id" title="keyword">Variables</span> (<a name="GRing.Scale.ScaleLaw.R"><span class="id" title="variable">R</span></a> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Ring.Exports.ringType"><span class="id" title="abbreviation">ringType</span></a>) (<a name="GRing.Scale.ScaleLaw.V"><span class="id" title="variable">V</span></a> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Zmodule.Exports.zmodType"><span class="id" title="abbreviation">zmodType</span></a>) (<a name="GRing.Scale.ScaleLaw.s"><span class="id" title="variable">s</span></a> : <a class="idref" href="mathcomp.algebra.ssralg.html#R"><span class="id" title="variable">R</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#V"><span class="id" title="variable">V</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#V"><span class="id" title="variable">V</span></a>) (<a name="GRing.Scale.ScaleLaw.s_law"><span class="id" title="variable">s_law</span></a> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Scale.law"><span class="id" title="record">law</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#s"><span class="id" title="variable">s</span></a>).<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.Scale.opE"><span class="id" title="lemma">opE</span></a> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Scale.s_op"><span class="id" title="abbreviation">s_op</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Scale.ScaleLaw.s"><span class="id" title="variable">s</span></a>. <br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.Scale.N1op"><span class="id" title="lemma">N1op</span></a> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Scale.s_op"><span class="id" title="abbreviation">s_op</span></a> (-1) <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#2500d48ed8e862ccfda98a44dff88963"><span class="id" title="notation">=1</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#221881b99d58ceaaa33c4172192f697e"><span class="id" title="notation">-%</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#221881b99d58ceaaa33c4172192f697e"><span class="id" title="notation">R</span></a>. <br/>
+<span class="id" title="keyword">Fact</span> <a name="GRing.Scale.opB"><span class="id" title="lemma">opB</span></a> <span class="id" title="var">a</span> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.additive"><span class="id" title="abbreviation">additive</span></a> (<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Scale.s_op"><span class="id" title="abbreviation">s_op</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#a"><span class="id" title="variable">a</span></a>). <br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Scale.op_additive"><span class="id" title="definition">op_additive</span></a> <span class="id" title="var">a</span> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Additive"><span class="id" title="abbreviation">Additive</span></a> (<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Scale.opB"><span class="id" title="lemma">opB</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#a"><span class="id" title="variable">a</span></a>).<br/>
+
+<br/>
+<span class="id" title="keyword">Variables</span> (<a name="GRing.Scale.ScaleLaw.aR"><span class="id" title="variable">aR</span></a> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Ring.Exports.ringType"><span class="id" title="abbreviation">ringType</span></a>) (<a name="GRing.Scale.ScaleLaw.nu"><span class="id" title="variable">nu</span></a> : <a class="idref" href="mathcomp.algebra.ssralg.html#0c709ebe43ddbd7719f75250a7b916d9"><span class="id" title="notation">{</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#0c709ebe43ddbd7719f75250a7b916d9"><span class="id" title="notation">rmorphism</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#aR"><span class="id" title="variable">aR</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Scale.ScaleLaw.R"><span class="id" title="variable">R</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#0c709ebe43ddbd7719f75250a7b916d9"><span class="id" title="notation">}</span></a>).<br/>
+<span class="id" title="keyword">Fact</span> <a name="GRing.Scale.comp_opE"><span class="id" title="lemma">comp_opE</span></a> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Scale.ScaleLaw.nu"><span class="id" title="variable">nu</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#c42c5cb909c30537f9f6acfcf01cf7e1"><span class="id" title="notation">\;</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Scale.s_op"><span class="id" title="abbreviation">s_op</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Scale.ScaleLaw.nu"><span class="id" title="variable">nu</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#c42c5cb909c30537f9f6acfcf01cf7e1"><span class="id" title="notation">\;</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Scale.ScaleLaw.s"><span class="id" title="variable">s</span></a>. <br/>
+<span class="id" title="keyword">Fact</span> <a name="GRing.Scale.compN1op"><span class="id" title="lemma">compN1op</span></a> : (<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Scale.ScaleLaw.nu"><span class="id" title="variable">nu</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#c42c5cb909c30537f9f6acfcf01cf7e1"><span class="id" title="notation">\;</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Scale.s_op"><span class="id" title="abbreviation">s_op</span></a>) (-1) <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#2500d48ed8e862ccfda98a44dff88963"><span class="id" title="notation">=1</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#221881b99d58ceaaa33c4172192f697e"><span class="id" title="notation">-%</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#221881b99d58ceaaa33c4172192f697e"><span class="id" title="notation">R</span></a>.<br/>
+ <span class="id" title="keyword">Definition</span> <a name="GRing.Scale.comp_law"><span class="id" title="definition">comp_law</span></a> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Scale.law"><span class="id" title="record">law</span></a> (<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Scale.ScaleLaw.nu"><span class="id" title="variable">nu</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#c42c5cb909c30537f9f6acfcf01cf7e1"><span class="id" title="notation">\;</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Scale.ScaleLaw.s"><span class="id" title="variable">s</span></a>) := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Scale.Law"><span class="id" title="constructor">Law</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Scale.comp_opE"><span class="id" title="lemma">comp_opE</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Scale.compN1op"><span class="id" title="lemma">compN1op</span></a> (<span class="id" title="keyword">fun</span> <span class="id" title="var">a</span> ⇒ <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Scale.opB"><span class="id" title="lemma">opB</span></a> <span class="id" title="var">_</span>).<br/>
+
+<br/>
+<span class="id" title="keyword">End</span> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Scale.ScaleLaw"><span class="id" title="section">ScaleLaw</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">End</span> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Scale"><span class="id" title="module">Scale</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Module</span> <a name="GRing.Linear"><span class="id" title="module">Linear</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Section</span> <a name="GRing.Linear.ClassDef"><span class="id" title="section">ClassDef</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Variables</span> (<a name="GRing.Linear.ClassDef.R"><span class="id" title="variable">R</span></a> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Ring.Exports.ringType"><span class="id" title="abbreviation">ringType</span></a>) (<a name="GRing.Linear.ClassDef.U"><span class="id" title="variable">U</span></a> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Lmodule.Exports.lmodType"><span class="id" title="abbreviation">lmodType</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#R"><span class="id" title="variable">R</span></a>) (<a name="GRing.Linear.ClassDef.V"><span class="id" title="variable">V</span></a> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Zmodule.Exports.zmodType"><span class="id" title="abbreviation">zmodType</span></a>) (<a name="GRing.Linear.ClassDef.s"><span class="id" title="variable">s</span></a> : <a class="idref" href="mathcomp.algebra.ssralg.html#R"><span class="id" title="variable">R</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#V"><span class="id" title="variable">V</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#V"><span class="id" title="variable">V</span></a>).<br/>
+<span class="id" title="keyword">Implicit</span> <span class="id" title="keyword">Type</span> <span class="id" title="var">phUV</span> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssreflect.html#phant"><span class="id" title="inductive">phant</span></a> (<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Linear.ClassDef.U"><span class="id" title="variable">U</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Linear.ClassDef.V"><span class="id" title="variable">V</span></a>).<br/>
+
+<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Linear.axiom"><span class="id" title="definition">axiom</span></a> (<span class="id" title="var">f</span> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Linear.ClassDef.U"><span class="id" title="variable">U</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Linear.ClassDef.V"><span class="id" title="variable">V</span></a>) (<span class="id" title="var">s_law</span> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Scale.law"><span class="id" title="record">Scale.law</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Linear.ClassDef.s"><span class="id" title="variable">s</span></a>) <span class="id" title="keyword">of</span> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Linear.ClassDef.s"><span class="id" title="variable">s</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#s_law"><span class="id" title="variable">s_law</span></a> :=<br/>
+&nbsp;&nbsp;<span class="id" title="keyword">∀</span> <span class="id" title="var">a</span>, <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#a0fd72584f326d7220475d01d3fceccd"><span class="id" title="notation">{</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#a0fd72584f326d7220475d01d3fceccd"><span class="id" title="notation">morph</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#f"><span class="id" title="variable">f</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#a0fd72584f326d7220475d01d3fceccd"><span class="id" title="notation">:</span></a> <span class="id" title="var">u</span> <span class="id" title="var">v</span> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#a0fd72584f326d7220475d01d3fceccd"><span class="id" title="notation">/</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#a"><span class="id" title="variable">a</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#5aa7bcc9ac922e77482767d325fdbb69"><span class="id" title="notation">*:</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#u"><span class="id" title="variable">u</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#338c5345074fd3586073fd29273c138a"><span class="id" title="notation">+</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#v"><span class="id" title="variable">v</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#a0fd72584f326d7220475d01d3fceccd"><span class="id" title="notation">&gt;-&gt;</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Linear.ClassDef.s"><span class="id" title="variable">s</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#a"><span class="id" title="variable">a</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#u"><span class="id" title="variable">u</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#338c5345074fd3586073fd29273c138a"><span class="id" title="notation">+</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#v"><span class="id" title="variable">v</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#a0fd72584f326d7220475d01d3fceccd"><span class="id" title="notation">}</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Linear.mixin_of"><span class="id" title="definition">mixin_of</span></a> (<span class="id" title="var">f</span> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Linear.ClassDef.U"><span class="id" title="variable">U</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Linear.ClassDef.V"><span class="id" title="variable">V</span></a>) :=<br/>
+&nbsp;&nbsp;<span class="id" title="keyword">∀</span> <span class="id" title="var">a</span>, <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#59b5bb4add86e1e9ecbe874e74b2216e"><span class="id" title="notation">{</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#59b5bb4add86e1e9ecbe874e74b2216e"><span class="id" title="notation">morph</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#f"><span class="id" title="variable">f</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#59b5bb4add86e1e9ecbe874e74b2216e"><span class="id" title="notation">:</span></a> <span class="id" title="var">v</span> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#59b5bb4add86e1e9ecbe874e74b2216e"><span class="id" title="notation">/</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#a"><span class="id" title="variable">a</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#5aa7bcc9ac922e77482767d325fdbb69"><span class="id" title="notation">*:</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#v"><span class="id" title="variable">v</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#59b5bb4add86e1e9ecbe874e74b2216e"><span class="id" title="notation">&gt;-&gt;</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Linear.ClassDef.s"><span class="id" title="variable">s</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#a"><span class="id" title="variable">a</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#v"><span class="id" title="variable">v</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#59b5bb4add86e1e9ecbe874e74b2216e"><span class="id" title="notation">}</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Record</span> <a name="GRing.Linear.class_of"><span class="id" title="record">class_of</span></a> <span class="id" title="var">f</span> : <span class="id" title="keyword">Prop</span> := <a name="GRing.Linear.Class"><span class="id" title="constructor">Class</span></a> {<a name="GRing.Linear.base"><span class="id" title="projection">base</span></a> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.additive"><span class="id" title="abbreviation">additive</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#f"><span class="id" title="variable">f</span></a>; <a name="GRing.Linear.mixin"><span class="id" title="projection">mixin</span></a> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Linear.mixin_of"><span class="id" title="definition">mixin_of</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#f"><span class="id" title="variable">f</span></a>}.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.Linear.class_of_axiom"><span class="id" title="lemma">class_of_axiom</span></a> <span class="id" title="var">f</span> <span class="id" title="var">s_law</span> <span class="id" title="var">Ds</span> : @<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Linear.axiom"><span class="id" title="definition">axiom</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#f"><span class="id" title="variable">f</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#s_law"><span class="id" title="variable">s_law</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#Ds"><span class="id" title="variable">Ds</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Linear.class_of"><span class="id" title="record">class_of</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#f"><span class="id" title="variable">f</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Structure</span> <a name="GRing.Linear.map"><span class="id" title="record">map</span></a> (<span class="id" title="var">phUV</span> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssreflect.html#phant"><span class="id" title="inductive">phant</span></a> (<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Linear.ClassDef.U"><span class="id" title="variable">U</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Linear.ClassDef.V"><span class="id" title="variable">V</span></a>)) := <a name="GRing.Linear.Pack"><span class="id" title="constructor">Pack</span></a> {<a name="GRing.Linear.apply"><span class="id" title="projection">apply</span></a>; <span class="id" title="var">_</span> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Linear.class_of"><span class="id" title="record">class_of</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#apply"><span class="id" title="method">apply</span></a>}.<br/>
+
+<br/>
+<span class="id" title="keyword">Variables</span> (<a name="GRing.Linear.ClassDef.phUV"><span class="id" title="variable">phUV</span></a> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssreflect.html#phant"><span class="id" title="inductive">phant</span></a> (<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Linear.ClassDef.U"><span class="id" title="variable">U</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Linear.ClassDef.V"><span class="id" title="variable">V</span></a>)) (<a name="GRing.Linear.ClassDef.f"><span class="id" title="variable">f</span></a> <a name="GRing.Linear.ClassDef.g"><span class="id" title="variable">g</span></a> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Linear.ClassDef.U"><span class="id" title="variable">U</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Linear.ClassDef.V"><span class="id" title="variable">V</span></a>) (<a name="GRing.Linear.ClassDef.cF"><span class="id" title="variable">cF</span></a> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Linear.map"><span class="id" title="record">map</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#phUV"><span class="id" title="variable">phUV</span></a>).<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Linear.class"><span class="id" title="definition">class</span></a> := <span class="id" title="keyword">let</span>: <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Linear.Pack"><span class="id" title="constructor">Pack</span></a> <span class="id" title="var">_</span> <span class="id" title="var">c</span> <span class="id" title="keyword">as</span> <span class="id" title="var">cF'</span> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Linear.ClassDef.cF"><span class="id" title="variable">cF</span></a> <span class="id" title="keyword">return</span> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Linear.class_of"><span class="id" title="record">class_of</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#cF'"><span class="id" title="variable">cF'</span></a> <span class="id" title="tactic">in</span> <span class="id" title="var">c</span>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Linear.clone"><span class="id" title="definition">clone</span></a> <span class="id" title="var">fL</span> <span class="id" title="keyword">of</span> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#phant_id"><span class="id" title="definition">phant_id</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Linear.ClassDef.g"><span class="id" title="variable">g</span></a> (<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Linear.apply"><span class="id" title="projection">apply</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Linear.ClassDef.cF"><span class="id" title="variable">cF</span></a>) &amp; <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#phant_id"><span class="id" title="definition">phant_id</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#fL"><span class="id" title="variable">fL</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Linear.class"><span class="id" title="definition">class</span></a> :=<br/>
+&nbsp;&nbsp;@<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Linear.Pack"><span class="id" title="constructor">Pack</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Linear.ClassDef.phUV"><span class="id" title="variable">phUV</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Linear.ClassDef.f"><span class="id" title="variable">f</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#fL"><span class="id" title="variable">fL</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Linear.pack"><span class="id" title="definition">pack</span></a> (<span class="id" title="var">fZ</span> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Linear.mixin_of"><span class="id" title="definition">mixin_of</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Linear.ClassDef.f"><span class="id" title="variable">f</span></a>) :=<br/>
+&nbsp;&nbsp;<span class="id" title="keyword">fun</span> (<span class="id" title="var">bF</span> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Additive.map"><span class="id" title="record">Additive.map</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Linear.ClassDef.phUV"><span class="id" title="variable">phUV</span></a>) <span class="id" title="var">fA</span> &amp; <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#phant_id"><span class="id" title="definition">phant_id</span></a> (<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Additive.class"><span class="id" title="definition">Additive.class</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#bF"><span class="id" title="variable">bF</span></a>) <a class="idref" href="mathcomp.algebra.ssralg.html#fA"><span class="id" title="variable">fA</span></a> ⇒<br/>
+&nbsp;&nbsp;<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Linear.Pack"><span class="id" title="constructor">Pack</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Linear.ClassDef.phUV"><span class="id" title="variable">phUV</span></a> (<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Linear.Class"><span class="id" title="constructor">Class</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#fA"><span class="id" title="variable">fA</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#fZ"><span class="id" title="variable">fZ</span></a>).<br/>
+
+<br/>
+<span class="id" title="keyword">Canonical</span> <span class="id" title="var">additive</span> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Additive.Pack"><span class="id" title="constructor">Additive.Pack</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Linear.ClassDef.phUV"><span class="id" title="variable">phUV</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Linear.class"><span class="id" title="definition">class</span></a>.<br/>
+
+<br/>
+</div>
+
+<div class="doc">
+ Support for right-to-left rewriting with the generic linearZ rule.
+</div>
+<div class="code">
+<span class="id" title="keyword">Notation</span> <a name="GRing.Linear.mapUV"><span class="id" title="abbreviation">mapUV</span></a> := (<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Linear.map"><span class="id" title="record">map</span></a> (<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssreflect.html#Phant"><span class="id" title="constructor">Phant</span></a> (<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Linear.ClassDef.U"><span class="id" title="variable">U</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Linear.ClassDef.V"><span class="id" title="variable">V</span></a>))).<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Linear.map_class"><span class="id" title="definition">map_class</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Linear.mapUV"><span class="id" title="abbreviation">mapUV</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Linear.map_at"><span class="id" title="definition">map_at</span></a> (<span class="id" title="var">a</span> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Linear.ClassDef.R"><span class="id" title="variable">R</span></a>) := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Linear.mapUV"><span class="id" title="abbreviation">mapUV</span></a>.<br/>
+<span class="id" title="keyword">Structure</span> <a name="GRing.Linear.map_for"><span class="id" title="record">map_for</span></a> <span class="id" title="var">a</span> <span class="id" title="var">s_a</span> := <a name="GRing.Linear.MapFor"><span class="id" title="constructor">MapFor</span></a> {<a name="GRing.Linear.map_for_map"><span class="id" title="projection">map_for_map</span></a> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Linear.mapUV"><span class="id" title="abbreviation">mapUV</span></a>; <span class="id" title="var">_</span> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Linear.ClassDef.s"><span class="id" title="variable">s</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#a"><span class="id" title="variable">a</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#s_a"><span class="id" title="variable">s_a</span></a>}.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Linear.unify_map_at"><span class="id" title="definition">unify_map_at</span></a> <span class="id" title="var">a</span> (<span class="id" title="var">f</span> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Linear.map_at"><span class="id" title="definition">map_at</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#a"><span class="id" title="variable">a</span></a>) := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Linear.MapFor"><span class="id" title="constructor">MapFor</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#f"><span class="id" title="variable">f</span></a> (<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#erefl"><span class="id" title="abbreviation">erefl</span></a> (<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Linear.ClassDef.s"><span class="id" title="variable">s</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#a"><span class="id" title="variable">a</span></a>)).<br/>
+<span class="id" title="keyword">Structure</span> <a name="GRing.Linear.wrapped"><span class="id" title="record">wrapped</span></a> := <a name="GRing.Linear.Wrap"><span class="id" title="constructor">Wrap</span></a> {<a name="GRing.Linear.unwrap"><span class="id" title="projection">unwrap</span></a> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Linear.mapUV"><span class="id" title="abbreviation">mapUV</span></a>}.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Linear.wrap"><span class="id" title="definition">wrap</span></a> (<span class="id" title="var">f</span> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Linear.map_class"><span class="id" title="definition">map_class</span></a>) := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Linear.Wrap"><span class="id" title="constructor">Wrap</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#f"><span class="id" title="variable">f</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">End</span> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Linear.ClassDef"><span class="id" title="section">ClassDef</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Module</span> <a name="GRing.Linear.Exports"><span class="id" title="module">Exports</span></a>.<br/>
+<span class="id" title="keyword">Canonical</span> <span class="id" title="var">Scale.mul_law</span>.<br/>
+<span class="id" title="keyword">Canonical</span> <span class="id" title="var">Scale.scale_law</span>.<br/>
+<span class="id" title="keyword">Canonical</span> <span class="id" title="var">Scale.comp_law</span>.<br/>
+<span class="id" title="keyword">Canonical</span> <span class="id" title="var">Scale.op_additive</span>.<br/>
+<span class="id" title="keyword">Delimit</span> <span class="id" title="keyword">Scope</span> <span class="id" title="var">linear_ring_scope</span> <span class="id" title="keyword">with</span> <span class="id" title="var">linR</span>.<br/>
+<span class="id" title="keyword">Notation</span> <a name="1b425587d932db8b7cd45125c59bfd60"><span class="id" title="notation">&quot;</span></a>a *: u" := (@<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Scale.op"><span class="id" title="projection">Scale.op</span></a> <span class="id" title="var">_</span> <span class="id" title="var">_</span> <a class="idref" href="mathcomp.algebra.ssralg.html#9d4bc68f8a37455428efb931e05d31ce"><span class="id" title="notation">*:%</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#9d4bc68f8a37455428efb931e05d31ce"><span class="id" title="notation">R</span></a> <span class="id" title="var">_</span> <span class="id" title="var">a</span> <span class="id" title="var">u</span>) : <span class="id" title="var">linear_ring_scope</span>.<br/>
+<span class="id" title="keyword">Notation</span> <a name="b9df725616bc22e5319be68be2737326"><span class="id" title="notation">&quot;</span></a>a * u" := (@<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Scale.op"><span class="id" title="projection">Scale.op</span></a> <span class="id" title="var">_</span> <span class="id" title="var">_</span> <a class="idref" href="mathcomp.algebra.ssralg.html#6498e6e308d8a143464cf2d2ba603d36"><span class="id" title="notation">*%</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#6498e6e308d8a143464cf2d2ba603d36"><span class="id" title="notation">R</span></a> <span class="id" title="var">_</span> <span class="id" title="var">a</span> <span class="id" title="var">u</span>) : <span class="id" title="var">linear_ring_scope</span>.<br/>
+<span class="id" title="keyword">Notation</span> <a name="636fc7175acc7bc0025288ebd6946502"><span class="id" title="notation">&quot;</span></a>a *:^ nu u" := (@<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Scale.op"><span class="id" title="projection">Scale.op</span></a> <span class="id" title="var">_</span> <span class="id" title="var">_</span> (<span class="id" title="var">nu</span> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#c42c5cb909c30537f9f6acfcf01cf7e1"><span class="id" title="notation">\;</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#9d4bc68f8a37455428efb931e05d31ce"><span class="id" title="notation">*:%</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#9d4bc68f8a37455428efb931e05d31ce"><span class="id" title="notation">R</span></a>) <span class="id" title="var">_</span> <span class="id" title="var">a</span> <span class="id" title="var">u</span>)<br/>
+&nbsp;&nbsp;(<span class="id" title="tactic">at</span> <span class="id" title="keyword">level</span> 40, <span class="id" title="var">nu</span> <span class="id" title="tactic">at</span> <span class="id" title="keyword">level</span> 1, <span class="id" title="var">format</span> "a *:^ nu u") : <span class="id" title="var">linear_ring_scope</span>.<br/>
+<span class="id" title="keyword">Notation</span> <a name="56dc3588c918939e4ac45c0cdf7e2bdc"><span class="id" title="notation">&quot;</span></a>a *^ nu u" := (@<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Scale.op"><span class="id" title="projection">Scale.op</span></a> <span class="id" title="var">_</span> <span class="id" title="var">_</span> (<span class="id" title="var">nu</span> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#c42c5cb909c30537f9f6acfcf01cf7e1"><span class="id" title="notation">\;</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#6498e6e308d8a143464cf2d2ba603d36"><span class="id" title="notation">*%</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#6498e6e308d8a143464cf2d2ba603d36"><span class="id" title="notation">R</span></a>) <span class="id" title="var">_</span> <span class="id" title="var">a</span> <span class="id" title="var">u</span>)<br/>
+&nbsp;&nbsp;(<span class="id" title="tactic">at</span> <span class="id" title="keyword">level</span> 40, <span class="id" title="var">nu</span> <span class="id" title="tactic">at</span> <span class="id" title="keyword">level</span> 1, <span class="id" title="var">format</span> "a *^ nu u") : <span class="id" title="var">linear_ring_scope</span>.<br/>
+<span class="id" title="keyword">Notation</span> <a name="GRing.Linear.Exports.scalable_for"><span class="id" title="abbreviation">scalable_for</span></a> <span class="id" title="var">s</span> <span class="id" title="var">f</span> := (<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Linear.mixin_of"><span class="id" title="definition">mixin_of</span></a> <span class="id" title="var">s</span> <span class="id" title="var">f</span>).<br/>
+<span class="id" title="keyword">Notation</span> <a name="GRing.Linear.Exports.scalable"><span class="id" title="abbreviation">scalable</span></a> <span class="id" title="var">f</span> := (<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Linear.Exports.scalable_for"><span class="id" title="abbreviation">scalable_for</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#9d4bc68f8a37455428efb931e05d31ce"><span class="id" title="notation">*:%</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#9d4bc68f8a37455428efb931e05d31ce"><span class="id" title="notation">R</span></a> <span class="id" title="var">f</span>).<br/>
+<span class="id" title="keyword">Notation</span> <a name="GRing.Linear.Exports.linear_for"><span class="id" title="abbreviation">linear_for</span></a> <span class="id" title="var">s</span> <span class="id" title="var">f</span> := (<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Linear.axiom"><span class="id" title="definition">axiom</span></a> <span class="id" title="var">f</span> (<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#erefl"><span class="id" title="abbreviation">erefl</span></a> <span class="id" title="var">s</span>)).<br/>
+<span class="id" title="keyword">Notation</span> <a name="GRing.Linear.Exports.linear"><span class="id" title="abbreviation">linear</span></a> <span class="id" title="var">f</span> := (<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Linear.Exports.linear_for"><span class="id" title="abbreviation">linear_for</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#9d4bc68f8a37455428efb931e05d31ce"><span class="id" title="notation">*:%</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#9d4bc68f8a37455428efb931e05d31ce"><span class="id" title="notation">R</span></a> <span class="id" title="var">f</span>).<br/>
+<span class="id" title="keyword">Notation</span> <a name="GRing.Linear.Exports.scalar"><span class="id" title="abbreviation">scalar</span></a> <span class="id" title="var">f</span> := (<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Linear.Exports.linear_for"><span class="id" title="abbreviation">linear_for</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#6498e6e308d8a143464cf2d2ba603d36"><span class="id" title="notation">*%</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#6498e6e308d8a143464cf2d2ba603d36"><span class="id" title="notation">R</span></a> <span class="id" title="var">f</span>).<br/>
+<span class="id" title="keyword">Notation</span> <a name="GRing.Linear.Exports.lmorphism_for"><span class="id" title="abbreviation">lmorphism_for</span></a> <span class="id" title="var">s</span> <span class="id" title="var">f</span> := (<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Linear.class_of"><span class="id" title="record">class_of</span></a> <span class="id" title="var">s</span> <span class="id" title="var">f</span>).<br/>
+<span class="id" title="keyword">Notation</span> <a name="GRing.Linear.Exports.lmorphism"><span class="id" title="abbreviation">lmorphism</span></a> <span class="id" title="var">f</span> := (<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Linear.Exports.lmorphism_for"><span class="id" title="abbreviation">lmorphism_for</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#9d4bc68f8a37455428efb931e05d31ce"><span class="id" title="notation">*:%</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#9d4bc68f8a37455428efb931e05d31ce"><span class="id" title="notation">R</span></a> <span class="id" title="var">f</span>).<br/>
+<span class="id" title="keyword">Coercion</span> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Linear.class_of_axiom"><span class="id" title="lemma">class_of_axiom</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Linear.class_of_axiom"><span class="id" title="lemma">:</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Linear.class_of_axiom"><span class="id" title="lemma">axiom</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Linear.class_of_axiom"><span class="id" title="lemma">&gt;-&gt;</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Linear.class_of_axiom"><span class="id" title="lemma">lmorphism_for</span></a>.<br/>
+<span class="id" title="keyword">Coercion</span> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Linear.base"><span class="id" title="projection">base</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Linear.base"><span class="id" title="projection">:</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Linear.base"><span class="id" title="projection">lmorphism_for</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Linear.base"><span class="id" title="projection">&gt;-&gt;</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Linear.base"><span class="id" title="projection">Additive.axiom</span></a>.<br/>
+<span class="id" title="keyword">Coercion</span> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Linear.mixin"><span class="id" title="projection">mixin</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Linear.mixin"><span class="id" title="projection">:</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Linear.mixin"><span class="id" title="projection">lmorphism_for</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Linear.mixin"><span class="id" title="projection">&gt;-&gt;</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Linear.mixin"><span class="id" title="projection">scalable</span></a>.<br/>
+<span class="id" title="keyword">Coercion</span> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Linear.apply"><span class="id" title="projection">apply</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Linear.apply"><span class="id" title="projection">:</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Linear.apply"><span class="id" title="projection">map</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Linear.apply"><span class="id" title="projection">&gt;-&gt;</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Linear.apply"><span class="id" title="projection">Funclass</span></a>.<br/>
+<span class="id" title="keyword">Notation</span> <a name="GRing.Linear.Exports.Linear"><span class="id" title="abbreviation">Linear</span></a> <span class="id" title="var">fL</span> := (<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Linear.Pack"><span class="id" title="constructor">Pack</span></a> (<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssreflect.html#Phant"><span class="id" title="constructor">Phant</span></a> <span class="id" title="var">_</span>) <span class="id" title="var">fL</span>).<br/>
+<span class="id" title="keyword">Notation</span> <a name="GRing.Linear.Exports.AddLinear"><span class="id" title="abbreviation">AddLinear</span></a> <span class="id" title="var">fZ</span> := (<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Linear.pack"><span class="id" title="definition">pack</span></a> <span class="id" title="var">fZ</span> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#id"><span class="id" title="abbreviation">id</span></a>).<br/>
+<span class="id" title="keyword">Notation</span> <a name="592bf656f19e2760c7b7fecf8aa4932d"><span class="id" title="notation">&quot;</span></a>{ 'linear' fUV | s }" := (<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Linear.map"><span class="id" title="record">map</span></a> <span class="id" title="var">s</span> (<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssreflect.html#Phant"><span class="id" title="constructor">Phant</span></a> <span class="id" title="var">fUV</span>))<br/>
+&nbsp;&nbsp;(<span class="id" title="tactic">at</span> <span class="id" title="keyword">level</span> 0, <span class="id" title="var">format</span> "{ 'linear' fUV | s }") : <span class="id" title="var">ring_scope</span>.<br/>
+<span class="id" title="keyword">Notation</span> <a name="697e59dccfd7ad4519680ddb16ef82da"><span class="id" title="notation">&quot;</span></a>{ 'linear' fUV }" := <a class="idref" href="mathcomp.algebra.ssralg.html#592bf656f19e2760c7b7fecf8aa4932d"><span class="id" title="notation">{</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#592bf656f19e2760c7b7fecf8aa4932d"><span class="id" title="notation">linear</span></a> <span class="id" title="var">fUV</span> <a class="idref" href="mathcomp.algebra.ssralg.html#592bf656f19e2760c7b7fecf8aa4932d"><span class="id" title="notation">|</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#9d4bc68f8a37455428efb931e05d31ce"><span class="id" title="notation">*:%</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#9d4bc68f8a37455428efb931e05d31ce"><span class="id" title="notation">R</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#592bf656f19e2760c7b7fecf8aa4932d"><span class="id" title="notation">}</span></a><br/>
+&nbsp;&nbsp;(<span class="id" title="tactic">at</span> <span class="id" title="keyword">level</span> 0, <span class="id" title="var">format</span> "{ 'linear' fUV }") : <span class="id" title="var">ring_scope</span>.<br/>
+<span class="id" title="keyword">Notation</span> <a name="3caf1c46544edfa98868625c22bf2d5e"><span class="id" title="notation">&quot;</span></a>{ 'scalar' U }" := <a class="idref" href="mathcomp.algebra.ssralg.html#592bf656f19e2760c7b7fecf8aa4932d"><span class="id" title="notation">{</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#592bf656f19e2760c7b7fecf8aa4932d"><span class="id" title="notation">linear</span></a> <span class="id" title="var">U</span> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <span class="id" title="var">_</span> <a class="idref" href="mathcomp.algebra.ssralg.html#592bf656f19e2760c7b7fecf8aa4932d"><span class="id" title="notation">|</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#6498e6e308d8a143464cf2d2ba603d36"><span class="id" title="notation">*%</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#6498e6e308d8a143464cf2d2ba603d36"><span class="id" title="notation">R</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#592bf656f19e2760c7b7fecf8aa4932d"><span class="id" title="notation">}</span></a><br/>
+&nbsp;&nbsp;(<span class="id" title="tactic">at</span> <span class="id" title="keyword">level</span> 0, <span class="id" title="var">format</span> "{ 'scalar' U }") : <span class="id" title="var">ring_scope</span>.<br/>
+<span class="id" title="keyword">Notation</span> <a name="774108f4d8a6842d8de559e977fc7a05"><span class="id" title="notation">&quot;</span></a>[ 'linear' 'of' f 'as' g ]" := (@<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Linear.clone"><span class="id" title="definition">clone</span></a> <span class="id" title="var">_</span> <span class="id" title="var">_</span> <span class="id" title="var">_</span> <span class="id" title="var">_</span> <span class="id" title="var">_</span> <span class="id" title="var">f</span> <span class="id" title="var">g</span> <span class="id" title="var">_</span> <span class="id" title="var">_</span> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#idfun"><span class="id" title="abbreviation">idfun</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#id"><span class="id" title="abbreviation">id</span></a>)<br/>
+&nbsp;&nbsp;(<span class="id" title="tactic">at</span> <span class="id" title="keyword">level</span> 0, <span class="id" title="var">format</span> "[ 'linear' 'of' f 'as' g ]") : <span class="id" title="var">form_scope</span>.<br/>
+<span class="id" title="keyword">Notation</span> <a name="6a5a02fb109bf09435e2c36ba981b2b6"><span class="id" title="notation">&quot;</span></a>[ 'linear' 'of' f ]" := (@<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Linear.clone"><span class="id" title="definition">clone</span></a> <span class="id" title="var">_</span> <span class="id" title="var">_</span> <span class="id" title="var">_</span> <span class="id" title="var">_</span> <span class="id" title="var">_</span> <span class="id" title="var">f</span> <span class="id" title="var">f</span> <span class="id" title="var">_</span> <span class="id" title="var">_</span> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#id"><span class="id" title="abbreviation">id</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#id"><span class="id" title="abbreviation">id</span></a>)<br/>
+&nbsp;&nbsp;(<span class="id" title="tactic">at</span> <span class="id" title="keyword">level</span> 0, <span class="id" title="var">format</span> "[ 'linear' 'of' f ]") : <span class="id" title="var">form_scope</span>.<br/>
+<span class="id" title="keyword">Coercion</span> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Linear.additive"><span class="id" title="definition">additive</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Linear.additive"><span class="id" title="definition">:</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Linear.additive"><span class="id" title="definition">map</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Linear.additive"><span class="id" title="definition">&gt;-&gt;</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Linear.additive"><span class="id" title="definition">Additive.map</span></a>.<br/>
+<span class="id" title="keyword">Canonical</span> <span class="id" title="var">additive</span>.<br/>
+</div>
+
+<div class="doc">
+ Support for right-to-left rewriting with the generic linearZ rule.
+</div>
+<div class="code">
+<span class="id" title="keyword">Coercion</span> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Linear.map_for_map"><span class="id" title="projection">map_for_map</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Linear.map_for_map"><span class="id" title="projection">:</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Linear.map_for_map"><span class="id" title="projection">map_for</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Linear.map_for_map"><span class="id" title="projection">&gt;-&gt;</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Linear.map_for_map"><span class="id" title="projection">map</span></a>.<br/>
+<span class="id" title="keyword">Coercion</span> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Linear.unify_map_at"><span class="id" title="definition">unify_map_at</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Linear.unify_map_at"><span class="id" title="definition">:</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Linear.unify_map_at"><span class="id" title="definition">map_at</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Linear.unify_map_at"><span class="id" title="definition">&gt;-&gt;</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Linear.unify_map_at"><span class="id" title="definition">map_for</span></a>.<br/>
+<span class="id" title="keyword">Canonical</span> <span class="id" title="var">unify_map_at</span>.<br/>
+<span class="id" title="keyword">Coercion</span> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Linear.unwrap"><span class="id" title="projection">unwrap</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Linear.unwrap"><span class="id" title="projection">:</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Linear.unwrap"><span class="id" title="projection">wrapped</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Linear.unwrap"><span class="id" title="projection">&gt;-&gt;</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Linear.unwrap"><span class="id" title="projection">map</span></a>.<br/>
+<span class="id" title="keyword">Coercion</span> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Linear.wrap"><span class="id" title="definition">wrap</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Linear.wrap"><span class="id" title="definition">:</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Linear.wrap"><span class="id" title="definition">map_class</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Linear.wrap"><span class="id" title="definition">&gt;-&gt;</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Linear.wrap"><span class="id" title="definition">wrapped</span></a>.<br/>
+<span class="id" title="keyword">Canonical</span> <span class="id" title="var">wrap</span>.<br/>
+<span class="id" title="keyword">End</span> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Linear.Exports"><span class="id" title="module">Exports</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">End</span> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Linear"><span class="id" title="module">Linear</span></a>.<br/>
+<span class="id" title="keyword">Include</span> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Linear.Exports"><span class="id" title="module">Linear.Exports</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Section</span> <a name="GRing.LinearTheory"><span class="id" title="section">LinearTheory</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Variable</span> <a name="GRing.LinearTheory.R"><span class="id" title="variable">R</span></a> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ringType"><span class="id" title="abbreviation">ringType</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Section</span> <a name="GRing.LinearTheory.GenericProperties"><span class="id" title="section">GenericProperties</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Variables</span> (<a name="GRing.LinearTheory.GenericProperties.U"><span class="id" title="variable">U</span></a> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.lmodType"><span class="id" title="abbreviation">lmodType</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.LinearTheory.R"><span class="id" title="variable">R</span></a>) (<a name="GRing.LinearTheory.GenericProperties.V"><span class="id" title="variable">V</span></a> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.zmodType"><span class="id" title="abbreviation">zmodType</span></a>) (<a name="GRing.LinearTheory.GenericProperties.s"><span class="id" title="variable">s</span></a> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.LinearTheory.R"><span class="id" title="variable">R</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#V"><span class="id" title="variable">V</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#V"><span class="id" title="variable">V</span></a>) (<a name="GRing.LinearTheory.GenericProperties.k"><span class="id" title="variable">k</span></a> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#unit"><span class="id" title="inductive">unit</span></a>).<br/>
+<span class="id" title="keyword">Variable</span> <a name="GRing.LinearTheory.GenericProperties.f"><span class="id" title="variable">f</span></a> : <a class="idref" href="mathcomp.algebra.ssralg.html#592bf656f19e2760c7b7fecf8aa4932d"><span class="id" title="notation">{</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#592bf656f19e2760c7b7fecf8aa4932d"><span class="id" title="notation">linear</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.LinearTheory.GenericProperties.U"><span class="id" title="variable">U</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.LinearTheory.GenericProperties.V"><span class="id" title="variable">V</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#592bf656f19e2760c7b7fecf8aa4932d"><span class="id" title="notation">|</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.LinearTheory.GenericProperties.s"><span class="id" title="variable">s</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#592bf656f19e2760c7b7fecf8aa4932d"><span class="id" title="notation">}</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.linear0"><span class="id" title="lemma">linear0</span></a> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.LinearTheory.GenericProperties.f"><span class="id" title="variable">f</span></a> 0 <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> 0. <br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.linearN"><span class="id" title="lemma">linearN</span></a> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#c3c88e2b30b681cd767a54649faf5973"><span class="id" title="notation">{</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#c3c88e2b30b681cd767a54649faf5973"><span class="id" title="notation">morph</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.LinearTheory.GenericProperties.f"><span class="id" title="variable">f</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#c3c88e2b30b681cd767a54649faf5973"><span class="id" title="notation">:</span></a> <span class="id" title="var">x</span> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#c3c88e2b30b681cd767a54649faf5973"><span class="id" title="notation">/</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#eefae7eea8ed2b8fccf150cb653d7a7b"><span class="id" title="notation">-</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#c3c88e2b30b681cd767a54649faf5973"><span class="id" title="notation">}</span></a>. <br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.linearD"><span class="id" title="lemma">linearD</span></a> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#3014e73af2a90fd800d8681479d76336"><span class="id" title="notation">{</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#3014e73af2a90fd800d8681479d76336"><span class="id" title="notation">morph</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.LinearTheory.GenericProperties.f"><span class="id" title="variable">f</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#3014e73af2a90fd800d8681479d76336"><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/8.8.0/stdlib//Coq.ssr.ssrfun.html#3014e73af2a90fd800d8681479d76336"><span class="id" title="notation">/</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#338c5345074fd3586073fd29273c138a"><span class="id" title="notation">+</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#y"><span class="id" title="variable">y</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#3014e73af2a90fd800d8681479d76336"><span class="id" title="notation">}</span></a>. <br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.linearB"><span class="id" title="lemma">linearB</span></a> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#3014e73af2a90fd800d8681479d76336"><span class="id" title="notation">{</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#3014e73af2a90fd800d8681479d76336"><span class="id" title="notation">morph</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.LinearTheory.GenericProperties.f"><span class="id" title="variable">f</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#3014e73af2a90fd800d8681479d76336"><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/8.8.0/stdlib//Coq.ssr.ssrfun.html#3014e73af2a90fd800d8681479d76336"><span class="id" title="notation">/</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#4d4b9697032429ec46472e6332d1356a"><span class="id" title="notation">-</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#y"><span class="id" title="variable">y</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#3014e73af2a90fd800d8681479d76336"><span class="id" title="notation">}</span></a>. <br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.linearMn"><span class="id" title="lemma">linearMn</span></a> <span class="id" title="var">n</span> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#c3c88e2b30b681cd767a54649faf5973"><span class="id" title="notation">{</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#c3c88e2b30b681cd767a54649faf5973"><span class="id" title="notation">morph</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.LinearTheory.GenericProperties.f"><span class="id" title="variable">f</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#c3c88e2b30b681cd767a54649faf5973"><span class="id" title="notation">:</span></a> <span class="id" title="var">x</span> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#c3c88e2b30b681cd767a54649faf5973"><span class="id" title="notation">/</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#513eaa3129601ecbcc9e188a80d6155b"><span class="id" title="notation">*+</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#n"><span class="id" title="variable">n</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#c3c88e2b30b681cd767a54649faf5973"><span class="id" title="notation">}</span></a>. <br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.linearMNn"><span class="id" title="lemma">linearMNn</span></a> <span class="id" title="var">n</span> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#c3c88e2b30b681cd767a54649faf5973"><span class="id" title="notation">{</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#c3c88e2b30b681cd767a54649faf5973"><span class="id" title="notation">morph</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.LinearTheory.GenericProperties.f"><span class="id" title="variable">f</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#c3c88e2b30b681cd767a54649faf5973"><span class="id" title="notation">:</span></a> <span class="id" title="var">x</span> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#c3c88e2b30b681cd767a54649faf5973"><span class="id" title="notation">/</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#be9a273af87c6a30d88bd8379c802cbe"><span class="id" title="notation">*-</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#n"><span class="id" title="variable">n</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#c3c88e2b30b681cd767a54649faf5973"><span class="id" title="notation">}</span></a>. <br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.linear_sum"><span class="id" title="lemma">linear_sum</span></a> <span class="id" title="var">I</span> <span class="id" title="var">r</span> (<span class="id" title="var">P</span> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#pred"><span class="id" title="definition">pred</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#I"><span class="id" title="variable">I</span></a>) <span class="id" title="var">E</span> :<br/>
+&nbsp;&nbsp;<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.LinearTheory.GenericProperties.f"><span class="id" title="variable">f</span></a> (<a class="idref" href="mathcomp.algebra.ssralg.html#664ae738a3286983847c80e5ee4c8c6b"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#664ae738a3286983847c80e5ee4c8c6b"><span class="id" title="notation">sum_</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#664ae738a3286983847c80e5ee4c8c6b"><span class="id" title="notation">(</span></a><span class="id" title="var">i</span> <a class="idref" href="mathcomp.algebra.ssralg.html#664ae738a3286983847c80e5ee4c8c6b"><span class="id" title="notation">&lt;-</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#r"><span class="id" title="variable">r</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#664ae738a3286983847c80e5ee4c8c6b"><span class="id" title="notation">|</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#P"><span class="id" title="variable">P</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#i"><span class="id" title="variable">i</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#664ae738a3286983847c80e5ee4c8c6b"><span class="id" title="notation">)</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#E"><span class="id" title="variable">E</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#i"><span class="id" title="variable">i</span></a>) <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#664ae738a3286983847c80e5ee4c8c6b"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#664ae738a3286983847c80e5ee4c8c6b"><span class="id" title="notation">sum_</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#664ae738a3286983847c80e5ee4c8c6b"><span class="id" title="notation">(</span></a><span class="id" title="var">i</span> <a class="idref" href="mathcomp.algebra.ssralg.html#664ae738a3286983847c80e5ee4c8c6b"><span class="id" title="notation">&lt;-</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#r"><span class="id" title="variable">r</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#664ae738a3286983847c80e5ee4c8c6b"><span class="id" title="notation">|</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#P"><span class="id" title="variable">P</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#i"><span class="id" title="variable">i</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#664ae738a3286983847c80e5ee4c8c6b"><span class="id" title="notation">)</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.LinearTheory.GenericProperties.f"><span class="id" title="variable">f</span></a> (<a class="idref" href="mathcomp.algebra.ssralg.html#E"><span class="id" title="variable">E</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#i"><span class="id" title="variable">i</span></a>).<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.linearZ_LR"><span class="id" title="lemma">linearZ_LR</span></a> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.scalable_for"><span class="id" title="abbreviation">scalable_for</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.LinearTheory.GenericProperties.s"><span class="id" title="variable">s</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.LinearTheory.GenericProperties.f"><span class="id" title="variable">f</span></a>. <br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.linearP"><span class="id" title="lemma">linearP</span></a> <span class="id" title="var">a</span> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#a0fd72584f326d7220475d01d3fceccd"><span class="id" title="notation">{</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#a0fd72584f326d7220475d01d3fceccd"><span class="id" title="notation">morph</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.LinearTheory.GenericProperties.f"><span class="id" title="variable">f</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#a0fd72584f326d7220475d01d3fceccd"><span class="id" title="notation">:</span></a> <span class="id" title="var">u</span> <span class="id" title="var">v</span> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#a0fd72584f326d7220475d01d3fceccd"><span class="id" title="notation">/</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#a"><span class="id" title="variable">a</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#5aa7bcc9ac922e77482767d325fdbb69"><span class="id" title="notation">*:</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#u"><span class="id" title="variable">u</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#338c5345074fd3586073fd29273c138a"><span class="id" title="notation">+</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#v"><span class="id" title="variable">v</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#a0fd72584f326d7220475d01d3fceccd"><span class="id" title="notation">&gt;-&gt;</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.LinearTheory.GenericProperties.s"><span class="id" title="variable">s</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#a"><span class="id" title="variable">a</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#u"><span class="id" title="variable">u</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#338c5345074fd3586073fd29273c138a"><span class="id" title="notation">+</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#v"><span class="id" title="variable">v</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#a0fd72584f326d7220475d01d3fceccd"><span class="id" title="notation">}</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Fact</span> <a name="GRing.locked_is_scalable"><span class="id" title="lemma">locked_is_scalable</span></a> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.scalable_for"><span class="id" title="abbreviation">scalable_for</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.LinearTheory.GenericProperties.s"><span class="id" title="variable">s</span></a> (<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssreflect.html#locked_with"><span class="id" title="definition">locked_with</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.LinearTheory.GenericProperties.k"><span class="id" title="variable">k</span></a> (<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.LinearTheory.GenericProperties.f"><span class="id" title="variable">f</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssreflect.html#4509b22bf26e3d6d771897e22bd8bc8f"><span class="id" title="notation">:</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.LinearTheory.GenericProperties.U"><span class="id" title="variable">U</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.LinearTheory.GenericProperties.V"><span class="id" title="variable">V</span></a>)).<br/>
+ <span class="id" title="keyword">Canonical</span> <span class="id" title="var">locked_linear</span> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.AddLinear"><span class="id" title="abbreviation">AddLinear</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.locked_is_scalable"><span class="id" title="lemma">locked_is_scalable</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">End</span> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.LinearTheory.GenericProperties"><span class="id" title="section">GenericProperties</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Section</span> <a name="GRing.LinearTheory.BidirectionalLinearZ"><span class="id" title="section">BidirectionalLinearZ</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Variables</span> (<a name="GRing.LinearTheory.BidirectionalLinearZ.U"><span class="id" title="variable">U</span></a> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.lmodType"><span class="id" title="abbreviation">lmodType</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.LinearTheory.R"><span class="id" title="variable">R</span></a>) (<a name="GRing.LinearTheory.BidirectionalLinearZ.V"><span class="id" title="variable">V</span></a> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.zmodType"><span class="id" title="abbreviation">zmodType</span></a>) (<a name="GRing.LinearTheory.BidirectionalLinearZ.s"><span class="id" title="variable">s</span></a> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.LinearTheory.R"><span class="id" title="variable">R</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#V"><span class="id" title="variable">V</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#V"><span class="id" title="variable">V</span></a>).<br/>
+
+<br/>
+</div>
+
+<div class="doc">
+ The general form of the linearZ lemma uses some bespoke interfaces to
+ allow right-to-left rewriting when a composite scaling operation such as
+ conjC \; *%R has been expanded, say in a^* * f u. This redex is matched
+ by using the Scale.law interface to recognize a "head" scaling operation
+ h (here *%R), stow away its "scalar" c, then reconcile h c and s a, once
+ s is known, that is, once the Linear.map structure for f has been found.
+ In general, s and a need not be equal to h and c; indeed they need not
+ have the same type! The unification is performed by the unify_map_at
+ default instance for the Linear.map_for U s a h_c sub-interface of
+ Linear.map; the h_c pattern uses the Scale.law structure to insure it is
+ inferred when rewriting right-to-left.
+ The wrap on the rhs allows rewriting f (a *: b *: u) into a *: b *: f u
+ with rewrite !linearZ /= instead of rewrite linearZ /= linearZ /=.
+ Without it, the first rewrite linearZ would produce
+ (a *: apply (map_for_map (@check_map_at .. a f)) (b *: u)%R)%Rlin
+ and matching the second rewrite LHS would bypass the unify_map_at default
+ instance for b, reuse the one for a, and subsequently fail to match the
+ b *: u argument. The extra wrap / unwrap ensures that this can't happen.
+ In the RL direction, the wrap / unwrap will be inserted on the redex side
+ as needed, without causing unnecessary delta-expansion: using an explicit
+ identity function would have Coq normalize the redex to head normal, then
+ reduce the identity to expose the map_for_map projection, and the
+ expanded Linear.map structure would then be exposed in the result.
+ Most of this machinery will be invisible to a casual user, because all
+ the projections and default instances involved are declared as coercions.
+</div>
+<div class="code">
+
+<br/>
+<span class="id" title="keyword">Variables</span> (<a name="GRing.LinearTheory.BidirectionalLinearZ.S"><span class="id" title="variable">S</span></a> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ringType"><span class="id" title="abbreviation">ringType</span></a>) (<a name="GRing.LinearTheory.BidirectionalLinearZ.h"><span class="id" title="variable">h</span></a> : <a class="idref" href="mathcomp.algebra.ssralg.html#S"><span class="id" title="variable">S</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.LinearTheory.BidirectionalLinearZ.V"><span class="id" title="variable">V</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.LinearTheory.BidirectionalLinearZ.V"><span class="id" title="variable">V</span></a>) (<a name="GRing.LinearTheory.BidirectionalLinearZ.h_law"><span class="id" title="variable">h_law</span></a> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.law"><span class="id" title="record">Scale.law</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#h"><span class="id" title="variable">h</span></a>).<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.linearZ"><span class="id" title="lemma">linearZ</span></a> <span class="id" title="var">c</span> <span class="id" title="var">a</span> (<span class="id" title="var">h_c</span> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.op"><span class="id" title="projection">Scale.op</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.LinearTheory.BidirectionalLinearZ.h_law"><span class="id" title="variable">h_law</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#c"><span class="id" title="variable">c</span></a>) (<span class="id" title="var">f</span> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.map_for"><span class="id" title="record">Linear.map_for</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.LinearTheory.BidirectionalLinearZ.U"><span class="id" title="variable">U</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.LinearTheory.BidirectionalLinearZ.s"><span class="id" title="variable">s</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#a"><span class="id" title="variable">a</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#h_c"><span class="id" title="variable">h_c</span></a>) <span class="id" title="var">u</span> :<br/>
+&nbsp;&nbsp;<a class="idref" href="mathcomp.algebra.ssralg.html#f"><span class="id" title="variable">f</span></a> (<a class="idref" href="mathcomp.algebra.ssralg.html#a"><span class="id" title="variable">a</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#5aa7bcc9ac922e77482767d325fdbb69"><span class="id" title="notation">*:</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#u"><span class="id" title="variable">u</span></a>) <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#h_c"><span class="id" title="variable">h_c</span></a> (<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.wrap"><span class="id" title="definition">Linear.wrap</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#f"><span class="id" title="variable">f</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#u"><span class="id" title="variable">u</span></a>).<br/>
+
+<br/>
+<span class="id" title="keyword">End</span> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.LinearTheory.BidirectionalLinearZ"><span class="id" title="section">BidirectionalLinearZ</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Section</span> <a name="GRing.LinearTheory.LmodProperties"><span class="id" title="section">LmodProperties</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Variables</span> (<a name="GRing.LinearTheory.LmodProperties.U"><span class="id" title="variable">U</span></a> <a name="GRing.LinearTheory.LmodProperties.V"><span class="id" title="variable">V</span></a> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.lmodType"><span class="id" title="abbreviation">lmodType</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.LinearTheory.R"><span class="id" title="variable">R</span></a>) (<a name="GRing.LinearTheory.LmodProperties.f"><span class="id" title="variable">f</span></a> : <a class="idref" href="mathcomp.algebra.ssralg.html#697e59dccfd7ad4519680ddb16ef82da"><span class="id" title="notation">{</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#697e59dccfd7ad4519680ddb16ef82da"><span class="id" title="notation">linear</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#U"><span class="id" title="variable">U</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#V"><span class="id" title="variable">V</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#697e59dccfd7ad4519680ddb16ef82da"><span class="id" title="notation">}</span></a>).<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.linearZZ"><span class="id" title="lemma">linearZZ</span></a> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.scalable"><span class="id" title="abbreviation">scalable</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.LinearTheory.LmodProperties.f"><span class="id" title="variable">f</span></a>. <br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.linearPZ"><span class="id" title="lemma">linearPZ</span></a> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.linear"><span class="id" title="abbreviation">linear</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.LinearTheory.LmodProperties.f"><span class="id" title="variable">f</span></a>. <br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.can2_linear"><span class="id" title="lemma">can2_linear</span></a> <span class="id" title="var">f'</span> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#cancel"><span class="id" title="definition">cancel</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.LinearTheory.LmodProperties.f"><span class="id" title="variable">f</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#f'"><span class="id" title="variable">f'</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#cancel"><span class="id" title="definition">cancel</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#f'"><span class="id" title="variable">f'</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.LinearTheory.LmodProperties.f"><span class="id" title="variable">f</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.linear"><span class="id" title="abbreviation">linear</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#f'"><span class="id" title="variable">f'</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.bij_linear"><span class="id" title="lemma">bij_linear</span></a> :<br/>
+&nbsp;&nbsp;<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#bijective"><span class="id" title="inductive">bijective</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.LinearTheory.LmodProperties.f"><span class="id" title="variable">f</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#fe60c20831f772c0c3c288abf68cc42a"><span class="id" title="notation">exists2</span></a> <span class="id" title="var">f'</span> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#fe60c20831f772c0c3c288abf68cc42a"><span class="id" title="notation">:</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#697e59dccfd7ad4519680ddb16ef82da"><span class="id" title="notation">{</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#697e59dccfd7ad4519680ddb16ef82da"><span class="id" title="notation">linear</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.LinearTheory.LmodProperties.V"><span class="id" title="variable">V</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.LinearTheory.LmodProperties.U"><span class="id" title="variable">U</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#697e59dccfd7ad4519680ddb16ef82da"><span class="id" title="notation">}</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#fe60c20831f772c0c3c288abf68cc42a"><span class="id" title="notation">,</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#cancel"><span class="id" title="definition">cancel</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.LinearTheory.LmodProperties.f"><span class="id" title="variable">f</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#f'"><span class="id" title="variable">f'</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#fe60c20831f772c0c3c288abf68cc42a"><span class="id" title="notation">&amp;</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#cancel"><span class="id" title="definition">cancel</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#f'"><span class="id" title="variable">f'</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.LinearTheory.LmodProperties.f"><span class="id" title="variable">f</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">End</span> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.LinearTheory.LmodProperties"><span class="id" title="section">LmodProperties</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Section</span> <a name="GRing.LinearTheory.ScalarProperties"><span class="id" title="section">ScalarProperties</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Variable</span> (<a name="GRing.LinearTheory.ScalarProperties.U"><span class="id" title="variable">U</span></a> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.lmodType"><span class="id" title="abbreviation">lmodType</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.LinearTheory.R"><span class="id" title="variable">R</span></a>) (<a name="GRing.LinearTheory.ScalarProperties.f"><span class="id" title="variable">f</span></a> : <a class="idref" href="mathcomp.algebra.ssralg.html#3caf1c46544edfa98868625c22bf2d5e"><span class="id" title="notation">{</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#3caf1c46544edfa98868625c22bf2d5e"><span class="id" title="notation">scalar</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#U"><span class="id" title="variable">U</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#3caf1c46544edfa98868625c22bf2d5e"><span class="id" title="notation">}</span></a>).<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.scalarZ"><span class="id" title="lemma">scalarZ</span></a> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.scalable_for"><span class="id" title="abbreviation">scalable_for</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#6498e6e308d8a143464cf2d2ba603d36"><span class="id" title="notation">*%</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#6498e6e308d8a143464cf2d2ba603d36"><span class="id" title="notation">R</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.LinearTheory.ScalarProperties.f"><span class="id" title="variable">f</span></a>. <br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.scalarP"><span class="id" title="lemma">scalarP</span></a> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.scalar"><span class="id" title="abbreviation">scalar</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.LinearTheory.ScalarProperties.f"><span class="id" title="variable">f</span></a>. <br/>
+
+<br/>
+<span class="id" title="keyword">End</span> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.LinearTheory.ScalarProperties"><span class="id" title="section">ScalarProperties</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Section</span> <a name="GRing.LinearTheory.LinearLmod"><span class="id" title="section">LinearLmod</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Variables</span> (<a name="GRing.LinearTheory.LinearLmod.W"><span class="id" title="variable">W</span></a> <a name="GRing.LinearTheory.LinearLmod.U"><span class="id" title="variable">U</span></a> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.lmodType"><span class="id" title="abbreviation">lmodType</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.LinearTheory.R"><span class="id" title="variable">R</span></a>) (<a name="GRing.LinearTheory.LinearLmod.V"><span class="id" title="variable">V</span></a> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.zmodType"><span class="id" title="abbreviation">zmodType</span></a>) (<a name="GRing.LinearTheory.LinearLmod.s"><span class="id" title="variable">s</span></a> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.LinearTheory.R"><span class="id" title="variable">R</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#V"><span class="id" title="variable">V</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#V"><span class="id" title="variable">V</span></a>).<br/>
+<span class="id" title="keyword">Variables</span> (<a name="GRing.LinearTheory.LinearLmod.f"><span class="id" title="variable">f</span></a> : <a class="idref" href="mathcomp.algebra.ssralg.html#592bf656f19e2760c7b7fecf8aa4932d"><span class="id" title="notation">{</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#592bf656f19e2760c7b7fecf8aa4932d"><span class="id" title="notation">linear</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.LinearTheory.LinearLmod.U"><span class="id" title="variable">U</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.LinearTheory.LinearLmod.V"><span class="id" title="variable">V</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#592bf656f19e2760c7b7fecf8aa4932d"><span class="id" title="notation">|</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.LinearTheory.LinearLmod.s"><span class="id" title="variable">s</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#592bf656f19e2760c7b7fecf8aa4932d"><span class="id" title="notation">}</span></a>) (<a name="GRing.LinearTheory.LinearLmod.h"><span class="id" title="variable">h</span></a> : <a class="idref" href="mathcomp.algebra.ssralg.html#697e59dccfd7ad4519680ddb16ef82da"><span class="id" title="notation">{</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#697e59dccfd7ad4519680ddb16ef82da"><span class="id" title="notation">linear</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.LinearTheory.LinearLmod.W"><span class="id" title="variable">W</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.LinearTheory.LinearLmod.U"><span class="id" title="variable">U</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#697e59dccfd7ad4519680ddb16ef82da"><span class="id" title="notation">}</span></a>).<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.idfun_is_scalable"><span class="id" title="lemma">idfun_is_scalable</span></a> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.scalable"><span class="id" title="abbreviation">scalable</span></a> (<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#cc5a9586eb997be35b65ea12b2a985a9"><span class="id" title="notation">@</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#cc5a9586eb997be35b65ea12b2a985a9"><span class="id" title="notation">idfun</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.LinearTheory.LinearLmod.U"><span class="id" title="variable">U</span></a>). <br/>
+<span class="id" title="keyword">Canonical</span> <span class="id" title="var">idfun_linear</span> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.AddLinear"><span class="id" title="abbreviation">AddLinear</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.idfun_is_scalable"><span class="id" title="lemma">idfun_is_scalable</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.opp_is_scalable"><span class="id" title="lemma">opp_is_scalable</span></a> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.scalable"><span class="id" title="abbreviation">scalable</span></a> (<a class="idref" href="mathcomp.algebra.ssralg.html#221881b99d58ceaaa33c4172192f697e"><span class="id" title="notation">-%</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#221881b99d58ceaaa33c4172192f697e"><span class="id" title="notation">R</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssreflect.html#4509b22bf26e3d6d771897e22bd8bc8f"><span class="id" title="notation">:</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.LinearTheory.LinearLmod.U"><span class="id" title="variable">U</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.LinearTheory.LinearLmod.U"><span class="id" title="variable">U</span></a>).<br/>
+ <span class="id" title="keyword">Canonical</span> <span class="id" title="var">opp_linear</span> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.AddLinear"><span class="id" title="abbreviation">AddLinear</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.opp_is_scalable"><span class="id" title="lemma">opp_is_scalable</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.comp_is_scalable"><span class="id" title="lemma">comp_is_scalable</span></a> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.scalable_for"><span class="id" title="abbreviation">scalable_for</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.LinearTheory.LinearLmod.s"><span class="id" title="variable">s</span></a> (<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.LinearTheory.LinearLmod.f"><span class="id" title="variable">f</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#1b4394c5c1740ef3dc9e4224084970bb"><span class="id" title="notation">\</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#1b4394c5c1740ef3dc9e4224084970bb"><span class="id" title="notation">o</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.LinearTheory.LinearLmod.h"><span class="id" title="variable">h</span></a>).<br/>
+ <span class="id" title="keyword">Canonical</span> <span class="id" title="var">comp_linear</span> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.AddLinear"><span class="id" title="abbreviation">AddLinear</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.comp_is_scalable"><span class="id" title="lemma">comp_is_scalable</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Variables</span> (<a name="GRing.LinearTheory.LinearLmod.s_law"><span class="id" title="variable">s_law</span></a> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.law"><span class="id" title="record">Scale.law</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.LinearTheory.LinearLmod.s"><span class="id" title="variable">s</span></a>) (<a name="GRing.LinearTheory.LinearLmod.g"><span class="id" title="variable">g</span></a> : <a class="idref" href="mathcomp.algebra.ssralg.html#592bf656f19e2760c7b7fecf8aa4932d"><span class="id" title="notation">{</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#592bf656f19e2760c7b7fecf8aa4932d"><span class="id" title="notation">linear</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.LinearTheory.LinearLmod.U"><span class="id" title="variable">U</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.LinearTheory.LinearLmod.V"><span class="id" title="variable">V</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#592bf656f19e2760c7b7fecf8aa4932d"><span class="id" title="notation">|</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.op"><span class="id" title="projection">Scale.op</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#s_law"><span class="id" title="variable">s_law</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#592bf656f19e2760c7b7fecf8aa4932d"><span class="id" title="notation">}</span></a>).<br/>
+<span class="id" title="keyword">Let</span> <a name="GRing.LinearTheory.LinearLmod.Ds"><span class="id" title="variable">Ds</span></a> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.LinearTheory.LinearLmod.s"><span class="id" title="variable">s</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#2500d48ed8e862ccfda98a44dff88963"><span class="id" title="notation">=1</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.op"><span class="id" title="projection">Scale.op</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.LinearTheory.LinearLmod.s_law"><span class="id" title="variable">s_law</span></a>. <br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.null_fun_is_scalable"><span class="id" title="lemma">null_fun_is_scalable</span></a> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.scalable_for"><span class="id" title="abbreviation">scalable_for</span></a> (<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.op"><span class="id" title="projection">Scale.op</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.LinearTheory.LinearLmod.s_law"><span class="id" title="variable">s_law</span></a>) (<a class="idref" href="mathcomp.algebra.ssralg.html#1b9a40373c4c41de4d5793af234729fd"><span class="id" title="notation">\0</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssreflect.html#4509b22bf26e3d6d771897e22bd8bc8f"><span class="id" title="notation">:</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.LinearTheory.LinearLmod.U"><span class="id" title="variable">U</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.LinearTheory.LinearLmod.V"><span class="id" title="variable">V</span></a>).<br/>
+ <span class="id" title="keyword">Canonical</span> <span class="id" title="var">null_fun_linear</span> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.AddLinear"><span class="id" title="abbreviation">AddLinear</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.null_fun_is_scalable"><span class="id" title="lemma">null_fun_is_scalable</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.add_fun_is_scalable"><span class="id" title="lemma">add_fun_is_scalable</span></a> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.scalable_for"><span class="id" title="abbreviation">scalable_for</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.LinearTheory.LinearLmod.s"><span class="id" title="variable">s</span></a> (<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.LinearTheory.LinearLmod.f"><span class="id" title="variable">f</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#f2f8c9cbf6197be0e03c235df75623a4"><span class="id" title="notation">\+</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.LinearTheory.LinearLmod.g"><span class="id" title="variable">g</span></a>).<br/>
+ <span class="id" title="keyword">Canonical</span> <span class="id" title="var">add_fun_linear</span> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.AddLinear"><span class="id" title="abbreviation">AddLinear</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.add_fun_is_scalable"><span class="id" title="lemma">add_fun_is_scalable</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.sub_fun_is_scalable"><span class="id" title="lemma">sub_fun_is_scalable</span></a> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.scalable_for"><span class="id" title="abbreviation">scalable_for</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.LinearTheory.LinearLmod.s"><span class="id" title="variable">s</span></a> (<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.LinearTheory.LinearLmod.f"><span class="id" title="variable">f</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#8af655ace12546ccf393660f3321db1e"><span class="id" title="notation">\-</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.LinearTheory.LinearLmod.g"><span class="id" title="variable">g</span></a>).<br/>
+ <span class="id" title="keyword">Canonical</span> <span class="id" title="var">sub_fun_linear</span> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.AddLinear"><span class="id" title="abbreviation">AddLinear</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.sub_fun_is_scalable"><span class="id" title="lemma">sub_fun_is_scalable</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">End</span> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.LinearTheory.LinearLmod"><span class="id" title="section">LinearLmod</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Section</span> <a name="GRing.LinearTheory.LinearLalg"><span class="id" title="section">LinearLalg</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Variables</span> (<a name="GRing.LinearTheory.LinearLalg.A"><span class="id" title="variable">A</span></a> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.lalgType"><span class="id" title="abbreviation">lalgType</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.LinearTheory.R"><span class="id" title="variable">R</span></a>) (<a name="GRing.LinearTheory.LinearLalg.U"><span class="id" title="variable">U</span></a> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.lmodType"><span class="id" title="abbreviation">lmodType</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.LinearTheory.R"><span class="id" title="variable">R</span></a>).<br/>
+
+<br/>
+<span class="id" title="keyword">Variables</span> (<a name="GRing.LinearTheory.LinearLalg.a"><span class="id" title="variable">a</span></a> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.LinearTheory.LinearLalg.A"><span class="id" title="variable">A</span></a>) (<a name="GRing.LinearTheory.LinearLalg.f"><span class="id" title="variable">f</span></a> : <a class="idref" href="mathcomp.algebra.ssralg.html#697e59dccfd7ad4519680ddb16ef82da"><span class="id" title="notation">{</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#697e59dccfd7ad4519680ddb16ef82da"><span class="id" title="notation">linear</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.LinearTheory.LinearLalg.U"><span class="id" title="variable">U</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.LinearTheory.LinearLalg.A"><span class="id" title="variable">A</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#697e59dccfd7ad4519680ddb16ef82da"><span class="id" title="notation">}</span></a>).<br/>
+
+<br/>
+<span class="id" title="keyword">Fact</span> <a name="GRing.mulr_fun_is_scalable"><span class="id" title="lemma">mulr_fun_is_scalable</span></a> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.scalable"><span class="id" title="abbreviation">scalable</span></a> (<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.LinearTheory.LinearLalg.a"><span class="id" title="variable">a</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#2b0f3ec783c950f59954eab0f90dbfa8"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#2b0f3ec783c950f59954eab0f90dbfa8"><span class="id" title="notation">o</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#2b0f3ec783c950f59954eab0f90dbfa8"><span class="id" title="notation">×</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.LinearTheory.LinearLalg.f"><span class="id" title="variable">f</span></a>).<br/>
+ <span class="id" title="keyword">Canonical</span> <span class="id" title="var">mulr_fun_linear</span> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.AddLinear"><span class="id" title="abbreviation">AddLinear</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.mulr_fun_is_scalable"><span class="id" title="lemma">mulr_fun_is_scalable</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">End</span> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.LinearTheory.LinearLalg"><span class="id" title="section">LinearLalg</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">End</span> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.LinearTheory"><span class="id" title="section">LinearTheory</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Module</span> <a name="GRing.LRMorphism"><span class="id" title="module">LRMorphism</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Section</span> <a name="GRing.LRMorphism.ClassDef"><span class="id" title="section">ClassDef</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Variables</span> (<a name="GRing.LRMorphism.ClassDef.R"><span class="id" title="variable">R</span></a> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Ring.Exports.ringType"><span class="id" title="abbreviation">ringType</span></a>) (<a name="GRing.LRMorphism.ClassDef.A"><span class="id" title="variable">A</span></a> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Lalgebra.Exports.lalgType"><span class="id" title="abbreviation">lalgType</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#R"><span class="id" title="variable">R</span></a>) (<a name="GRing.LRMorphism.ClassDef.B"><span class="id" title="variable">B</span></a> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Ring.Exports.ringType"><span class="id" title="abbreviation">ringType</span></a>) (<a name="GRing.LRMorphism.ClassDef.s"><span class="id" title="variable">s</span></a> : <a class="idref" href="mathcomp.algebra.ssralg.html#R"><span class="id" title="variable">R</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#B"><span class="id" title="variable">B</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#B"><span class="id" title="variable">B</span></a>).<br/>
+
+<br/>
+<span class="id" title="keyword">Record</span> <a name="GRing.LRMorphism.class_of"><span class="id" title="record">class_of</span></a> (<span class="id" title="var">f</span> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.LRMorphism.ClassDef.A"><span class="id" title="variable">A</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.LRMorphism.ClassDef.B"><span class="id" title="variable">B</span></a>) : <span class="id" title="keyword">Prop</span> :=<br/>
+&nbsp;&nbsp;<a name="GRing.LRMorphism.Class"><span class="id" title="constructor">Class</span></a> {<a name="GRing.LRMorphism.base"><span class="id" title="projection">base</span></a> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.rmorphism"><span class="id" title="abbreviation">rmorphism</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#f"><span class="id" title="variable">f</span></a>; <a name="GRing.LRMorphism.mixin"><span class="id" title="projection">mixin</span></a> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.scalable_for"><span class="id" title="abbreviation">scalable_for</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.LRMorphism.ClassDef.s"><span class="id" title="variable">s</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#f"><span class="id" title="variable">f</span></a>}.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.LRMorphism.base2"><span class="id" title="definition">base2</span></a> <span class="id" title="var">f</span> (<span class="id" title="var">fLM</span> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.LRMorphism.class_of"><span class="id" title="record">class_of</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#f"><span class="id" title="variable">f</span></a>) := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Linear.Class"><span class="id" title="constructor">Linear.Class</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#fLM"><span class="id" title="variable">fLM</span></a> (<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.LRMorphism.mixin"><span class="id" title="projection">mixin</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#fLM"><span class="id" title="variable">fLM</span></a>).<br/>
+
+<br/>
+<span class="id" title="keyword">Structure</span> <a name="GRing.LRMorphism.map"><span class="id" title="record">map</span></a> (<span class="id" title="var">phAB</span> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssreflect.html#phant"><span class="id" title="inductive">phant</span></a> (<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.LRMorphism.ClassDef.A"><span class="id" title="variable">A</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.LRMorphism.ClassDef.B"><span class="id" title="variable">B</span></a>)) := <a name="GRing.LRMorphism.Pack"><span class="id" title="constructor">Pack</span></a> {<a name="GRing.LRMorphism.apply"><span class="id" title="projection">apply</span></a>; <span class="id" title="var">_</span> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.LRMorphism.class_of"><span class="id" title="record">class_of</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#apply"><span class="id" title="method">apply</span></a>}.<br/>
+
+<br/>
+<span class="id" title="keyword">Variables</span> (<a name="GRing.LRMorphism.ClassDef.phAB"><span class="id" title="variable">phAB</span></a> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssreflect.html#phant"><span class="id" title="inductive">phant</span></a> (<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.LRMorphism.ClassDef.A"><span class="id" title="variable">A</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.LRMorphism.ClassDef.B"><span class="id" title="variable">B</span></a>)) (<a name="GRing.LRMorphism.ClassDef.f"><span class="id" title="variable">f</span></a> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.LRMorphism.ClassDef.A"><span class="id" title="variable">A</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.LRMorphism.ClassDef.B"><span class="id" title="variable">B</span></a>) (<a name="GRing.LRMorphism.ClassDef.cF"><span class="id" title="variable">cF</span></a> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.LRMorphism.map"><span class="id" title="record">map</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#phAB"><span class="id" title="variable">phAB</span></a>).<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.LRMorphism.class"><span class="id" title="definition">class</span></a> := <span class="id" title="keyword">let</span>: <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.LRMorphism.Pack"><span class="id" title="constructor">Pack</span></a> <span class="id" title="var">_</span> <span class="id" title="var">c</span> <span class="id" title="keyword">as</span> <span class="id" title="var">cF'</span> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.LRMorphism.ClassDef.cF"><span class="id" title="variable">cF</span></a> <span class="id" title="keyword">return</span> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.LRMorphism.class_of"><span class="id" title="record">class_of</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#cF'"><span class="id" title="variable">cF'</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="GRing.LRMorphism.clone"><span class="id" title="definition">clone</span></a> :=<br/>
+&nbsp;&nbsp;<span class="id" title="keyword">fun</span> (<span class="id" title="var">g</span> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.RMorphism.map"><span class="id" title="record">RMorphism.map</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.LRMorphism.ClassDef.phAB"><span class="id" title="variable">phAB</span></a>) <span class="id" title="var">fM</span> &amp; <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#phant_id"><span class="id" title="definition">phant_id</span></a> (<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.RMorphism.class"><span class="id" title="definition">RMorphism.class</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#g"><span class="id" title="variable">g</span></a>) <a class="idref" href="mathcomp.algebra.ssralg.html#fM"><span class="id" title="variable">fM</span></a> ⇒<br/>
+&nbsp;&nbsp;<span class="id" title="keyword">fun</span> (<span class="id" title="var">h</span> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Linear.map"><span class="id" title="record">Linear.map</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.LRMorphism.ClassDef.s"><span class="id" title="variable">s</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.LRMorphism.ClassDef.phAB"><span class="id" title="variable">phAB</span></a>) <span class="id" title="var">fZ</span> &amp;<br/>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#phant_id"><span class="id" title="definition">phant_id</span></a> (<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Linear.mixin"><span class="id" title="projection">Linear.mixin</span></a> (<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Linear.class"><span class="id" title="definition">Linear.class</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#h"><span class="id" title="variable">h</span></a>)) <a class="idref" href="mathcomp.algebra.ssralg.html#fZ"><span class="id" title="variable">fZ</span></a> ⇒<br/>
+&nbsp;&nbsp;<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.LRMorphism.Pack"><span class="id" title="constructor">Pack</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.LRMorphism.ClassDef.phAB"><span class="id" title="variable">phAB</span></a> (@<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.LRMorphism.Class"><span class="id" title="constructor">Class</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.LRMorphism.ClassDef.f"><span class="id" title="variable">f</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#fM"><span class="id" title="variable">fM</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#fZ"><span class="id" title="variable">fZ</span></a>).<br/>
+
+<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.LRMorphism.pack"><span class="id" title="definition">pack</span></a> (<span class="id" title="var">fZ</span> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.scalable_for"><span class="id" title="abbreviation">scalable_for</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.LRMorphism.ClassDef.s"><span class="id" title="variable">s</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.LRMorphism.ClassDef.f"><span class="id" title="variable">f</span></a>) :=<br/>
+&nbsp;&nbsp;<span class="id" title="keyword">fun</span> (<span class="id" title="var">g</span> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.RMorphism.map"><span class="id" title="record">RMorphism.map</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.LRMorphism.ClassDef.phAB"><span class="id" title="variable">phAB</span></a>) <span class="id" title="var">fM</span> &amp; <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#phant_id"><span class="id" title="definition">phant_id</span></a> (<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.RMorphism.class"><span class="id" title="definition">RMorphism.class</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#g"><span class="id" title="variable">g</span></a>) <a class="idref" href="mathcomp.algebra.ssralg.html#fM"><span class="id" title="variable">fM</span></a> ⇒<br/>
+&nbsp;&nbsp;<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.LRMorphism.Pack"><span class="id" title="constructor">Pack</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.LRMorphism.ClassDef.phAB"><span class="id" title="variable">phAB</span></a> (<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.LRMorphism.Class"><span class="id" title="constructor">Class</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#fM"><span class="id" title="variable">fM</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#fZ"><span class="id" title="variable">fZ</span></a>).<br/>
+
+<br/>
+<span class="id" title="keyword">Canonical</span> <span class="id" title="var">additive</span> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Additive.Pack"><span class="id" title="constructor">Additive.Pack</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.LRMorphism.ClassDef.phAB"><span class="id" title="variable">phAB</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.LRMorphism.class"><span class="id" title="definition">class</span></a>.<br/>
+<span class="id" title="keyword">Canonical</span> <span class="id" title="var">rmorphism</span> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.RMorphism.Pack"><span class="id" title="constructor">RMorphism.Pack</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.LRMorphism.ClassDef.phAB"><span class="id" title="variable">phAB</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.LRMorphism.class"><span class="id" title="definition">class</span></a>.<br/>
+<span class="id" title="keyword">Canonical</span> <span class="id" title="var">linear</span> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Linear.Pack"><span class="id" title="constructor">Linear.Pack</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.LRMorphism.ClassDef.phAB"><span class="id" title="variable">phAB</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.LRMorphism.class"><span class="id" title="definition">class</span></a>.<br/>
+<span class="id" title="keyword">Canonical</span> <span class="id" title="var">join_rmorphism</span> := @<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.RMorphism.Pack"><span class="id" title="constructor">RMorphism.Pack</span></a> <span class="id" title="var">_</span> <span class="id" title="var">_</span> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.LRMorphism.ClassDef.phAB"><span class="id" title="variable">phAB</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.LRMorphism.linear"><span class="id" title="definition">linear</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.LRMorphism.class"><span class="id" title="definition">class</span></a>.<br/>
+<span class="id" title="keyword">Canonical</span> <span class="id" title="var">join_linear</span> := @<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Linear.Pack"><span class="id" title="constructor">Linear.Pack</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.LRMorphism.ClassDef.R"><span class="id" title="variable">R</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.LRMorphism.ClassDef.A"><span class="id" title="variable">A</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.LRMorphism.ClassDef.B"><span class="id" title="variable">B</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.LRMorphism.ClassDef.s"><span class="id" title="variable">s</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.LRMorphism.ClassDef.phAB"><span class="id" title="variable">phAB</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.LRMorphism.rmorphism"><span class="id" title="definition">rmorphism</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.LRMorphism.class"><span class="id" title="definition">class</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">End</span> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.LRMorphism.ClassDef"><span class="id" title="section">ClassDef</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Module</span> <a name="GRing.LRMorphism.Exports"><span class="id" title="module">Exports</span></a>.<br/>
+<span class="id" title="keyword">Notation</span> <a name="GRing.LRMorphism.Exports.lrmorphism_for"><span class="id" title="abbreviation">lrmorphism_for</span></a> <span class="id" title="var">s</span> <span class="id" title="var">f</span> := (<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.LRMorphism.class_of"><span class="id" title="record">class_of</span></a> <span class="id" title="var">s</span> <span class="id" title="var">f</span>).<br/>
+<span class="id" title="keyword">Notation</span> <a name="GRing.LRMorphism.Exports.lrmorphism"><span class="id" title="abbreviation">lrmorphism</span></a> <span class="id" title="var">f</span> := (<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.LRMorphism.Exports.lrmorphism_for"><span class="id" title="abbreviation">lrmorphism_for</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#9d4bc68f8a37455428efb931e05d31ce"><span class="id" title="notation">*:%</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#9d4bc68f8a37455428efb931e05d31ce"><span class="id" title="notation">R</span></a> <span class="id" title="var">f</span>).<br/>
+<span class="id" title="keyword">Coercion</span> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.LRMorphism.base"><span class="id" title="projection">base</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.LRMorphism.base"><span class="id" title="projection">:</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.LRMorphism.base"><span class="id" title="projection">lrmorphism_for</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.LRMorphism.base"><span class="id" title="projection">&gt;-&gt;</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.LRMorphism.base"><span class="id" title="projection">RMorphism.class_of</span></a>.<br/>
+<span class="id" title="keyword">Coercion</span> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.LRMorphism.base2"><span class="id" title="definition">base2</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.LRMorphism.base2"><span class="id" title="definition">:</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.LRMorphism.base2"><span class="id" title="definition">lrmorphism_for</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.LRMorphism.base2"><span class="id" title="definition">&gt;-&gt;</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.LRMorphism.base2"><span class="id" title="definition">lmorphism_for</span></a>.<br/>
+<span class="id" title="keyword">Coercion</span> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.LRMorphism.apply"><span class="id" title="projection">apply</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.LRMorphism.apply"><span class="id" title="projection">:</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.LRMorphism.apply"><span class="id" title="projection">map</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.LRMorphism.apply"><span class="id" title="projection">&gt;-&gt;</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.LRMorphism.apply"><span class="id" title="projection">Funclass</span></a>.<br/>
+<span class="id" title="keyword">Notation</span> <a name="GRing.LRMorphism.Exports.LRMorphism"><span class="id" title="abbreviation">LRMorphism</span></a> <span class="id" title="var">f_lrM</span> := (<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.LRMorphism.Pack"><span class="id" title="constructor">Pack</span></a> (<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssreflect.html#Phant"><span class="id" title="constructor">Phant</span></a> <span class="id" title="var">_</span>) (<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.LRMorphism.Class"><span class="id" title="constructor">Class</span></a> <span class="id" title="var">f_lrM</span> <span class="id" title="var">f_lrM</span>)).<br/>
+<span class="id" title="keyword">Notation</span> <a name="GRing.LRMorphism.Exports.AddLRMorphism"><span class="id" title="abbreviation">AddLRMorphism</span></a> <span class="id" title="var">fZ</span> := (<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.LRMorphism.pack"><span class="id" title="definition">pack</span></a> <span class="id" title="var">fZ</span> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#id"><span class="id" title="abbreviation">id</span></a>).<br/>
+<span class="id" title="keyword">Notation</span> <a name="e29f9115b869cd4fe3153ebcc11c593c"><span class="id" title="notation">&quot;</span></a>{ 'lrmorphism' fAB | s }" := (<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.LRMorphism.map"><span class="id" title="record">map</span></a> <span class="id" title="var">s</span> (<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssreflect.html#Phant"><span class="id" title="constructor">Phant</span></a> <span class="id" title="var">fAB</span>))<br/>
+&nbsp;&nbsp;(<span class="id" title="tactic">at</span> <span class="id" title="keyword">level</span> 0, <span class="id" title="var">format</span> "{ 'lrmorphism' fAB | s }") : <span class="id" title="var">ring_scope</span>.<br/>
+<span class="id" title="keyword">Notation</span> <a name="2759afce9315ab3f51737bc14cc79ce9"><span class="id" title="notation">&quot;</span></a>{ 'lrmorphism' fAB }" := <a class="idref" href="mathcomp.algebra.ssralg.html#e29f9115b869cd4fe3153ebcc11c593c"><span class="id" title="notation">{</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#e29f9115b869cd4fe3153ebcc11c593c"><span class="id" title="notation">lrmorphism</span></a> <span class="id" title="var">fAB</span> <a class="idref" href="mathcomp.algebra.ssralg.html#e29f9115b869cd4fe3153ebcc11c593c"><span class="id" title="notation">|</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#9d4bc68f8a37455428efb931e05d31ce"><span class="id" title="notation">*:%</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#9d4bc68f8a37455428efb931e05d31ce"><span class="id" title="notation">R</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#e29f9115b869cd4fe3153ebcc11c593c"><span class="id" title="notation">}</span></a><br/>
+&nbsp;&nbsp;(<span class="id" title="tactic">at</span> <span class="id" title="keyword">level</span> 0, <span class="id" title="var">format</span> "{ 'lrmorphism' fAB }") : <span class="id" title="var">ring_scope</span>.<br/>
+<span class="id" title="keyword">Notation</span> <a name="8900f6ae77a86586561e15965d5870c7"><span class="id" title="notation">&quot;</span></a>[ 'lrmorphism' 'of' f ]" := (@<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.LRMorphism.clone"><span class="id" title="definition">clone</span></a> <span class="id" title="var">_</span> <span class="id" title="var">_</span> <span class="id" title="var">_</span> <span class="id" title="var">_</span> <span class="id" title="var">_</span> <span class="id" title="var">f</span> <span class="id" title="var">_</span> <span class="id" title="var">_</span> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#id"><span class="id" title="abbreviation">id</span></a> <span class="id" title="var">_</span> <span class="id" title="var">_</span> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#id"><span class="id" title="abbreviation">id</span></a>)<br/>
+&nbsp;&nbsp;(<span class="id" title="tactic">at</span> <span class="id" title="keyword">level</span> 0, <span class="id" title="var">format</span> "[ 'lrmorphism' 'of' f ]") : <span class="id" title="var">form_scope</span>.<br/>
+<span class="id" title="keyword">Coercion</span> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.LRMorphism.additive"><span class="id" title="definition">additive</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.LRMorphism.additive"><span class="id" title="definition">:</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.LRMorphism.additive"><span class="id" title="definition">map</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.LRMorphism.additive"><span class="id" title="definition">&gt;-&gt;</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.LRMorphism.additive"><span class="id" title="definition">Additive.map</span></a>.<br/>
+<span class="id" title="keyword">Canonical</span> <span class="id" title="var">additive</span>.<br/>
+<span class="id" title="keyword">Coercion</span> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.LRMorphism.rmorphism"><span class="id" title="definition">rmorphism</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.LRMorphism.rmorphism"><span class="id" title="definition">:</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.LRMorphism.rmorphism"><span class="id" title="definition">map</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.LRMorphism.rmorphism"><span class="id" title="definition">&gt;-&gt;</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.LRMorphism.rmorphism"><span class="id" title="definition">RMorphism.map</span></a>.<br/>
+<span class="id" title="keyword">Canonical</span> <span class="id" title="var">rmorphism</span>.<br/>
+<span class="id" title="keyword">Coercion</span> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.LRMorphism.linear"><span class="id" title="definition">linear</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.LRMorphism.linear"><span class="id" title="definition">:</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.LRMorphism.linear"><span class="id" title="definition">map</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.LRMorphism.linear"><span class="id" title="definition">&gt;-&gt;</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.LRMorphism.linear"><span class="id" title="definition">Linear.map</span></a>.<br/>
+<span class="id" title="keyword">Canonical</span> <span class="id" title="var">linear</span>.<br/>
+<span class="id" title="keyword">Canonical</span> <span class="id" title="var">join_rmorphism</span>.<br/>
+<span class="id" title="keyword">Canonical</span> <span class="id" title="var">join_linear</span>.<br/>
+<span class="id" title="keyword">End</span> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.LRMorphism.Exports"><span class="id" title="module">Exports</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">End</span> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.LRMorphism"><span class="id" title="module">LRMorphism</span></a>.<br/>
+<span class="id" title="keyword">Include</span> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.LRMorphism.Exports"><span class="id" title="module">LRMorphism.Exports</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Section</span> <a name="GRing.LRMorphismTheory"><span class="id" title="section">LRMorphismTheory</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Variables</span> (<a name="GRing.LRMorphismTheory.R"><span class="id" title="variable">R</span></a> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ringType"><span class="id" title="abbreviation">ringType</span></a>) (<a name="GRing.LRMorphismTheory.A"><span class="id" title="variable">A</span></a> <a name="GRing.LRMorphismTheory.B"><span class="id" title="variable">B</span></a> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.lalgType"><span class="id" title="abbreviation">lalgType</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#R"><span class="id" title="variable">R</span></a>) (<a name="GRing.LRMorphismTheory.C"><span class="id" title="variable">C</span></a> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ringType"><span class="id" title="abbreviation">ringType</span></a>) (<a name="GRing.LRMorphismTheory.s"><span class="id" title="variable">s</span></a> : <a class="idref" href="mathcomp.algebra.ssralg.html#R"><span class="id" title="variable">R</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#C"><span class="id" title="variable">C</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#C"><span class="id" title="variable">C</span></a>).<br/>
+<span class="id" title="keyword">Variables</span> (<a name="GRing.LRMorphismTheory.k"><span class="id" title="variable">k</span></a> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#unit"><span class="id" title="inductive">unit</span></a>) (<a name="GRing.LRMorphismTheory.f"><span class="id" title="variable">f</span></a> : <a class="idref" href="mathcomp.algebra.ssralg.html#2759afce9315ab3f51737bc14cc79ce9"><span class="id" title="notation">{</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#2759afce9315ab3f51737bc14cc79ce9"><span class="id" title="notation">lrmorphism</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.LRMorphismTheory.A"><span class="id" title="variable">A</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.LRMorphismTheory.B"><span class="id" title="variable">B</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#2759afce9315ab3f51737bc14cc79ce9"><span class="id" title="notation">}</span></a>) (<a name="GRing.LRMorphismTheory.g"><span class="id" title="variable">g</span></a> : <a class="idref" href="mathcomp.algebra.ssralg.html#e29f9115b869cd4fe3153ebcc11c593c"><span class="id" title="notation">{</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#e29f9115b869cd4fe3153ebcc11c593c"><span class="id" title="notation">lrmorphism</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.LRMorphismTheory.B"><span class="id" title="variable">B</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.LRMorphismTheory.C"><span class="id" title="variable">C</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#e29f9115b869cd4fe3153ebcc11c593c"><span class="id" title="notation">|</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.LRMorphismTheory.s"><span class="id" title="variable">s</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#e29f9115b869cd4fe3153ebcc11c593c"><span class="id" title="notation">}</span></a>).<br/>
+
+<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.idfun_lrmorphism"><span class="id" title="definition">idfun_lrmorphism</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#8900f6ae77a86586561e15965d5870c7"><span class="id" title="notation">[</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#8900f6ae77a86586561e15965d5870c7"><span class="id" title="notation">lrmorphism</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#8900f6ae77a86586561e15965d5870c7"><span class="id" title="notation">of</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#cc5a9586eb997be35b65ea12b2a985a9"><span class="id" title="notation">@</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#cc5a9586eb997be35b65ea12b2a985a9"><span class="id" title="notation">idfun</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.LRMorphismTheory.A"><span class="id" title="variable">A</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#8900f6ae77a86586561e15965d5870c7"><span class="id" title="notation">]</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.comp_lrmorphism"><span class="id" title="definition">comp_lrmorphism</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#8900f6ae77a86586561e15965d5870c7"><span class="id" title="notation">[</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#8900f6ae77a86586561e15965d5870c7"><span class="id" title="notation">lrmorphism</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#8900f6ae77a86586561e15965d5870c7"><span class="id" title="notation">of</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.LRMorphismTheory.g"><span class="id" title="variable">g</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#1b4394c5c1740ef3dc9e4224084970bb"><span class="id" title="notation">\</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#1b4394c5c1740ef3dc9e4224084970bb"><span class="id" title="notation">o</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.LRMorphismTheory.f"><span class="id" title="variable">f</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#8900f6ae77a86586561e15965d5870c7"><span class="id" title="notation">]</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.locked_lrmorphism"><span class="id" title="definition">locked_lrmorphism</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#8900f6ae77a86586561e15965d5870c7"><span class="id" title="notation">[</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#8900f6ae77a86586561e15965d5870c7"><span class="id" title="notation">lrmorphism</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#8900f6ae77a86586561e15965d5870c7"><span class="id" title="notation">of</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssreflect.html#locked_with"><span class="id" title="definition">locked_with</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.LRMorphismTheory.k"><span class="id" title="variable">k</span></a> (<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.LRMorphismTheory.f"><span class="id" title="variable">f</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssreflect.html#4509b22bf26e3d6d771897e22bd8bc8f"><span class="id" title="notation">:</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.LRMorphismTheory.A"><span class="id" title="variable">A</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.LRMorphismTheory.B"><span class="id" title="variable">B</span></a>)<a class="idref" href="mathcomp.algebra.ssralg.html#8900f6ae77a86586561e15965d5870c7"><span class="id" title="notation">]</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.rmorph_alg"><span class="id" title="lemma">rmorph_alg</span></a> <span class="id" title="var">a</span> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.LRMorphismTheory.f"><span class="id" title="variable">f</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#a"><span class="id" title="variable">a</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#a9486b60fd4d51d8247008b3f8b21d21"><span class="id" title="notation">%:</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#a9486b60fd4d51d8247008b3f8b21d21"><span class="id" title="notation">A</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#a"><span class="id" title="variable">a</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#a9486b60fd4d51d8247008b3f8b21d21"><span class="id" title="notation">%:</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#a9486b60fd4d51d8247008b3f8b21d21"><span class="id" title="notation">A</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.lrmorphismP"><span class="id" title="lemma">lrmorphismP</span></a> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.lrmorphism"><span class="id" title="abbreviation">lrmorphism</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.LRMorphismTheory.f"><span class="id" title="variable">f</span></a>. <br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.can2_lrmorphism"><span class="id" title="lemma">can2_lrmorphism</span></a> <span class="id" title="var">f'</span> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#cancel"><span class="id" title="definition">cancel</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.LRMorphismTheory.f"><span class="id" title="variable">f</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#f'"><span class="id" title="variable">f'</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#cancel"><span class="id" title="definition">cancel</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#f'"><span class="id" title="variable">f'</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.LRMorphismTheory.f"><span class="id" title="variable">f</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.lrmorphism"><span class="id" title="abbreviation">lrmorphism</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#f'"><span class="id" title="variable">f'</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.bij_lrmorphism"><span class="id" title="lemma">bij_lrmorphism</span></a> :<br/>
+&nbsp;&nbsp;<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#bijective"><span class="id" title="inductive">bijective</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.LRMorphismTheory.f"><span class="id" title="variable">f</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#fe60c20831f772c0c3c288abf68cc42a"><span class="id" title="notation">exists2</span></a> <span class="id" title="var">f'</span> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#fe60c20831f772c0c3c288abf68cc42a"><span class="id" title="notation">:</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#2759afce9315ab3f51737bc14cc79ce9"><span class="id" title="notation">{</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#2759afce9315ab3f51737bc14cc79ce9"><span class="id" title="notation">lrmorphism</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.LRMorphismTheory.B"><span class="id" title="variable">B</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.LRMorphismTheory.A"><span class="id" title="variable">A</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#2759afce9315ab3f51737bc14cc79ce9"><span class="id" title="notation">}</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#fe60c20831f772c0c3c288abf68cc42a"><span class="id" title="notation">,</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#cancel"><span class="id" title="definition">cancel</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.LRMorphismTheory.f"><span class="id" title="variable">f</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#f'"><span class="id" title="variable">f'</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#fe60c20831f772c0c3c288abf68cc42a"><span class="id" title="notation">&amp;</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#cancel"><span class="id" title="definition">cancel</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#f'"><span class="id" title="variable">f'</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.LRMorphismTheory.f"><span class="id" title="variable">f</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">End</span> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.LRMorphismTheory"><span class="id" title="section">LRMorphismTheory</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Module</span> <a name="GRing.ComRing"><span class="id" title="module">ComRing</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.ComRing.RingMixin"><span class="id" title="definition">RingMixin</span></a> <span class="id" title="var">R</span> <span class="id" title="var">one</span> <span class="id" title="var">mul</span> <span class="id" title="var">mulA</span> <span class="id" title="var">mulC</span> <span class="id" title="var">mul1x</span> <span class="id" title="var">mul_addl</span> :=<br/>
+&nbsp;&nbsp;<span class="id" title="keyword">let</span> <span class="id" title="var">mulx1</span> := <a class="idref" href="mathcomp.ssreflect.bigop.html#Monoid.mulC_id"><span class="id" title="lemma">Monoid.mulC_id</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#mulC"><span class="id" title="variable">mulC</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#mul1x"><span class="id" title="variable">mul1x</span></a> <span class="id" title="tactic">in</span><br/>
+&nbsp;&nbsp;<span class="id" title="keyword">let</span> <span class="id" title="var">mul_addr</span> := <a class="idref" href="mathcomp.ssreflect.bigop.html#Monoid.mulC_dist"><span class="id" title="lemma">Monoid.mulC_dist</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#mulC"><span class="id" title="variable">mulC</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#mul_addl"><span class="id" title="variable">mul_addl</span></a> <span class="id" title="tactic">in</span><br/>
+&nbsp;&nbsp;@<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Ring.EtaMixin"><span class="id" title="definition">Ring.EtaMixin</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#R"><span class="id" title="variable">R</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#one"><span class="id" title="variable">one</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#mul"><span class="id" title="variable">mul</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#mulA"><span class="id" title="variable">mulA</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#mul1x"><span class="id" title="variable">mul1x</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#mulx1"><span class="id" title="variable">mulx1</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#mul_addl"><span class="id" title="variable">mul_addl</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#mul_addr"><span class="id" title="variable">mul_addr</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Section</span> <a name="GRing.ComRing.ClassDef"><span class="id" title="section">ClassDef</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Record</span> <a name="GRing.ComRing.class_of"><span class="id" title="record">class_of</span></a> <span class="id" title="var">R</span> :=<br/>
+&nbsp;&nbsp;<a name="GRing.ComRing.Class"><span class="id" title="constructor">Class</span></a> {<a name="GRing.ComRing.base"><span class="id" title="projection">base</span></a> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Ring.class_of"><span class="id" title="record">Ring.class_of</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#R"><span class="id" title="variable">R</span></a>; <a name="GRing.ComRing.mixin"><span class="id" title="projection">mixin</span></a> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#commutative"><span class="id" title="definition">commutative</span></a> (<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Ring.mul"><span class="id" title="projection">Ring.mul</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#base"><span class="id" title="method">base</span></a>)}.<br/>
+
+<br/>
+<span class="id" title="keyword">Structure</span> <a name="GRing.ComRing.type"><span class="id" title="record">type</span></a> := <a name="GRing.ComRing.Pack"><span class="id" title="constructor">Pack</span></a> {<a name="GRing.ComRing.sort"><span class="id" title="projection">sort</span></a>; <span class="id" title="var">_</span> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ComRing.class_of"><span class="id" title="record">class_of</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#sort"><span class="id" title="method">sort</span></a>; <span class="id" title="var">_</span> : <span class="id" title="keyword">Type</span>}.<br/>
+<span class="id" title="keyword">Variable</span> (<a name="GRing.ComRing.ClassDef.T"><span class="id" title="variable">T</span></a> : <span class="id" title="keyword">Type</span>) (<a name="GRing.ComRing.ClassDef.cT"><span class="id" title="variable">cT</span></a> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ComRing.type"><span class="id" title="record">type</span></a>).<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.ComRing.class"><span class="id" title="definition">class</span></a> := <span class="id" title="keyword">let</span>: <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ComRing.Pack"><span class="id" title="constructor">Pack</span></a> <span class="id" title="var">_</span> <span class="id" title="var">c</span> <span class="id" title="var">_</span> <span class="id" title="keyword">as</span> <span class="id" title="var">cT'</span> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ComRing.ClassDef.cT"><span class="id" title="variable">cT</span></a> <span class="id" title="keyword">return</span> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ComRing.class_of"><span class="id" title="record">class_of</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#cT'"><span class="id" title="variable">cT'</span></a> <span class="id" title="tactic">in</span> <span class="id" title="var">c</span>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.ComRing.clone"><span class="id" title="definition">clone</span></a> <span class="id" title="var">c</span> <span class="id" title="keyword">of</span> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#phant_id"><span class="id" title="definition">phant_id</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ComRing.class"><span class="id" title="definition">class</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#c"><span class="id" title="variable">c</span></a> := @<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ComRing.Pack"><span class="id" title="constructor">Pack</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ComRing.ClassDef.T"><span class="id" title="variable">T</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#c"><span class="id" title="variable">c</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ComRing.ClassDef.T"><span class="id" title="variable">T</span></a>.<br/>
+<span class="id" title="keyword">Let</span> <a name="GRing.ComRing.ClassDef.xT"><span class="id" title="variable">xT</span></a> := <span class="id" title="keyword">let</span>: <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ComRing.Pack"><span class="id" title="constructor">Pack</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="mathcomp.algebra.ssralg.html#GRing.ComRing.ClassDef.cT"><span class="id" title="variable">cT</span></a> <span class="id" title="tactic">in</span> <span class="id" title="var">T</span>.<br/>
+<span class="id" title="keyword">Notation</span> <a name="GRing.ComRing.xclass"><span class="id" title="abbreviation">xclass</span></a> := (<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ComRing.class"><span class="id" title="definition">class</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssreflect.html#4509b22bf26e3d6d771897e22bd8bc8f"><span class="id" title="notation">:</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ComRing.class_of"><span class="id" title="record">class_of</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ComRing.ClassDef.xT"><span class="id" title="variable">xT</span></a>).<br/>
+
+<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.ComRing.pack"><span class="id" title="definition">pack</span></a> <span class="id" title="var">mul0</span> (<span class="id" title="var">m0</span> : @<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#commutative"><span class="id" title="definition">commutative</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ComRing.ClassDef.T"><span class="id" title="variable">T</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ComRing.ClassDef.T"><span class="id" title="variable">T</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#mul0"><span class="id" title="variable">mul0</span></a>) :=<br/>
+&nbsp;&nbsp;<span class="id" title="keyword">fun</span> <span class="id" title="var">bT</span> <span class="id" title="var">b</span> &amp; <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#phant_id"><span class="id" title="definition">phant_id</span></a> (<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Ring.class"><span class="id" title="definition">Ring.class</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#bT"><span class="id" title="variable">bT</span></a>) <a class="idref" href="mathcomp.algebra.ssralg.html#b"><span class="id" title="variable">b</span></a> ⇒<br/>
+&nbsp;&nbsp;<span class="id" title="keyword">fun</span> <span class="id" title="var">m</span> &amp; <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#phant_id"><span class="id" title="definition">phant_id</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#m0"><span class="id" title="variable">m0</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#m"><span class="id" title="variable">m</span></a> ⇒ <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ComRing.Pack"><span class="id" title="constructor">Pack</span></a> (@<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ComRing.Class"><span class="id" title="constructor">Class</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ComRing.ClassDef.T"><span class="id" title="variable">T</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#b"><span class="id" title="variable">b</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#m"><span class="id" title="variable">m</span></a>) <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ComRing.ClassDef.T"><span class="id" title="variable">T</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.ComRing.eqType"><span class="id" title="definition">eqType</span></a> := @<a class="idref" href="mathcomp.ssreflect.eqtype.html#Equality.Pack"><span class="id" title="constructor">Equality.Pack</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ComRing.ClassDef.cT"><span class="id" title="variable">cT</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ComRing.xclass"><span class="id" title="abbreviation">xclass</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ComRing.ClassDef.xT"><span class="id" title="variable">xT</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.ComRing.choiceType"><span class="id" title="definition">choiceType</span></a> := @<a class="idref" href="mathcomp.ssreflect.choice.html#Choice.Pack"><span class="id" title="constructor">Choice.Pack</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ComRing.ClassDef.cT"><span class="id" title="variable">cT</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ComRing.xclass"><span class="id" title="abbreviation">xclass</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ComRing.ClassDef.xT"><span class="id" title="variable">xT</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.ComRing.zmodType"><span class="id" title="definition">zmodType</span></a> := @<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Zmodule.Pack"><span class="id" title="constructor">Zmodule.Pack</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ComRing.ClassDef.cT"><span class="id" title="variable">cT</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ComRing.xclass"><span class="id" title="abbreviation">xclass</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ComRing.ClassDef.xT"><span class="id" title="variable">xT</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.ComRing.ringType"><span class="id" title="definition">ringType</span></a> := @<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Ring.Pack"><span class="id" title="constructor">Ring.Pack</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ComRing.ClassDef.cT"><span class="id" title="variable">cT</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ComRing.xclass"><span class="id" title="abbreviation">xclass</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ComRing.ClassDef.xT"><span class="id" title="variable">xT</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">End</span> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ComRing.ClassDef"><span class="id" title="section">ClassDef</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Module</span> <a name="GRing.ComRing.Exports"><span class="id" title="module">Exports</span></a>.<br/>
+<span class="id" title="keyword">Coercion</span> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ComRing.base"><span class="id" title="projection">base</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ComRing.base"><span class="id" title="projection">:</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ComRing.base"><span class="id" title="projection">class_of</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ComRing.base"><span class="id" title="projection">&gt;-&gt;</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ComRing.base"><span class="id" title="projection">Ring.class_of</span></a>.<br/>
+<span class="id" title="keyword">Coercion</span> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ComRing.mixin"><span class="id" title="projection">mixin</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ComRing.mixin"><span class="id" title="projection">:</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ComRing.mixin"><span class="id" title="projection">class_of</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ComRing.mixin"><span class="id" title="projection">&gt;-&gt;</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ComRing.mixin"><span class="id" title="projection">commutative</span></a>.<br/>
+<span class="id" title="keyword">Coercion</span> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ComRing.sort"><span class="id" title="projection">sort</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ComRing.sort"><span class="id" title="projection">:</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ComRing.sort"><span class="id" title="projection">type</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ComRing.sort"><span class="id" title="projection">&gt;-&gt;</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ComRing.sort"><span class="id" title="projection">Sortclass</span></a>.<br/>
+<span class="id" title="keyword">Coercion</span> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ComRing.eqType"><span class="id" title="definition">eqType</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ComRing.eqType"><span class="id" title="definition">:</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ComRing.eqType"><span class="id" title="definition">type</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ComRing.eqType"><span class="id" title="definition">&gt;-&gt;</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ComRing.eqType"><span class="id" title="definition">Equality.type</span></a>.<br/>
+<span class="id" title="keyword">Canonical</span> <span class="id" title="var">eqType</span>.<br/>
+<span class="id" title="keyword">Coercion</span> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ComRing.choiceType"><span class="id" title="definition">choiceType</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ComRing.choiceType"><span class="id" title="definition">:</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ComRing.choiceType"><span class="id" title="definition">type</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ComRing.choiceType"><span class="id" title="definition">&gt;-&gt;</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ComRing.choiceType"><span class="id" title="definition">Choice.type</span></a>.<br/>
+<span class="id" title="keyword">Canonical</span> <span class="id" title="var">choiceType</span>.<br/>
+<span class="id" title="keyword">Coercion</span> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ComRing.zmodType"><span class="id" title="definition">zmodType</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ComRing.zmodType"><span class="id" title="definition">:</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ComRing.zmodType"><span class="id" title="definition">type</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ComRing.zmodType"><span class="id" title="definition">&gt;-&gt;</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ComRing.zmodType"><span class="id" title="definition">Zmodule.type</span></a>.<br/>
+<span class="id" title="keyword">Canonical</span> <span class="id" title="var">zmodType</span>.<br/>
+<span class="id" title="keyword">Coercion</span> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ComRing.ringType"><span class="id" title="definition">ringType</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ComRing.ringType"><span class="id" title="definition">:</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ComRing.ringType"><span class="id" title="definition">type</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ComRing.ringType"><span class="id" title="definition">&gt;-&gt;</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ComRing.ringType"><span class="id" title="definition">Ring.type</span></a>.<br/>
+<span class="id" title="keyword">Canonical</span> <span class="id" title="var">ringType</span>.<br/>
+<span class="id" title="keyword">Notation</span> <a name="GRing.ComRing.Exports.comRingType"><span class="id" title="abbreviation">comRingType</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ComRing.type"><span class="id" title="record">type</span></a>.<br/>
+<span class="id" title="keyword">Notation</span> <a name="GRing.ComRing.Exports.ComRingType"><span class="id" title="abbreviation">ComRingType</span></a> <span class="id" title="var">T</span> <span class="id" title="var">m</span> := (@<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ComRing.pack"><span class="id" title="definition">pack</span></a> <span class="id" title="var">T</span> <span class="id" title="var">_</span> <span class="id" title="var">m</span> <span class="id" title="var">_</span> <span class="id" title="var">_</span> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#id"><span class="id" title="abbreviation">id</span></a> <span class="id" title="var">_</span> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#id"><span class="id" title="abbreviation">id</span></a>).<br/>
+<span class="id" title="keyword">Notation</span> <a name="GRing.ComRing.Exports.ComRingMixin"><span class="id" title="abbreviation">ComRingMixin</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ComRing.RingMixin"><span class="id" title="definition">RingMixin</span></a>.<br/>
+<span class="id" title="keyword">Notation</span> <a name="c5d157e6390935889519f9a9d4d53955"><span class="id" title="notation">&quot;</span></a>[ 'comRingType' 'of' T 'for' cT ]" := (@<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ComRing.clone"><span class="id" title="definition">clone</span></a> <span class="id" title="var">T</span> <span class="id" title="var">cT</span> <span class="id" title="var">_</span> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#idfun"><span class="id" title="abbreviation">idfun</span></a>)<br/>
+&nbsp;&nbsp;(<span class="id" title="tactic">at</span> <span class="id" title="keyword">level</span> 0, <span class="id" title="var">format</span> "[ 'comRingType' 'of' T 'for' cT ]") : <span class="id" title="var">form_scope</span>.<br/>
+<span class="id" title="keyword">Notation</span> <a name="57b384122345a94c564987d4b6ee9f0f"><span class="id" title="notation">&quot;</span></a>[ 'comRingType' 'of' T ]" := (@<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ComRing.clone"><span class="id" title="definition">clone</span></a> <span class="id" title="var">T</span> <span class="id" title="var">_</span> <span class="id" title="var">_</span> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#id"><span class="id" title="abbreviation">id</span></a>)<br/>
+&nbsp;&nbsp;(<span class="id" title="tactic">at</span> <span class="id" title="keyword">level</span> 0, <span class="id" title="var">format</span> "[ 'comRingType' 'of' T ]") : <span class="id" title="var">form_scope</span>.<br/>
+<span class="id" title="keyword">End</span> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ComRing.Exports"><span class="id" title="module">Exports</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">End</span> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ComRing"><span class="id" title="module">ComRing</span></a>.<br/>
+<span class="id" title="keyword">Import</span> <span class="id" title="var">ComRing.Exports</span>.<br/>
+
+<br/>
+<span class="id" title="keyword">Section</span> <a name="GRing.ComRingTheory"><span class="id" title="section">ComRingTheory</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Variable</span> <a name="GRing.ComRingTheory.R"><span class="id" title="variable">R</span></a> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.comRingType"><span class="id" title="abbreviation">comRingType</span></a>.<br/>
+<span class="id" title="keyword">Implicit</span> <span class="id" title="keyword">Types</span> <span class="id" title="var">x</span> <span class="id" title="var">y</span> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ComRingTheory.R"><span class="id" title="variable">R</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.mulrC"><span class="id" title="lemma">mulrC</span></a> : @<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#commutative"><span class="id" title="definition">commutative</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ComRingTheory.R"><span class="id" title="variable">R</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ComRingTheory.R"><span class="id" title="variable">R</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#6498e6e308d8a143464cf2d2ba603d36"><span class="id" title="notation">*%</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#6498e6e308d8a143464cf2d2ba603d36"><span class="id" title="notation">R</span></a>. <br/>
+<span class="id" title="keyword">Canonical</span> <span class="id" title="var">mul_comoid</span> := <a class="idref" href="mathcomp.ssreflect.bigop.html#Monoid.ComLaw"><span class="id" title="constructor">Monoid.ComLaw</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.mulrC"><span class="id" title="lemma">mulrC</span></a>.<br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.mulrCA"><span class="id" title="lemma">mulrCA</span></a> : @<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#left_commutative"><span class="id" title="definition">left_commutative</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ComRingTheory.R"><span class="id" title="variable">R</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ComRingTheory.R"><span class="id" title="variable">R</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#6498e6e308d8a143464cf2d2ba603d36"><span class="id" title="notation">*%</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#6498e6e308d8a143464cf2d2ba603d36"><span class="id" title="notation">R</span></a>. <br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.mulrAC"><span class="id" title="lemma">mulrAC</span></a> : @<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#right_commutative"><span class="id" title="definition">right_commutative</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ComRingTheory.R"><span class="id" title="variable">R</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ComRingTheory.R"><span class="id" title="variable">R</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#6498e6e308d8a143464cf2d2ba603d36"><span class="id" title="notation">*%</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#6498e6e308d8a143464cf2d2ba603d36"><span class="id" title="notation">R</span></a>. <br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.mulrACA"><span class="id" title="lemma">mulrACA</span></a> : @<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#interchange"><span class="id" title="definition">interchange</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ComRingTheory.R"><span class="id" title="variable">R</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#6498e6e308d8a143464cf2d2ba603d36"><span class="id" title="notation">*%</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#6498e6e308d8a143464cf2d2ba603d36"><span class="id" title="notation">R</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#6498e6e308d8a143464cf2d2ba603d36"><span class="id" title="notation">*%</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#6498e6e308d8a143464cf2d2ba603d36"><span class="id" title="notation">R</span></a>. <br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.exprMn"><span class="id" title="lemma">exprMn</span></a> <span class="id" title="var">n</span> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#3014e73af2a90fd800d8681479d76336"><span class="id" title="notation">{</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#3014e73af2a90fd800d8681479d76336"><span class="id" title="notation">morph</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#3014e73af2a90fd800d8681479d76336"><span class="id" title="notation">(</span></a><span class="id" title="keyword">fun</span> <span class="id" title="var">x</span> ⇒ <a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#b5a6699e28c97bb33352772cfa3ea869"><span class="id" title="notation">^+</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#n"><span class="id" title="variable">n</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#3014e73af2a90fd800d8681479d76336"><span class="id" title="notation">)</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#3014e73af2a90fd800d8681479d76336"><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/8.8.0/stdlib//Coq.ssr.ssrfun.html#3014e73af2a90fd800d8681479d76336"><span class="id" title="notation">/</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#ed99e7035d9a1f8a2c1515be81ac2e5f"><span class="id" title="notation">×</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#y"><span class="id" title="variable">y</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#3014e73af2a90fd800d8681479d76336"><span class="id" title="notation">}</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.prodrXl"><span class="id" title="lemma">prodrXl</span></a> <span class="id" title="var">n</span> <span class="id" title="var">I</span> <span class="id" title="var">r</span> (<span class="id" title="var">P</span> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#pred"><span class="id" title="definition">pred</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#I"><span class="id" title="variable">I</span></a>) (<span class="id" title="var">F</span> : <a class="idref" href="mathcomp.algebra.ssralg.html#I"><span class="id" title="variable">I</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ComRingTheory.R"><span class="id" title="variable">R</span></a>) :<br/>
+&nbsp;&nbsp;<a class="idref" href="mathcomp.algebra.ssralg.html#3f1a950be6bcb72c9434150471b42417"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#3f1a950be6bcb72c9434150471b42417"><span class="id" title="notation">prod_</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#3f1a950be6bcb72c9434150471b42417"><span class="id" title="notation">(</span></a><span class="id" title="var">i</span> <a class="idref" href="mathcomp.algebra.ssralg.html#3f1a950be6bcb72c9434150471b42417"><span class="id" title="notation">&lt;-</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#r"><span class="id" title="variable">r</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#3f1a950be6bcb72c9434150471b42417"><span class="id" title="notation">|</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#P"><span class="id" title="variable">P</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#i"><span class="id" title="variable">i</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#3f1a950be6bcb72c9434150471b42417"><span class="id" title="notation">)</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#F"><span class="id" title="variable">F</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#i"><span class="id" title="variable">i</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#b5a6699e28c97bb33352772cfa3ea869"><span class="id" title="notation">^+</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#n"><span class="id" title="variable">n</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#b5a6699e28c97bb33352772cfa3ea869"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#3f1a950be6bcb72c9434150471b42417"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#3f1a950be6bcb72c9434150471b42417"><span class="id" title="notation">prod_</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#3f1a950be6bcb72c9434150471b42417"><span class="id" title="notation">(</span></a><span class="id" title="var">i</span> <a class="idref" href="mathcomp.algebra.ssralg.html#3f1a950be6bcb72c9434150471b42417"><span class="id" title="notation">&lt;-</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#r"><span class="id" title="variable">r</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#3f1a950be6bcb72c9434150471b42417"><span class="id" title="notation">|</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#P"><span class="id" title="variable">P</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#i"><span class="id" title="variable">i</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#3f1a950be6bcb72c9434150471b42417"><span class="id" title="notation">)</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#F"><span class="id" title="variable">F</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#i"><span class="id" title="variable">i</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#b5a6699e28c97bb33352772cfa3ea869"><span class="id" title="notation">)</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#b5a6699e28c97bb33352772cfa3ea869"><span class="id" title="notation">^+</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#n"><span class="id" title="variable">n</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.prodr_undup_exp_count"><span class="id" title="lemma">prodr_undup_exp_count</span></a> (<span class="id" title="var">I</span> : <a class="idref" href="mathcomp.ssreflect.eqtype.html#Equality.Exports.eqType"><span class="id" title="abbreviation">eqType</span></a>) <span class="id" title="var">r</span> (<span class="id" title="var">P</span> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#pred"><span class="id" title="definition">pred</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#I"><span class="id" title="variable">I</span></a>) (<span class="id" title="var">F</span> : <a class="idref" href="mathcomp.algebra.ssralg.html#I"><span class="id" title="variable">I</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ComRingTheory.R"><span class="id" title="variable">R</span></a>) :<br/>
+&nbsp;&nbsp;<a class="idref" href="mathcomp.algebra.ssralg.html#3f1a950be6bcb72c9434150471b42417"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#3f1a950be6bcb72c9434150471b42417"><span class="id" title="notation">prod_</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#3f1a950be6bcb72c9434150471b42417"><span class="id" title="notation">(</span></a><span class="id" title="var">i</span> <a class="idref" href="mathcomp.algebra.ssralg.html#3f1a950be6bcb72c9434150471b42417"><span class="id" title="notation">&lt;-</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#undup"><span class="id" title="definition">undup</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#r"><span class="id" title="variable">r</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#3f1a950be6bcb72c9434150471b42417"><span class="id" title="notation">|</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#P"><span class="id" title="variable">P</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#i"><span class="id" title="variable">i</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#3f1a950be6bcb72c9434150471b42417"><span class="id" title="notation">)</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#F"><span class="id" title="variable">F</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#i"><span class="id" title="variable">i</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#b5a6699e28c97bb33352772cfa3ea869"><span class="id" title="notation">^+</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#count_mem"><span class="id" title="abbreviation">count_mem</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#i"><span class="id" title="variable">i</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#r"><span class="id" title="variable">r</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#3f1a950be6bcb72c9434150471b42417"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#3f1a950be6bcb72c9434150471b42417"><span class="id" title="notation">prod_</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#3f1a950be6bcb72c9434150471b42417"><span class="id" title="notation">(</span></a><span class="id" title="var">i</span> <a class="idref" href="mathcomp.algebra.ssralg.html#3f1a950be6bcb72c9434150471b42417"><span class="id" title="notation">&lt;-</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#r"><span class="id" title="variable">r</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#3f1a950be6bcb72c9434150471b42417"><span class="id" title="notation">|</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#P"><span class="id" title="variable">P</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#i"><span class="id" title="variable">i</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#3f1a950be6bcb72c9434150471b42417"><span class="id" title="notation">)</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#F"><span class="id" title="variable">F</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#i"><span class="id" title="variable">i</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.exprDn"><span class="id" title="lemma">exprDn</span></a> <span class="id" title="var">x</span> <span class="id" title="var">y</span> <span class="id" title="var">n</span> :<br/>
+&nbsp;&nbsp;<a class="idref" href="mathcomp.algebra.ssralg.html#b5a6699e28c97bb33352772cfa3ea869"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#338c5345074fd3586073fd29273c138a"><span class="id" title="notation">+</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#y"><span class="id" title="variable">y</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#b5a6699e28c97bb33352772cfa3ea869"><span class="id" title="notation">)</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#b5a6699e28c97bb33352772cfa3ea869"><span class="id" title="notation">^+</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#n"><span class="id" title="variable">n</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#33f78485f60ea5a637d17f41367f37d2"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#33f78485f60ea5a637d17f41367f37d2"><span class="id" title="notation">sum_</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#33f78485f60ea5a637d17f41367f37d2"><span class="id" title="notation">(</span></a><span class="id" title="var">i</span> <a class="idref" href="mathcomp.algebra.ssralg.html#33f78485f60ea5a637d17f41367f37d2"><span class="id" title="notation">&lt;</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#n"><span class="id" title="variable">n</span></a><a class="idref" href="mathcomp.ssreflect.ssrnat.html#361454269931ea8643f7b402f2ab7222"><span class="id" title="notation">.+1</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#33f78485f60ea5a637d17f41367f37d2"><span class="id" title="notation">)</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#513eaa3129601ecbcc9e188a80d6155b"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#b5a6699e28c97bb33352772cfa3ea869"><span class="id" title="notation">^+</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#b5a6699e28c97bb33352772cfa3ea869"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#n"><span class="id" title="variable">n</span></a> <a class="idref" href="mathcomp.ssreflect.ssrnat.html#9482aae3d3b06e249765c1225dbb8cbb"><span class="id" title="notation">-</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#i"><span class="id" title="variable">i</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#b5a6699e28c97bb33352772cfa3ea869"><span class="id" title="notation">)</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#ed99e7035d9a1f8a2c1515be81ac2e5f"><span class="id" title="notation">×</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#y"><span class="id" title="variable">y</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#b5a6699e28c97bb33352772cfa3ea869"><span class="id" title="notation">^+</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#i"><span class="id" title="variable">i</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#513eaa3129601ecbcc9e188a80d6155b"><span class="id" title="notation">)</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#513eaa3129601ecbcc9e188a80d6155b"><span class="id" title="notation">*+</span></a> <a class="idref" href="mathcomp.ssreflect.binomial.html#f55f24aacb42fe0283014d29bcccb8c2"><span class="id" title="notation">'</span></a><a class="idref" href="mathcomp.ssreflect.binomial.html#f55f24aacb42fe0283014d29bcccb8c2"><span class="id" title="notation">C</span></a><a class="idref" href="mathcomp.ssreflect.binomial.html#f55f24aacb42fe0283014d29bcccb8c2"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#n"><span class="id" title="variable">n</span></a><a class="idref" href="mathcomp.ssreflect.binomial.html#f55f24aacb42fe0283014d29bcccb8c2"><span class="id" title="notation">,</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#i"><span class="id" title="variable">i</span></a><a class="idref" href="mathcomp.ssreflect.binomial.html#f55f24aacb42fe0283014d29bcccb8c2"><span class="id" title="notation">)</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.exprBn"><span class="id" title="lemma">exprBn</span></a> <span class="id" title="var">x</span> <span class="id" title="var">y</span> <span class="id" title="var">n</span> :<br/>
+&nbsp;&nbsp;<a class="idref" href="mathcomp.algebra.ssralg.html#b5a6699e28c97bb33352772cfa3ea869"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#4d4b9697032429ec46472e6332d1356a"><span class="id" title="notation">-</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#y"><span class="id" title="variable">y</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#b5a6699e28c97bb33352772cfa3ea869"><span class="id" title="notation">)</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#b5a6699e28c97bb33352772cfa3ea869"><span class="id" title="notation">^+</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#n"><span class="id" title="variable">n</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a><br/>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a class="idref" href="mathcomp.algebra.ssralg.html#33f78485f60ea5a637d17f41367f37d2"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#33f78485f60ea5a637d17f41367f37d2"><span class="id" title="notation">sum_</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#33f78485f60ea5a637d17f41367f37d2"><span class="id" title="notation">(</span></a><span class="id" title="var">i</span> <a class="idref" href="mathcomp.algebra.ssralg.html#33f78485f60ea5a637d17f41367f37d2"><span class="id" title="notation">&lt;</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#n"><span class="id" title="variable">n</span></a><a class="idref" href="mathcomp.ssreflect.ssrnat.html#361454269931ea8643f7b402f2ab7222"><span class="id" title="notation">.+1</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#33f78485f60ea5a637d17f41367f37d2"><span class="id" title="notation">)</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#513eaa3129601ecbcc9e188a80d6155b"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#b5a6699e28c97bb33352772cfa3ea869"><span class="id" title="notation">(</span></a>-1<a class="idref" href="mathcomp.algebra.ssralg.html#b5a6699e28c97bb33352772cfa3ea869"><span class="id" title="notation">)</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#b5a6699e28c97bb33352772cfa3ea869"><span class="id" title="notation">^+</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#i"><span class="id" title="variable">i</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#ed99e7035d9a1f8a2c1515be81ac2e5f"><span class="id" title="notation">×</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#b5a6699e28c97bb33352772cfa3ea869"><span class="id" title="notation">^+</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#b5a6699e28c97bb33352772cfa3ea869"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#n"><span class="id" title="variable">n</span></a> <a class="idref" href="mathcomp.ssreflect.ssrnat.html#9482aae3d3b06e249765c1225dbb8cbb"><span class="id" title="notation">-</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#i"><span class="id" title="variable">i</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#b5a6699e28c97bb33352772cfa3ea869"><span class="id" title="notation">)</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#ed99e7035d9a1f8a2c1515be81ac2e5f"><span class="id" title="notation">×</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#y"><span class="id" title="variable">y</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#b5a6699e28c97bb33352772cfa3ea869"><span class="id" title="notation">^+</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#i"><span class="id" title="variable">i</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#513eaa3129601ecbcc9e188a80d6155b"><span class="id" title="notation">)</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#513eaa3129601ecbcc9e188a80d6155b"><span class="id" title="notation">*+</span></a> <a class="idref" href="mathcomp.ssreflect.binomial.html#f55f24aacb42fe0283014d29bcccb8c2"><span class="id" title="notation">'</span></a><a class="idref" href="mathcomp.ssreflect.binomial.html#f55f24aacb42fe0283014d29bcccb8c2"><span class="id" title="notation">C</span></a><a class="idref" href="mathcomp.ssreflect.binomial.html#f55f24aacb42fe0283014d29bcccb8c2"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#n"><span class="id" title="variable">n</span></a><a class="idref" href="mathcomp.ssreflect.binomial.html#f55f24aacb42fe0283014d29bcccb8c2"><span class="id" title="notation">,</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#i"><span class="id" title="variable">i</span></a><a class="idref" href="mathcomp.ssreflect.binomial.html#f55f24aacb42fe0283014d29bcccb8c2"><span class="id" title="notation">)</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.subrXX"><span class="id" title="lemma">subrXX</span></a> <span class="id" title="var">x</span> <span class="id" title="var">y</span> <span class="id" title="var">n</span> :<br/>
+&nbsp;&nbsp;<a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#b5a6699e28c97bb33352772cfa3ea869"><span class="id" title="notation">^+</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#n"><span class="id" title="variable">n</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#4d4b9697032429ec46472e6332d1356a"><span class="id" title="notation">-</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#y"><span class="id" title="variable">y</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#b5a6699e28c97bb33352772cfa3ea869"><span class="id" title="notation">^+</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#n"><span class="id" title="variable">n</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#ed99e7035d9a1f8a2c1515be81ac2e5f"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#4d4b9697032429ec46472e6332d1356a"><span class="id" title="notation">-</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#y"><span class="id" title="variable">y</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#ed99e7035d9a1f8a2c1515be81ac2e5f"><span class="id" title="notation">)</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#ed99e7035d9a1f8a2c1515be81ac2e5f"><span class="id" title="notation">×</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#ed99e7035d9a1f8a2c1515be81ac2e5f"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#33f78485f60ea5a637d17f41367f37d2"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#33f78485f60ea5a637d17f41367f37d2"><span class="id" title="notation">sum_</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#33f78485f60ea5a637d17f41367f37d2"><span class="id" title="notation">(</span></a><span class="id" title="var">i</span> <a class="idref" href="mathcomp.algebra.ssralg.html#33f78485f60ea5a637d17f41367f37d2"><span class="id" title="notation">&lt;</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#n"><span class="id" title="variable">n</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#33f78485f60ea5a637d17f41367f37d2"><span class="id" title="notation">)</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#b5a6699e28c97bb33352772cfa3ea869"><span class="id" title="notation">^+</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#b5a6699e28c97bb33352772cfa3ea869"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#n"><span class="id" title="variable">n</span></a><a class="idref" href="mathcomp.ssreflect.ssrnat.html#1d63841e595f2805afd872744cbb1cce"><span class="id" title="notation">.-1</span></a> <a class="idref" href="mathcomp.ssreflect.ssrnat.html#9482aae3d3b06e249765c1225dbb8cbb"><span class="id" title="notation">-</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#i"><span class="id" title="variable">i</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#b5a6699e28c97bb33352772cfa3ea869"><span class="id" title="notation">)</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#ed99e7035d9a1f8a2c1515be81ac2e5f"><span class="id" title="notation">×</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#y"><span class="id" title="variable">y</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#b5a6699e28c97bb33352772cfa3ea869"><span class="id" title="notation">^+</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#i"><span class="id" title="variable">i</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#ed99e7035d9a1f8a2c1515be81ac2e5f"><span class="id" title="notation">)</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.sqrrD"><span class="id" title="lemma">sqrrD</span></a> <span class="id" title="var">x</span> <span class="id" title="var">y</span> : <a class="idref" href="mathcomp.algebra.ssralg.html#b5a6699e28c97bb33352772cfa3ea869"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#338c5345074fd3586073fd29273c138a"><span class="id" title="notation">+</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#y"><span class="id" title="variable">y</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#b5a6699e28c97bb33352772cfa3ea869"><span class="id" title="notation">)</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#b5a6699e28c97bb33352772cfa3ea869"><span class="id" title="notation">^+</span></a> 2 <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#b5a6699e28c97bb33352772cfa3ea869"><span class="id" title="notation">^+</span></a> 2 <a class="idref" href="mathcomp.algebra.ssralg.html#338c5345074fd3586073fd29273c138a"><span class="id" title="notation">+</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#ed99e7035d9a1f8a2c1515be81ac2e5f"><span class="id" title="notation">×</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#y"><span class="id" title="variable">y</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#513eaa3129601ecbcc9e188a80d6155b"><span class="id" title="notation">*+</span></a> 2 <a class="idref" href="mathcomp.algebra.ssralg.html#338c5345074fd3586073fd29273c138a"><span class="id" title="notation">+</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#y"><span class="id" title="variable">y</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#b5a6699e28c97bb33352772cfa3ea869"><span class="id" title="notation">^+</span></a> 2.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.sqrrB"><span class="id" title="lemma">sqrrB</span></a> <span class="id" title="var">x</span> <span class="id" title="var">y</span> : <a class="idref" href="mathcomp.algebra.ssralg.html#b5a6699e28c97bb33352772cfa3ea869"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#4d4b9697032429ec46472e6332d1356a"><span class="id" title="notation">-</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#y"><span class="id" title="variable">y</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#b5a6699e28c97bb33352772cfa3ea869"><span class="id" title="notation">)</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#b5a6699e28c97bb33352772cfa3ea869"><span class="id" title="notation">^+</span></a> 2 <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#b5a6699e28c97bb33352772cfa3ea869"><span class="id" title="notation">^+</span></a> 2 <a class="idref" href="mathcomp.algebra.ssralg.html#4d4b9697032429ec46472e6332d1356a"><span class="id" title="notation">-</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#ed99e7035d9a1f8a2c1515be81ac2e5f"><span class="id" title="notation">×</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#y"><span class="id" title="variable">y</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#513eaa3129601ecbcc9e188a80d6155b"><span class="id" title="notation">*+</span></a> 2 <a class="idref" href="mathcomp.algebra.ssralg.html#338c5345074fd3586073fd29273c138a"><span class="id" title="notation">+</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#y"><span class="id" title="variable">y</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#b5a6699e28c97bb33352772cfa3ea869"><span class="id" title="notation">^+</span></a> 2.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.subr_sqr"><span class="id" title="lemma">subr_sqr</span></a> <span class="id" title="var">x</span> <span class="id" title="var">y</span> : <a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#b5a6699e28c97bb33352772cfa3ea869"><span class="id" title="notation">^+</span></a> 2 <a class="idref" href="mathcomp.algebra.ssralg.html#4d4b9697032429ec46472e6332d1356a"><span class="id" title="notation">-</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#y"><span class="id" title="variable">y</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#b5a6699e28c97bb33352772cfa3ea869"><span class="id" title="notation">^+</span></a> 2 <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#ed99e7035d9a1f8a2c1515be81ac2e5f"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#4d4b9697032429ec46472e6332d1356a"><span class="id" title="notation">-</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#y"><span class="id" title="variable">y</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#ed99e7035d9a1f8a2c1515be81ac2e5f"><span class="id" title="notation">)</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#ed99e7035d9a1f8a2c1515be81ac2e5f"><span class="id" title="notation">×</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#ed99e7035d9a1f8a2c1515be81ac2e5f"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#338c5345074fd3586073fd29273c138a"><span class="id" title="notation">+</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#y"><span class="id" title="variable">y</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#ed99e7035d9a1f8a2c1515be81ac2e5f"><span class="id" title="notation">)</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.subr_sqrDB"><span class="id" title="lemma">subr_sqrDB</span></a> <span class="id" title="var">x</span> <span class="id" title="var">y</span> : <a class="idref" href="mathcomp.algebra.ssralg.html#b5a6699e28c97bb33352772cfa3ea869"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#338c5345074fd3586073fd29273c138a"><span class="id" title="notation">+</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#y"><span class="id" title="variable">y</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#b5a6699e28c97bb33352772cfa3ea869"><span class="id" title="notation">)</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#b5a6699e28c97bb33352772cfa3ea869"><span class="id" title="notation">^+</span></a> 2 <a class="idref" href="mathcomp.algebra.ssralg.html#4d4b9697032429ec46472e6332d1356a"><span class="id" title="notation">-</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#b5a6699e28c97bb33352772cfa3ea869"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#4d4b9697032429ec46472e6332d1356a"><span class="id" title="notation">-</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#y"><span class="id" title="variable">y</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#b5a6699e28c97bb33352772cfa3ea869"><span class="id" title="notation">)</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#b5a6699e28c97bb33352772cfa3ea869"><span class="id" title="notation">^+</span></a> 2 <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#ed99e7035d9a1f8a2c1515be81ac2e5f"><span class="id" title="notation">×</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#y"><span class="id" title="variable">y</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#513eaa3129601ecbcc9e188a80d6155b"><span class="id" title="notation">*+</span></a> 4.<br/>
+
+<br/>
+<span class="id" title="keyword">Section</span> <a name="GRing.ComRingTheory.FrobeniusAutomorphism"><span class="id" title="section">FrobeniusAutomorphism</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Variables</span> (<a name="GRing.ComRingTheory.FrobeniusAutomorphism.p"><span class="id" title="variable">p</span></a> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#nat"><span class="id" title="inductive">nat</span></a>) (<a name="GRing.ComRingTheory.FrobeniusAutomorphism.charRp"><span class="id" title="variable">charRp</span></a> : <a class="idref" href="mathcomp.algebra.ssralg.html#p"><span class="id" title="variable">p</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">\</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">in</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#51fab11b73193ca5e8e7a62cac129ebc"><span class="id" title="notation">[</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#51fab11b73193ca5e8e7a62cac129ebc"><span class="id" title="notation">char</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ComRingTheory.R"><span class="id" title="variable">R</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#51fab11b73193ca5e8e7a62cac129ebc"><span class="id" title="notation">]</span></a>).<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.Frobenius_aut_is_rmorphism"><span class="id" title="lemma">Frobenius_aut_is_rmorphism</span></a> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.rmorphism"><span class="id" title="abbreviation">rmorphism</span></a> (<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Frobenius_aut"><span class="id" title="definition">Frobenius_aut</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ComRingTheory.FrobeniusAutomorphism.charRp"><span class="id" title="variable">charRp</span></a>).<br/>
+
+<br/>
+<span class="id" title="keyword">Canonical</span> <span class="id" title="var">Frobenius_aut_additive</span> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Additive"><span class="id" title="abbreviation">Additive</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Frobenius_aut_is_rmorphism"><span class="id" title="lemma">Frobenius_aut_is_rmorphism</span></a>.<br/>
+<span class="id" title="keyword">Canonical</span> <span class="id" title="var">Frobenius_aut_rmorphism</span> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.RMorphism"><span class="id" title="abbreviation">RMorphism</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Frobenius_aut_is_rmorphism"><span class="id" title="lemma">Frobenius_aut_is_rmorphism</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">End</span> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ComRingTheory.FrobeniusAutomorphism"><span class="id" title="section">FrobeniusAutomorphism</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.exprDn_char"><span class="id" title="lemma">exprDn_char</span></a> <span class="id" title="var">x</span> <span class="id" title="var">y</span> <span class="id" title="var">n</span> : <a class="idref" href="mathcomp.algebra.ssralg.html#51fab11b73193ca5e8e7a62cac129ebc"><span class="id" title="notation">[</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#51fab11b73193ca5e8e7a62cac129ebc"><span class="id" title="notation">char</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ComRingTheory.R"><span class="id" title="variable">R</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#51fab11b73193ca5e8e7a62cac129ebc"><span class="id" title="notation">]</span></a><a class="idref" href="mathcomp.ssreflect.prime.html#8663a77d1d910826e10ba42d1e8d2a02"><span class="id" title="notation">.-</span></a><a class="idref" href="mathcomp.ssreflect.prime.html#8663a77d1d910826e10ba42d1e8d2a02"><span class="id" title="notation">nat</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#n"><span class="id" title="variable">n</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#b5a6699e28c97bb33352772cfa3ea869"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#338c5345074fd3586073fd29273c138a"><span class="id" title="notation">+</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#y"><span class="id" title="variable">y</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#b5a6699e28c97bb33352772cfa3ea869"><span class="id" title="notation">)</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#b5a6699e28c97bb33352772cfa3ea869"><span class="id" title="notation">^+</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#n"><span class="id" title="variable">n</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#b5a6699e28c97bb33352772cfa3ea869"><span class="id" title="notation">^+</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#n"><span class="id" title="variable">n</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#338c5345074fd3586073fd29273c138a"><span class="id" title="notation">+</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#y"><span class="id" title="variable">y</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#b5a6699e28c97bb33352772cfa3ea869"><span class="id" title="notation">^+</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#n"><span class="id" title="variable">n</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.rmorph_comm"><span class="id" title="lemma">rmorph_comm</span></a> (<span class="id" title="var">S</span> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ringType"><span class="id" title="abbreviation">ringType</span></a>) (<span class="id" title="var">f</span> : <a class="idref" href="mathcomp.algebra.ssralg.html#0c709ebe43ddbd7719f75250a7b916d9"><span class="id" title="notation">{</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#0c709ebe43ddbd7719f75250a7b916d9"><span class="id" title="notation">rmorphism</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ComRingTheory.R"><span class="id" title="variable">R</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#S"><span class="id" title="variable">S</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#0c709ebe43ddbd7719f75250a7b916d9"><span class="id" title="notation">}</span></a>) <span class="id" title="var">x</span> <span class="id" title="var">y</span> : <br/>
+&nbsp;&nbsp;<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.comm"><span class="id" title="definition">comm</span></a> (<a class="idref" href="mathcomp.algebra.ssralg.html#f"><span class="id" title="variable">f</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a>) (<a class="idref" href="mathcomp.algebra.ssralg.html#f"><span class="id" title="variable">f</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#y"><span class="id" title="variable">y</span></a>).<br/>
+
+<br/>
+<span class="id" title="keyword">Section</span> <a name="GRing.ComRingTheory.ScaleLinear"><span class="id" title="section">ScaleLinear</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Variables</span> (<a name="GRing.ComRingTheory.ScaleLinear.U"><span class="id" title="variable">U</span></a> <a name="GRing.ComRingTheory.ScaleLinear.V"><span class="id" title="variable">V</span></a> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.lmodType"><span class="id" title="abbreviation">lmodType</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ComRingTheory.R"><span class="id" title="variable">R</span></a>) (<a name="GRing.ComRingTheory.ScaleLinear.b"><span class="id" title="variable">b</span></a> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ComRingTheory.R"><span class="id" title="variable">R</span></a>) (<a name="GRing.ComRingTheory.ScaleLinear.f"><span class="id" title="variable">f</span></a> : <a class="idref" href="mathcomp.algebra.ssralg.html#697e59dccfd7ad4519680ddb16ef82da"><span class="id" title="notation">{</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#697e59dccfd7ad4519680ddb16ef82da"><span class="id" title="notation">linear</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#U"><span class="id" title="variable">U</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#V"><span class="id" title="variable">V</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#697e59dccfd7ad4519680ddb16ef82da"><span class="id" title="notation">}</span></a>).<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.scale_is_scalable"><span class="id" title="lemma">scale_is_scalable</span></a> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.scalable"><span class="id" title="abbreviation">scalable</span></a> ( <a class="idref" href="mathcomp.algebra.ssralg.html#9d4bc68f8a37455428efb931e05d31ce"><span class="id" title="notation">*:%</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#9d4bc68f8a37455428efb931e05d31ce"><span class="id" title="notation">R</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#9d4bc68f8a37455428efb931e05d31ce"><span class="id" title="notation">b</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssreflect.html#4509b22bf26e3d6d771897e22bd8bc8f"><span class="id" title="notation">:</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ComRingTheory.ScaleLinear.V"><span class="id" title="variable">V</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ComRingTheory.ScaleLinear.V"><span class="id" title="variable">V</span></a>).<br/>
+ <span class="id" title="keyword">Canonical</span> <span class="id" title="var">scale_linear</span> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.AddLinear"><span class="id" title="abbreviation">AddLinear</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.scale_is_scalable"><span class="id" title="lemma">scale_is_scalable</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.scale_fun_is_scalable"><span class="id" title="lemma">scale_fun_is_scalable</span></a> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.scalable"><span class="id" title="abbreviation">scalable</span></a> (<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ComRingTheory.ScaleLinear.b"><span class="id" title="variable">b</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#9df698f0b10c644da28c4afd9af58cf4"><span class="id" title="notation">\*:</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ComRingTheory.ScaleLinear.f"><span class="id" title="variable">f</span></a>).<br/>
+ <span class="id" title="keyword">Canonical</span> <span class="id" title="var">scale_fun_linear</span> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.AddLinear"><span class="id" title="abbreviation">AddLinear</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.scale_fun_is_scalable"><span class="id" title="lemma">scale_fun_is_scalable</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">End</span> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ComRingTheory.ScaleLinear"><span class="id" title="section">ScaleLinear</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">End</span> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ComRingTheory"><span class="id" title="section">ComRingTheory</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Module</span> <a name="GRing.Algebra"><span class="id" title="module">Algebra</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Section</span> <a name="GRing.Algebra.Mixin"><span class="id" title="section">Mixin</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Variables</span> (<a name="GRing.Algebra.Mixin.R"><span class="id" title="variable">R</span></a> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Ring.Exports.ringType"><span class="id" title="abbreviation">ringType</span></a>) (<a name="GRing.Algebra.Mixin.A"><span class="id" title="variable">A</span></a> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Lalgebra.Exports.lalgType"><span class="id" title="abbreviation">lalgType</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#R"><span class="id" title="variable">R</span></a>).<br/>
+
+<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Algebra.axiom"><span class="id" title="definition">axiom</span></a> := <span class="id" title="keyword">∀</span> <span class="id" title="var">k</span> (<span class="id" title="var">x</span> <span class="id" title="var">y</span> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Algebra.Mixin.A"><span class="id" title="variable">A</span></a>), <a class="idref" href="mathcomp.algebra.ssralg.html#k"><span class="id" title="variable">k</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#5aa7bcc9ac922e77482767d325fdbb69"><span class="id" title="notation">*:</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#5aa7bcc9ac922e77482767d325fdbb69"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#ed99e7035d9a1f8a2c1515be81ac2e5f"><span class="id" title="notation">×</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#y"><span class="id" title="variable">y</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#5aa7bcc9ac922e77482767d325fdbb69"><span class="id" title="notation">)</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#ed99e7035d9a1f8a2c1515be81ac2e5f"><span class="id" title="notation">×</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#ed99e7035d9a1f8a2c1515be81ac2e5f"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#k"><span class="id" title="variable">k</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#5aa7bcc9ac922e77482767d325fdbb69"><span class="id" title="notation">*:</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#y"><span class="id" title="variable">y</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#ed99e7035d9a1f8a2c1515be81ac2e5f"><span class="id" title="notation">)</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.Algebra.comm_axiom"><span class="id" title="lemma">comm_axiom</span></a> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssreflect.html#phant"><span class="id" title="inductive">phant</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Algebra.Mixin.A"><span class="id" title="variable">A</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#commutative"><span class="id" title="definition">commutative</span></a> (@<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.mul"><span class="id" title="definition">mul</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Algebra.Mixin.A"><span class="id" title="variable">A</span></a>) <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Algebra.axiom"><span class="id" title="definition">axiom</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">End</span> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Algebra.Mixin"><span class="id" title="section">Mixin</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Section</span> <a name="GRing.Algebra.ClassDef"><span class="id" title="section">ClassDef</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Variable</span> <a name="GRing.Algebra.ClassDef.R"><span class="id" title="variable">R</span></a> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Ring.Exports.ringType"><span class="id" title="abbreviation">ringType</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Record</span> <a name="GRing.Algebra.class_of"><span class="id" title="record">class_of</span></a> (<span class="id" title="var">T</span> : <span class="id" title="keyword">Type</span>) : <span class="id" title="keyword">Type</span> := <a name="GRing.Algebra.Class"><span class="id" title="constructor">Class</span></a> {<br/>
+&nbsp;&nbsp;<a name="GRing.Algebra.base"><span class="id" title="projection">base</span></a> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Lalgebra.class_of"><span class="id" title="record">Lalgebra.class_of</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Algebra.ClassDef.R"><span class="id" title="variable">R</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#T"><span class="id" title="variable">T</span></a>;<br/>
+&nbsp;&nbsp;<a name="GRing.Algebra.mixin"><span class="id" title="projection">mixin</span></a> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Algebra.axiom"><span class="id" title="definition">axiom</span></a> (<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Lalgebra.Pack"><span class="id" title="constructor">Lalgebra.Pack</span></a> <span class="id" title="var">_</span> <a class="idref" href="mathcomp.algebra.ssralg.html#base"><span class="id" title="method">base</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#T"><span class="id" title="variable">T</span></a>)<br/>
+}.<br/>
+
+<br/>
+<span class="id" title="keyword">Structure</span> <a name="GRing.Algebra.type"><span class="id" title="record">type</span></a> (<span class="id" title="var">phR</span> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssreflect.html#phant"><span class="id" title="inductive">phant</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Algebra.ClassDef.R"><span class="id" title="variable">R</span></a>) := <a name="GRing.Algebra.Pack"><span class="id" title="constructor">Pack</span></a> {<a name="GRing.Algebra.sort"><span class="id" title="projection">sort</span></a>; <span class="id" title="var">_</span> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Algebra.class_of"><span class="id" title="record">class_of</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#sort"><span class="id" title="method">sort</span></a>; <span class="id" title="var">_</span> : <span class="id" title="keyword">Type</span>}.<br/>
+<span class="id" title="keyword">Variable</span> (<a name="GRing.Algebra.ClassDef.phR"><span class="id" title="variable">phR</span></a> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssreflect.html#phant"><span class="id" title="inductive">phant</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Algebra.ClassDef.R"><span class="id" title="variable">R</span></a>) (<a name="GRing.Algebra.ClassDef.T"><span class="id" title="variable">T</span></a> : <span class="id" title="keyword">Type</span>) (<a name="GRing.Algebra.ClassDef.cT"><span class="id" title="variable">cT</span></a> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Algebra.type"><span class="id" title="record">type</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#phR"><span class="id" title="variable">phR</span></a>).<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Algebra.class"><span class="id" title="definition">class</span></a> := <span class="id" title="keyword">let</span>: <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Algebra.Pack"><span class="id" title="constructor">Pack</span></a> <span class="id" title="var">_</span> <span class="id" title="var">c</span> <span class="id" title="var">_</span> <span class="id" title="keyword">as</span> <span class="id" title="var">cT'</span> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Algebra.ClassDef.cT"><span class="id" title="variable">cT</span></a> <span class="id" title="keyword">return</span> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Algebra.class_of"><span class="id" title="record">class_of</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#cT'"><span class="id" title="variable">cT'</span></a> <span class="id" title="tactic">in</span> <span class="id" title="var">c</span>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Algebra.clone"><span class="id" title="definition">clone</span></a> <span class="id" title="var">c</span> <span class="id" title="keyword">of</span> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#phant_id"><span class="id" title="definition">phant_id</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Algebra.class"><span class="id" title="definition">class</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#c"><span class="id" title="variable">c</span></a> := @<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Algebra.Pack"><span class="id" title="constructor">Pack</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Algebra.ClassDef.phR"><span class="id" title="variable">phR</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Algebra.ClassDef.T"><span class="id" title="variable">T</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#c"><span class="id" title="variable">c</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Algebra.ClassDef.T"><span class="id" title="variable">T</span></a>.<br/>
+<span class="id" title="keyword">Let</span> <a name="GRing.Algebra.ClassDef.xT"><span class="id" title="variable">xT</span></a> := <span class="id" title="keyword">let</span>: <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Algebra.Pack"><span class="id" title="constructor">Pack</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="mathcomp.algebra.ssralg.html#GRing.Algebra.ClassDef.cT"><span class="id" title="variable">cT</span></a> <span class="id" title="tactic">in</span> <span class="id" title="var">T</span>.<br/>
+<span class="id" title="keyword">Notation</span> <a name="GRing.Algebra.xclass"><span class="id" title="abbreviation">xclass</span></a> := (<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Algebra.class"><span class="id" title="definition">class</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssreflect.html#4509b22bf26e3d6d771897e22bd8bc8f"><span class="id" title="notation">:</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Algebra.class_of"><span class="id" title="record">class_of</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Algebra.ClassDef.xT"><span class="id" title="variable">xT</span></a>).<br/>
+
+<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Algebra.pack"><span class="id" title="definition">pack</span></a> <span class="id" title="var">b0</span> (<span class="id" title="var">ax0</span> : @<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Algebra.axiom"><span class="id" title="definition">axiom</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Algebra.ClassDef.R"><span class="id" title="variable">R</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#b0"><span class="id" title="variable">b0</span></a>) :=<br/>
+&nbsp;&nbsp;<span class="id" title="keyword">fun</span> <span class="id" title="var">bT</span> <span class="id" title="var">b</span> &amp; <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#phant_id"><span class="id" title="definition">phant_id</span></a> (@<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Lalgebra.class"><span class="id" title="definition">Lalgebra.class</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Algebra.ClassDef.R"><span class="id" title="variable">R</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Algebra.ClassDef.phR"><span class="id" title="variable">phR</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#bT"><span class="id" title="variable">bT</span></a>) <a class="idref" href="mathcomp.algebra.ssralg.html#b"><span class="id" title="variable">b</span></a> ⇒<br/>
+&nbsp;&nbsp;<span class="id" title="keyword">fun</span> <span class="id" title="var">ax</span> &amp; <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#phant_id"><span class="id" title="definition">phant_id</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#ax0"><span class="id" title="variable">ax0</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#ax"><span class="id" title="variable">ax</span></a> ⇒ <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Algebra.Pack"><span class="id" title="constructor">Pack</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Algebra.ClassDef.phR"><span class="id" title="variable">phR</span></a> (@<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Algebra.Class"><span class="id" title="constructor">Class</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Algebra.ClassDef.T"><span class="id" title="variable">T</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#b"><span class="id" title="variable">b</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#ax"><span class="id" title="variable">ax</span></a>) <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Algebra.ClassDef.T"><span class="id" title="variable">T</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Algebra.eqType"><span class="id" title="definition">eqType</span></a> := @<a class="idref" href="mathcomp.ssreflect.eqtype.html#Equality.Pack"><span class="id" title="constructor">Equality.Pack</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Algebra.ClassDef.cT"><span class="id" title="variable">cT</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Algebra.xclass"><span class="id" title="abbreviation">xclass</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Algebra.ClassDef.xT"><span class="id" title="variable">xT</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Algebra.choiceType"><span class="id" title="definition">choiceType</span></a> := @<a class="idref" href="mathcomp.ssreflect.choice.html#Choice.Pack"><span class="id" title="constructor">Choice.Pack</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Algebra.ClassDef.cT"><span class="id" title="variable">cT</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Algebra.xclass"><span class="id" title="abbreviation">xclass</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Algebra.ClassDef.xT"><span class="id" title="variable">xT</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Algebra.zmodType"><span class="id" title="definition">zmodType</span></a> := @<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Zmodule.Pack"><span class="id" title="constructor">Zmodule.Pack</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Algebra.ClassDef.cT"><span class="id" title="variable">cT</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Algebra.xclass"><span class="id" title="abbreviation">xclass</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Algebra.ClassDef.xT"><span class="id" title="variable">xT</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Algebra.ringType"><span class="id" title="definition">ringType</span></a> := @<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Ring.Pack"><span class="id" title="constructor">Ring.Pack</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Algebra.ClassDef.cT"><span class="id" title="variable">cT</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Algebra.xclass"><span class="id" title="abbreviation">xclass</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Algebra.ClassDef.xT"><span class="id" title="variable">xT</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Algebra.lmodType"><span class="id" title="definition">lmodType</span></a> := @<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Lmodule.Pack"><span class="id" title="constructor">Lmodule.Pack</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Algebra.ClassDef.R"><span class="id" title="variable">R</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Algebra.ClassDef.phR"><span class="id" title="variable">phR</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Algebra.ClassDef.cT"><span class="id" title="variable">cT</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Algebra.xclass"><span class="id" title="abbreviation">xclass</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Algebra.ClassDef.xT"><span class="id" title="variable">xT</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Algebra.lalgType"><span class="id" title="definition">lalgType</span></a> := @<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Lalgebra.Pack"><span class="id" title="constructor">Lalgebra.Pack</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Algebra.ClassDef.R"><span class="id" title="variable">R</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Algebra.ClassDef.phR"><span class="id" title="variable">phR</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Algebra.ClassDef.cT"><span class="id" title="variable">cT</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Algebra.xclass"><span class="id" title="abbreviation">xclass</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Algebra.ClassDef.xT"><span class="id" title="variable">xT</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">End</span> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Algebra.ClassDef"><span class="id" title="section">ClassDef</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Module</span> <a name="GRing.Algebra.Exports"><span class="id" title="module">Exports</span></a>.<br/>
+<span class="id" title="keyword">Coercion</span> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Algebra.base"><span class="id" title="projection">base</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Algebra.base"><span class="id" title="projection">:</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Algebra.base"><span class="id" title="projection">class_of</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Algebra.base"><span class="id" title="projection">&gt;-&gt;</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Algebra.base"><span class="id" title="projection">Lalgebra.class_of</span></a>.<br/>
+<span class="id" title="keyword">Coercion</span> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Algebra.sort"><span class="id" title="projection">sort</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Algebra.sort"><span class="id" title="projection">:</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Algebra.sort"><span class="id" title="projection">type</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Algebra.sort"><span class="id" title="projection">&gt;-&gt;</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Algebra.sort"><span class="id" title="projection">Sortclass</span></a>.<br/>
+<span class="id" title="keyword">Coercion</span> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Algebra.eqType"><span class="id" title="definition">eqType</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Algebra.eqType"><span class="id" title="definition">:</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Algebra.eqType"><span class="id" title="definition">type</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Algebra.eqType"><span class="id" title="definition">&gt;-&gt;</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Algebra.eqType"><span class="id" title="definition">Equality.type</span></a>.<br/>
+<span class="id" title="keyword">Canonical</span> <span class="id" title="var">eqType</span>.<br/>
+<span class="id" title="keyword">Coercion</span> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Algebra.choiceType"><span class="id" title="definition">choiceType</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Algebra.choiceType"><span class="id" title="definition">:</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Algebra.choiceType"><span class="id" title="definition">type</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Algebra.choiceType"><span class="id" title="definition">&gt;-&gt;</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Algebra.choiceType"><span class="id" title="definition">Choice.type</span></a>.<br/>
+<span class="id" title="keyword">Canonical</span> <span class="id" title="var">choiceType</span>.<br/>
+<span class="id" title="keyword">Coercion</span> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Algebra.zmodType"><span class="id" title="definition">zmodType</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Algebra.zmodType"><span class="id" title="definition">:</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Algebra.zmodType"><span class="id" title="definition">type</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Algebra.zmodType"><span class="id" title="definition">&gt;-&gt;</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Algebra.zmodType"><span class="id" title="definition">Zmodule.type</span></a>.<br/>
+<span class="id" title="keyword">Canonical</span> <span class="id" title="var">zmodType</span>.<br/>
+<span class="id" title="keyword">Coercion</span> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Algebra.ringType"><span class="id" title="definition">ringType</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Algebra.ringType"><span class="id" title="definition">:</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Algebra.ringType"><span class="id" title="definition">type</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Algebra.ringType"><span class="id" title="definition">&gt;-&gt;</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Algebra.ringType"><span class="id" title="definition">Ring.type</span></a>.<br/>
+<span class="id" title="keyword">Canonical</span> <span class="id" title="var">ringType</span>.<br/>
+<span class="id" title="keyword">Coercion</span> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Algebra.lmodType"><span class="id" title="definition">lmodType</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Algebra.lmodType"><span class="id" title="definition">:</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Algebra.lmodType"><span class="id" title="definition">type</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Algebra.lmodType"><span class="id" title="definition">&gt;-&gt;</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Algebra.lmodType"><span class="id" title="definition">Lmodule.type</span></a>.<br/>
+<span class="id" title="keyword">Canonical</span> <span class="id" title="var">lmodType</span>.<br/>
+<span class="id" title="keyword">Coercion</span> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Algebra.lalgType"><span class="id" title="definition">lalgType</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Algebra.lalgType"><span class="id" title="definition">:</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Algebra.lalgType"><span class="id" title="definition">type</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Algebra.lalgType"><span class="id" title="definition">&gt;-&gt;</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Algebra.lalgType"><span class="id" title="definition">Lalgebra.type</span></a>.<br/>
+<span class="id" title="keyword">Canonical</span> <span class="id" title="var">lalgType</span>.<br/>
+<span class="id" title="keyword">Notation</span> <a name="GRing.Algebra.Exports.algType"><span class="id" title="abbreviation">algType</span></a> <span class="id" title="var">R</span> := (<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Algebra.type"><span class="id" title="record">type</span></a> (<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssreflect.html#Phant"><span class="id" title="constructor">Phant</span></a> <span class="id" title="var">R</span>)).<br/>
+<span class="id" title="keyword">Notation</span> <a name="GRing.Algebra.Exports.AlgType"><span class="id" title="abbreviation">AlgType</span></a> <span class="id" title="var">R</span> <span class="id" title="var">A</span> <span class="id" title="var">ax</span> := (@<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Algebra.pack"><span class="id" title="definition">pack</span></a> <span class="id" title="var">_</span> (<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssreflect.html#Phant"><span class="id" title="constructor">Phant</span></a> <span class="id" title="var">R</span>) <span class="id" title="var">A</span> <span class="id" title="var">_</span> <span class="id" title="var">ax</span> <span class="id" title="var">_</span> <span class="id" title="var">_</span> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#id"><span class="id" title="abbreviation">id</span></a> <span class="id" title="var">_</span> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#id"><span class="id" title="abbreviation">id</span></a>).<br/>
+<span class="id" title="keyword">Notation</span> <a name="GRing.Algebra.Exports.CommAlgType"><span class="id" title="abbreviation">CommAlgType</span></a> <span class="id" title="var">R</span> <span class="id" title="var">A</span> := (<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Algebra.Exports.AlgType"><span class="id" title="abbreviation">AlgType</span></a> <span class="id" title="var">R</span> <span class="id" title="var">A</span> (<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Algebra.comm_axiom"><span class="id" title="lemma">comm_axiom</span></a> (<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssreflect.html#Phant"><span class="id" title="constructor">Phant</span></a> <span class="id" title="var">A</span>) (@<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.mulrC"><span class="id" title="lemma">mulrC</span></a> <span class="id" title="var">_</span>))).<br/>
+<span class="id" title="keyword">Notation</span> <a name="30ca49fca582d0576271da5ba1a53c8c"><span class="id" title="notation">&quot;</span></a>[ 'algType' R 'of' T 'for' cT ]" := (@<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Algebra.clone"><span class="id" title="definition">clone</span></a> <span class="id" title="var">_</span> (<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssreflect.html#Phant"><span class="id" title="constructor">Phant</span></a> <span class="id" title="var">R</span>) <span class="id" title="var">T</span> <span class="id" title="var">cT</span> <span class="id" title="var">_</span> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#idfun"><span class="id" title="abbreviation">idfun</span></a>)<br/>
+&nbsp;&nbsp;(<span class="id" title="tactic">at</span> <span class="id" title="keyword">level</span> 0, <span class="id" title="var">format</span> "[ 'algType' R 'of' T 'for' cT ]")<br/>
+&nbsp;&nbsp;: <span class="id" title="var">form_scope</span>.<br/>
+<span class="id" title="keyword">Notation</span> <a name="30cfd03a0f671acf70ae071bdb2b2330"><span class="id" title="notation">&quot;</span></a>[ 'algType' R 'of' T ]" := (@<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Algebra.clone"><span class="id" title="definition">clone</span></a> <span class="id" title="var">_</span> (<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssreflect.html#Phant"><span class="id" title="constructor">Phant</span></a> <span class="id" title="var">R</span>) <span class="id" title="var">T</span> <span class="id" title="var">_</span> <span class="id" title="var">_</span> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#id"><span class="id" title="abbreviation">id</span></a>)<br/>
+&nbsp;&nbsp;(<span class="id" title="tactic">at</span> <span class="id" title="keyword">level</span> 0, <span class="id" title="var">format</span> "[ 'algType' R 'of' T ]") : <span class="id" title="var">form_scope</span>.<br/>
+<span class="id" title="keyword">End</span> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Algebra.Exports"><span class="id" title="module">Exports</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">End</span> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Algebra"><span class="id" title="module">Algebra</span></a>.<br/>
+<span class="id" title="keyword">Import</span> <span class="id" title="var">Algebra.Exports</span>.<br/>
+
+<br/>
+<span class="id" title="keyword">Section</span> <a name="GRing.AlgebraTheory"><span class="id" title="section">AlgebraTheory</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Variables</span> (<a name="GRing.AlgebraTheory.R"><span class="id" title="variable">R</span></a> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.comRingType"><span class="id" title="abbreviation">comRingType</span></a>) (<a name="GRing.AlgebraTheory.A"><span class="id" title="variable">A</span></a> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.algType"><span class="id" title="abbreviation">algType</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#R"><span class="id" title="variable">R</span></a>).<br/>
+<span class="id" title="keyword">Implicit</span> <span class="id" title="keyword">Types</span> (<span class="id" title="var">k</span> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.AlgebraTheory.R"><span class="id" title="variable">R</span></a>) (<span class="id" title="var">x</span> <span class="id" title="var">y</span> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.AlgebraTheory.A"><span class="id" title="variable">A</span></a>).<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.scalerAr"><span class="id" title="lemma">scalerAr</span></a> <span class="id" title="var">k</span> <span class="id" title="var">x</span> <span class="id" title="var">y</span> : <a class="idref" href="mathcomp.algebra.ssralg.html#k"><span class="id" title="variable">k</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#5aa7bcc9ac922e77482767d325fdbb69"><span class="id" title="notation">*:</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#5aa7bcc9ac922e77482767d325fdbb69"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#ed99e7035d9a1f8a2c1515be81ac2e5f"><span class="id" title="notation">×</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#y"><span class="id" title="variable">y</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#5aa7bcc9ac922e77482767d325fdbb69"><span class="id" title="notation">)</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#ed99e7035d9a1f8a2c1515be81ac2e5f"><span class="id" title="notation">×</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#ed99e7035d9a1f8a2c1515be81ac2e5f"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#k"><span class="id" title="variable">k</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#5aa7bcc9ac922e77482767d325fdbb69"><span class="id" title="notation">*:</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#y"><span class="id" title="variable">y</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#ed99e7035d9a1f8a2c1515be81ac2e5f"><span class="id" title="notation">)</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.scalerCA"><span class="id" title="lemma">scalerCA</span></a> <span class="id" title="var">k</span> <span class="id" title="var">x</span> <span class="id" title="var">y</span> : <a class="idref" href="mathcomp.algebra.ssralg.html#k"><span class="id" title="variable">k</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#5aa7bcc9ac922e77482767d325fdbb69"><span class="id" title="notation">*:</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#ed99e7035d9a1f8a2c1515be81ac2e5f"><span class="id" title="notation">×</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#y"><span class="id" title="variable">y</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#ed99e7035d9a1f8a2c1515be81ac2e5f"><span class="id" title="notation">×</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#ed99e7035d9a1f8a2c1515be81ac2e5f"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#k"><span class="id" title="variable">k</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#5aa7bcc9ac922e77482767d325fdbb69"><span class="id" title="notation">*:</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#y"><span class="id" title="variable">y</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#ed99e7035d9a1f8a2c1515be81ac2e5f"><span class="id" title="notation">)</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.mulr_algr"><span class="id" title="lemma">mulr_algr</span></a> <span class="id" title="var">a</span> <span class="id" title="var">x</span> : <a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#ed99e7035d9a1f8a2c1515be81ac2e5f"><span class="id" title="notation">×</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#a"><span class="id" title="variable">a</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#a9486b60fd4d51d8247008b3f8b21d21"><span class="id" title="notation">%:</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#a9486b60fd4d51d8247008b3f8b21d21"><span class="id" title="notation">A</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#a"><span class="id" title="variable">a</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#5aa7bcc9ac922e77482767d325fdbb69"><span class="id" title="notation">*:</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.exprZn"><span class="id" title="lemma">exprZn</span></a> <span class="id" title="var">k</span> <span class="id" title="var">x</span> <span class="id" title="var">n</span> : <a class="idref" href="mathcomp.algebra.ssralg.html#b5a6699e28c97bb33352772cfa3ea869"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#k"><span class="id" title="variable">k</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#5aa7bcc9ac922e77482767d325fdbb69"><span class="id" title="notation">*:</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#b5a6699e28c97bb33352772cfa3ea869"><span class="id" title="notation">)</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#b5a6699e28c97bb33352772cfa3ea869"><span class="id" title="notation">^+</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#n"><span class="id" title="variable">n</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#k"><span class="id" title="variable">k</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#b5a6699e28c97bb33352772cfa3ea869"><span class="id" title="notation">^+</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#n"><span class="id" title="variable">n</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#5aa7bcc9ac922e77482767d325fdbb69"><span class="id" title="notation">*:</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#b5a6699e28c97bb33352772cfa3ea869"><span class="id" title="notation">^+</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#n"><span class="id" title="variable">n</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.scaler_prod"><span class="id" title="lemma">scaler_prod</span></a> <span class="id" title="var">I</span> <span class="id" title="var">r</span> (<span class="id" title="var">P</span> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#pred"><span class="id" title="definition">pred</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#I"><span class="id" title="variable">I</span></a>) (<span class="id" title="var">F</span> : <a class="idref" href="mathcomp.algebra.ssralg.html#I"><span class="id" title="variable">I</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.AlgebraTheory.R"><span class="id" title="variable">R</span></a>) (<span class="id" title="var">G</span> : <a class="idref" href="mathcomp.algebra.ssralg.html#I"><span class="id" title="variable">I</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.AlgebraTheory.A"><span class="id" title="variable">A</span></a>) :<br/>
+&nbsp;&nbsp;<a class="idref" href="mathcomp.algebra.ssralg.html#3f1a950be6bcb72c9434150471b42417"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#3f1a950be6bcb72c9434150471b42417"><span class="id" title="notation">prod_</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#3f1a950be6bcb72c9434150471b42417"><span class="id" title="notation">(</span></a><span class="id" title="var">i</span> <a class="idref" href="mathcomp.algebra.ssralg.html#3f1a950be6bcb72c9434150471b42417"><span class="id" title="notation">&lt;-</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#r"><span class="id" title="variable">r</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#3f1a950be6bcb72c9434150471b42417"><span class="id" title="notation">|</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#P"><span class="id" title="variable">P</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#i"><span class="id" title="variable">i</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#3f1a950be6bcb72c9434150471b42417"><span class="id" title="notation">)</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#3f1a950be6bcb72c9434150471b42417"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#F"><span class="id" title="variable">F</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#i"><span class="id" title="variable">i</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#5aa7bcc9ac922e77482767d325fdbb69"><span class="id" title="notation">*:</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#G"><span class="id" title="variable">G</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#i"><span class="id" title="variable">i</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#3f1a950be6bcb72c9434150471b42417"><span class="id" title="notation">)</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a><br/>
+&nbsp;&nbsp;&nbsp;&nbsp;<a class="idref" href="mathcomp.algebra.ssralg.html#3f1a950be6bcb72c9434150471b42417"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#3f1a950be6bcb72c9434150471b42417"><span class="id" title="notation">prod_</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#3f1a950be6bcb72c9434150471b42417"><span class="id" title="notation">(</span></a><span class="id" title="var">i</span> <a class="idref" href="mathcomp.algebra.ssralg.html#3f1a950be6bcb72c9434150471b42417"><span class="id" title="notation">&lt;-</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#r"><span class="id" title="variable">r</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#3f1a950be6bcb72c9434150471b42417"><span class="id" title="notation">|</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#P"><span class="id" title="variable">P</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#i"><span class="id" title="variable">i</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#3f1a950be6bcb72c9434150471b42417"><span class="id" title="notation">)</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#F"><span class="id" title="variable">F</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#i"><span class="id" title="variable">i</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#5aa7bcc9ac922e77482767d325fdbb69"><span class="id" title="notation">*:</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#3f1a950be6bcb72c9434150471b42417"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#3f1a950be6bcb72c9434150471b42417"><span class="id" title="notation">prod_</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#3f1a950be6bcb72c9434150471b42417"><span class="id" title="notation">(</span></a><span class="id" title="var">i</span> <a class="idref" href="mathcomp.algebra.ssralg.html#3f1a950be6bcb72c9434150471b42417"><span class="id" title="notation">&lt;-</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#r"><span class="id" title="variable">r</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#3f1a950be6bcb72c9434150471b42417"><span class="id" title="notation">|</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#P"><span class="id" title="variable">P</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#i"><span class="id" title="variable">i</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#3f1a950be6bcb72c9434150471b42417"><span class="id" title="notation">)</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#G"><span class="id" title="variable">G</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#i"><span class="id" title="variable">i</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.scaler_prodl"><span class="id" title="lemma">scaler_prodl</span></a> (<span class="id" title="var">I</span> : <a class="idref" href="mathcomp.ssreflect.fintype.html#Finite.Exports.finType"><span class="id" title="abbreviation">finType</span></a>) (<span class="id" title="var">S</span> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#pred"><span class="id" title="definition">pred</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#I"><span class="id" title="variable">I</span></a>) (<span class="id" title="var">F</span> : <a class="idref" href="mathcomp.algebra.ssralg.html#I"><span class="id" title="variable">I</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.AlgebraTheory.A"><span class="id" title="variable">A</span></a>) <span class="id" title="var">k</span> :<br/>
+&nbsp;&nbsp;<a class="idref" href="mathcomp.algebra.ssralg.html#3d9b33c1fff84830fd684d3347f0b504"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#3d9b33c1fff84830fd684d3347f0b504"><span class="id" title="notation">prod_</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#3d9b33c1fff84830fd684d3347f0b504"><span class="id" title="notation">(</span></a><span class="id" title="var">i</span> <a class="idref" href="mathcomp.algebra.ssralg.html#3d9b33c1fff84830fd684d3347f0b504"><span class="id" title="notation">in</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#S"><span class="id" title="variable">S</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#3d9b33c1fff84830fd684d3347f0b504"><span class="id" title="notation">)</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#3d9b33c1fff84830fd684d3347f0b504"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#k"><span class="id" title="variable">k</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#5aa7bcc9ac922e77482767d325fdbb69"><span class="id" title="notation">*:</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#F"><span class="id" title="variable">F</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#i"><span class="id" title="variable">i</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#3d9b33c1fff84830fd684d3347f0b504"><span class="id" title="notation">)</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#k"><span class="id" title="variable">k</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#b5a6699e28c97bb33352772cfa3ea869"><span class="id" title="notation">^+</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#f01714bb99e6c7abc6cfb2e43eff7f6e"><span class="id" title="notation">#|</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#S"><span class="id" title="variable">S</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#f01714bb99e6c7abc6cfb2e43eff7f6e"><span class="id" title="notation">|</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#5aa7bcc9ac922e77482767d325fdbb69"><span class="id" title="notation">*:</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#3d9b33c1fff84830fd684d3347f0b504"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#3d9b33c1fff84830fd684d3347f0b504"><span class="id" title="notation">prod_</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#3d9b33c1fff84830fd684d3347f0b504"><span class="id" title="notation">(</span></a><span class="id" title="var">i</span> <a class="idref" href="mathcomp.algebra.ssralg.html#3d9b33c1fff84830fd684d3347f0b504"><span class="id" title="notation">in</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#S"><span class="id" title="variable">S</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#3d9b33c1fff84830fd684d3347f0b504"><span class="id" title="notation">)</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#F"><span class="id" title="variable">F</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#i"><span class="id" title="variable">i</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.scaler_prodr"><span class="id" title="lemma">scaler_prodr</span></a> (<span class="id" title="var">I</span> : <a class="idref" href="mathcomp.ssreflect.fintype.html#Finite.Exports.finType"><span class="id" title="abbreviation">finType</span></a>) (<span class="id" title="var">S</span> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#pred"><span class="id" title="definition">pred</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#I"><span class="id" title="variable">I</span></a>) (<span class="id" title="var">F</span> : <a class="idref" href="mathcomp.algebra.ssralg.html#I"><span class="id" title="variable">I</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.AlgebraTheory.R"><span class="id" title="variable">R</span></a>) <span class="id" title="var">x</span> :<br/>
+&nbsp;&nbsp;<a class="idref" href="mathcomp.algebra.ssralg.html#3d9b33c1fff84830fd684d3347f0b504"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#3d9b33c1fff84830fd684d3347f0b504"><span class="id" title="notation">prod_</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#3d9b33c1fff84830fd684d3347f0b504"><span class="id" title="notation">(</span></a><span class="id" title="var">i</span> <a class="idref" href="mathcomp.algebra.ssralg.html#3d9b33c1fff84830fd684d3347f0b504"><span class="id" title="notation">in</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#S"><span class="id" title="variable">S</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#3d9b33c1fff84830fd684d3347f0b504"><span class="id" title="notation">)</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#3d9b33c1fff84830fd684d3347f0b504"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#F"><span class="id" title="variable">F</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#i"><span class="id" title="variable">i</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#5aa7bcc9ac922e77482767d325fdbb69"><span class="id" title="notation">*:</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#3d9b33c1fff84830fd684d3347f0b504"><span class="id" title="notation">)</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#3d9b33c1fff84830fd684d3347f0b504"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#3d9b33c1fff84830fd684d3347f0b504"><span class="id" title="notation">prod_</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#3d9b33c1fff84830fd684d3347f0b504"><span class="id" title="notation">(</span></a><span class="id" title="var">i</span> <a class="idref" href="mathcomp.algebra.ssralg.html#3d9b33c1fff84830fd684d3347f0b504"><span class="id" title="notation">in</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#S"><span class="id" title="variable">S</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#3d9b33c1fff84830fd684d3347f0b504"><span class="id" title="notation">)</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#F"><span class="id" title="variable">F</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#i"><span class="id" title="variable">i</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#5aa7bcc9ac922e77482767d325fdbb69"><span class="id" title="notation">*:</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#b5a6699e28c97bb33352772cfa3ea869"><span class="id" title="notation">^+</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#f01714bb99e6c7abc6cfb2e43eff7f6e"><span class="id" title="notation">#|</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#S"><span class="id" title="variable">S</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#f01714bb99e6c7abc6cfb2e43eff7f6e"><span class="id" title="notation">|</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Canonical</span> <span class="id" title="var">regular_comRingType</span> := <a class="idref" href="mathcomp.algebra.ssralg.html#57b384122345a94c564987d4b6ee9f0f"><span class="id" title="notation">[</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#57b384122345a94c564987d4b6ee9f0f"><span class="id" title="notation">comRingType</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#57b384122345a94c564987d4b6ee9f0f"><span class="id" title="notation">of</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.AlgebraTheory.R"><span class="id" title="variable">R</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#44fd865ce10e1d30970d09bdd85a0c8e"><span class="id" title="notation">^</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#44fd865ce10e1d30970d09bdd85a0c8e"><span class="id" title="notation">o</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#57b384122345a94c564987d4b6ee9f0f"><span class="id" title="notation">]</span></a>.<br/>
+<span class="id" title="keyword">Canonical</span> <span class="id" title="var">regular_algType</span> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.CommAlgType"><span class="id" title="abbreviation">CommAlgType</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.AlgebraTheory.R"><span class="id" title="variable">R</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.AlgebraTheory.R"><span class="id" title="variable">R</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#44fd865ce10e1d30970d09bdd85a0c8e"><span class="id" title="notation">^</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#44fd865ce10e1d30970d09bdd85a0c8e"><span class="id" title="notation">o</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Variables</span> (<a name="GRing.AlgebraTheory.U"><span class="id" title="variable">U</span></a> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.lmodType"><span class="id" title="abbreviation">lmodType</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.AlgebraTheory.R"><span class="id" title="variable">R</span></a>) (<a name="GRing.AlgebraTheory.a"><span class="id" title="variable">a</span></a> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.AlgebraTheory.A"><span class="id" title="variable">A</span></a>) (<a name="GRing.AlgebraTheory.f"><span class="id" title="variable">f</span></a> : <a class="idref" href="mathcomp.algebra.ssralg.html#697e59dccfd7ad4519680ddb16ef82da"><span class="id" title="notation">{</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#697e59dccfd7ad4519680ddb16ef82da"><span class="id" title="notation">linear</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#U"><span class="id" title="variable">U</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.AlgebraTheory.A"><span class="id" title="variable">A</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#697e59dccfd7ad4519680ddb16ef82da"><span class="id" title="notation">}</span></a>).<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.mull_fun_is_scalable"><span class="id" title="lemma">mull_fun_is_scalable</span></a> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.scalable"><span class="id" title="abbreviation">scalable</span></a> (<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.AlgebraTheory.a"><span class="id" title="variable">a</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#82b32d32eab6e1eab8147f667d41c846"><span class="id" title="notation">\*</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#82b32d32eab6e1eab8147f667d41c846"><span class="id" title="notation">o</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.AlgebraTheory.f"><span class="id" title="variable">f</span></a>).<br/>
+ <span class="id" title="keyword">Canonical</span> <span class="id" title="var">mull_fun_linear</span> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.AddLinear"><span class="id" title="abbreviation">AddLinear</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.mull_fun_is_scalable"><span class="id" title="lemma">mull_fun_is_scalable</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">End</span> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.AlgebraTheory"><span class="id" title="section">AlgebraTheory</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Module</span> <a name="GRing.UnitRing"><span class="id" title="module">UnitRing</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Record</span> <a name="GRing.UnitRing.mixin_of"><span class="id" title="record">mixin_of</span></a> (<span class="id" title="var">R</span> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Ring.Exports.ringType"><span class="id" title="abbreviation">ringType</span></a>) : <span class="id" title="keyword">Type</span> := <a name="GRing.UnitRing.Mixin"><span class="id" title="constructor">Mixin</span></a> {<br/>
+&nbsp;&nbsp;<a name="GRing.UnitRing.unit"><span class="id" title="projection">unit</span></a> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#pred"><span class="id" title="definition">pred</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#R"><span class="id" title="variable">R</span></a>;<br/>
+&nbsp;&nbsp;<a name="GRing.UnitRing.inv"><span class="id" title="projection">inv</span></a> : <a class="idref" href="mathcomp.algebra.ssralg.html#R"><span class="id" title="variable">R</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#R"><span class="id" title="variable">R</span></a>;<br/>
+&nbsp;&nbsp;<span class="id" title="var">_</span> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#5c59b35a0b51db520cf1fba473ecf127"><span class="id" title="notation">{</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#5c59b35a0b51db520cf1fba473ecf127"><span class="id" title="notation">in</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#unit"><span class="id" title="method">unit</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#5c59b35a0b51db520cf1fba473ecf127"><span class="id" title="notation">,</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#left_inverse"><span class="id" title="definition">left_inverse</span></a> 1 <a class="idref" href="mathcomp.algebra.ssralg.html#inv"><span class="id" title="method">inv</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#6498e6e308d8a143464cf2d2ba603d36"><span class="id" title="notation">*%</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#6498e6e308d8a143464cf2d2ba603d36"><span class="id" title="notation">R</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#5c59b35a0b51db520cf1fba473ecf127"><span class="id" title="notation">}</span></a>;<br/>
+&nbsp;&nbsp;<span class="id" title="var">_</span> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#5c59b35a0b51db520cf1fba473ecf127"><span class="id" title="notation">{</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#5c59b35a0b51db520cf1fba473ecf127"><span class="id" title="notation">in</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#unit"><span class="id" title="method">unit</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#5c59b35a0b51db520cf1fba473ecf127"><span class="id" title="notation">,</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#right_inverse"><span class="id" title="definition">right_inverse</span></a> 1 <a class="idref" href="mathcomp.algebra.ssralg.html#inv"><span class="id" title="method">inv</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#6498e6e308d8a143464cf2d2ba603d36"><span class="id" title="notation">*%</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#6498e6e308d8a143464cf2d2ba603d36"><span class="id" title="notation">R</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#5c59b35a0b51db520cf1fba473ecf127"><span class="id" title="notation">}</span></a>;<br/>
+&nbsp;&nbsp;<span class="id" title="var">_</span> : <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.algebra.ssralg.html#y"><span class="id" title="variable">y</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#ed99e7035d9a1f8a2c1515be81ac2e5f"><span class="id" title="notation">×</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> 1 <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d82a7d96d3659d805ffe732283716822"><span class="id" title="notation">∧</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#ed99e7035d9a1f8a2c1515be81ac2e5f"><span class="id" title="notation">×</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#y"><span class="id" title="variable">y</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> 1 <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#unit"><span class="id" title="method">unit</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a>;<br/>
+&nbsp;&nbsp;<span class="id" title="var">_</span> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#5c59b35a0b51db520cf1fba473ecf127"><span class="id" title="notation">{</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#5c59b35a0b51db520cf1fba473ecf127"><span class="id" title="notation">in</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#c2f58fba484177bda65c2ab1289a6fe6"><span class="id" title="notation">[</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#c2f58fba484177bda65c2ab1289a6fe6"><span class="id" title="notation">predC</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#unit"><span class="id" title="method">unit</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#c2f58fba484177bda65c2ab1289a6fe6"><span class="id" title="notation">]</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#5c59b35a0b51db520cf1fba473ecf127"><span class="id" title="notation">,</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#inv"><span class="id" title="method">inv</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#2500d48ed8e862ccfda98a44dff88963"><span class="id" title="notation">=1</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#id"><span class="id" title="abbreviation">id</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#5c59b35a0b51db520cf1fba473ecf127"><span class="id" title="notation">}</span></a><br/>
+}.<br/>
+
+<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.UnitRing.EtaMixin"><span class="id" title="definition">EtaMixin</span></a> <span class="id" title="var">R</span> <span class="id" title="var">unit</span> <span class="id" title="var">inv</span> <span class="id" title="var">mulVr</span> <span class="id" title="var">mulrV</span> <span class="id" title="var">unitP</span> <span class="id" title="var">inv_out</span> :=<br/>
+&nbsp;&nbsp;<span class="id" title="keyword">let</span> <span class="id" title="var">_</span> := @<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.UnitRing.Mixin"><span class="id" title="constructor">Mixin</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#R"><span class="id" title="variable">R</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#unit"><span class="id" title="variable">unit</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#inv"><span class="id" title="variable">inv</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#mulVr"><span class="id" title="variable">mulVr</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#mulrV"><span class="id" title="variable">mulrV</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#unitP"><span class="id" title="variable">unitP</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#inv_out"><span class="id" title="variable">inv_out</span></a> <span class="id" title="tactic">in</span><br/>
+&nbsp;&nbsp;@<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.UnitRing.Mixin"><span class="id" title="constructor">Mixin</span></a> (<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Ring.Pack"><span class="id" title="constructor">Ring.Pack</span></a> (<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Ring.class"><span class="id" title="definition">Ring.class</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#R"><span class="id" title="variable">R</span></a>) <a class="idref" href="mathcomp.algebra.ssralg.html#R"><span class="id" title="variable">R</span></a>) <a class="idref" href="mathcomp.algebra.ssralg.html#unit"><span class="id" title="variable">unit</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#inv"><span class="id" title="variable">inv</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#mulVr"><span class="id" title="variable">mulVr</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#mulrV"><span class="id" title="variable">mulrV</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#unitP"><span class="id" title="variable">unitP</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#inv_out"><span class="id" title="variable">inv_out</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Section</span> <a name="GRing.UnitRing.ClassDef"><span class="id" title="section">ClassDef</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Record</span> <a name="GRing.UnitRing.class_of"><span class="id" title="record">class_of</span></a> (<span class="id" title="var">R</span> : <span class="id" title="keyword">Type</span>) : <span class="id" title="keyword">Type</span> := <a name="GRing.UnitRing.Class"><span class="id" title="constructor">Class</span></a> {<br/>
+&nbsp;&nbsp;<a name="GRing.UnitRing.base"><span class="id" title="projection">base</span></a> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Ring.class_of"><span class="id" title="record">Ring.class_of</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#R"><span class="id" title="variable">R</span></a>;<br/>
+&nbsp;&nbsp;<a name="GRing.UnitRing.mixin"><span class="id" title="projection">mixin</span></a> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.UnitRing.mixin_of"><span class="id" title="record">mixin_of</span></a> (<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Ring.Pack"><span class="id" title="constructor">Ring.Pack</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#base"><span class="id" title="method">base</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#R"><span class="id" title="variable">R</span></a>)<br/>
+}.<br/>
+
+<br/>
+<span class="id" title="keyword">Structure</span> <a name="GRing.UnitRing.type"><span class="id" title="record">type</span></a> := <a name="GRing.UnitRing.Pack"><span class="id" title="constructor">Pack</span></a> {<a name="GRing.UnitRing.sort"><span class="id" title="projection">sort</span></a>; <span class="id" title="var">_</span> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.UnitRing.class_of"><span class="id" title="record">class_of</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#sort"><span class="id" title="method">sort</span></a>; <span class="id" title="var">_</span> : <span class="id" title="keyword">Type</span>}.<br/>
+<span class="id" title="keyword">Variables</span> (<a name="GRing.UnitRing.ClassDef.T"><span class="id" title="variable">T</span></a> : <span class="id" title="keyword">Type</span>) (<a name="GRing.UnitRing.ClassDef.cT"><span class="id" title="variable">cT</span></a> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.UnitRing.type"><span class="id" title="record">type</span></a>).<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.UnitRing.class"><span class="id" title="definition">class</span></a> := <span class="id" title="keyword">let</span>: <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.UnitRing.Pack"><span class="id" title="constructor">Pack</span></a> <span class="id" title="var">_</span> <span class="id" title="var">c</span> <span class="id" title="var">_</span> <span class="id" title="keyword">as</span> <span class="id" title="var">cT'</span> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.UnitRing.ClassDef.cT"><span class="id" title="variable">cT</span></a> <span class="id" title="keyword">return</span> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.UnitRing.class_of"><span class="id" title="record">class_of</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#cT'"><span class="id" title="variable">cT'</span></a> <span class="id" title="tactic">in</span> <span class="id" title="var">c</span>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.UnitRing.clone"><span class="id" title="definition">clone</span></a> <span class="id" title="var">c</span> <span class="id" title="keyword">of</span> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#phant_id"><span class="id" title="definition">phant_id</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.UnitRing.class"><span class="id" title="definition">class</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#c"><span class="id" title="variable">c</span></a> := @<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.UnitRing.Pack"><span class="id" title="constructor">Pack</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.UnitRing.ClassDef.T"><span class="id" title="variable">T</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#c"><span class="id" title="variable">c</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.UnitRing.ClassDef.T"><span class="id" title="variable">T</span></a>.<br/>
+<span class="id" title="keyword">Let</span> <a name="GRing.UnitRing.ClassDef.xT"><span class="id" title="variable">xT</span></a> := <span class="id" title="keyword">let</span>: <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.UnitRing.Pack"><span class="id" title="constructor">Pack</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="mathcomp.algebra.ssralg.html#GRing.UnitRing.ClassDef.cT"><span class="id" title="variable">cT</span></a> <span class="id" title="tactic">in</span> <span class="id" title="var">T</span>.<br/>
+<span class="id" title="keyword">Notation</span> <a name="GRing.UnitRing.xclass"><span class="id" title="abbreviation">xclass</span></a> := (<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.UnitRing.class"><span class="id" title="definition">class</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssreflect.html#4509b22bf26e3d6d771897e22bd8bc8f"><span class="id" title="notation">:</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.UnitRing.class_of"><span class="id" title="record">class_of</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.UnitRing.ClassDef.xT"><span class="id" title="variable">xT</span></a>).<br/>
+
+<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.UnitRing.pack"><span class="id" title="definition">pack</span></a> <span class="id" title="var">b0</span> (<span class="id" title="var">m0</span> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.UnitRing.mixin_of"><span class="id" title="record">mixin_of</span></a> (@<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Ring.Pack"><span class="id" title="constructor">Ring.Pack</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.UnitRing.ClassDef.T"><span class="id" title="variable">T</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#b0"><span class="id" title="variable">b0</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.UnitRing.ClassDef.T"><span class="id" title="variable">T</span></a>)) :=<br/>
+&nbsp;&nbsp;<span class="id" title="keyword">fun</span> <span class="id" title="var">bT</span> <span class="id" title="var">b</span> &amp; <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#phant_id"><span class="id" title="definition">phant_id</span></a> (<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Ring.class"><span class="id" title="definition">Ring.class</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#bT"><span class="id" title="variable">bT</span></a>) <a class="idref" href="mathcomp.algebra.ssralg.html#b"><span class="id" title="variable">b</span></a> ⇒<br/>
+&nbsp;&nbsp;<span class="id" title="keyword">fun</span> <span class="id" title="var">m</span> &amp; <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#phant_id"><span class="id" title="definition">phant_id</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#m0"><span class="id" title="variable">m0</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#m"><span class="id" title="variable">m</span></a> ⇒ <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.UnitRing.Pack"><span class="id" title="constructor">Pack</span></a> (@<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.UnitRing.Class"><span class="id" title="constructor">Class</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.UnitRing.ClassDef.T"><span class="id" title="variable">T</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#b"><span class="id" title="variable">b</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#m"><span class="id" title="variable">m</span></a>) <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.UnitRing.ClassDef.T"><span class="id" title="variable">T</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.UnitRing.eqType"><span class="id" title="definition">eqType</span></a> := @<a class="idref" href="mathcomp.ssreflect.eqtype.html#Equality.Pack"><span class="id" title="constructor">Equality.Pack</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.UnitRing.ClassDef.cT"><span class="id" title="variable">cT</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.UnitRing.xclass"><span class="id" title="abbreviation">xclass</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.UnitRing.ClassDef.xT"><span class="id" title="variable">xT</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.UnitRing.choiceType"><span class="id" title="definition">choiceType</span></a> := @<a class="idref" href="mathcomp.ssreflect.choice.html#Choice.Pack"><span class="id" title="constructor">Choice.Pack</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.UnitRing.ClassDef.cT"><span class="id" title="variable">cT</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.UnitRing.xclass"><span class="id" title="abbreviation">xclass</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.UnitRing.ClassDef.xT"><span class="id" title="variable">xT</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.UnitRing.zmodType"><span class="id" title="definition">zmodType</span></a> := @<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Zmodule.Pack"><span class="id" title="constructor">Zmodule.Pack</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.UnitRing.ClassDef.cT"><span class="id" title="variable">cT</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.UnitRing.xclass"><span class="id" title="abbreviation">xclass</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.UnitRing.ClassDef.xT"><span class="id" title="variable">xT</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.UnitRing.ringType"><span class="id" title="definition">ringType</span></a> := @<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Ring.Pack"><span class="id" title="constructor">Ring.Pack</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.UnitRing.ClassDef.cT"><span class="id" title="variable">cT</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.UnitRing.xclass"><span class="id" title="abbreviation">xclass</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.UnitRing.ClassDef.xT"><span class="id" title="variable">xT</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">End</span> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.UnitRing.ClassDef"><span class="id" title="section">ClassDef</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Module</span> <a name="GRing.UnitRing.Exports"><span class="id" title="module">Exports</span></a>.<br/>
+<span class="id" title="keyword">Coercion</span> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.UnitRing.base"><span class="id" title="projection">base</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.UnitRing.base"><span class="id" title="projection">:</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.UnitRing.base"><span class="id" title="projection">class_of</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.UnitRing.base"><span class="id" title="projection">&gt;-&gt;</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.UnitRing.base"><span class="id" title="projection">Ring.class_of</span></a>.<br/>
+<span class="id" title="keyword">Coercion</span> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.UnitRing.mixin"><span class="id" title="projection">mixin</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.UnitRing.mixin"><span class="id" title="projection">:</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.UnitRing.mixin"><span class="id" title="projection">class_of</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.UnitRing.mixin"><span class="id" title="projection">&gt;-&gt;</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.UnitRing.mixin"><span class="id" title="projection">mixin_of</span></a>.<br/>
+<span class="id" title="keyword">Coercion</span> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.UnitRing.sort"><span class="id" title="projection">sort</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.UnitRing.sort"><span class="id" title="projection">:</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.UnitRing.sort"><span class="id" title="projection">type</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.UnitRing.sort"><span class="id" title="projection">&gt;-&gt;</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.UnitRing.sort"><span class="id" title="projection">Sortclass</span></a>.<br/>
+<span class="id" title="keyword">Coercion</span> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.UnitRing.eqType"><span class="id" title="definition">eqType</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.UnitRing.eqType"><span class="id" title="definition">:</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.UnitRing.eqType"><span class="id" title="definition">type</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.UnitRing.eqType"><span class="id" title="definition">&gt;-&gt;</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.UnitRing.eqType"><span class="id" title="definition">Equality.type</span></a>.<br/>
+<span class="id" title="keyword">Canonical</span> <span class="id" title="var">eqType</span>.<br/>
+<span class="id" title="keyword">Coercion</span> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.UnitRing.choiceType"><span class="id" title="definition">choiceType</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.UnitRing.choiceType"><span class="id" title="definition">:</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.UnitRing.choiceType"><span class="id" title="definition">type</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.UnitRing.choiceType"><span class="id" title="definition">&gt;-&gt;</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.UnitRing.choiceType"><span class="id" title="definition">Choice.type</span></a>.<br/>
+<span class="id" title="keyword">Canonical</span> <span class="id" title="var">choiceType</span>.<br/>
+<span class="id" title="keyword">Coercion</span> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.UnitRing.zmodType"><span class="id" title="definition">zmodType</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.UnitRing.zmodType"><span class="id" title="definition">:</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.UnitRing.zmodType"><span class="id" title="definition">type</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.UnitRing.zmodType"><span class="id" title="definition">&gt;-&gt;</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.UnitRing.zmodType"><span class="id" title="definition">Zmodule.type</span></a>.<br/>
+<span class="id" title="keyword">Canonical</span> <span class="id" title="var">zmodType</span>.<br/>
+<span class="id" title="keyword">Coercion</span> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.UnitRing.ringType"><span class="id" title="definition">ringType</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.UnitRing.ringType"><span class="id" title="definition">:</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.UnitRing.ringType"><span class="id" title="definition">type</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.UnitRing.ringType"><span class="id" title="definition">&gt;-&gt;</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.UnitRing.ringType"><span class="id" title="definition">Ring.type</span></a>.<br/>
+<span class="id" title="keyword">Canonical</span> <span class="id" title="var">ringType</span>.<br/>
+<span class="id" title="keyword">Notation</span> <a name="GRing.UnitRing.Exports.unitRingType"><span class="id" title="abbreviation">unitRingType</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.UnitRing.type"><span class="id" title="record">type</span></a>.<br/>
+<span class="id" title="keyword">Notation</span> <a name="GRing.UnitRing.Exports.UnitRingType"><span class="id" title="abbreviation">UnitRingType</span></a> <span class="id" title="var">T</span> <span class="id" title="var">m</span> := (@<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.UnitRing.pack"><span class="id" title="definition">pack</span></a> <span class="id" title="var">T</span> <span class="id" title="var">_</span> <span class="id" title="var">m</span> <span class="id" title="var">_</span> <span class="id" title="var">_</span> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#id"><span class="id" title="abbreviation">id</span></a> <span class="id" title="var">_</span> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#id"><span class="id" title="abbreviation">id</span></a>).<br/>
+<span class="id" title="keyword">Notation</span> <a name="GRing.UnitRing.Exports.UnitRingMixin"><span class="id" title="abbreviation">UnitRingMixin</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.UnitRing.EtaMixin"><span class="id" title="definition">EtaMixin</span></a>.<br/>
+<span class="id" title="keyword">Notation</span> <a name="cb745c487a899dce62ab9ce5330f227e"><span class="id" title="notation">&quot;</span></a>[ 'unitRingType' 'of' T 'for' cT ]" := (@<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.UnitRing.clone"><span class="id" title="definition">clone</span></a> <span class="id" title="var">T</span> <span class="id" title="var">cT</span> <span class="id" title="var">_</span> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#idfun"><span class="id" title="abbreviation">idfun</span></a>)<br/>
+&nbsp;&nbsp;(<span class="id" title="tactic">at</span> <span class="id" title="keyword">level</span> 0, <span class="id" title="var">format</span> "[ 'unitRingType' 'of' T 'for' cT ]") : <span class="id" title="var">form_scope</span>.<br/>
+<span class="id" title="keyword">Notation</span> <a name="f02859ca87d7563e473a6ba817bdc33f"><span class="id" title="notation">&quot;</span></a>[ 'unitRingType' 'of' T ]" := (@<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.UnitRing.clone"><span class="id" title="definition">clone</span></a> <span class="id" title="var">T</span> <span class="id" title="var">_</span> <span class="id" title="var">_</span> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#id"><span class="id" title="abbreviation">id</span></a>)<br/>
+&nbsp;&nbsp;(<span class="id" title="tactic">at</span> <span class="id" title="keyword">level</span> 0, <span class="id" title="var">format</span> "[ 'unitRingType' 'of' T ]") : <span class="id" title="var">form_scope</span>.<br/>
+<span class="id" title="keyword">End</span> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.UnitRing.Exports"><span class="id" title="module">Exports</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">End</span> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.UnitRing"><span class="id" title="module">UnitRing</span></a>.<br/>
+<span class="id" title="keyword">Import</span> <span class="id" title="var">UnitRing.Exports</span>.<br/>
+
+<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.unit"><span class="id" title="definition">unit</span></a> {<span class="id" title="var">R</span> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.unitRingType"><span class="id" title="abbreviation">unitRingType</span></a>} :=<br/>
+&nbsp;&nbsp;<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#3838d61fb3e8125493e649946f677b04"><span class="id" title="notation">[</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#3838d61fb3e8125493e649946f677b04"><span class="id" title="notation">qualify</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#3838d61fb3e8125493e649946f677b04"><span class="id" title="notation">a</span></a> <span class="id" title="var">u</span> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#3838d61fb3e8125493e649946f677b04"><span class="id" title="notation">:</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#R"><span class="id" title="variable">R</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#3838d61fb3e8125493e649946f677b04"><span class="id" title="notation">|</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.unit"><span class="id" title="projection">UnitRing.unit</span></a> (<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.class"><span class="id" title="definition">UnitRing.class</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#R"><span class="id" title="variable">R</span></a>) <a class="idref" href="mathcomp.algebra.ssralg.html#u"><span class="id" title="variable">u</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#3838d61fb3e8125493e649946f677b04"><span class="id" title="notation">]</span></a>.<br/>
+<span class="id" title="keyword">Fact</span> <a name="GRing.unit_key"><span class="id" title="lemma">unit_key</span></a> <span class="id" title="var">R</span> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#pred_key"><span class="id" title="inductive">pred_key</span></a> (@<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.unit"><span class="id" title="definition">unit</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#R"><span class="id" title="variable">R</span></a>). <br/>
+<span class="id" title="keyword">Canonical</span> <span class="id" title="var">unit_keyed</span> <span class="id" title="var">R</span> := <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#KeyedQualifier"><span class="id" title="definition">KeyedQualifier</span></a> (@<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.unit_key"><span class="id" title="lemma">unit_key</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#R"><span class="id" title="variable">R</span></a>).<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.inv"><span class="id" title="definition">inv</span></a> {<span class="id" title="var">R</span> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.unitRingType"><span class="id" title="abbreviation">unitRingType</span></a>} : <a class="idref" href="mathcomp.algebra.ssralg.html#R"><span class="id" title="variable">R</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#R"><span class="id" title="variable">R</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.inv"><span class="id" title="projection">UnitRing.inv</span></a> (<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.class"><span class="id" title="definition">UnitRing.class</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#R"><span class="id" title="variable">R</span></a>).<br/>
+
+<br/>
+
+<br/>
+<span class="id" title="keyword">Section</span> <a name="GRing.UnitRingTheory"><span class="id" title="section">UnitRingTheory</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Variable</span> <a name="GRing.UnitRingTheory.R"><span class="id" title="variable">R</span></a> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.unitRingType"><span class="id" title="abbreviation">unitRingType</span></a>.<br/>
+<span class="id" title="keyword">Implicit</span> <span class="id" title="keyword">Types</span> <span class="id" title="var">x</span> <span class="id" title="var">y</span> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.UnitRingTheory.R"><span class="id" title="variable">R</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.divrr"><span class="id" title="lemma">divrr</span></a> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#5c59b35a0b51db520cf1fba473ecf127"><span class="id" title="notation">{</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#5c59b35a0b51db520cf1fba473ecf127"><span class="id" title="notation">in</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.unit"><span class="id" title="definition">unit</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#5c59b35a0b51db520cf1fba473ecf127"><span class="id" title="notation">,</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#right_inverse"><span class="id" title="definition">right_inverse</span></a> 1 (@<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.inv"><span class="id" title="definition">inv</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.UnitRingTheory.R"><span class="id" title="variable">R</span></a>) <a class="idref" href="mathcomp.algebra.ssralg.html#6498e6e308d8a143464cf2d2ba603d36"><span class="id" title="notation">*%</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#6498e6e308d8a143464cf2d2ba603d36"><span class="id" title="notation">R</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#5c59b35a0b51db520cf1fba473ecf127"><span class="id" title="notation">}</span></a>.<br/>
+ <span class="id" title="keyword">Definition</span> <a name="GRing.mulrV"><span class="id" title="definition">mulrV</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.divrr"><span class="id" title="lemma">divrr</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.mulVr"><span class="id" title="lemma">mulVr</span></a> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#5c59b35a0b51db520cf1fba473ecf127"><span class="id" title="notation">{</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#5c59b35a0b51db520cf1fba473ecf127"><span class="id" title="notation">in</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.unit"><span class="id" title="definition">unit</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#5c59b35a0b51db520cf1fba473ecf127"><span class="id" title="notation">,</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#left_inverse"><span class="id" title="definition">left_inverse</span></a> 1 (@<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.inv"><span class="id" title="definition">inv</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.UnitRingTheory.R"><span class="id" title="variable">R</span></a>) <a class="idref" href="mathcomp.algebra.ssralg.html#6498e6e308d8a143464cf2d2ba603d36"><span class="id" title="notation">*%</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#6498e6e308d8a143464cf2d2ba603d36"><span class="id" title="notation">R</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#5c59b35a0b51db520cf1fba473ecf127"><span class="id" title="notation">}</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.invr_out"><span class="id" title="lemma">invr_out</span></a> <span class="id" title="var">x</span> : <a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#7bda32be7af95db39ea7df0c7103bd67"><span class="id" title="notation">\</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#7bda32be7af95db39ea7df0c7103bd67"><span class="id" title="notation">isn't</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#7bda32be7af95db39ea7df0c7103bd67"><span class="id" title="notation">a</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.unit"><span class="id" title="definition">unit</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#7f97e90bec2e67d9beef5851649e3fb1"><span class="id" title="notation">^-1</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.unitrP"><span class="id" title="lemma">unitrP</span></a> <span class="id" title="var">x</span> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#reflect"><span class="id" title="abbreviation">reflect</span></a> (<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#84eb6d2849dbf3581b1c0c05add5f2d8"><span class="id" title="notation">∃</span></a> <span class="id" title="var">y</span><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#84eb6d2849dbf3581b1c0c05add5f2d8"><span class="id" title="notation">,</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#y"><span class="id" title="variable">y</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#ed99e7035d9a1f8a2c1515be81ac2e5f"><span class="id" title="notation">×</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> 1 <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d82a7d96d3659d805ffe732283716822"><span class="id" title="notation">∧</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#ed99e7035d9a1f8a2c1515be81ac2e5f"><span class="id" title="notation">×</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#y"><span class="id" title="variable">y</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> 1) (<a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#1e40fee506a85b20590ef299005b003d"><span class="id" title="notation">\</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#1e40fee506a85b20590ef299005b003d"><span class="id" title="notation">is</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#1e40fee506a85b20590ef299005b003d"><span class="id" title="notation">a</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.unit"><span class="id" title="definition">unit</span></a>).<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.mulKr"><span class="id" title="lemma">mulKr</span></a> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#5c59b35a0b51db520cf1fba473ecf127"><span class="id" title="notation">{</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#5c59b35a0b51db520cf1fba473ecf127"><span class="id" title="notation">in</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.unit"><span class="id" title="definition">unit</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#5c59b35a0b51db520cf1fba473ecf127"><span class="id" title="notation">,</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#left_loop"><span class="id" title="definition">left_loop</span></a> (@<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.inv"><span class="id" title="definition">inv</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.UnitRingTheory.R"><span class="id" title="variable">R</span></a>) <a class="idref" href="mathcomp.algebra.ssralg.html#6498e6e308d8a143464cf2d2ba603d36"><span class="id" title="notation">*%</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#6498e6e308d8a143464cf2d2ba603d36"><span class="id" title="notation">R</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#5c59b35a0b51db520cf1fba473ecf127"><span class="id" title="notation">}</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.mulVKr"><span class="id" title="lemma">mulVKr</span></a> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#5c59b35a0b51db520cf1fba473ecf127"><span class="id" title="notation">{</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#5c59b35a0b51db520cf1fba473ecf127"><span class="id" title="notation">in</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.unit"><span class="id" title="definition">unit</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#5c59b35a0b51db520cf1fba473ecf127"><span class="id" title="notation">,</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#rev_left_loop"><span class="id" title="definition">rev_left_loop</span></a> (@<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.inv"><span class="id" title="definition">inv</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.UnitRingTheory.R"><span class="id" title="variable">R</span></a>) <a class="idref" href="mathcomp.algebra.ssralg.html#6498e6e308d8a143464cf2d2ba603d36"><span class="id" title="notation">*%</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#6498e6e308d8a143464cf2d2ba603d36"><span class="id" title="notation">R</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#5c59b35a0b51db520cf1fba473ecf127"><span class="id" title="notation">}</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.mulrK"><span class="id" title="lemma">mulrK</span></a> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#5c59b35a0b51db520cf1fba473ecf127"><span class="id" title="notation">{</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#5c59b35a0b51db520cf1fba473ecf127"><span class="id" title="notation">in</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.unit"><span class="id" title="definition">unit</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#5c59b35a0b51db520cf1fba473ecf127"><span class="id" title="notation">,</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#right_loop"><span class="id" title="definition">right_loop</span></a> (@<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.inv"><span class="id" title="definition">inv</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.UnitRingTheory.R"><span class="id" title="variable">R</span></a>) <a class="idref" href="mathcomp.algebra.ssralg.html#6498e6e308d8a143464cf2d2ba603d36"><span class="id" title="notation">*%</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#6498e6e308d8a143464cf2d2ba603d36"><span class="id" title="notation">R</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#5c59b35a0b51db520cf1fba473ecf127"><span class="id" title="notation">}</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.mulrVK"><span class="id" title="lemma">mulrVK</span></a> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#5c59b35a0b51db520cf1fba473ecf127"><span class="id" title="notation">{</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#5c59b35a0b51db520cf1fba473ecf127"><span class="id" title="notation">in</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.unit"><span class="id" title="definition">unit</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#5c59b35a0b51db520cf1fba473ecf127"><span class="id" title="notation">,</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#rev_right_loop"><span class="id" title="definition">rev_right_loop</span></a> (@<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.inv"><span class="id" title="definition">inv</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.UnitRingTheory.R"><span class="id" title="variable">R</span></a>) <a class="idref" href="mathcomp.algebra.ssralg.html#6498e6e308d8a143464cf2d2ba603d36"><span class="id" title="notation">*%</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#6498e6e308d8a143464cf2d2ba603d36"><span class="id" title="notation">R</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#5c59b35a0b51db520cf1fba473ecf127"><span class="id" title="notation">}</span></a>.<br/>
+ <span class="id" title="keyword">Definition</span> <a name="GRing.divrK"><span class="id" title="definition">divrK</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.mulrVK"><span class="id" title="lemma">mulrVK</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.mulrI"><span class="id" title="lemma">mulrI</span></a> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#5c59b35a0b51db520cf1fba473ecf127"><span class="id" title="notation">{</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#5c59b35a0b51db520cf1fba473ecf127"><span class="id" title="notation">in</span></a> @<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.unit"><span class="id" title="definition">unit</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.UnitRingTheory.R"><span class="id" title="variable">R</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#5c59b35a0b51db520cf1fba473ecf127"><span class="id" title="notation">,</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#right_injective"><span class="id" title="definition">right_injective</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#6498e6e308d8a143464cf2d2ba603d36"><span class="id" title="notation">*%</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#6498e6e308d8a143464cf2d2ba603d36"><span class="id" title="notation">R</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#5c59b35a0b51db520cf1fba473ecf127"><span class="id" title="notation">}</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.mulIr"><span class="id" title="lemma">mulIr</span></a> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#5c59b35a0b51db520cf1fba473ecf127"><span class="id" title="notation">{</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#5c59b35a0b51db520cf1fba473ecf127"><span class="id" title="notation">in</span></a> @<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.unit"><span class="id" title="definition">unit</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.UnitRingTheory.R"><span class="id" title="variable">R</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#5c59b35a0b51db520cf1fba473ecf127"><span class="id" title="notation">,</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#left_injective"><span class="id" title="definition">left_injective</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#6498e6e308d8a143464cf2d2ba603d36"><span class="id" title="notation">*%</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#6498e6e308d8a143464cf2d2ba603d36"><span class="id" title="notation">R</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#5c59b35a0b51db520cf1fba473ecf127"><span class="id" title="notation">}</span></a>.<br/>
+
+<br/>
+</div>
+
+<div class="doc">
+ Due to noncommutativity, fractions are inverted.
+</div>
+<div class="code">
+<span class="id" title="keyword">Lemma</span> <a name="GRing.telescope_prodr"><span class="id" title="lemma">telescope_prodr</span></a> <span class="id" title="var">n</span> <span class="id" title="var">m</span> (<span class="id" title="var">f</span> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#nat"><span class="id" title="inductive">nat</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.UnitRingTheory.R"><span class="id" title="variable">R</span></a>) :<br/>
+&nbsp;&nbsp;&nbsp;&nbsp;<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">(</span></a><span class="id" title="keyword">∀</span> <span class="id" title="var">k</span>, <a class="idref" href="mathcomp.algebra.ssralg.html#n"><span class="id" title="variable">n</span></a> <a class="idref" href="mathcomp.ssreflect.ssrnat.html#432e31800fc09abd260feb634dbbd1af"><span class="id" title="notation">&lt;</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#k"><span class="id" title="variable">k</span></a> <a class="idref" href="mathcomp.ssreflect.ssrnat.html#432e31800fc09abd260feb634dbbd1af"><span class="id" title="notation">&lt;</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#m"><span class="id" title="variable">m</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#f"><span class="id" title="variable">f</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#k"><span class="id" title="variable">k</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#1e40fee506a85b20590ef299005b003d"><span class="id" title="notation">\</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#1e40fee506a85b20590ef299005b003d"><span class="id" title="notation">is</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#1e40fee506a85b20590ef299005b003d"><span class="id" title="notation">a</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.unit"><span class="id" title="definition">unit</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">)</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#n"><span class="id" title="variable">n</span></a> <a class="idref" href="mathcomp.ssreflect.ssrnat.html#989c98e7ddd65d5bf37c334ff2076de8"><span class="id" title="notation">&lt;</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#m"><span class="id" title="variable">m</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a><br/>
+&nbsp;&nbsp;<a class="idref" href="mathcomp.algebra.ssralg.html#0efa7b1cdb084a1541f915d91ff051e5"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#0efa7b1cdb084a1541f915d91ff051e5"><span class="id" title="notation">prod_</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#0efa7b1cdb084a1541f915d91ff051e5"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#n"><span class="id" title="variable">n</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#0efa7b1cdb084a1541f915d91ff051e5"><span class="id" title="notation">≤</span></a> <span class="id" title="var">k</span> <a class="idref" href="mathcomp.algebra.ssralg.html#0efa7b1cdb084a1541f915d91ff051e5"><span class="id" title="notation">&lt;</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#m"><span class="id" title="variable">m</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#0efa7b1cdb084a1541f915d91ff051e5"><span class="id" title="notation">)</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#0efa7b1cdb084a1541f915d91ff051e5"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#f"><span class="id" title="variable">f</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#k"><span class="id" title="variable">k</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#1adb36345c2607a4dd991537de5ddba3"><span class="id" title="notation">/</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#f"><span class="id" title="variable">f</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#k"><span class="id" title="variable">k</span></a><a class="idref" href="mathcomp.ssreflect.ssrnat.html#361454269931ea8643f7b402f2ab7222"><span class="id" title="notation">.+1</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#0efa7b1cdb084a1541f915d91ff051e5"><span class="id" title="notation">)</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#f"><span class="id" title="variable">f</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#n"><span class="id" title="variable">n</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#1adb36345c2607a4dd991537de5ddba3"><span class="id" title="notation">/</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#f"><span class="id" title="variable">f</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#m"><span class="id" title="variable">m</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.commrV"><span class="id" title="lemma">commrV</span></a> <span class="id" title="var">x</span> <span class="id" title="var">y</span> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.comm"><span class="id" title="definition">comm</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#y"><span class="id" title="variable">y</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.comm"><span class="id" title="definition">comm</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#y"><span class="id" title="variable">y</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#7f97e90bec2e67d9beef5851649e3fb1"><span class="id" title="notation">^-1</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.unitrE"><span class="id" title="lemma">unitrE</span></a> <span class="id" title="var">x</span> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#1e40fee506a85b20590ef299005b003d"><span class="id" title="notation">\</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#1e40fee506a85b20590ef299005b003d"><span class="id" title="notation">is</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#1e40fee506a85b20590ef299005b003d"><span class="id" title="notation">a</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.unit"><span class="id" title="definition">unit</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">)</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#1adb36345c2607a4dd991537de5ddba3"><span class="id" title="notation">/</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#17d28d004d0863cb022d4ce832ddaaae"><span class="id" title="notation">==</span></a> 1<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">)</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.invrK"><span class="id" title="lemma">invrK</span></a> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#involutive"><span class="id" title="definition">involutive</span></a> (@<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.inv"><span class="id" title="definition">inv</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.UnitRingTheory.R"><span class="id" title="variable">R</span></a>).<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.invr_inj"><span class="id" title="lemma">invr_inj</span></a> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#injective"><span class="id" title="definition">injective</span></a> (@<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.inv"><span class="id" title="definition">inv</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.UnitRingTheory.R"><span class="id" title="variable">R</span></a>).<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.unitrV"><span class="id" title="lemma">unitrV</span></a> <span class="id" title="var">x</span> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#7f97e90bec2e67d9beef5851649e3fb1"><span class="id" title="notation">^-1</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">\</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">in</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.unit"><span class="id" title="definition">unit</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">)</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">\</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">in</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.unit"><span class="id" title="definition">unit</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">)</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.unitr1"><span class="id" title="lemma">unitr1</span></a> : 1 <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">\</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">in</span></a> @<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.unit"><span class="id" title="definition">unit</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.UnitRingTheory.R"><span class="id" title="variable">R</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.invr1"><span class="id" title="lemma">invr1</span></a> : 1<a class="idref" href="mathcomp.algebra.ssralg.html#7f97e90bec2e67d9beef5851649e3fb1"><span class="id" title="notation">^-1</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#8f9364556521ebb498093f28eea2240f"><span class="id" title="notation">=</span></a> 1 <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#8f9364556521ebb498093f28eea2240f"><span class="id" title="notation">:&gt;</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.UnitRingTheory.R"><span class="id" title="variable">R</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.div1r"><span class="id" title="lemma">div1r</span></a> <span class="id" title="var">x</span> : 1 <a class="idref" href="mathcomp.algebra.ssralg.html#1adb36345c2607a4dd991537de5ddba3"><span class="id" title="notation">/</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#7f97e90bec2e67d9beef5851649e3fb1"><span class="id" title="notation">^-1</span></a>. <br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.divr1"><span class="id" title="lemma">divr1</span></a> <span class="id" title="var">x</span> : <a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#1adb36345c2607a4dd991537de5ddba3"><span class="id" title="notation">/</span></a> 1 <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a>. <br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.natr_div"><span class="id" title="lemma">natr_div</span></a> <span class="id" title="var">m</span> <span class="id" title="var">d</span> :<br/>
+&nbsp;&nbsp;<a class="idref" href="mathcomp.algebra.ssralg.html#d"><span class="id" title="variable">d</span></a> <a class="idref" href="mathcomp.ssreflect.div.html#aa34fd1c61c5cf0a3356b624a5d2afed"><span class="id" title="notation">%|</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#m"><span class="id" title="variable">m</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#d"><span class="id" title="variable">d</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#c191333b9c7c034282647fbffacc9d18"><span class="id" title="notation">%:</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#c191333b9c7c034282647fbffacc9d18"><span class="id" title="notation">R</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#1e40fee506a85b20590ef299005b003d"><span class="id" title="notation">\</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#1e40fee506a85b20590ef299005b003d"><span class="id" title="notation">is</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#1e40fee506a85b20590ef299005b003d"><span class="id" title="notation">a</span></a> @<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.unit"><span class="id" title="definition">unit</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.UnitRingTheory.R"><span class="id" title="variable">R</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#c191333b9c7c034282647fbffacc9d18"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#m"><span class="id" title="variable">m</span></a> <a class="idref" href="mathcomp.ssreflect.div.html#df17451da28eb630dbb51b12706ba39e"><span class="id" title="notation">%/</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#d"><span class="id" title="variable">d</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#c191333b9c7c034282647fbffacc9d18"><span class="id" title="notation">)%:</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#c191333b9c7c034282647fbffacc9d18"><span class="id" title="notation">R</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#8f9364556521ebb498093f28eea2240f"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#m"><span class="id" title="variable">m</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#c191333b9c7c034282647fbffacc9d18"><span class="id" title="notation">%:</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#c191333b9c7c034282647fbffacc9d18"><span class="id" title="notation">R</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#1adb36345c2607a4dd991537de5ddba3"><span class="id" title="notation">/</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#d"><span class="id" title="variable">d</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#c191333b9c7c034282647fbffacc9d18"><span class="id" title="notation">%:</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#c191333b9c7c034282647fbffacc9d18"><span class="id" title="notation">R</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#8f9364556521ebb498093f28eea2240f"><span class="id" title="notation">:&gt;</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.UnitRingTheory.R"><span class="id" title="variable">R</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.divrI"><span class="id" title="lemma">divrI</span></a> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#5c59b35a0b51db520cf1fba473ecf127"><span class="id" title="notation">{</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#5c59b35a0b51db520cf1fba473ecf127"><span class="id" title="notation">in</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.unit"><span class="id" title="definition">unit</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#5c59b35a0b51db520cf1fba473ecf127"><span class="id" title="notation">,</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#right_injective"><span class="id" title="definition">right_injective</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.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#1adb36345c2607a4dd991537de5ddba3"><span class="id" title="notation">/</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#y"><span class="id" title="variable">y</span></a>)<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#5c59b35a0b51db520cf1fba473ecf127"><span class="id" title="notation">}</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.divIr"><span class="id" title="lemma">divIr</span></a> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#5c59b35a0b51db520cf1fba473ecf127"><span class="id" title="notation">{</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#5c59b35a0b51db520cf1fba473ecf127"><span class="id" title="notation">in</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.unit"><span class="id" title="definition">unit</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#5c59b35a0b51db520cf1fba473ecf127"><span class="id" title="notation">,</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#left_injective"><span class="id" title="definition">left_injective</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.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#1adb36345c2607a4dd991537de5ddba3"><span class="id" title="notation">/</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#y"><span class="id" title="variable">y</span></a>)<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#5c59b35a0b51db520cf1fba473ecf127"><span class="id" title="notation">}</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.unitr0"><span class="id" title="lemma">unitr0</span></a> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">(</span></a>0 <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#1e40fee506a85b20590ef299005b003d"><span class="id" title="notation">\</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#1e40fee506a85b20590ef299005b003d"><span class="id" title="notation">is</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#1e40fee506a85b20590ef299005b003d"><span class="id" title="notation">a</span></a> @<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.unit"><span class="id" title="definition">unit</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.UnitRingTheory.R"><span class="id" title="variable">R</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">)</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#false"><span class="id" title="constructor">false</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.invr0"><span class="id" title="lemma">invr0</span></a> : 0<a class="idref" href="mathcomp.algebra.ssralg.html#7f97e90bec2e67d9beef5851649e3fb1"><span class="id" title="notation">^-1</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#8f9364556521ebb498093f28eea2240f"><span class="id" title="notation">=</span></a> 0 <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#8f9364556521ebb498093f28eea2240f"><span class="id" title="notation">:&gt;</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.UnitRingTheory.R"><span class="id" title="variable">R</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.unitrN1"><span class="id" title="lemma">unitrN1</span></a> : -1 <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#1e40fee506a85b20590ef299005b003d"><span class="id" title="notation">\</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#1e40fee506a85b20590ef299005b003d"><span class="id" title="notation">is</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#1e40fee506a85b20590ef299005b003d"><span class="id" title="notation">a</span></a> @<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.unit"><span class="id" title="definition">unit</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.UnitRingTheory.R"><span class="id" title="variable">R</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.invrN1"><span class="id" title="lemma">invrN1</span></a> : <a class="idref" href="mathcomp.algebra.ssralg.html#7f97e90bec2e67d9beef5851649e3fb1"><span class="id" title="notation">(</span></a>-1<a class="idref" href="mathcomp.algebra.ssralg.html#7f97e90bec2e67d9beef5851649e3fb1"><span class="id" title="notation">)^-1</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#8f9364556521ebb498093f28eea2240f"><span class="id" title="notation">=</span></a> -1 <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#8f9364556521ebb498093f28eea2240f"><span class="id" title="notation">:&gt;</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.UnitRingTheory.R"><span class="id" title="variable">R</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.invr_sign"><span class="id" title="lemma">invr_sign</span></a> <span class="id" title="var">n</span> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#8f9364556521ebb498093f28eea2240f"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#17bbfbf532cf26564c92faf790f04f34"><span class="id" title="notation">(</span></a>-1<a class="idref" href="mathcomp.algebra.ssralg.html#17bbfbf532cf26564c92faf790f04f34"><span class="id" title="notation">)</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#17bbfbf532cf26564c92faf790f04f34"><span class="id" title="notation">^-</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#n"><span class="id" title="variable">n</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#8f9364556521ebb498093f28eea2240f"><span class="id" title="notation">)</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#8f9364556521ebb498093f28eea2240f"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#b5a6699e28c97bb33352772cfa3ea869"><span class="id" title="notation">(</span></a>-1<a class="idref" href="mathcomp.algebra.ssralg.html#b5a6699e28c97bb33352772cfa3ea869"><span class="id" title="notation">)</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#b5a6699e28c97bb33352772cfa3ea869"><span class="id" title="notation">^+</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#n"><span class="id" title="variable">n</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#8f9364556521ebb498093f28eea2240f"><span class="id" title="notation">:&gt;</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.UnitRingTheory.R"><span class="id" title="variable">R</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.unitrMl"><span class="id" title="lemma">unitrMl</span></a> <span class="id" title="var">x</span> <span class="id" title="var">y</span> : <a class="idref" href="mathcomp.algebra.ssralg.html#y"><span class="id" title="variable">y</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#1e40fee506a85b20590ef299005b003d"><span class="id" title="notation">\</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#1e40fee506a85b20590ef299005b003d"><span class="id" title="notation">is</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#1e40fee506a85b20590ef299005b003d"><span class="id" title="notation">a</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.unit"><span class="id" title="definition">unit</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#ed99e7035d9a1f8a2c1515be81ac2e5f"><span class="id" title="notation">×</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#y"><span class="id" title="variable">y</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#1e40fee506a85b20590ef299005b003d"><span class="id" title="notation">\</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#1e40fee506a85b20590ef299005b003d"><span class="id" title="notation">is</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#1e40fee506a85b20590ef299005b003d"><span class="id" title="notation">a</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.unit"><span class="id" title="definition">unit</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">)</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#1e40fee506a85b20590ef299005b003d"><span class="id" title="notation">\</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#1e40fee506a85b20590ef299005b003d"><span class="id" title="notation">is</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#1e40fee506a85b20590ef299005b003d"><span class="id" title="notation">a</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.unit"><span class="id" title="definition">unit</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">)</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.unitrMr"><span class="id" title="lemma">unitrMr</span></a> <span class="id" title="var">x</span> <span class="id" title="var">y</span> : <a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#1e40fee506a85b20590ef299005b003d"><span class="id" title="notation">\</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#1e40fee506a85b20590ef299005b003d"><span class="id" title="notation">is</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#1e40fee506a85b20590ef299005b003d"><span class="id" title="notation">a</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.unit"><span class="id" title="definition">unit</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#ed99e7035d9a1f8a2c1515be81ac2e5f"><span class="id" title="notation">×</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#y"><span class="id" title="variable">y</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#1e40fee506a85b20590ef299005b003d"><span class="id" title="notation">\</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#1e40fee506a85b20590ef299005b003d"><span class="id" title="notation">is</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#1e40fee506a85b20590ef299005b003d"><span class="id" title="notation">a</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.unit"><span class="id" title="definition">unit</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">)</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#y"><span class="id" title="variable">y</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#1e40fee506a85b20590ef299005b003d"><span class="id" title="notation">\</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#1e40fee506a85b20590ef299005b003d"><span class="id" title="notation">is</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#1e40fee506a85b20590ef299005b003d"><span class="id" title="notation">a</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.unit"><span class="id" title="definition">unit</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">)</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.invrM"><span class="id" title="lemma">invrM</span></a> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#2bba53854f326a714d377124cccec593"><span class="id" title="notation">{</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#2bba53854f326a714d377124cccec593"><span class="id" title="notation">in</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.unit"><span class="id" title="definition">unit</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#2bba53854f326a714d377124cccec593"><span class="id" title="notation">&amp;,</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.algebra.ssralg.html#7f97e90bec2e67d9beef5851649e3fb1"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#ed99e7035d9a1f8a2c1515be81ac2e5f"><span class="id" title="notation">×</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#y"><span class="id" title="variable">y</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#7f97e90bec2e67d9beef5851649e3fb1"><span class="id" title="notation">)^-1</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#y"><span class="id" title="variable">y</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#7f97e90bec2e67d9beef5851649e3fb1"><span class="id" title="notation">^-1</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#ed99e7035d9a1f8a2c1515be81ac2e5f"><span class="id" title="notation">×</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#7f97e90bec2e67d9beef5851649e3fb1"><span class="id" title="notation">^-1</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#2bba53854f326a714d377124cccec593"><span class="id" title="notation">}</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.unitrM_comm"><span class="id" title="lemma">unitrM_comm</span></a> <span class="id" title="var">x</span> <span class="id" title="var">y</span> :<br/>
+&nbsp;&nbsp;<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.comm"><span class="id" title="definition">comm</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#y"><span class="id" title="variable">y</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#ed99e7035d9a1f8a2c1515be81ac2e5f"><span class="id" title="notation">×</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#y"><span class="id" title="variable">y</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#1e40fee506a85b20590ef299005b003d"><span class="id" title="notation">\</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#1e40fee506a85b20590ef299005b003d"><span class="id" title="notation">is</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#1e40fee506a85b20590ef299005b003d"><span class="id" title="notation">a</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.unit"><span class="id" title="definition">unit</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">)</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#49ac24efa716d8b0ee8943bc1d1769a9"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#1e40fee506a85b20590ef299005b003d"><span class="id" title="notation">\</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#1e40fee506a85b20590ef299005b003d"><span class="id" title="notation">is</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#1e40fee506a85b20590ef299005b003d"><span class="id" title="notation">a</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.unit"><span class="id" title="definition">unit</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#49ac24efa716d8b0ee8943bc1d1769a9"><span class="id" title="notation">)</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#49ac24efa716d8b0ee8943bc1d1769a9"><span class="id" title="notation">&amp;&amp;</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#49ac24efa716d8b0ee8943bc1d1769a9"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#y"><span class="id" title="variable">y</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#1e40fee506a85b20590ef299005b003d"><span class="id" title="notation">\</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#1e40fee506a85b20590ef299005b003d"><span class="id" title="notation">is</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#1e40fee506a85b20590ef299005b003d"><span class="id" title="notation">a</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.unit"><span class="id" title="definition">unit</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#49ac24efa716d8b0ee8943bc1d1769a9"><span class="id" title="notation">)</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.unitrX"><span class="id" title="lemma">unitrX</span></a> <span class="id" title="var">x</span> <span class="id" title="var">n</span> : <a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#1e40fee506a85b20590ef299005b003d"><span class="id" title="notation">\</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#1e40fee506a85b20590ef299005b003d"><span class="id" title="notation">is</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#1e40fee506a85b20590ef299005b003d"><span class="id" title="notation">a</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.unit"><span class="id" title="definition">unit</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#b5a6699e28c97bb33352772cfa3ea869"><span class="id" title="notation">^+</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#n"><span class="id" title="variable">n</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#1e40fee506a85b20590ef299005b003d"><span class="id" title="notation">\</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#1e40fee506a85b20590ef299005b003d"><span class="id" title="notation">is</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#1e40fee506a85b20590ef299005b003d"><span class="id" title="notation">a</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.unit"><span class="id" title="definition">unit</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.unitrX_pos"><span class="id" title="lemma">unitrX_pos</span></a> <span class="id" title="var">x</span> <span class="id" title="var">n</span> : <a class="idref" href="mathcomp.algebra.ssralg.html#n"><span class="id" title="variable">n</span></a> <a class="idref" href="mathcomp.ssreflect.ssrnat.html#19ab5cfd7e4f60fa14f22b576013bd96"><span class="id" title="notation">&gt;</span></a> 0 <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#b5a6699e28c97bb33352772cfa3ea869"><span class="id" title="notation">^+</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#n"><span class="id" title="variable">n</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">\</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">in</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.unit"><span class="id" title="definition">unit</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">)</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">\</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">in</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.unit"><span class="id" title="definition">unit</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">)</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.exprVn"><span class="id" title="lemma">exprVn</span></a> <span class="id" title="var">x</span> <span class="id" title="var">n</span> : <a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#7f97e90bec2e67d9beef5851649e3fb1"><span class="id" title="notation">^-1</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#b5a6699e28c97bb33352772cfa3ea869"><span class="id" title="notation">^+</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#n"><span class="id" title="variable">n</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#17bbfbf532cf26564c92faf790f04f34"><span class="id" title="notation">^-</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#n"><span class="id" title="variable">n</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.exprB"><span class="id" title="lemma">exprB</span></a> <span class="id" title="var">m</span> <span class="id" title="var">n</span> <span class="id" title="var">x</span> : <a class="idref" href="mathcomp.algebra.ssralg.html#n"><span class="id" title="variable">n</span></a> <a class="idref" href="mathcomp.ssreflect.ssrnat.html#9b077c369e19739ef880736ba34623ff"><span class="id" title="notation">≤</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#m"><span class="id" title="variable">m</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#1e40fee506a85b20590ef299005b003d"><span class="id" title="notation">\</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#1e40fee506a85b20590ef299005b003d"><span class="id" title="notation">is</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#1e40fee506a85b20590ef299005b003d"><span class="id" title="notation">a</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.unit"><span class="id" title="definition">unit</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#b5a6699e28c97bb33352772cfa3ea869"><span class="id" title="notation">^+</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#b5a6699e28c97bb33352772cfa3ea869"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#m"><span class="id" title="variable">m</span></a> <a class="idref" href="mathcomp.ssreflect.ssrnat.html#9482aae3d3b06e249765c1225dbb8cbb"><span class="id" title="notation">-</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#n"><span class="id" title="variable">n</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#b5a6699e28c97bb33352772cfa3ea869"><span class="id" title="notation">)</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#b5a6699e28c97bb33352772cfa3ea869"><span class="id" title="notation">^+</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#m"><span class="id" title="variable">m</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#1adb36345c2607a4dd991537de5ddba3"><span class="id" title="notation">/</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#b5a6699e28c97bb33352772cfa3ea869"><span class="id" title="notation">^+</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#n"><span class="id" title="variable">n</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.invr_neq0"><span class="id" title="lemma">invr_neq0</span></a> <span class="id" title="var">x</span> : <a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#b1eeadc2feabc7422252baa895418c7b"><span class="id" title="notation">!=</span></a> 0 <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#7f97e90bec2e67d9beef5851649e3fb1"><span class="id" title="notation">^-1</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#b1eeadc2feabc7422252baa895418c7b"><span class="id" title="notation">!=</span></a> 0.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.invr_eq0"><span class="id" title="lemma">invr_eq0</span></a> <span class="id" title="var">x</span> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#7f97e90bec2e67d9beef5851649e3fb1"><span class="id" title="notation">^-1</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#17d28d004d0863cb022d4ce832ddaaae"><span class="id" title="notation">==</span></a> 0<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">)</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#17d28d004d0863cb022d4ce832ddaaae"><span class="id" title="notation">==</span></a> 0<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">)</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.invr_eq1"><span class="id" title="lemma">invr_eq1</span></a> <span class="id" title="var">x</span> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#7f97e90bec2e67d9beef5851649e3fb1"><span class="id" title="notation">^-1</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#17d28d004d0863cb022d4ce832ddaaae"><span class="id" title="notation">==</span></a> 1<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">)</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#17d28d004d0863cb022d4ce832ddaaae"><span class="id" title="notation">==</span></a> 1<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">)</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.rev_unitrP"><span class="id" title="lemma">rev_unitrP</span></a> (<span class="id" title="var">x</span> <span class="id" title="var">y</span> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.UnitRingTheory.R"><span class="id" title="variable">R</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#a92cdad26f40e318882f385be2783a4c"><span class="id" title="notation">^</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#a92cdad26f40e318882f385be2783a4c"><span class="id" title="notation">c</span></a>) : <a class="idref" href="mathcomp.algebra.ssralg.html#y"><span class="id" title="variable">y</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#ed99e7035d9a1f8a2c1515be81ac2e5f"><span class="id" title="notation">×</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> 1 <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d82a7d96d3659d805ffe732283716822"><span class="id" title="notation">∧</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#ed99e7035d9a1f8a2c1515be81ac2e5f"><span class="id" title="notation">×</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#y"><span class="id" title="variable">y</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> 1 <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#1e40fee506a85b20590ef299005b003d"><span class="id" title="notation">\</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#1e40fee506a85b20590ef299005b003d"><span class="id" title="notation">is</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#1e40fee506a85b20590ef299005b003d"><span class="id" title="notation">a</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.unit"><span class="id" title="definition">unit</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.converse_unitRingMixin"><span class="id" title="definition">converse_unitRingMixin</span></a> :=<br/>
+&nbsp;&nbsp;@<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Mixin"><span class="id" title="constructor">UnitRing.Mixin</span></a> <span class="id" title="var">_</span> (<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssreflect.html#4509b22bf26e3d6d771897e22bd8bc8f"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#GRing.unit"><span class="id" title="definition">unit</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssreflect.html#4509b22bf26e3d6d771897e22bd8bc8f"><span class="id" title="notation">:</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#pred_class"><span class="id" title="abbreviation">pred_class</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssreflect.html#4509b22bf26e3d6d771897e22bd8bc8f"><span class="id" title="notation">)</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssreflect.html#4509b22bf26e3d6d771897e22bd8bc8f"><span class="id" title="notation">:</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#pred"><span class="id" title="definition">pred</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.UnitRingTheory.R"><span class="id" title="variable">R</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#a92cdad26f40e318882f385be2783a4c"><span class="id" title="notation">^</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#a92cdad26f40e318882f385be2783a4c"><span class="id" title="notation">c</span></a>) <span class="id" title="var">_</span><br/>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.mulrV"><span class="id" title="definition">mulrV</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.mulVr"><span class="id" title="lemma">mulVr</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.rev_unitrP"><span class="id" title="lemma">rev_unitrP</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.invr_out"><span class="id" title="lemma">invr_out</span></a>.<br/>
+<span class="id" title="keyword">Canonical</span> <span class="id" title="var">converse_unitRingType</span> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.UnitRingType"><span class="id" title="abbreviation">UnitRingType</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.UnitRingTheory.R"><span class="id" title="variable">R</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#a92cdad26f40e318882f385be2783a4c"><span class="id" title="notation">^</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#a92cdad26f40e318882f385be2783a4c"><span class="id" title="notation">c</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.converse_unitRingMixin"><span class="id" title="definition">converse_unitRingMixin</span></a>.<br/>
+<span class="id" title="keyword">Canonical</span> <span class="id" title="var">regular_unitRingType</span> := <a class="idref" href="mathcomp.algebra.ssralg.html#f02859ca87d7563e473a6ba817bdc33f"><span class="id" title="notation">[</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#f02859ca87d7563e473a6ba817bdc33f"><span class="id" title="notation">unitRingType</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#f02859ca87d7563e473a6ba817bdc33f"><span class="id" title="notation">of</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.UnitRingTheory.R"><span class="id" title="variable">R</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#44fd865ce10e1d30970d09bdd85a0c8e"><span class="id" title="notation">^</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#44fd865ce10e1d30970d09bdd85a0c8e"><span class="id" title="notation">o</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#f02859ca87d7563e473a6ba817bdc33f"><span class="id" title="notation">]</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Section</span> <a name="GRing.UnitRingTheory.ClosedPredicates"><span class="id" title="section">ClosedPredicates</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Variables</span> <a name="GRing.UnitRingTheory.ClosedPredicates.S"><span class="id" title="variable">S</span></a> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#predPredType"><span class="id" title="definition">predPredType</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.UnitRingTheory.R"><span class="id" title="variable">R</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.invr_closed"><span class="id" title="definition">invr_closed</span></a> := <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#5c59b35a0b51db520cf1fba473ecf127"><span class="id" title="notation">{</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#5c59b35a0b51db520cf1fba473ecf127"><span class="id" title="notation">in</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.UnitRingTheory.ClosedPredicates.S"><span class="id" title="variable">S</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#5c59b35a0b51db520cf1fba473ecf127"><span class="id" title="notation">,</span></a> <span class="id" title="keyword">∀</span> <span class="id" title="var">x</span>, <a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#7f97e90bec2e67d9beef5851649e3fb1"><span class="id" title="notation">^-1</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">\</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">in</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.UnitRingTheory.ClosedPredicates.S"><span class="id" title="variable">S</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#5c59b35a0b51db520cf1fba473ecf127"><span class="id" title="notation">}</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.divr_2closed"><span class="id" title="definition">divr_2closed</span></a> := <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#2bba53854f326a714d377124cccec593"><span class="id" title="notation">{</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#2bba53854f326a714d377124cccec593"><span class="id" title="notation">in</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.UnitRingTheory.ClosedPredicates.S"><span class="id" title="variable">S</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#2bba53854f326a714d377124cccec593"><span class="id" title="notation">&amp;,</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.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#1adb36345c2607a4dd991537de5ddba3"><span class="id" title="notation">/</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#y"><span class="id" title="variable">y</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">\</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">in</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.UnitRingTheory.ClosedPredicates.S"><span class="id" title="variable">S</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#2bba53854f326a714d377124cccec593"><span class="id" title="notation">}</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.divr_closed"><span class="id" title="definition">divr_closed</span></a> := 1 <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">\</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">in</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.UnitRingTheory.ClosedPredicates.S"><span class="id" title="variable">S</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d82a7d96d3659d805ffe732283716822"><span class="id" title="notation">∧</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.divr_2closed"><span class="id" title="definition">divr_2closed</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.sdivr_closed"><span class="id" title="definition">sdivr_closed</span></a> := -1 <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">\</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">in</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.UnitRingTheory.ClosedPredicates.S"><span class="id" title="variable">S</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d82a7d96d3659d805ffe732283716822"><span class="id" title="notation">∧</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.divr_2closed"><span class="id" title="definition">divr_2closed</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.divring_closed"><span class="id" title="definition">divring_closed</span></a> := <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#962a3cb7af009aedac7986e261646bd1"><span class="id" title="notation">[/\</span></a> 1 <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">\</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">in</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.UnitRingTheory.ClosedPredicates.S"><span class="id" title="variable">S</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#962a3cb7af009aedac7986e261646bd1"><span class="id" title="notation">,</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.subr_2closed"><span class="id" title="definition">subr_2closed</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.UnitRingTheory.ClosedPredicates.S"><span class="id" title="variable">S</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#962a3cb7af009aedac7986e261646bd1"><span class="id" title="notation">&amp;</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.divr_2closed"><span class="id" title="definition">divr_2closed</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#962a3cb7af009aedac7986e261646bd1"><span class="id" title="notation">]</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.divr_closedV"><span class="id" title="lemma">divr_closedV</span></a> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.divr_closed"><span class="id" title="definition">divr_closed</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.invr_closed"><span class="id" title="definition">invr_closed</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.divr_closedM"><span class="id" title="lemma">divr_closedM</span></a> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.divr_closed"><span class="id" title="definition">divr_closed</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.mulr_closed"><span class="id" title="definition">mulr_closed</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.UnitRingTheory.ClosedPredicates.S"><span class="id" title="variable">S</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.sdivr_closed_div"><span class="id" title="lemma">sdivr_closed_div</span></a> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.sdivr_closed"><span class="id" title="definition">sdivr_closed</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.divr_closed"><span class="id" title="definition">divr_closed</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.sdivr_closedM"><span class="id" title="lemma">sdivr_closedM</span></a> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.sdivr_closed"><span class="id" title="definition">sdivr_closed</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.smulr_closed"><span class="id" title="definition">smulr_closed</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.UnitRingTheory.ClosedPredicates.S"><span class="id" title="variable">S</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.divring_closedBM"><span class="id" title="lemma">divring_closedBM</span></a> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.divring_closed"><span class="id" title="definition">divring_closed</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.subring_closed"><span class="id" title="definition">subring_closed</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.UnitRingTheory.ClosedPredicates.S"><span class="id" title="variable">S</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.divring_closed_div"><span class="id" title="lemma">divring_closed_div</span></a> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.divring_closed"><span class="id" title="definition">divring_closed</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.sdivr_closed"><span class="id" title="definition">sdivr_closed</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">End</span> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.UnitRingTheory.ClosedPredicates"><span class="id" title="section">ClosedPredicates</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">End</span> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.UnitRingTheory"><span class="id" title="section">UnitRingTheory</span></a>.<br/>
+
+<br/>
+
+<br/>
+<span class="id" title="keyword">Section</span> <a name="GRing.UnitRingMorphism"><span class="id" title="section">UnitRingMorphism</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Variables</span> (<a name="GRing.UnitRingMorphism.R"><span class="id" title="variable">R</span></a> <a name="GRing.UnitRingMorphism.S"><span class="id" title="variable">S</span></a> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.unitRingType"><span class="id" title="abbreviation">unitRingType</span></a>) (<a name="GRing.UnitRingMorphism.f"><span class="id" title="variable">f</span></a> : <a class="idref" href="mathcomp.algebra.ssralg.html#0c709ebe43ddbd7719f75250a7b916d9"><span class="id" title="notation">{</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#0c709ebe43ddbd7719f75250a7b916d9"><span class="id" title="notation">rmorphism</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#R"><span class="id" title="variable">R</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#S"><span class="id" title="variable">S</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#0c709ebe43ddbd7719f75250a7b916d9"><span class="id" title="notation">}</span></a>).<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.rmorph_unit"><span class="id" title="lemma">rmorph_unit</span></a> <span class="id" title="var">x</span> : <a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">\</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">in</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.unit"><span class="id" title="definition">unit</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.UnitRingMorphism.f"><span class="id" title="variable">f</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">\</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">in</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.unit"><span class="id" title="definition">unit</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.rmorphV"><span class="id" title="lemma">rmorphV</span></a> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#5c59b35a0b51db520cf1fba473ecf127"><span class="id" title="notation">{</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#5c59b35a0b51db520cf1fba473ecf127"><span class="id" title="notation">in</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.unit"><span class="id" title="definition">unit</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#5c59b35a0b51db520cf1fba473ecf127"><span class="id" title="notation">,</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#c3c88e2b30b681cd767a54649faf5973"><span class="id" title="notation">{</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#c3c88e2b30b681cd767a54649faf5973"><span class="id" title="notation">morph</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.UnitRingMorphism.f"><span class="id" title="variable">f</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#c3c88e2b30b681cd767a54649faf5973"><span class="id" title="notation">:</span></a> <span class="id" title="var">x</span> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#c3c88e2b30b681cd767a54649faf5973"><span class="id" title="notation">/</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#7f97e90bec2e67d9beef5851649e3fb1"><span class="id" title="notation">^-1</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#c3c88e2b30b681cd767a54649faf5973"><span class="id" title="notation">}</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#5c59b35a0b51db520cf1fba473ecf127"><span class="id" title="notation">}</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.rmorph_div"><span class="id" title="lemma">rmorph_div</span></a> <span class="id" title="var">x</span> <span class="id" title="var">y</span> : <a class="idref" href="mathcomp.algebra.ssralg.html#y"><span class="id" title="variable">y</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">\</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">in</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.unit"><span class="id" title="definition">unit</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.UnitRingMorphism.f"><span class="id" title="variable">f</span></a> (<a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#1adb36345c2607a4dd991537de5ddba3"><span class="id" title="notation">/</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#y"><span class="id" title="variable">y</span></a>) <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.UnitRingMorphism.f"><span class="id" title="variable">f</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#1adb36345c2607a4dd991537de5ddba3"><span class="id" title="notation">/</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.UnitRingMorphism.f"><span class="id" title="variable">f</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#y"><span class="id" title="variable">y</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">End</span> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.UnitRingMorphism"><span class="id" title="section">UnitRingMorphism</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Module</span> <a name="GRing.ComUnitRing"><span class="id" title="module">ComUnitRing</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Section</span> <a name="GRing.ComUnitRing.Mixin"><span class="id" title="section">Mixin</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Variables</span> (<a name="GRing.ComUnitRing.Mixin.R"><span class="id" title="variable">R</span></a> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ComRing.Exports.comRingType"><span class="id" title="abbreviation">comRingType</span></a>) (<a name="GRing.ComUnitRing.Mixin.unit"><span class="id" title="variable">unit</span></a> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#pred"><span class="id" title="definition">pred</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#R"><span class="id" title="variable">R</span></a>) (<a name="GRing.ComUnitRing.Mixin.inv"><span class="id" title="variable">inv</span></a> : <a class="idref" href="mathcomp.algebra.ssralg.html#R"><span class="id" title="variable">R</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#R"><span class="id" title="variable">R</span></a>).<br/>
+<span class="id" title="keyword">Hypothesis</span> <a name="GRing.ComUnitRing.Mixin.mulVx"><span class="id" title="variable">mulVx</span></a> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#5c59b35a0b51db520cf1fba473ecf127"><span class="id" title="notation">{</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#5c59b35a0b51db520cf1fba473ecf127"><span class="id" title="notation">in</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ComUnitRing.Mixin.unit"><span class="id" title="variable">unit</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#5c59b35a0b51db520cf1fba473ecf127"><span class="id" title="notation">,</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#left_inverse"><span class="id" title="definition">left_inverse</span></a> 1 <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ComUnitRing.Mixin.inv"><span class="id" title="variable">inv</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#6498e6e308d8a143464cf2d2ba603d36"><span class="id" title="notation">*%</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#6498e6e308d8a143464cf2d2ba603d36"><span class="id" title="notation">R</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#5c59b35a0b51db520cf1fba473ecf127"><span class="id" title="notation">}</span></a>.<br/>
+<span class="id" title="keyword">Hypothesis</span> <a name="GRing.ComUnitRing.Mixin.unitPl"><span class="id" title="variable">unitPl</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.algebra.ssralg.html#y"><span class="id" title="variable">y</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#ed99e7035d9a1f8a2c1515be81ac2e5f"><span class="id" title="notation">×</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> 1 <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ComUnitRing.Mixin.unit"><span class="id" title="variable">unit</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Fact</span> <a name="GRing.ComUnitRing.mulC_mulrV"><span class="id" title="lemma">mulC_mulrV</span></a> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#5c59b35a0b51db520cf1fba473ecf127"><span class="id" title="notation">{</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#5c59b35a0b51db520cf1fba473ecf127"><span class="id" title="notation">in</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ComUnitRing.Mixin.unit"><span class="id" title="variable">unit</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#5c59b35a0b51db520cf1fba473ecf127"><span class="id" title="notation">,</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#right_inverse"><span class="id" title="definition">right_inverse</span></a> 1 <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ComUnitRing.Mixin.inv"><span class="id" title="variable">inv</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#6498e6e308d8a143464cf2d2ba603d36"><span class="id" title="notation">*%</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#6498e6e308d8a143464cf2d2ba603d36"><span class="id" title="notation">R</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#5c59b35a0b51db520cf1fba473ecf127"><span class="id" title="notation">}</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Fact</span> <a name="GRing.ComUnitRing.mulC_unitP"><span class="id" title="lemma">mulC_unitP</span></a> <span class="id" title="var">x</span> <span class="id" title="var">y</span> : <a class="idref" href="mathcomp.algebra.ssralg.html#y"><span class="id" title="variable">y</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#ed99e7035d9a1f8a2c1515be81ac2e5f"><span class="id" title="notation">×</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> 1 <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d82a7d96d3659d805ffe732283716822"><span class="id" title="notation">∧</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#ed99e7035d9a1f8a2c1515be81ac2e5f"><span class="id" title="notation">×</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#y"><span class="id" title="variable">y</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> 1 <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ComUnitRing.Mixin.unit"><span class="id" title="variable">unit</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.ComUnitRing.Mixin"><span class="id" title="definition">Mixin</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.UnitRing.Exports.UnitRingMixin"><span class="id" title="abbreviation">UnitRingMixin</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ComUnitRing.Mixin.mulVx"><span class="id" title="variable">mulVx</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ComUnitRing.mulC_mulrV"><span class="id" title="lemma">mulC_mulrV</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ComUnitRing.mulC_unitP"><span class="id" title="lemma">mulC_unitP</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">End</span> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ComUnitRing.Mixin"><span class="id" title="section">Mixin</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Section</span> <a name="GRing.ComUnitRing.ClassDef"><span class="id" title="section">ClassDef</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Record</span> <a name="GRing.ComUnitRing.class_of"><span class="id" title="record">class_of</span></a> (<span class="id" title="var">R</span> : <span class="id" title="keyword">Type</span>) : <span class="id" title="keyword">Type</span> := <a name="GRing.ComUnitRing.Class"><span class="id" title="constructor">Class</span></a> {<br/>
+&nbsp;&nbsp;<a name="GRing.ComUnitRing.base"><span class="id" title="projection">base</span></a> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ComRing.class_of"><span class="id" title="record">ComRing.class_of</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#R"><span class="id" title="variable">R</span></a>;<br/>
+&nbsp;&nbsp;<a name="GRing.ComUnitRing.mixin"><span class="id" title="projection">mixin</span></a> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.UnitRing.mixin_of"><span class="id" title="record">UnitRing.mixin_of</span></a> (<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Ring.Pack"><span class="id" title="constructor">Ring.Pack</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#base"><span class="id" title="method">base</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#R"><span class="id" title="variable">R</span></a>)<br/>
+}.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.ComUnitRing.base2"><span class="id" title="definition">base2</span></a> <span class="id" title="var">R</span> <span class="id" title="var">m</span> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.UnitRing.Class"><span class="id" title="constructor">UnitRing.Class</span></a> (@<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ComUnitRing.mixin"><span class="id" title="projection">mixin</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#R"><span class="id" title="variable">R</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#m"><span class="id" title="variable">m</span></a>).<br/>
+
+<br/>
+<span class="id" title="keyword">Structure</span> <a name="GRing.ComUnitRing.type"><span class="id" title="record">type</span></a> := <a name="GRing.ComUnitRing.Pack"><span class="id" title="constructor">Pack</span></a> {<a name="GRing.ComUnitRing.sort"><span class="id" title="projection">sort</span></a>; <span class="id" title="var">_</span> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ComUnitRing.class_of"><span class="id" title="record">class_of</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#sort"><span class="id" title="method">sort</span></a>; <span class="id" title="var">_</span> : <span class="id" title="keyword">Type</span>}.<br/>
+<span class="id" title="keyword">Variables</span> (<a name="GRing.ComUnitRing.ClassDef.T"><span class="id" title="variable">T</span></a> : <span class="id" title="keyword">Type</span>) (<a name="GRing.ComUnitRing.ClassDef.cT"><span class="id" title="variable">cT</span></a> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ComUnitRing.type"><span class="id" title="record">type</span></a>).<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.ComUnitRing.class"><span class="id" title="definition">class</span></a> := <span class="id" title="keyword">let</span>: <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ComUnitRing.Pack"><span class="id" title="constructor">Pack</span></a> <span class="id" title="var">_</span> <span class="id" title="var">c</span> <span class="id" title="var">_</span> <span class="id" title="keyword">as</span> <span class="id" title="var">cT'</span> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ComUnitRing.ClassDef.cT"><span class="id" title="variable">cT</span></a> <span class="id" title="keyword">return</span> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ComUnitRing.class_of"><span class="id" title="record">class_of</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#cT'"><span class="id" title="variable">cT'</span></a> <span class="id" title="tactic">in</span> <span class="id" title="var">c</span>.<br/>
+<span class="id" title="keyword">Let</span> <a name="GRing.ComUnitRing.ClassDef.xT"><span class="id" title="variable">xT</span></a> := <span class="id" title="keyword">let</span>: <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ComUnitRing.Pack"><span class="id" title="constructor">Pack</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="mathcomp.algebra.ssralg.html#GRing.ComUnitRing.ClassDef.cT"><span class="id" title="variable">cT</span></a> <span class="id" title="tactic">in</span> <span class="id" title="var">T</span>.<br/>
+<span class="id" title="keyword">Notation</span> <a name="GRing.ComUnitRing.xclass"><span class="id" title="abbreviation">xclass</span></a> := (<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ComUnitRing.class"><span class="id" title="definition">class</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssreflect.html#4509b22bf26e3d6d771897e22bd8bc8f"><span class="id" title="notation">:</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ComUnitRing.class_of"><span class="id" title="record">class_of</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ComUnitRing.ClassDef.xT"><span class="id" title="variable">xT</span></a>).<br/>
+
+<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.ComUnitRing.pack"><span class="id" title="definition">pack</span></a> :=<br/>
+&nbsp;&nbsp;<span class="id" title="keyword">fun</span> <span class="id" title="var">bT</span> <span class="id" title="var">b</span> &amp; <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#phant_id"><span class="id" title="definition">phant_id</span></a> (<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ComRing.class"><span class="id" title="definition">ComRing.class</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#bT"><span class="id" title="variable">bT</span></a>) (<a class="idref" href="mathcomp.algebra.ssralg.html#b"><span class="id" title="variable">b</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssreflect.html#4509b22bf26e3d6d771897e22bd8bc8f"><span class="id" title="notation">:</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ComRing.class_of"><span class="id" title="record">ComRing.class_of</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ComUnitRing.ClassDef.T"><span class="id" title="variable">T</span></a>) ⇒<br/>
+&nbsp;&nbsp;<span class="id" title="keyword">fun</span> <span class="id" title="var">mT</span> <span class="id" title="var">m</span> &amp; <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#phant_id"><span class="id" title="definition">phant_id</span></a> (<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.UnitRing.class"><span class="id" title="definition">UnitRing.class</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#mT"><span class="id" title="variable">mT</span></a>) (@<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.UnitRing.Class"><span class="id" title="constructor">UnitRing.Class</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ComUnitRing.ClassDef.T"><span class="id" title="variable">T</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#b"><span class="id" title="variable">b</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#m"><span class="id" title="variable">m</span></a>) ⇒<br/>
+&nbsp;&nbsp;<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ComUnitRing.Pack"><span class="id" title="constructor">Pack</span></a> (@<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ComUnitRing.Class"><span class="id" title="constructor">Class</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ComUnitRing.ClassDef.T"><span class="id" title="variable">T</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#b"><span class="id" title="variable">b</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#m"><span class="id" title="variable">m</span></a>) <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ComUnitRing.ClassDef.T"><span class="id" title="variable">T</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.ComUnitRing.eqType"><span class="id" title="definition">eqType</span></a> := @<a class="idref" href="mathcomp.ssreflect.eqtype.html#Equality.Pack"><span class="id" title="constructor">Equality.Pack</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ComUnitRing.ClassDef.cT"><span class="id" title="variable">cT</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ComUnitRing.xclass"><span class="id" title="abbreviation">xclass</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ComUnitRing.ClassDef.xT"><span class="id" title="variable">xT</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.ComUnitRing.choiceType"><span class="id" title="definition">choiceType</span></a> := @<a class="idref" href="mathcomp.ssreflect.choice.html#Choice.Pack"><span class="id" title="constructor">Choice.Pack</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ComUnitRing.ClassDef.cT"><span class="id" title="variable">cT</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ComUnitRing.xclass"><span class="id" title="abbreviation">xclass</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ComUnitRing.ClassDef.xT"><span class="id" title="variable">xT</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.ComUnitRing.zmodType"><span class="id" title="definition">zmodType</span></a> := @<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Zmodule.Pack"><span class="id" title="constructor">Zmodule.Pack</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ComUnitRing.ClassDef.cT"><span class="id" title="variable">cT</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ComUnitRing.xclass"><span class="id" title="abbreviation">xclass</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ComUnitRing.ClassDef.xT"><span class="id" title="variable">xT</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.ComUnitRing.ringType"><span class="id" title="definition">ringType</span></a> := @<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Ring.Pack"><span class="id" title="constructor">Ring.Pack</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ComUnitRing.ClassDef.cT"><span class="id" title="variable">cT</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ComUnitRing.xclass"><span class="id" title="abbreviation">xclass</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ComUnitRing.ClassDef.xT"><span class="id" title="variable">xT</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.ComUnitRing.comRingType"><span class="id" title="definition">comRingType</span></a> := @<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ComRing.Pack"><span class="id" title="constructor">ComRing.Pack</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ComUnitRing.ClassDef.cT"><span class="id" title="variable">cT</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ComUnitRing.xclass"><span class="id" title="abbreviation">xclass</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ComUnitRing.ClassDef.xT"><span class="id" title="variable">xT</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.ComUnitRing.unitRingType"><span class="id" title="definition">unitRingType</span></a> := @<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.UnitRing.Pack"><span class="id" title="constructor">UnitRing.Pack</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ComUnitRing.ClassDef.cT"><span class="id" title="variable">cT</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ComUnitRing.xclass"><span class="id" title="abbreviation">xclass</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ComUnitRing.ClassDef.xT"><span class="id" title="variable">xT</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.ComUnitRing.com_unitRingType"><span class="id" title="definition">com_unitRingType</span></a> := @<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.UnitRing.Pack"><span class="id" title="constructor">UnitRing.Pack</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ComUnitRing.comRingType"><span class="id" title="definition">comRingType</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ComUnitRing.xclass"><span class="id" title="abbreviation">xclass</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ComUnitRing.ClassDef.xT"><span class="id" title="variable">xT</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">End</span> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ComUnitRing.ClassDef"><span class="id" title="section">ClassDef</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Module</span> <span class="id" title="keyword">Import</span> <a name="GRing.ComUnitRing.Exports"><span class="id" title="module">Exports</span></a>.<br/>
+<span class="id" title="keyword">Coercion</span> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ComUnitRing.base"><span class="id" title="projection">base</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ComUnitRing.base"><span class="id" title="projection">:</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ComUnitRing.base"><span class="id" title="projection">class_of</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ComUnitRing.base"><span class="id" title="projection">&gt;-&gt;</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ComUnitRing.base"><span class="id" title="projection">ComRing.class_of</span></a>.<br/>
+<span class="id" title="keyword">Coercion</span> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ComUnitRing.mixin"><span class="id" title="projection">mixin</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ComUnitRing.mixin"><span class="id" title="projection">:</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ComUnitRing.mixin"><span class="id" title="projection">class_of</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ComUnitRing.mixin"><span class="id" title="projection">&gt;-&gt;</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ComUnitRing.mixin"><span class="id" title="projection">UnitRing.mixin_of</span></a>.<br/>
+<span class="id" title="keyword">Coercion</span> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ComUnitRing.base2"><span class="id" title="definition">base2</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ComUnitRing.base2"><span class="id" title="definition">:</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ComUnitRing.base2"><span class="id" title="definition">class_of</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ComUnitRing.base2"><span class="id" title="definition">&gt;-&gt;</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ComUnitRing.base2"><span class="id" title="definition">UnitRing.class_of</span></a>.<br/>
+<span class="id" title="keyword">Coercion</span> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ComUnitRing.sort"><span class="id" title="projection">sort</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ComUnitRing.sort"><span class="id" title="projection">:</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ComUnitRing.sort"><span class="id" title="projection">type</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ComUnitRing.sort"><span class="id" title="projection">&gt;-&gt;</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ComUnitRing.sort"><span class="id" title="projection">Sortclass</span></a>.<br/>
+<span class="id" title="keyword">Coercion</span> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ComUnitRing.eqType"><span class="id" title="definition">eqType</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ComUnitRing.eqType"><span class="id" title="definition">:</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ComUnitRing.eqType"><span class="id" title="definition">type</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ComUnitRing.eqType"><span class="id" title="definition">&gt;-&gt;</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ComUnitRing.eqType"><span class="id" title="definition">Equality.type</span></a>.<br/>
+<span class="id" title="keyword">Canonical</span> <span class="id" title="var">eqType</span>.<br/>
+<span class="id" title="keyword">Coercion</span> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ComUnitRing.choiceType"><span class="id" title="definition">choiceType</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ComUnitRing.choiceType"><span class="id" title="definition">:</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ComUnitRing.choiceType"><span class="id" title="definition">type</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ComUnitRing.choiceType"><span class="id" title="definition">&gt;-&gt;</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ComUnitRing.choiceType"><span class="id" title="definition">Choice.type</span></a>.<br/>
+<span class="id" title="keyword">Canonical</span> <span class="id" title="var">choiceType</span>.<br/>
+<span class="id" title="keyword">Coercion</span> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ComUnitRing.zmodType"><span class="id" title="definition">zmodType</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ComUnitRing.zmodType"><span class="id" title="definition">:</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ComUnitRing.zmodType"><span class="id" title="definition">type</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ComUnitRing.zmodType"><span class="id" title="definition">&gt;-&gt;</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ComUnitRing.zmodType"><span class="id" title="definition">Zmodule.type</span></a>.<br/>
+<span class="id" title="keyword">Canonical</span> <span class="id" title="var">zmodType</span>.<br/>
+<span class="id" title="keyword">Coercion</span> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ComUnitRing.ringType"><span class="id" title="definition">ringType</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ComUnitRing.ringType"><span class="id" title="definition">:</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ComUnitRing.ringType"><span class="id" title="definition">type</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ComUnitRing.ringType"><span class="id" title="definition">&gt;-&gt;</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ComUnitRing.ringType"><span class="id" title="definition">Ring.type</span></a>.<br/>
+<span class="id" title="keyword">Canonical</span> <span class="id" title="var">ringType</span>.<br/>
+<span class="id" title="keyword">Coercion</span> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ComUnitRing.comRingType"><span class="id" title="definition">comRingType</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ComUnitRing.comRingType"><span class="id" title="definition">:</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ComUnitRing.comRingType"><span class="id" title="definition">type</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ComUnitRing.comRingType"><span class="id" title="definition">&gt;-&gt;</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ComUnitRing.comRingType"><span class="id" title="definition">ComRing.type</span></a>.<br/>
+<span class="id" title="keyword">Canonical</span> <span class="id" title="var">comRingType</span>.<br/>
+<span class="id" title="keyword">Coercion</span> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ComUnitRing.unitRingType"><span class="id" title="definition">unitRingType</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ComUnitRing.unitRingType"><span class="id" title="definition">:</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ComUnitRing.unitRingType"><span class="id" title="definition">type</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ComUnitRing.unitRingType"><span class="id" title="definition">&gt;-&gt;</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ComUnitRing.unitRingType"><span class="id" title="definition">UnitRing.type</span></a>.<br/>
+<span class="id" title="keyword">Canonical</span> <span class="id" title="var">unitRingType</span>.<br/>
+<span class="id" title="keyword">Canonical</span> <span class="id" title="var">com_unitRingType</span>.<br/>
+<span class="id" title="keyword">Notation</span> <a name="GRing.ComUnitRing.Exports.comUnitRingType"><span class="id" title="abbreviation">comUnitRingType</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ComUnitRing.type"><span class="id" title="record">type</span></a>.<br/>
+<span class="id" title="keyword">Notation</span> <a name="GRing.ComUnitRing.Exports.ComUnitRingMixin"><span class="id" title="abbreviation">ComUnitRingMixin</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ComUnitRing.Mixin"><span class="id" title="definition">Mixin</span></a>.<br/>
+<span class="id" title="keyword">Notation</span> <a name="e3ee791c903b0283e51d52d0692558ec"><span class="id" title="notation">&quot;</span></a>[ 'comUnitRingType' 'of' T ]" := (@<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ComUnitRing.pack"><span class="id" title="definition">pack</span></a> <span class="id" title="var">T</span> <span class="id" title="var">_</span> <span class="id" title="var">_</span> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#id"><span class="id" title="abbreviation">id</span></a> <span class="id" title="var">_</span> <span class="id" title="var">_</span> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#id"><span class="id" title="abbreviation">id</span></a>)<br/>
+&nbsp;&nbsp;(<span class="id" title="tactic">at</span> <span class="id" title="keyword">level</span> 0, <span class="id" title="var">format</span> "[ 'comUnitRingType' 'of' T ]") : <span class="id" title="var">form_scope</span>.<br/>
+<span class="id" title="keyword">End</span> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ComUnitRing.Exports"><span class="id" title="module">Exports</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">End</span> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ComUnitRing"><span class="id" title="module">ComUnitRing</span></a>.<br/>
+<span class="id" title="keyword">Import</span> <span class="id" title="var">ComUnitRing.Exports</span>.<br/>
+
+<br/>
+<span class="id" title="keyword">Module</span> <a name="GRing.UnitAlgebra"><span class="id" title="module">UnitAlgebra</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Section</span> <a name="GRing.UnitAlgebra.ClassDef"><span class="id" title="section">ClassDef</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Variable</span> <a name="GRing.UnitAlgebra.ClassDef.R"><span class="id" title="variable">R</span></a> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Ring.Exports.ringType"><span class="id" title="abbreviation">ringType</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Record</span> <a name="GRing.UnitAlgebra.class_of"><span class="id" title="record">class_of</span></a> (<span class="id" title="var">T</span> : <span class="id" title="keyword">Type</span>) : <span class="id" title="keyword">Type</span> := <a name="GRing.UnitAlgebra.Class"><span class="id" title="constructor">Class</span></a> {<br/>
+&nbsp;&nbsp;<a name="GRing.UnitAlgebra.base"><span class="id" title="projection">base</span></a> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Algebra.class_of"><span class="id" title="record">Algebra.class_of</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.UnitAlgebra.ClassDef.R"><span class="id" title="variable">R</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#T"><span class="id" title="variable">T</span></a>;<br/>
+&nbsp;&nbsp;<a name="GRing.UnitAlgebra.mixin"><span class="id" title="projection">mixin</span></a> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.UnitRing.mixin_of"><span class="id" title="record">GRing.UnitRing.mixin_of</span></a> (<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Ring.Pack"><span class="id" title="constructor">Ring.Pack</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#base"><span class="id" title="method">base</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#T"><span class="id" title="variable">T</span></a>)<br/>
+}.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.UnitAlgebra.base2"><span class="id" title="definition">base2</span></a> <span class="id" title="var">R</span> <span class="id" title="var">m</span> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.UnitRing.Class"><span class="id" title="constructor">UnitRing.Class</span></a> (@<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.UnitAlgebra.mixin"><span class="id" title="projection">mixin</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#R"><span class="id" title="variable">R</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#m"><span class="id" title="variable">m</span></a>).<br/>
+
+<br/>
+<span class="id" title="keyword">Structure</span> <a name="GRing.UnitAlgebra.type"><span class="id" title="record">type</span></a> (<span class="id" title="var">phR</span> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssreflect.html#phant"><span class="id" title="inductive">phant</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.UnitAlgebra.ClassDef.R"><span class="id" title="variable">R</span></a>) := <a name="GRing.UnitAlgebra.Pack"><span class="id" title="constructor">Pack</span></a> {<a name="GRing.UnitAlgebra.sort"><span class="id" title="projection">sort</span></a>; <span class="id" title="var">_</span> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.UnitAlgebra.class_of"><span class="id" title="record">class_of</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#sort"><span class="id" title="method">sort</span></a>; <span class="id" title="var">_</span> : <span class="id" title="keyword">Type</span>}.<br/>
+<span class="id" title="keyword">Variable</span> (<a name="GRing.UnitAlgebra.ClassDef.phR"><span class="id" title="variable">phR</span></a> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssreflect.html#phant"><span class="id" title="inductive">phant</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.UnitAlgebra.ClassDef.R"><span class="id" title="variable">R</span></a>) (<a name="GRing.UnitAlgebra.ClassDef.T"><span class="id" title="variable">T</span></a> : <span class="id" title="keyword">Type</span>) (<a name="GRing.UnitAlgebra.ClassDef.cT"><span class="id" title="variable">cT</span></a> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.UnitAlgebra.type"><span class="id" title="record">type</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#phR"><span class="id" title="variable">phR</span></a>).<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.UnitAlgebra.class"><span class="id" title="definition">class</span></a> := <span class="id" title="keyword">let</span>: <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.UnitAlgebra.Pack"><span class="id" title="constructor">Pack</span></a> <span class="id" title="var">_</span> <span class="id" title="var">c</span> <span class="id" title="var">_</span> <span class="id" title="keyword">as</span> <span class="id" title="var">cT'</span> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.UnitAlgebra.ClassDef.cT"><span class="id" title="variable">cT</span></a> <span class="id" title="keyword">return</span> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.UnitAlgebra.class_of"><span class="id" title="record">class_of</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#cT'"><span class="id" title="variable">cT'</span></a> <span class="id" title="tactic">in</span> <span class="id" title="var">c</span>.<br/>
+<span class="id" title="keyword">Let</span> <a name="GRing.UnitAlgebra.ClassDef.xT"><span class="id" title="variable">xT</span></a> := <span class="id" title="keyword">let</span>: <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.UnitAlgebra.Pack"><span class="id" title="constructor">Pack</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="mathcomp.algebra.ssralg.html#GRing.UnitAlgebra.ClassDef.cT"><span class="id" title="variable">cT</span></a> <span class="id" title="tactic">in</span> <span class="id" title="var">T</span>.<br/>
+<span class="id" title="keyword">Notation</span> <a name="GRing.UnitAlgebra.xclass"><span class="id" title="abbreviation">xclass</span></a> := (<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.UnitAlgebra.class"><span class="id" title="definition">class</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssreflect.html#4509b22bf26e3d6d771897e22bd8bc8f"><span class="id" title="notation">:</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.UnitAlgebra.class_of"><span class="id" title="record">class_of</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.UnitAlgebra.ClassDef.xT"><span class="id" title="variable">xT</span></a>).<br/>
+
+<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.UnitAlgebra.pack"><span class="id" title="definition">pack</span></a> :=<br/>
+&nbsp;&nbsp;<span class="id" title="keyword">fun</span> <span class="id" title="var">bT</span> <span class="id" title="var">b</span> &amp; <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#phant_id"><span class="id" title="definition">phant_id</span></a> (@<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Algebra.class"><span class="id" title="definition">Algebra.class</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.UnitAlgebra.ClassDef.R"><span class="id" title="variable">R</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.UnitAlgebra.ClassDef.phR"><span class="id" title="variable">phR</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#bT"><span class="id" title="variable">bT</span></a>) (<a class="idref" href="mathcomp.algebra.ssralg.html#b"><span class="id" title="variable">b</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssreflect.html#4509b22bf26e3d6d771897e22bd8bc8f"><span class="id" title="notation">:</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Algebra.class_of"><span class="id" title="record">Algebra.class_of</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.UnitAlgebra.ClassDef.R"><span class="id" title="variable">R</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.UnitAlgebra.ClassDef.T"><span class="id" title="variable">T</span></a>) ⇒<br/>
+&nbsp;&nbsp;<span class="id" title="keyword">fun</span> <span class="id" title="var">mT</span> <span class="id" title="var">m</span> &amp; <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#phant_id"><span class="id" title="definition">phant_id</span></a> (<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.UnitRing.mixin"><span class="id" title="projection">UnitRing.mixin</span></a> (<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.UnitRing.class"><span class="id" title="definition">UnitRing.class</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#mT"><span class="id" title="variable">mT</span></a>)) <a class="idref" href="mathcomp.algebra.ssralg.html#m"><span class="id" title="variable">m</span></a> ⇒<br/>
+&nbsp;&nbsp;<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.UnitAlgebra.Pack"><span class="id" title="constructor">Pack</span></a> (<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssreflect.html#Phant"><span class="id" title="constructor">Phant</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.UnitAlgebra.ClassDef.R"><span class="id" title="variable">R</span></a>) (@<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.UnitAlgebra.Class"><span class="id" title="constructor">Class</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.UnitAlgebra.ClassDef.T"><span class="id" title="variable">T</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#b"><span class="id" title="variable">b</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#m"><span class="id" title="variable">m</span></a>) <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.UnitAlgebra.ClassDef.T"><span class="id" title="variable">T</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.UnitAlgebra.eqType"><span class="id" title="definition">eqType</span></a> := @<a class="idref" href="mathcomp.ssreflect.eqtype.html#Equality.Pack"><span class="id" title="constructor">Equality.Pack</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.UnitAlgebra.ClassDef.cT"><span class="id" title="variable">cT</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.UnitAlgebra.xclass"><span class="id" title="abbreviation">xclass</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.UnitAlgebra.ClassDef.xT"><span class="id" title="variable">xT</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.UnitAlgebra.choiceType"><span class="id" title="definition">choiceType</span></a> := @<a class="idref" href="mathcomp.ssreflect.choice.html#Choice.Pack"><span class="id" title="constructor">Choice.Pack</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.UnitAlgebra.ClassDef.cT"><span class="id" title="variable">cT</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.UnitAlgebra.xclass"><span class="id" title="abbreviation">xclass</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.UnitAlgebra.ClassDef.xT"><span class="id" title="variable">xT</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.UnitAlgebra.zmodType"><span class="id" title="definition">zmodType</span></a> := @<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Zmodule.Pack"><span class="id" title="constructor">Zmodule.Pack</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.UnitAlgebra.ClassDef.cT"><span class="id" title="variable">cT</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.UnitAlgebra.xclass"><span class="id" title="abbreviation">xclass</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.UnitAlgebra.ClassDef.xT"><span class="id" title="variable">xT</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.UnitAlgebra.ringType"><span class="id" title="definition">ringType</span></a> := @<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Ring.Pack"><span class="id" title="constructor">Ring.Pack</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.UnitAlgebra.ClassDef.cT"><span class="id" title="variable">cT</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.UnitAlgebra.xclass"><span class="id" title="abbreviation">xclass</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.UnitAlgebra.ClassDef.xT"><span class="id" title="variable">xT</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.UnitAlgebra.unitRingType"><span class="id" title="definition">unitRingType</span></a> := @<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.UnitRing.Pack"><span class="id" title="constructor">UnitRing.Pack</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.UnitAlgebra.ClassDef.cT"><span class="id" title="variable">cT</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.UnitAlgebra.xclass"><span class="id" title="abbreviation">xclass</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.UnitAlgebra.ClassDef.xT"><span class="id" title="variable">xT</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.UnitAlgebra.lmodType"><span class="id" title="definition">lmodType</span></a> := @<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Lmodule.Pack"><span class="id" title="constructor">Lmodule.Pack</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.UnitAlgebra.ClassDef.R"><span class="id" title="variable">R</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.UnitAlgebra.ClassDef.phR"><span class="id" title="variable">phR</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.UnitAlgebra.ClassDef.cT"><span class="id" title="variable">cT</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.UnitAlgebra.xclass"><span class="id" title="abbreviation">xclass</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.UnitAlgebra.ClassDef.xT"><span class="id" title="variable">xT</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.UnitAlgebra.lalgType"><span class="id" title="definition">lalgType</span></a> := @<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Lalgebra.Pack"><span class="id" title="constructor">Lalgebra.Pack</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.UnitAlgebra.ClassDef.R"><span class="id" title="variable">R</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.UnitAlgebra.ClassDef.phR"><span class="id" title="variable">phR</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.UnitAlgebra.ClassDef.cT"><span class="id" title="variable">cT</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.UnitAlgebra.xclass"><span class="id" title="abbreviation">xclass</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.UnitAlgebra.ClassDef.xT"><span class="id" title="variable">xT</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.UnitAlgebra.algType"><span class="id" title="definition">algType</span></a> := @<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Algebra.Pack"><span class="id" title="constructor">Algebra.Pack</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.UnitAlgebra.ClassDef.R"><span class="id" title="variable">R</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.UnitAlgebra.ClassDef.phR"><span class="id" title="variable">phR</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.UnitAlgebra.ClassDef.cT"><span class="id" title="variable">cT</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.UnitAlgebra.xclass"><span class="id" title="abbreviation">xclass</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.UnitAlgebra.ClassDef.xT"><span class="id" title="variable">xT</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.UnitAlgebra.lmod_unitRingType"><span class="id" title="definition">lmod_unitRingType</span></a> := @<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Lmodule.Pack"><span class="id" title="constructor">Lmodule.Pack</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.UnitAlgebra.ClassDef.R"><span class="id" title="variable">R</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.UnitAlgebra.ClassDef.phR"><span class="id" title="variable">phR</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.UnitAlgebra.unitRingType"><span class="id" title="definition">unitRingType</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.UnitAlgebra.xclass"><span class="id" title="abbreviation">xclass</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.UnitAlgebra.ClassDef.xT"><span class="id" title="variable">xT</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.UnitAlgebra.lalg_unitRingType"><span class="id" title="definition">lalg_unitRingType</span></a> := @<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Lalgebra.Pack"><span class="id" title="constructor">Lalgebra.Pack</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.UnitAlgebra.ClassDef.R"><span class="id" title="variable">R</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.UnitAlgebra.ClassDef.phR"><span class="id" title="variable">phR</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.UnitAlgebra.unitRingType"><span class="id" title="definition">unitRingType</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.UnitAlgebra.xclass"><span class="id" title="abbreviation">xclass</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.UnitAlgebra.ClassDef.xT"><span class="id" title="variable">xT</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.UnitAlgebra.alg_unitRingType"><span class="id" title="definition">alg_unitRingType</span></a> := @<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Algebra.Pack"><span class="id" title="constructor">Algebra.Pack</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.UnitAlgebra.ClassDef.R"><span class="id" title="variable">R</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.UnitAlgebra.ClassDef.phR"><span class="id" title="variable">phR</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.UnitAlgebra.unitRingType"><span class="id" title="definition">unitRingType</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.UnitAlgebra.xclass"><span class="id" title="abbreviation">xclass</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.UnitAlgebra.ClassDef.xT"><span class="id" title="variable">xT</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">End</span> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.UnitAlgebra.ClassDef"><span class="id" title="section">ClassDef</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Module</span> <a name="GRing.UnitAlgebra.Exports"><span class="id" title="module">Exports</span></a>.<br/>
+<span class="id" title="keyword">Coercion</span> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.UnitAlgebra.base"><span class="id" title="projection">base</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.UnitAlgebra.base"><span class="id" title="projection">:</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.UnitAlgebra.base"><span class="id" title="projection">class_of</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.UnitAlgebra.base"><span class="id" title="projection">&gt;-&gt;</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.UnitAlgebra.base"><span class="id" title="projection">Algebra.class_of</span></a>.<br/>
+<span class="id" title="keyword">Coercion</span> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.UnitAlgebra.base2"><span class="id" title="definition">base2</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.UnitAlgebra.base2"><span class="id" title="definition">:</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.UnitAlgebra.base2"><span class="id" title="definition">class_of</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.UnitAlgebra.base2"><span class="id" title="definition">&gt;-&gt;</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.UnitAlgebra.base2"><span class="id" title="definition">UnitRing.class_of</span></a>.<br/>
+<span class="id" title="keyword">Coercion</span> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.UnitAlgebra.sort"><span class="id" title="projection">sort</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.UnitAlgebra.sort"><span class="id" title="projection">:</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.UnitAlgebra.sort"><span class="id" title="projection">type</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.UnitAlgebra.sort"><span class="id" title="projection">&gt;-&gt;</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.UnitAlgebra.sort"><span class="id" title="projection">Sortclass</span></a>.<br/>
+<span class="id" title="keyword">Coercion</span> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.UnitAlgebra.eqType"><span class="id" title="definition">eqType</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.UnitAlgebra.eqType"><span class="id" title="definition">:</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.UnitAlgebra.eqType"><span class="id" title="definition">type</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.UnitAlgebra.eqType"><span class="id" title="definition">&gt;-&gt;</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.UnitAlgebra.eqType"><span class="id" title="definition">Equality.type</span></a>.<br/>
+<span class="id" title="keyword">Canonical</span> <span class="id" title="var">eqType</span>.<br/>
+<span class="id" title="keyword">Coercion</span> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.UnitAlgebra.choiceType"><span class="id" title="definition">choiceType</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.UnitAlgebra.choiceType"><span class="id" title="definition">:</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.UnitAlgebra.choiceType"><span class="id" title="definition">type</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.UnitAlgebra.choiceType"><span class="id" title="definition">&gt;-&gt;</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.UnitAlgebra.choiceType"><span class="id" title="definition">Choice.type</span></a>.<br/>
+<span class="id" title="keyword">Canonical</span> <span class="id" title="var">choiceType</span>.<br/>
+<span class="id" title="keyword">Coercion</span> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.UnitAlgebra.zmodType"><span class="id" title="definition">zmodType</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.UnitAlgebra.zmodType"><span class="id" title="definition">:</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.UnitAlgebra.zmodType"><span class="id" title="definition">type</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.UnitAlgebra.zmodType"><span class="id" title="definition">&gt;-&gt;</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.UnitAlgebra.zmodType"><span class="id" title="definition">Zmodule.type</span></a>.<br/>
+<span class="id" title="keyword">Canonical</span> <span class="id" title="var">zmodType</span>.<br/>
+<span class="id" title="keyword">Coercion</span> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.UnitAlgebra.ringType"><span class="id" title="definition">ringType</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.UnitAlgebra.ringType"><span class="id" title="definition">:</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.UnitAlgebra.ringType"><span class="id" title="definition">type</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.UnitAlgebra.ringType"><span class="id" title="definition">&gt;-&gt;</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.UnitAlgebra.ringType"><span class="id" title="definition">Ring.type</span></a>.<br/>
+<span class="id" title="keyword">Canonical</span> <span class="id" title="var">ringType</span>.<br/>
+<span class="id" title="keyword">Coercion</span> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.UnitAlgebra.unitRingType"><span class="id" title="definition">unitRingType</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.UnitAlgebra.unitRingType"><span class="id" title="definition">:</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.UnitAlgebra.unitRingType"><span class="id" title="definition">type</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.UnitAlgebra.unitRingType"><span class="id" title="definition">&gt;-&gt;</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.UnitAlgebra.unitRingType"><span class="id" title="definition">UnitRing.type</span></a>.<br/>
+<span class="id" title="keyword">Canonical</span> <span class="id" title="var">unitRingType</span>.<br/>
+<span class="id" title="keyword">Coercion</span> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.UnitAlgebra.lmodType"><span class="id" title="definition">lmodType</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.UnitAlgebra.lmodType"><span class="id" title="definition">:</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.UnitAlgebra.lmodType"><span class="id" title="definition">type</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.UnitAlgebra.lmodType"><span class="id" title="definition">&gt;-&gt;</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.UnitAlgebra.lmodType"><span class="id" title="definition">Lmodule.type</span></a>.<br/>
+<span class="id" title="keyword">Canonical</span> <span class="id" title="var">lmodType</span>.<br/>
+<span class="id" title="keyword">Coercion</span> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.UnitAlgebra.lalgType"><span class="id" title="definition">lalgType</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.UnitAlgebra.lalgType"><span class="id" title="definition">:</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.UnitAlgebra.lalgType"><span class="id" title="definition">type</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.UnitAlgebra.lalgType"><span class="id" title="definition">&gt;-&gt;</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.UnitAlgebra.lalgType"><span class="id" title="definition">Lalgebra.type</span></a>.<br/>
+<span class="id" title="keyword">Canonical</span> <span class="id" title="var">lalgType</span>.<br/>
+<span class="id" title="keyword">Coercion</span> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.UnitAlgebra.algType"><span class="id" title="definition">algType</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.UnitAlgebra.algType"><span class="id" title="definition">:</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.UnitAlgebra.algType"><span class="id" title="definition">type</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.UnitAlgebra.algType"><span class="id" title="definition">&gt;-&gt;</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.UnitAlgebra.algType"><span class="id" title="definition">Algebra.type</span></a>.<br/>
+<span class="id" title="keyword">Canonical</span> <span class="id" title="var">algType</span>.<br/>
+<span class="id" title="keyword">Canonical</span> <span class="id" title="var">lmod_unitRingType</span>.<br/>
+<span class="id" title="keyword">Canonical</span> <span class="id" title="var">lalg_unitRingType</span>.<br/>
+<span class="id" title="keyword">Canonical</span> <span class="id" title="var">alg_unitRingType</span>.<br/>
+<span class="id" title="keyword">Notation</span> <a name="GRing.UnitAlgebra.Exports.unitAlgType"><span class="id" title="abbreviation">unitAlgType</span></a> <span class="id" title="var">R</span> := (<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.UnitAlgebra.type"><span class="id" title="record">type</span></a> (<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssreflect.html#Phant"><span class="id" title="constructor">Phant</span></a> <span class="id" title="var">R</span>)).<br/>
+<span class="id" title="keyword">Notation</span> <a name="bdb1eed686184a9a4099efa772be7bc7"><span class="id" title="notation">&quot;</span></a>[ 'unitAlgType' R 'of' T ]" := (@<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.UnitAlgebra.pack"><span class="id" title="definition">pack</span></a> <span class="id" title="var">_</span> (<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssreflect.html#Phant"><span class="id" title="constructor">Phant</span></a> <span class="id" title="var">R</span>) <span class="id" title="var">T</span> <span class="id" title="var">_</span> <span class="id" title="var">_</span> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#id"><span class="id" title="abbreviation">id</span></a> <span class="id" title="var">_</span> <span class="id" title="var">_</span> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#id"><span class="id" title="abbreviation">id</span></a>)<br/>
+&nbsp;&nbsp;(<span class="id" title="tactic">at</span> <span class="id" title="keyword">level</span> 0, <span class="id" title="var">format</span> "[ 'unitAlgType' R 'of' T ]") : <span class="id" title="var">form_scope</span>.<br/>
+<span class="id" title="keyword">End</span> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.UnitAlgebra.Exports"><span class="id" title="module">Exports</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">End</span> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.UnitAlgebra"><span class="id" title="module">UnitAlgebra</span></a>.<br/>
+<span class="id" title="keyword">Import</span> <span class="id" title="var">UnitAlgebra.Exports</span>.<br/>
+
+<br/>
+<span class="id" title="keyword">Section</span> <a name="GRing.ComUnitRingTheory"><span class="id" title="section">ComUnitRingTheory</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Variable</span> <a name="GRing.ComUnitRingTheory.R"><span class="id" title="variable">R</span></a> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.comUnitRingType"><span class="id" title="abbreviation">comUnitRingType</span></a>.<br/>
+<span class="id" title="keyword">Implicit</span> <span class="id" title="keyword">Types</span> <span class="id" title="var">x</span> <span class="id" title="var">y</span> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ComUnitRingTheory.R"><span class="id" title="variable">R</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.unitrM"><span class="id" title="lemma">unitrM</span></a> <span class="id" title="var">x</span> <span class="id" title="var">y</span> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#ed99e7035d9a1f8a2c1515be81ac2e5f"><span class="id" title="notation">×</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#y"><span class="id" title="variable">y</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">\</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">in</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.unit"><span class="id" title="definition">unit</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">)</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#49ac24efa716d8b0ee8943bc1d1769a9"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">\</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">in</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.unit"><span class="id" title="definition">unit</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#49ac24efa716d8b0ee8943bc1d1769a9"><span class="id" title="notation">)</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#49ac24efa716d8b0ee8943bc1d1769a9"><span class="id" title="notation">&amp;&amp;</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#49ac24efa716d8b0ee8943bc1d1769a9"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#y"><span class="id" title="variable">y</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">\</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">in</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.unit"><span class="id" title="definition">unit</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#49ac24efa716d8b0ee8943bc1d1769a9"><span class="id" title="notation">)</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.unitrPr"><span class="id" title="lemma">unitrPr</span></a> <span class="id" title="var">x</span> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#reflect"><span class="id" title="abbreviation">reflect</span></a> (<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#84eb6d2849dbf3581b1c0c05add5f2d8"><span class="id" title="notation">∃</span></a> <span class="id" title="var">y</span><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#84eb6d2849dbf3581b1c0c05add5f2d8"><span class="id" title="notation">,</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#ed99e7035d9a1f8a2c1515be81ac2e5f"><span class="id" title="notation">×</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#y"><span class="id" title="variable">y</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> 1) (<a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">\</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">in</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.unit"><span class="id" title="definition">unit</span></a>).<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.mulr1_eq"><span class="id" title="lemma">mulr1_eq</span></a> <span class="id" title="var">x</span> <span class="id" title="var">y</span> : <a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#ed99e7035d9a1f8a2c1515be81ac2e5f"><span class="id" title="notation">×</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#y"><span class="id" title="variable">y</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> 1 <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#7f97e90bec2e67d9beef5851649e3fb1"><span class="id" title="notation">^-1</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#y"><span class="id" title="variable">y</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.divr1_eq"><span class="id" title="lemma">divr1_eq</span></a> <span class="id" title="var">x</span> <span class="id" title="var">y</span> : <a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#1adb36345c2607a4dd991537de5ddba3"><span class="id" title="notation">/</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#y"><span class="id" title="variable">y</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> 1 <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#y"><span class="id" title="variable">y</span></a>. <br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.divKr"><span class="id" title="lemma">divKr</span></a> <span class="id" title="var">x</span> : <a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#1e40fee506a85b20590ef299005b003d"><span class="id" title="notation">\</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#1e40fee506a85b20590ef299005b003d"><span class="id" title="notation">is</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#1e40fee506a85b20590ef299005b003d"><span class="id" title="notation">a</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.unit"><span class="id" title="definition">unit</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#5c59b35a0b51db520cf1fba473ecf127"><span class="id" title="notation">{</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#5c59b35a0b51db520cf1fba473ecf127"><span class="id" title="notation">in</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.unit"><span class="id" title="definition">unit</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#5c59b35a0b51db520cf1fba473ecf127"><span class="id" title="notation">,</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#involutive"><span class="id" title="definition">involutive</span></a> (<span class="id" title="keyword">fun</span> <span class="id" title="var">y</span> ⇒ <a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#1adb36345c2607a4dd991537de5ddba3"><span class="id" title="notation">/</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#y"><span class="id" title="variable">y</span></a>)<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#5c59b35a0b51db520cf1fba473ecf127"><span class="id" title="notation">}</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.expr_div_n"><span class="id" title="lemma">expr_div_n</span></a> <span class="id" title="var">x</span> <span class="id" title="var">y</span> <span class="id" title="var">n</span> : <a class="idref" href="mathcomp.algebra.ssralg.html#b5a6699e28c97bb33352772cfa3ea869"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#1adb36345c2607a4dd991537de5ddba3"><span class="id" title="notation">/</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#y"><span class="id" title="variable">y</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#b5a6699e28c97bb33352772cfa3ea869"><span class="id" title="notation">)</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#b5a6699e28c97bb33352772cfa3ea869"><span class="id" title="notation">^+</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#n"><span class="id" title="variable">n</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#b5a6699e28c97bb33352772cfa3ea869"><span class="id" title="notation">^+</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#n"><span class="id" title="variable">n</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#1adb36345c2607a4dd991537de5ddba3"><span class="id" title="notation">/</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#y"><span class="id" title="variable">y</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#b5a6699e28c97bb33352772cfa3ea869"><span class="id" title="notation">^+</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#n"><span class="id" title="variable">n</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Canonical</span> <span class="id" title="var">regular_comUnitRingType</span> := <a class="idref" href="mathcomp.algebra.ssralg.html#e3ee791c903b0283e51d52d0692558ec"><span class="id" title="notation">[</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#e3ee791c903b0283e51d52d0692558ec"><span class="id" title="notation">comUnitRingType</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#e3ee791c903b0283e51d52d0692558ec"><span class="id" title="notation">of</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ComUnitRingTheory.R"><span class="id" title="variable">R</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#44fd865ce10e1d30970d09bdd85a0c8e"><span class="id" title="notation">^</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#44fd865ce10e1d30970d09bdd85a0c8e"><span class="id" title="notation">o</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#e3ee791c903b0283e51d52d0692558ec"><span class="id" title="notation">]</span></a>.<br/>
+<span class="id" title="keyword">Canonical</span> <span class="id" title="var">regular_unitAlgType</span> := <a class="idref" href="mathcomp.algebra.ssralg.html#bdb1eed686184a9a4099efa772be7bc7"><span class="id" title="notation">[</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#bdb1eed686184a9a4099efa772be7bc7"><span class="id" title="notation">unitAlgType</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ComUnitRingTheory.R"><span class="id" title="variable">R</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#bdb1eed686184a9a4099efa772be7bc7"><span class="id" title="notation">of</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ComUnitRingTheory.R"><span class="id" title="variable">R</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#44fd865ce10e1d30970d09bdd85a0c8e"><span class="id" title="notation">^</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#44fd865ce10e1d30970d09bdd85a0c8e"><span class="id" title="notation">o</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#bdb1eed686184a9a4099efa772be7bc7"><span class="id" title="notation">]</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">End</span> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ComUnitRingTheory"><span class="id" title="section">ComUnitRingTheory</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Section</span> <a name="GRing.UnitAlgebraTheory"><span class="id" title="section">UnitAlgebraTheory</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Variable</span> (<a name="GRing.UnitAlgebraTheory.R"><span class="id" title="variable">R</span></a> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.comUnitRingType"><span class="id" title="abbreviation">comUnitRingType</span></a>) (<a name="GRing.UnitAlgebraTheory.A"><span class="id" title="variable">A</span></a> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.unitAlgType"><span class="id" title="abbreviation">unitAlgType</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#R"><span class="id" title="variable">R</span></a>).<br/>
+<span class="id" title="keyword">Implicit</span> <span class="id" title="keyword">Types</span> (<span class="id" title="var">k</span> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.UnitAlgebraTheory.R"><span class="id" title="variable">R</span></a>) (<span class="id" title="var">x</span> <span class="id" title="var">y</span> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.UnitAlgebraTheory.A"><span class="id" title="variable">A</span></a>).<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.scaler_injl"><span class="id" title="lemma">scaler_injl</span></a> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#5c59b35a0b51db520cf1fba473ecf127"><span class="id" title="notation">{</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#5c59b35a0b51db520cf1fba473ecf127"><span class="id" title="notation">in</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.unit"><span class="id" title="definition">unit</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#5c59b35a0b51db520cf1fba473ecf127"><span class="id" title="notation">,</span></a> @<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#right_injective"><span class="id" title="definition">right_injective</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.UnitAlgebraTheory.R"><span class="id" title="variable">R</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.UnitAlgebraTheory.A"><span class="id" title="variable">A</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.UnitAlgebraTheory.A"><span class="id" title="variable">A</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#9d4bc68f8a37455428efb931e05d31ce"><span class="id" title="notation">*:%</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#9d4bc68f8a37455428efb931e05d31ce"><span class="id" title="notation">R</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#5c59b35a0b51db520cf1fba473ecf127"><span class="id" title="notation">}</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.scaler_unit"><span class="id" title="lemma">scaler_unit</span></a> <span class="id" title="var">k</span> <span class="id" title="var">x</span> : <a class="idref" href="mathcomp.algebra.ssralg.html#k"><span class="id" title="variable">k</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">\</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">in</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.unit"><span class="id" title="definition">unit</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#k"><span class="id" title="variable">k</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#5aa7bcc9ac922e77482767d325fdbb69"><span class="id" title="notation">*:</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">\</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">in</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.unit"><span class="id" title="definition">unit</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">)</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">\</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">in</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.unit"><span class="id" title="definition">unit</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">)</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.invrZ"><span class="id" title="lemma">invrZ</span></a> <span class="id" title="var">k</span> <span class="id" title="var">x</span> : <a class="idref" href="mathcomp.algebra.ssralg.html#k"><span class="id" title="variable">k</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">\</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">in</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.unit"><span class="id" title="definition">unit</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">\</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">in</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.unit"><span class="id" title="definition">unit</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#7f97e90bec2e67d9beef5851649e3fb1"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#k"><span class="id" title="variable">k</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#5aa7bcc9ac922e77482767d325fdbb69"><span class="id" title="notation">*:</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#7f97e90bec2e67d9beef5851649e3fb1"><span class="id" title="notation">)^-1</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#k"><span class="id" title="variable">k</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#7f97e90bec2e67d9beef5851649e3fb1"><span class="id" title="notation">^-1</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#5aa7bcc9ac922e77482767d325fdbb69"><span class="id" title="notation">*:</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#7f97e90bec2e67d9beef5851649e3fb1"><span class="id" title="notation">^-1</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Section</span> <a name="GRing.UnitAlgebraTheory.ClosedPredicates"><span class="id" title="section">ClosedPredicates</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Variables</span> <a name="GRing.UnitAlgebraTheory.ClosedPredicates.S"><span class="id" title="variable">S</span></a> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#predPredType"><span class="id" title="definition">predPredType</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.UnitAlgebraTheory.A"><span class="id" title="variable">A</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.divalg_closed"><span class="id" title="definition">divalg_closed</span></a> := <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#962a3cb7af009aedac7986e261646bd1"><span class="id" title="notation">[/\</span></a> 1 <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">\</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">in</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.UnitAlgebraTheory.ClosedPredicates.S"><span class="id" title="variable">S</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#962a3cb7af009aedac7986e261646bd1"><span class="id" title="notation">,</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.linear_closed"><span class="id" title="definition">linear_closed</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.UnitAlgebraTheory.ClosedPredicates.S"><span class="id" title="variable">S</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#962a3cb7af009aedac7986e261646bd1"><span class="id" title="notation">&amp;</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.divr_2closed"><span class="id" title="definition">divr_2closed</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.UnitAlgebraTheory.ClosedPredicates.S"><span class="id" title="variable">S</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#962a3cb7af009aedac7986e261646bd1"><span class="id" title="notation">]</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.divalg_closedBdiv"><span class="id" title="lemma">divalg_closedBdiv</span></a> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.divalg_closed"><span class="id" title="definition">divalg_closed</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.divring_closed"><span class="id" title="definition">divring_closed</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.UnitAlgebraTheory.ClosedPredicates.S"><span class="id" title="variable">S</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.divalg_closedZ"><span class="id" title="lemma">divalg_closedZ</span></a> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.divalg_closed"><span class="id" title="definition">divalg_closed</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.subalg_closed"><span class="id" title="definition">subalg_closed</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.UnitAlgebraTheory.ClosedPredicates.S"><span class="id" title="variable">S</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">End</span> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.UnitAlgebraTheory.ClosedPredicates"><span class="id" title="section">ClosedPredicates</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">End</span> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.UnitAlgebraTheory"><span class="id" title="section">UnitAlgebraTheory</span></a>.<br/>
+
+<br/>
+</div>
+
+<div class="doc">
+ Interface structures for algebraically closed predicates.
+</div>
+<div class="code">
+<span class="id" title="keyword">Module</span> <a name="GRing.Pred"><span class="id" title="module">Pred</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Structure</span> <a name="GRing.Pred.opp"><span class="id" title="record">opp</span></a> <span class="id" title="var">V</span> <span class="id" title="var">S</span> := <a name="GRing.Pred.Opp"><span class="id" title="constructor">Opp</span></a> {<a name="GRing.Pred.opp_key"><span class="id" title="projection">opp_key</span></a> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#pred_key"><span class="id" title="inductive">pred_key</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#S"><span class="id" title="variable">S</span></a>; <span class="id" title="var">_</span> : @<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.oppr_closed"><span class="id" title="definition">oppr_closed</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#V"><span class="id" title="variable">V</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#S"><span class="id" title="variable">S</span></a>}.<br/>
+<span class="id" title="keyword">Structure</span> <a name="GRing.Pred.add"><span class="id" title="record">add</span></a> <span class="id" title="var">V</span> <span class="id" title="var">S</span> := <a name="GRing.Pred.Add"><span class="id" title="constructor">Add</span></a> {<a name="GRing.Pred.add_key"><span class="id" title="projection">add_key</span></a> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#pred_key"><span class="id" title="inductive">pred_key</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#S"><span class="id" title="variable">S</span></a>; <span class="id" title="var">_</span> : @<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.addr_closed"><span class="id" title="definition">addr_closed</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#V"><span class="id" title="variable">V</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#S"><span class="id" title="variable">S</span></a>}.<br/>
+<span class="id" title="keyword">Structure</span> <a name="GRing.Pred.mul"><span class="id" title="record">mul</span></a> <span class="id" title="var">R</span> <span class="id" title="var">S</span> := <a name="GRing.Pred.Mul"><span class="id" title="constructor">Mul</span></a> {<a name="GRing.Pred.mul_key"><span class="id" title="projection">mul_key</span></a> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#pred_key"><span class="id" title="inductive">pred_key</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#S"><span class="id" title="variable">S</span></a>; <span class="id" title="var">_</span> : @<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.mulr_closed"><span class="id" title="definition">mulr_closed</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#R"><span class="id" title="variable">R</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#S"><span class="id" title="variable">S</span></a>}.<br/>
+<span class="id" title="keyword">Structure</span> <a name="GRing.Pred.zmod"><span class="id" title="record">zmod</span></a> <span class="id" title="var">V</span> <span class="id" title="var">S</span> := <a name="GRing.Pred.Zmod"><span class="id" title="constructor">Zmod</span></a> {<a name="GRing.Pred.zmod_add"><span class="id" title="projection">zmod_add</span></a> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Pred.add"><span class="id" title="record">add</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#S"><span class="id" title="variable">S</span></a>; <span class="id" title="var">_</span> : @<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.oppr_closed"><span class="id" title="definition">oppr_closed</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#V"><span class="id" title="variable">V</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#S"><span class="id" title="variable">S</span></a>}.<br/>
+<span class="id" title="keyword">Structure</span> <a name="GRing.Pred.semiring"><span class="id" title="record">semiring</span></a> <span class="id" title="var">R</span> <span class="id" title="var">S</span> := <a name="GRing.Pred.Semiring"><span class="id" title="constructor">Semiring</span></a> {<a name="GRing.Pred.semiring_add"><span class="id" title="projection">semiring_add</span></a> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Pred.add"><span class="id" title="record">add</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#S"><span class="id" title="variable">S</span></a>; <span class="id" title="var">_</span> : @<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.mulr_closed"><span class="id" title="definition">mulr_closed</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#R"><span class="id" title="variable">R</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#S"><span class="id" title="variable">S</span></a>}.<br/>
+<span class="id" title="keyword">Structure</span> <a name="GRing.Pred.smul"><span class="id" title="record">smul</span></a> <span class="id" title="var">R</span> <span class="id" title="var">S</span> := <a name="GRing.Pred.Smul"><span class="id" title="constructor">Smul</span></a> {<a name="GRing.Pred.smul_opp"><span class="id" title="projection">smul_opp</span></a> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Pred.opp"><span class="id" title="record">opp</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#S"><span class="id" title="variable">S</span></a>; <span class="id" title="var">_</span> : @<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.mulr_closed"><span class="id" title="definition">mulr_closed</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#R"><span class="id" title="variable">R</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#S"><span class="id" title="variable">S</span></a>}.<br/>
+<span class="id" title="keyword">Structure</span> <a name="GRing.Pred.div"><span class="id" title="record">div</span></a> <span class="id" title="var">R</span> <span class="id" title="var">S</span> := <a name="GRing.Pred.Div"><span class="id" title="constructor">Div</span></a> {<a name="GRing.Pred.div_mul"><span class="id" title="projection">div_mul</span></a> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Pred.mul"><span class="id" title="record">mul</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#S"><span class="id" title="variable">S</span></a>; <span class="id" title="var">_</span> : @<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.invr_closed"><span class="id" title="definition">invr_closed</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#R"><span class="id" title="variable">R</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#S"><span class="id" title="variable">S</span></a>}.<br/>
+<span class="id" title="keyword">Structure</span> <a name="GRing.Pred.submod"><span class="id" title="record">submod</span></a> <span class="id" title="var">R</span> <span class="id" title="var">V</span> <span class="id" title="var">S</span> :=<br/>
+&nbsp;&nbsp;<a name="GRing.Pred.Submod"><span class="id" title="constructor">Submod</span></a> {<a name="GRing.Pred.submod_zmod"><span class="id" title="projection">submod_zmod</span></a> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Pred.zmod"><span class="id" title="record">zmod</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#S"><span class="id" title="variable">S</span></a>; <span class="id" title="var">_</span> : @<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.scaler_closed"><span class="id" title="definition">scaler_closed</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#R"><span class="id" title="variable">R</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#V"><span class="id" title="variable">V</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#S"><span class="id" title="variable">S</span></a>}.<br/>
+<span class="id" title="keyword">Structure</span> <a name="GRing.Pred.subring"><span class="id" title="record">subring</span></a> <span class="id" title="var">R</span> <span class="id" title="var">S</span> := <a name="GRing.Pred.Subring"><span class="id" title="constructor">Subring</span></a> {<a name="GRing.Pred.subring_zmod"><span class="id" title="projection">subring_zmod</span></a> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Pred.zmod"><span class="id" title="record">zmod</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#S"><span class="id" title="variable">S</span></a>; <span class="id" title="var">_</span> : @<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.mulr_closed"><span class="id" title="definition">mulr_closed</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#R"><span class="id" title="variable">R</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#S"><span class="id" title="variable">S</span></a>}.<br/>
+<span class="id" title="keyword">Structure</span> <a name="GRing.Pred.sdiv"><span class="id" title="record">sdiv</span></a> <span class="id" title="var">R</span> <span class="id" title="var">S</span> := <a name="GRing.Pred.Sdiv"><span class="id" title="constructor">Sdiv</span></a> {<a name="GRing.Pred.sdiv_smul"><span class="id" title="projection">sdiv_smul</span></a> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Pred.smul"><span class="id" title="record">smul</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#S"><span class="id" title="variable">S</span></a>; <span class="id" title="var">_</span> : @<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.invr_closed"><span class="id" title="definition">invr_closed</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#R"><span class="id" title="variable">R</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#S"><span class="id" title="variable">S</span></a>}.<br/>
+<span class="id" title="keyword">Structure</span> <a name="GRing.Pred.subalg"><span class="id" title="record">subalg</span></a> (<span class="id" title="var">R</span> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Ring.Exports.ringType"><span class="id" title="abbreviation">ringType</span></a>) (<span class="id" title="var">A</span> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Lalgebra.Exports.lalgType"><span class="id" title="abbreviation">lalgType</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#R"><span class="id" title="variable">R</span></a>) <span class="id" title="var">S</span> :=<br/>
+&nbsp;&nbsp;<a name="GRing.Pred.Subalg"><span class="id" title="constructor">Subalg</span></a> {<a name="GRing.Pred.subalg_ring"><span class="id" title="projection">subalg_ring</span></a> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Pred.subring"><span class="id" title="record">subring</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#S"><span class="id" title="variable">S</span></a>; <span class="id" title="var">_</span> : @<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.scaler_closed"><span class="id" title="definition">scaler_closed</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#R"><span class="id" title="variable">R</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#A"><span class="id" title="variable">A</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#S"><span class="id" title="variable">S</span></a>}.<br/>
+<span class="id" title="keyword">Structure</span> <a name="GRing.Pred.divring"><span class="id" title="record">divring</span></a> <span class="id" title="var">R</span> <span class="id" title="var">S</span> :=<br/>
+&nbsp;&nbsp;<a name="GRing.Pred.Divring"><span class="id" title="constructor">Divring</span></a> {<a name="GRing.Pred.divring_ring"><span class="id" title="projection">divring_ring</span></a> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Pred.subring"><span class="id" title="record">subring</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#S"><span class="id" title="variable">S</span></a>; <span class="id" title="var">_</span> : @<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.invr_closed"><span class="id" title="definition">invr_closed</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#R"><span class="id" title="variable">R</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#S"><span class="id" title="variable">S</span></a>}.<br/>
+<span class="id" title="keyword">Structure</span> <a name="GRing.Pred.divalg"><span class="id" title="record">divalg</span></a> (<span class="id" title="var">R</span> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Ring.Exports.ringType"><span class="id" title="abbreviation">ringType</span></a>) (<span class="id" title="var">A</span> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.UnitAlgebra.Exports.unitAlgType"><span class="id" title="abbreviation">unitAlgType</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#R"><span class="id" title="variable">R</span></a>) <span class="id" title="var">S</span> :=<br/>
+&nbsp;&nbsp;<a name="GRing.Pred.Divalg"><span class="id" title="constructor">Divalg</span></a> {<a name="GRing.Pred.divalg_ring"><span class="id" title="projection">divalg_ring</span></a> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Pred.divring"><span class="id" title="record">divring</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#S"><span class="id" title="variable">S</span></a>; <span class="id" title="var">_</span> : @<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.scaler_closed"><span class="id" title="definition">scaler_closed</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#R"><span class="id" title="variable">R</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#A"><span class="id" title="variable">A</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#S"><span class="id" title="variable">S</span></a>}.<br/>
+
+<br/>
+<span class="id" title="keyword">Section</span> <a name="GRing.Pred.Subtyping"><span class="id" title="section">Subtyping</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Ltac</span> <span class="id" title="var">done</span> := <span class="id" title="tactic">case</span>⇒ *; <span class="id" title="tactic">assumption</span>.<br/>
+<span class="id" title="keyword">Fact</span> <a name="GRing.Pred.zmod_oppr"><span class="id" title="lemma">zmod_oppr</span></a> <span class="id" title="var">R</span> <span class="id" title="var">S</span> : @<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Pred.zmod"><span class="id" title="record">zmod</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#R"><span class="id" title="variable">R</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#S"><span class="id" title="variable">S</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.oppr_closed"><span class="id" title="definition">oppr_closed</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#S"><span class="id" title="variable">S</span></a>. <br/>
+<span class="id" title="keyword">Fact</span> <a name="GRing.Pred.semiring_mulr"><span class="id" title="lemma">semiring_mulr</span></a> <span class="id" title="var">R</span> <span class="id" title="var">S</span> : @<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Pred.semiring"><span class="id" title="record">semiring</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#R"><span class="id" title="variable">R</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#S"><span class="id" title="variable">S</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.mulr_closed"><span class="id" title="definition">mulr_closed</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#S"><span class="id" title="variable">S</span></a>. <br/>
+<span class="id" title="keyword">Fact</span> <a name="GRing.Pred.smul_mulr"><span class="id" title="lemma">smul_mulr</span></a> <span class="id" title="var">R</span> <span class="id" title="var">S</span> : @<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Pred.smul"><span class="id" title="record">smul</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#R"><span class="id" title="variable">R</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#S"><span class="id" title="variable">S</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.mulr_closed"><span class="id" title="definition">mulr_closed</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#S"><span class="id" title="variable">S</span></a>. <br/>
+<span class="id" title="keyword">Fact</span> <a name="GRing.Pred.submod_scaler"><span class="id" title="lemma">submod_scaler</span></a> <span class="id" title="var">R</span> <span class="id" title="var">V</span> <span class="id" title="var">S</span> : @<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Pred.submod"><span class="id" title="record">submod</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#R"><span class="id" title="variable">R</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#V"><span class="id" title="variable">V</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#S"><span class="id" title="variable">S</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.scaler_closed"><span class="id" title="definition">scaler_closed</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#S"><span class="id" title="variable">S</span></a>. <br/>
+<span class="id" title="keyword">Fact</span> <a name="GRing.Pred.subring_mulr"><span class="id" title="lemma">subring_mulr</span></a> <span class="id" title="var">R</span> <span class="id" title="var">S</span> : @<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Pred.subring"><span class="id" title="record">subring</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#R"><span class="id" title="variable">R</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#S"><span class="id" title="variable">S</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.mulr_closed"><span class="id" title="definition">mulr_closed</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#S"><span class="id" title="variable">S</span></a>. <br/>
+<span class="id" title="keyword">Fact</span> <a name="GRing.Pred.sdiv_invr"><span class="id" title="lemma">sdiv_invr</span></a> <span class="id" title="var">R</span> <span class="id" title="var">S</span> : @<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Pred.sdiv"><span class="id" title="record">sdiv</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#R"><span class="id" title="variable">R</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#S"><span class="id" title="variable">S</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.invr_closed"><span class="id" title="definition">invr_closed</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#S"><span class="id" title="variable">S</span></a>. <br/>
+<span class="id" title="keyword">Fact</span> <a name="GRing.Pred.subalg_scaler"><span class="id" title="lemma">subalg_scaler</span></a> <span class="id" title="var">R</span> <span class="id" title="var">A</span> <span class="id" title="var">S</span> : @<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Pred.subalg"><span class="id" title="record">subalg</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#R"><span class="id" title="variable">R</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#A"><span class="id" title="variable">A</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#S"><span class="id" title="variable">S</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.scaler_closed"><span class="id" title="definition">scaler_closed</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#S"><span class="id" title="variable">S</span></a>. <br/>
+<span class="id" title="keyword">Fact</span> <a name="GRing.Pred.divring_invr"><span class="id" title="lemma">divring_invr</span></a> <span class="id" title="var">R</span> <span class="id" title="var">S</span> : @<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Pred.divring"><span class="id" title="record">divring</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#R"><span class="id" title="variable">R</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#S"><span class="id" title="variable">S</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.invr_closed"><span class="id" title="definition">invr_closed</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#S"><span class="id" title="variable">S</span></a>. <br/>
+<span class="id" title="keyword">Fact</span> <a name="GRing.Pred.divalg_scaler"><span class="id" title="lemma">divalg_scaler</span></a> <span class="id" title="var">R</span> <span class="id" title="var">A</span> <span class="id" title="var">S</span> : @<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Pred.divalg"><span class="id" title="record">divalg</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#R"><span class="id" title="variable">R</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#A"><span class="id" title="variable">A</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#S"><span class="id" title="variable">S</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.scaler_closed"><span class="id" title="definition">scaler_closed</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#S"><span class="id" title="variable">S</span></a>. <br/>
+
+<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Pred.zmod_opp"><span class="id" title="definition">zmod_opp</span></a> <span class="id" title="var">R</span> <span class="id" title="var">S</span> (<span class="id" title="var">addS</span> : @<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Pred.zmod"><span class="id" title="record">zmod</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#R"><span class="id" title="variable">R</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#S"><span class="id" title="variable">S</span></a>) :=<br/>
+&nbsp;&nbsp;<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Pred.Opp"><span class="id" title="constructor">Opp</span></a> (<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Pred.add_key"><span class="id" title="projection">add_key</span></a> (<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Pred.zmod_add"><span class="id" title="projection">zmod_add</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#addS"><span class="id" title="variable">addS</span></a>)) (<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Pred.zmod_oppr"><span class="id" title="lemma">zmod_oppr</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#addS"><span class="id" title="variable">addS</span></a>).<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Pred.semiring_mul"><span class="id" title="definition">semiring_mul</span></a> <span class="id" title="var">R</span> <span class="id" title="var">S</span> (<span class="id" title="var">ringS</span> : @<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Pred.semiring"><span class="id" title="record">semiring</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#R"><span class="id" title="variable">R</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#S"><span class="id" title="variable">S</span></a>) :=<br/>
+&nbsp;&nbsp;<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Pred.Mul"><span class="id" title="constructor">Mul</span></a> (<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Pred.add_key"><span class="id" title="projection">add_key</span></a> (<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Pred.semiring_add"><span class="id" title="projection">semiring_add</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#ringS"><span class="id" title="variable">ringS</span></a>)) (<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Pred.semiring_mulr"><span class="id" title="lemma">semiring_mulr</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#ringS"><span class="id" title="variable">ringS</span></a>).<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Pred.smul_mul"><span class="id" title="definition">smul_mul</span></a> <span class="id" title="var">R</span> <span class="id" title="var">S</span> (<span class="id" title="var">mulS</span> : @<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Pred.smul"><span class="id" title="record">smul</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#R"><span class="id" title="variable">R</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#S"><span class="id" title="variable">S</span></a>) :=<br/>
+&nbsp;&nbsp;<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Pred.Mul"><span class="id" title="constructor">Mul</span></a> (<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Pred.opp_key"><span class="id" title="projection">opp_key</span></a> (<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Pred.smul_opp"><span class="id" title="projection">smul_opp</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#mulS"><span class="id" title="variable">mulS</span></a>)) (<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Pred.smul_mulr"><span class="id" title="lemma">smul_mulr</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#mulS"><span class="id" title="variable">mulS</span></a>).<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Pred.subring_semi"><span class="id" title="definition">subring_semi</span></a> <span class="id" title="var">R</span> <span class="id" title="var">S</span> (<span class="id" title="var">ringS</span> : @<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Pred.subring"><span class="id" title="record">subring</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#R"><span class="id" title="variable">R</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#S"><span class="id" title="variable">S</span></a>) :=<br/>
+&nbsp;&nbsp;<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Pred.Semiring"><span class="id" title="constructor">Semiring</span></a> (<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Pred.zmod_add"><span class="id" title="projection">zmod_add</span></a> (<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Pred.subring_zmod"><span class="id" title="projection">subring_zmod</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#ringS"><span class="id" title="variable">ringS</span></a>)) (<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Pred.subring_mulr"><span class="id" title="lemma">subring_mulr</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#ringS"><span class="id" title="variable">ringS</span></a>).<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Pred.subring_smul"><span class="id" title="definition">subring_smul</span></a> <span class="id" title="var">R</span> <span class="id" title="var">S</span> (<span class="id" title="var">ringS</span> : @<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Pred.subring"><span class="id" title="record">subring</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#R"><span class="id" title="variable">R</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#S"><span class="id" title="variable">S</span></a>) :=<br/>
+&nbsp;&nbsp;<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Pred.Smul"><span class="id" title="constructor">Smul</span></a> (<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Pred.zmod_opp"><span class="id" title="definition">zmod_opp</span></a> (<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Pred.subring_zmod"><span class="id" title="projection">subring_zmod</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#ringS"><span class="id" title="variable">ringS</span></a>)) (<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Pred.subring_mulr"><span class="id" title="lemma">subring_mulr</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#ringS"><span class="id" title="variable">ringS</span></a>).<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Pred.sdiv_div"><span class="id" title="definition">sdiv_div</span></a> <span class="id" title="var">R</span> <span class="id" title="var">S</span> (<span class="id" title="var">divS</span> : @<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Pred.sdiv"><span class="id" title="record">sdiv</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#R"><span class="id" title="variable">R</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#S"><span class="id" title="variable">S</span></a>) :=<br/>
+&nbsp;&nbsp;<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Pred.Div"><span class="id" title="constructor">Div</span></a> (<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Pred.smul_mul"><span class="id" title="definition">smul_mul</span></a> (<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Pred.sdiv_smul"><span class="id" title="projection">sdiv_smul</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#divS"><span class="id" title="variable">divS</span></a>)) (<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Pred.sdiv_invr"><span class="id" title="lemma">sdiv_invr</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#divS"><span class="id" title="variable">divS</span></a>).<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Pred.subalg_submod"><span class="id" title="definition">subalg_submod</span></a> <span class="id" title="var">R</span> <span class="id" title="var">A</span> <span class="id" title="var">S</span> (<span class="id" title="var">algS</span> : @<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Pred.subalg"><span class="id" title="record">subalg</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#R"><span class="id" title="variable">R</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#A"><span class="id" title="variable">A</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#S"><span class="id" title="variable">S</span></a>) :=<br/>
+&nbsp;&nbsp;<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Pred.Submod"><span class="id" title="constructor">Submod</span></a> (<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Pred.subring_zmod"><span class="id" title="projection">subring_zmod</span></a> (<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Pred.subalg_ring"><span class="id" title="projection">subalg_ring</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#algS"><span class="id" title="variable">algS</span></a>)) (<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Pred.subalg_scaler"><span class="id" title="lemma">subalg_scaler</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#algS"><span class="id" title="variable">algS</span></a>).<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Pred.divring_sdiv"><span class="id" title="definition">divring_sdiv</span></a> <span class="id" title="var">R</span> <span class="id" title="var">S</span> (<span class="id" title="var">ringS</span> : @<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Pred.divring"><span class="id" title="record">divring</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#R"><span class="id" title="variable">R</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#S"><span class="id" title="variable">S</span></a>) :=<br/>
+&nbsp;&nbsp;<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Pred.Sdiv"><span class="id" title="constructor">Sdiv</span></a> (<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Pred.subring_smul"><span class="id" title="definition">subring_smul</span></a> (<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Pred.divring_ring"><span class="id" title="projection">divring_ring</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#ringS"><span class="id" title="variable">ringS</span></a>)) (<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Pred.divring_invr"><span class="id" title="lemma">divring_invr</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#ringS"><span class="id" title="variable">ringS</span></a>).<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Pred.divalg_alg"><span class="id" title="definition">divalg_alg</span></a> <span class="id" title="var">R</span> <span class="id" title="var">A</span> <span class="id" title="var">S</span> (<span class="id" title="var">algS</span> : @<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Pred.divalg"><span class="id" title="record">divalg</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#R"><span class="id" title="variable">R</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#A"><span class="id" title="variable">A</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#S"><span class="id" title="variable">S</span></a>) :=<br/>
+&nbsp;&nbsp;<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Pred.Subalg"><span class="id" title="constructor">Subalg</span></a> (<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Pred.divring_ring"><span class="id" title="projection">divring_ring</span></a> (<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Pred.divalg_ring"><span class="id" title="projection">divalg_ring</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#algS"><span class="id" title="variable">algS</span></a>)) (<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Pred.divalg_scaler"><span class="id" title="lemma">divalg_scaler</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#algS"><span class="id" title="variable">algS</span></a>).<br/>
+
+<br/>
+<span class="id" title="keyword">End</span> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Pred.Subtyping"><span class="id" title="section">Subtyping</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Section</span> <a name="GRing.Pred.Extensionality"><span class="id" title="section">Extensionality</span></a>.<br/>
+</div>
+
+<div class="doc">
+ This could be avoided by exploiting the Coq 8.4 eta-convertibility.
+</div>
+<div class="code">
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.Pred.opp_ext"><span class="id" title="lemma">opp_ext</span></a> (<span class="id" title="var">U</span> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Zmodule.Exports.zmodType"><span class="id" title="abbreviation">zmodType</span></a>) <span class="id" title="var">S</span> <span class="id" title="var">k</span> (<span class="id" title="var">kS</span> : @<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#keyed_pred"><span class="id" title="record">keyed_pred</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#U"><span class="id" title="variable">U</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#S"><span class="id" title="variable">S</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#k"><span class="id" title="variable">k</span></a>) :<br/>
+&nbsp;&nbsp;<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.oppr_closed"><span class="id" title="definition">oppr_closed</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#kS"><span class="id" title="variable">kS</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.oppr_closed"><span class="id" title="definition">oppr_closed</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#S"><span class="id" title="variable">S</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.Pred.add_ext"><span class="id" title="lemma">add_ext</span></a> (<span class="id" title="var">U</span> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Zmodule.Exports.zmodType"><span class="id" title="abbreviation">zmodType</span></a>) <span class="id" title="var">S</span> <span class="id" title="var">k</span> (<span class="id" title="var">kS</span> : @<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#keyed_pred"><span class="id" title="record">keyed_pred</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#U"><span class="id" title="variable">U</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#S"><span class="id" title="variable">S</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#k"><span class="id" title="variable">k</span></a>) :<br/>
+&nbsp;&nbsp;<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.addr_closed"><span class="id" title="definition">addr_closed</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#kS"><span class="id" title="variable">kS</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.addr_closed"><span class="id" title="definition">addr_closed</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#S"><span class="id" title="variable">S</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.Pred.mul_ext"><span class="id" title="lemma">mul_ext</span></a> (<span class="id" title="var">R</span> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Ring.Exports.ringType"><span class="id" title="abbreviation">ringType</span></a>) <span class="id" title="var">S</span> <span class="id" title="var">k</span> (<span class="id" title="var">kS</span> : @<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#keyed_pred"><span class="id" title="record">keyed_pred</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#R"><span class="id" title="variable">R</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#S"><span class="id" title="variable">S</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#k"><span class="id" title="variable">k</span></a>) :<br/>
+&nbsp;&nbsp;<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.mulr_closed"><span class="id" title="definition">mulr_closed</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#kS"><span class="id" title="variable">kS</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.mulr_closed"><span class="id" title="definition">mulr_closed</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#S"><span class="id" title="variable">S</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.Pred.scale_ext"><span class="id" title="lemma">scale_ext</span></a> (<span class="id" title="var">R</span> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Ring.Exports.ringType"><span class="id" title="abbreviation">ringType</span></a>) (<span class="id" title="var">U</span> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Lmodule.Exports.lmodType"><span class="id" title="abbreviation">lmodType</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#R"><span class="id" title="variable">R</span></a>) <span class="id" title="var">S</span> <span class="id" title="var">k</span> (<span class="id" title="var">kS</span> : @<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#keyed_pred"><span class="id" title="record">keyed_pred</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#U"><span class="id" title="variable">U</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#S"><span class="id" title="variable">S</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#k"><span class="id" title="variable">k</span></a>) :<br/>
+&nbsp;&nbsp;<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.scaler_closed"><span class="id" title="definition">scaler_closed</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#kS"><span class="id" title="variable">kS</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.scaler_closed"><span class="id" title="definition">scaler_closed</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#S"><span class="id" title="variable">S</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.Pred.inv_ext"><span class="id" title="lemma">inv_ext</span></a> (<span class="id" title="var">R</span> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.UnitRing.Exports.unitRingType"><span class="id" title="abbreviation">unitRingType</span></a>) <span class="id" title="var">S</span> <span class="id" title="var">k</span> (<span class="id" title="var">kS</span> : @<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#keyed_pred"><span class="id" title="record">keyed_pred</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#R"><span class="id" title="variable">R</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#S"><span class="id" title="variable">S</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#k"><span class="id" title="variable">k</span></a>) :<br/>
+&nbsp;&nbsp;<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.invr_closed"><span class="id" title="definition">invr_closed</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#kS"><span class="id" title="variable">kS</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.invr_closed"><span class="id" title="definition">invr_closed</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#S"><span class="id" title="variable">S</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">End</span> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Pred.Extensionality"><span class="id" title="section">Extensionality</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Module</span> <a name="GRing.Pred.Default"><span class="id" title="module">Default</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Pred.Default.opp"><span class="id" title="definition">opp</span></a> <span class="id" title="var">V</span> <span class="id" title="var">S</span> <span class="id" title="var">oppS</span> := @<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Pred.Opp"><span class="id" title="constructor">Opp</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#V"><span class="id" title="variable">V</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#S"><span class="id" title="variable">S</span></a> (<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#DefaultPredKey"><span class="id" title="constructor">DefaultPredKey</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#S"><span class="id" title="variable">S</span></a>) <a class="idref" href="mathcomp.algebra.ssralg.html#oppS"><span class="id" title="variable">oppS</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Pred.Default.add"><span class="id" title="definition">add</span></a> <span class="id" title="var">V</span> <span class="id" title="var">S</span> <span class="id" title="var">addS</span> := @<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Pred.Add"><span class="id" title="constructor">Add</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#V"><span class="id" title="variable">V</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#S"><span class="id" title="variable">S</span></a> (<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#DefaultPredKey"><span class="id" title="constructor">DefaultPredKey</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#S"><span class="id" title="variable">S</span></a>) <a class="idref" href="mathcomp.algebra.ssralg.html#addS"><span class="id" title="variable">addS</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Pred.Default.mul"><span class="id" title="definition">mul</span></a> <span class="id" title="var">R</span> <span class="id" title="var">S</span> <span class="id" title="var">mulS</span> := @<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Pred.Mul"><span class="id" title="constructor">Mul</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#R"><span class="id" title="variable">R</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#S"><span class="id" title="variable">S</span></a> (<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#DefaultPredKey"><span class="id" title="constructor">DefaultPredKey</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#S"><span class="id" title="variable">S</span></a>) <a class="idref" href="mathcomp.algebra.ssralg.html#mulS"><span class="id" title="variable">mulS</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Pred.Default.zmod"><span class="id" title="definition">zmod</span></a> <span class="id" title="var">V</span> <span class="id" title="var">S</span> <span class="id" title="var">addS</span> <span class="id" title="var">oppS</span> := @<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Pred.Zmod"><span class="id" title="constructor">Zmod</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#V"><span class="id" title="variable">V</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#S"><span class="id" title="variable">S</span></a> (<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Pred.Default.add"><span class="id" title="definition">add</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#addS"><span class="id" title="variable">addS</span></a>) <a class="idref" href="mathcomp.algebra.ssralg.html#oppS"><span class="id" title="variable">oppS</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Pred.Default.semiring"><span class="id" title="definition">semiring</span></a> <span class="id" title="var">R</span> <span class="id" title="var">S</span> <span class="id" title="var">addS</span> <span class="id" title="var">mulS</span> := @<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Pred.Semiring"><span class="id" title="constructor">Semiring</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#R"><span class="id" title="variable">R</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#S"><span class="id" title="variable">S</span></a> (<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Pred.Default.add"><span class="id" title="definition">add</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#addS"><span class="id" title="variable">addS</span></a>) <a class="idref" href="mathcomp.algebra.ssralg.html#mulS"><span class="id" title="variable">mulS</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Pred.Default.smul"><span class="id" title="definition">smul</span></a> <span class="id" title="var">R</span> <span class="id" title="var">S</span> <span class="id" title="var">oppS</span> <span class="id" title="var">mulS</span> := @<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Pred.Smul"><span class="id" title="constructor">Smul</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#R"><span class="id" title="variable">R</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#S"><span class="id" title="variable">S</span></a> (<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Pred.Default.opp"><span class="id" title="definition">opp</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#oppS"><span class="id" title="variable">oppS</span></a>) <a class="idref" href="mathcomp.algebra.ssralg.html#mulS"><span class="id" title="variable">mulS</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Pred.Default.div"><span class="id" title="definition">div</span></a> <span class="id" title="var">R</span> <span class="id" title="var">S</span> <span class="id" title="var">mulS</span> <span class="id" title="var">invS</span> := @<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Pred.Div"><span class="id" title="constructor">Div</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#R"><span class="id" title="variable">R</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#S"><span class="id" title="variable">S</span></a> (<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Pred.Default.mul"><span class="id" title="definition">mul</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#mulS"><span class="id" title="variable">mulS</span></a>) <a class="idref" href="mathcomp.algebra.ssralg.html#invS"><span class="id" title="variable">invS</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Pred.Default.submod"><span class="id" title="definition">submod</span></a> <span class="id" title="var">R</span> <span class="id" title="var">V</span> <span class="id" title="var">S</span> <span class="id" title="var">addS</span> <span class="id" title="var">oppS</span> <span class="id" title="var">linS</span> := @<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Pred.Submod"><span class="id" title="constructor">Submod</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#R"><span class="id" title="variable">R</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#V"><span class="id" title="variable">V</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#S"><span class="id" title="variable">S</span></a> (<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Pred.Default.zmod"><span class="id" title="definition">zmod</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#addS"><span class="id" title="variable">addS</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#oppS"><span class="id" title="variable">oppS</span></a>) <a class="idref" href="mathcomp.algebra.ssralg.html#linS"><span class="id" title="variable">linS</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Pred.Default.subring"><span class="id" title="definition">subring</span></a> <span class="id" title="var">R</span> <span class="id" title="var">S</span> <span class="id" title="var">addS</span> <span class="id" title="var">oppS</span> <span class="id" title="var">mulS</span> := @<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Pred.Subring"><span class="id" title="constructor">Subring</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#R"><span class="id" title="variable">R</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#S"><span class="id" title="variable">S</span></a> (<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Pred.Default.zmod"><span class="id" title="definition">zmod</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#addS"><span class="id" title="variable">addS</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#oppS"><span class="id" title="variable">oppS</span></a>) <a class="idref" href="mathcomp.algebra.ssralg.html#mulS"><span class="id" title="variable">mulS</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Pred.Default.sdiv"><span class="id" title="definition">sdiv</span></a> <span class="id" title="var">R</span> <span class="id" title="var">S</span> <span class="id" title="var">oppS</span> <span class="id" title="var">mulS</span> <span class="id" title="var">invS</span> := @<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Pred.Sdiv"><span class="id" title="constructor">Sdiv</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#R"><span class="id" title="variable">R</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#S"><span class="id" title="variable">S</span></a> (<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Pred.Default.smul"><span class="id" title="definition">smul</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#oppS"><span class="id" title="variable">oppS</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#mulS"><span class="id" title="variable">mulS</span></a>) <a class="idref" href="mathcomp.algebra.ssralg.html#invS"><span class="id" title="variable">invS</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Pred.Default.subalg"><span class="id" title="definition">subalg</span></a> <span class="id" title="var">R</span> <span class="id" title="var">A</span> <span class="id" title="var">S</span> <span class="id" title="var">addS</span> <span class="id" title="var">oppS</span> <span class="id" title="var">mulS</span> <span class="id" title="var">linS</span> :=<br/>
+&nbsp;&nbsp;@<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Pred.Subalg"><span class="id" title="constructor">Subalg</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#R"><span class="id" title="variable">R</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#A"><span class="id" title="variable">A</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#S"><span class="id" title="variable">S</span></a> (<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Pred.Default.subring"><span class="id" title="definition">subring</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#addS"><span class="id" title="variable">addS</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#oppS"><span class="id" title="variable">oppS</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#mulS"><span class="id" title="variable">mulS</span></a>) <a class="idref" href="mathcomp.algebra.ssralg.html#linS"><span class="id" title="variable">linS</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Pred.Default.divring"><span class="id" title="definition">divring</span></a> <span class="id" title="var">R</span> <span class="id" title="var">S</span> <span class="id" title="var">addS</span> <span class="id" title="var">oppS</span> <span class="id" title="var">mulS</span> <span class="id" title="var">invS</span> :=<br/>
+&nbsp;&nbsp;@<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Pred.Divring"><span class="id" title="constructor">Divring</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#R"><span class="id" title="variable">R</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#S"><span class="id" title="variable">S</span></a> (<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Pred.Default.subring"><span class="id" title="definition">subring</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#addS"><span class="id" title="variable">addS</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#oppS"><span class="id" title="variable">oppS</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#mulS"><span class="id" title="variable">mulS</span></a>) <a class="idref" href="mathcomp.algebra.ssralg.html#invS"><span class="id" title="variable">invS</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Pred.Default.divalg"><span class="id" title="definition">divalg</span></a> <span class="id" title="var">R</span> <span class="id" title="var">A</span> <span class="id" title="var">S</span> <span class="id" title="var">addS</span> <span class="id" title="var">oppS</span> <span class="id" title="var">mulS</span> <span class="id" title="var">invS</span> <span class="id" title="var">linS</span> :=<br/>
+&nbsp;&nbsp;@<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Pred.Divalg"><span class="id" title="constructor">Divalg</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#R"><span class="id" title="variable">R</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#A"><span class="id" title="variable">A</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#S"><span class="id" title="variable">S</span></a> (<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Pred.Default.divring"><span class="id" title="definition">divring</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#addS"><span class="id" title="variable">addS</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#oppS"><span class="id" title="variable">oppS</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#mulS"><span class="id" title="variable">mulS</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#invS"><span class="id" title="variable">invS</span></a>) <a class="idref" href="mathcomp.algebra.ssralg.html#linS"><span class="id" title="variable">linS</span></a>.<br/>
+<span class="id" title="keyword">End</span> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Pred.Default"><span class="id" title="module">Default</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Module</span> <a name="GRing.Pred.Exports"><span class="id" title="module">Exports</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Notation</span> <a name="GRing.Pred.Exports.oppr_closed"><span class="id" title="abbreviation">oppr_closed</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.oppr_closed"><span class="id" title="definition">oppr_closed</span></a>.<br/>
+<span class="id" title="keyword">Notation</span> <a name="GRing.Pred.Exports.addr_closed"><span class="id" title="abbreviation">addr_closed</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.addr_closed"><span class="id" title="definition">addr_closed</span></a>.<br/>
+<span class="id" title="keyword">Notation</span> <a name="GRing.Pred.Exports.mulr_closed"><span class="id" title="abbreviation">mulr_closed</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.mulr_closed"><span class="id" title="definition">mulr_closed</span></a>.<br/>
+<span class="id" title="keyword">Notation</span> <a name="GRing.Pred.Exports.zmod_closed"><span class="id" title="abbreviation">zmod_closed</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.zmod_closed"><span class="id" title="definition">zmod_closed</span></a>.<br/>
+<span class="id" title="keyword">Notation</span> <a name="GRing.Pred.Exports.smulr_closed"><span class="id" title="abbreviation">smulr_closed</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.smulr_closed"><span class="id" title="definition">smulr_closed</span></a>.<br/>
+<span class="id" title="keyword">Notation</span> <a name="GRing.Pred.Exports.invr_closed"><span class="id" title="abbreviation">invr_closed</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.invr_closed"><span class="id" title="definition">invr_closed</span></a>.<br/>
+<span class="id" title="keyword">Notation</span> <a name="GRing.Pred.Exports.divr_closed"><span class="id" title="abbreviation">divr_closed</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.divr_closed"><span class="id" title="definition">divr_closed</span></a>.<br/>
+<span class="id" title="keyword">Notation</span> <a name="GRing.Pred.Exports.scaler_closed"><span class="id" title="abbreviation">scaler_closed</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.scaler_closed"><span class="id" title="definition">scaler_closed</span></a>.<br/>
+<span class="id" title="keyword">Notation</span> <a name="GRing.Pred.Exports.linear_closed"><span class="id" title="abbreviation">linear_closed</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.linear_closed"><span class="id" title="definition">linear_closed</span></a>.<br/>
+<span class="id" title="keyword">Notation</span> <a name="GRing.Pred.Exports.submod_closed"><span class="id" title="abbreviation">submod_closed</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.submod_closed"><span class="id" title="definition">submod_closed</span></a>.<br/>
+<span class="id" title="keyword">Notation</span> <a name="GRing.Pred.Exports.semiring_closed"><span class="id" title="abbreviation">semiring_closed</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.semiring_closed"><span class="id" title="definition">semiring_closed</span></a>.<br/>
+<span class="id" title="keyword">Notation</span> <a name="GRing.Pred.Exports.subring_closed"><span class="id" title="abbreviation">subring_closed</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.subring_closed"><span class="id" title="definition">subring_closed</span></a>.<br/>
+<span class="id" title="keyword">Notation</span> <a name="GRing.Pred.Exports.sdivr_closed"><span class="id" title="abbreviation">sdivr_closed</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.sdivr_closed"><span class="id" title="definition">sdivr_closed</span></a>.<br/>
+<span class="id" title="keyword">Notation</span> <a name="GRing.Pred.Exports.subalg_closed"><span class="id" title="abbreviation">subalg_closed</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.subalg_closed"><span class="id" title="definition">subalg_closed</span></a>.<br/>
+<span class="id" title="keyword">Notation</span> <a name="GRing.Pred.Exports.divring_closed"><span class="id" title="abbreviation">divring_closed</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.divring_closed"><span class="id" title="definition">divring_closed</span></a>.<br/>
+<span class="id" title="keyword">Notation</span> <a name="GRing.Pred.Exports.divalg_closed"><span class="id" title="abbreviation">divalg_closed</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.divalg_closed"><span class="id" title="definition">divalg_closed</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Coercion</span> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.zmod_closedD"><span class="id" title="lemma">zmod_closedD</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.zmod_closedD"><span class="id" title="lemma">:</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.zmod_closedD"><span class="id" title="lemma">zmod_closed</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.zmod_closedD"><span class="id" title="lemma">&gt;-&gt;</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.zmod_closedD"><span class="id" title="lemma">addr_closed</span></a>.<br/>
+<span class="id" title="keyword">Coercion</span> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.zmod_closedN"><span class="id" title="lemma">zmod_closedN</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.zmod_closedN"><span class="id" title="lemma">:</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.zmod_closedN"><span class="id" title="lemma">zmod_closed</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.zmod_closedN"><span class="id" title="lemma">&gt;-&gt;</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.zmod_closedN"><span class="id" title="lemma">oppr_closed</span></a>.<br/>
+<span class="id" title="keyword">Coercion</span> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.smulr_closedN"><span class="id" title="lemma">smulr_closedN</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.smulr_closedN"><span class="id" title="lemma">:</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.smulr_closedN"><span class="id" title="lemma">smulr_closed</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.smulr_closedN"><span class="id" title="lemma">&gt;-&gt;</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.smulr_closedN"><span class="id" title="lemma">oppr_closed</span></a>.<br/>
+<span class="id" title="keyword">Coercion</span> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.smulr_closedM"><span class="id" title="lemma">smulr_closedM</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.smulr_closedM"><span class="id" title="lemma">:</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.smulr_closedM"><span class="id" title="lemma">smulr_closed</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.smulr_closedM"><span class="id" title="lemma">&gt;-&gt;</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.smulr_closedM"><span class="id" title="lemma">mulr_closed</span></a>.<br/>
+<span class="id" title="keyword">Coercion</span> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.divr_closedV"><span class="id" title="lemma">divr_closedV</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.divr_closedV"><span class="id" title="lemma">:</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.divr_closedV"><span class="id" title="lemma">divr_closed</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.divr_closedV"><span class="id" title="lemma">&gt;-&gt;</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.divr_closedV"><span class="id" title="lemma">invr_closed</span></a>.<br/>
+<span class="id" title="keyword">Coercion</span> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.divr_closedM"><span class="id" title="lemma">divr_closedM</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.divr_closedM"><span class="id" title="lemma">:</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.divr_closedM"><span class="id" title="lemma">divr_closed</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.divr_closedM"><span class="id" title="lemma">&gt;-&gt;</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.divr_closedM"><span class="id" title="lemma">mulr_closed</span></a>.<br/>
+<span class="id" title="keyword">Coercion</span> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.submod_closedZ"><span class="id" title="lemma">submod_closedZ</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.submod_closedZ"><span class="id" title="lemma">:</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.submod_closedZ"><span class="id" title="lemma">submod_closed</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.submod_closedZ"><span class="id" title="lemma">&gt;-&gt;</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.submod_closedZ"><span class="id" title="lemma">scaler_closed</span></a>.<br/>
+<span class="id" title="keyword">Coercion</span> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.submod_closedB"><span class="id" title="lemma">submod_closedB</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.submod_closedB"><span class="id" title="lemma">:</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.submod_closedB"><span class="id" title="lemma">submod_closed</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.submod_closedB"><span class="id" title="lemma">&gt;-&gt;</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.submod_closedB"><span class="id" title="lemma">zmod_closed</span></a>.<br/>
+<span class="id" title="keyword">Coercion</span> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.semiring_closedD"><span class="id" title="lemma">semiring_closedD</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.semiring_closedD"><span class="id" title="lemma">:</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.semiring_closedD"><span class="id" title="lemma">semiring_closed</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.semiring_closedD"><span class="id" title="lemma">&gt;-&gt;</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.semiring_closedD"><span class="id" title="lemma">addr_closed</span></a>.<br/>
+<span class="id" title="keyword">Coercion</span> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.semiring_closedM"><span class="id" title="lemma">semiring_closedM</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.semiring_closedM"><span class="id" title="lemma">:</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.semiring_closedM"><span class="id" title="lemma">semiring_closed</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.semiring_closedM"><span class="id" title="lemma">&gt;-&gt;</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.semiring_closedM"><span class="id" title="lemma">mulr_closed</span></a>.<br/>
+<span class="id" title="keyword">Coercion</span> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.subring_closedB"><span class="id" title="lemma">subring_closedB</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.subring_closedB"><span class="id" title="lemma">:</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.subring_closedB"><span class="id" title="lemma">subring_closed</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.subring_closedB"><span class="id" title="lemma">&gt;-&gt;</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.subring_closedB"><span class="id" title="lemma">zmod_closed</span></a>.<br/>
+<span class="id" title="keyword">Coercion</span> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.subring_closedM"><span class="id" title="lemma">subring_closedM</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.subring_closedM"><span class="id" title="lemma">:</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.subring_closedM"><span class="id" title="lemma">subring_closed</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.subring_closedM"><span class="id" title="lemma">&gt;-&gt;</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.subring_closedM"><span class="id" title="lemma">smulr_closed</span></a>.<br/>
+<span class="id" title="keyword">Coercion</span> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.subring_closed_semi"><span class="id" title="lemma">subring_closed_semi</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.subring_closed_semi"><span class="id" title="lemma">:</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.subring_closed_semi"><span class="id" title="lemma">subring_closed</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.subring_closed_semi"><span class="id" title="lemma">&gt;-&gt;</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.subring_closed_semi"><span class="id" title="lemma">semiring_closed</span></a>.<br/>
+<span class="id" title="keyword">Coercion</span> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.sdivr_closedM"><span class="id" title="lemma">sdivr_closedM</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.sdivr_closedM"><span class="id" title="lemma">:</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.sdivr_closedM"><span class="id" title="lemma">sdivr_closed</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.sdivr_closedM"><span class="id" title="lemma">&gt;-&gt;</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.sdivr_closedM"><span class="id" title="lemma">smulr_closed</span></a>.<br/>
+<span class="id" title="keyword">Coercion</span> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.sdivr_closed_div"><span class="id" title="lemma">sdivr_closed_div</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.sdivr_closed_div"><span class="id" title="lemma">:</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.sdivr_closed_div"><span class="id" title="lemma">sdivr_closed</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.sdivr_closed_div"><span class="id" title="lemma">&gt;-&gt;</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.sdivr_closed_div"><span class="id" title="lemma">divr_closed</span></a>.<br/>
+<span class="id" title="keyword">Coercion</span> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.subalg_closedZ"><span class="id" title="lemma">subalg_closedZ</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.subalg_closedZ"><span class="id" title="lemma">:</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.subalg_closedZ"><span class="id" title="lemma">subalg_closed</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.subalg_closedZ"><span class="id" title="lemma">&gt;-&gt;</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.subalg_closedZ"><span class="id" title="lemma">submod_closed</span></a>.<br/>
+<span class="id" title="keyword">Coercion</span> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.subalg_closedBM"><span class="id" title="lemma">subalg_closedBM</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.subalg_closedBM"><span class="id" title="lemma">:</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.subalg_closedBM"><span class="id" title="lemma">subalg_closed</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.subalg_closedBM"><span class="id" title="lemma">&gt;-&gt;</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.subalg_closedBM"><span class="id" title="lemma">subring_closed</span></a>.<br/>
+<span class="id" title="keyword">Coercion</span> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.divring_closedBM"><span class="id" title="lemma">divring_closedBM</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.divring_closedBM"><span class="id" title="lemma">:</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.divring_closedBM"><span class="id" title="lemma">divring_closed</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.divring_closedBM"><span class="id" title="lemma">&gt;-&gt;</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.divring_closedBM"><span class="id" title="lemma">subring_closed</span></a>.<br/>
+<span class="id" title="keyword">Coercion</span> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.divring_closed_div"><span class="id" title="lemma">divring_closed_div</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.divring_closed_div"><span class="id" title="lemma">:</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.divring_closed_div"><span class="id" title="lemma">divring_closed</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.divring_closed_div"><span class="id" title="lemma">&gt;-&gt;</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.divring_closed_div"><span class="id" title="lemma">sdivr_closed</span></a>.<br/>
+<span class="id" title="keyword">Coercion</span> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.divalg_closedZ"><span class="id" title="lemma">divalg_closedZ</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.divalg_closedZ"><span class="id" title="lemma">:</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.divalg_closedZ"><span class="id" title="lemma">divalg_closed</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.divalg_closedZ"><span class="id" title="lemma">&gt;-&gt;</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.divalg_closedZ"><span class="id" title="lemma">subalg_closed</span></a>.<br/>
+<span class="id" title="keyword">Coercion</span> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.divalg_closedBdiv"><span class="id" title="lemma">divalg_closedBdiv</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.divalg_closedBdiv"><span class="id" title="lemma">:</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.divalg_closedBdiv"><span class="id" title="lemma">divalg_closed</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.divalg_closedBdiv"><span class="id" title="lemma">&gt;-&gt;</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.divalg_closedBdiv"><span class="id" title="lemma">divring_closed</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Coercion</span> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Pred.opp_key"><span class="id" title="projection">opp_key</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Pred.opp_key"><span class="id" title="projection">:</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Pred.opp_key"><span class="id" title="projection">opp</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Pred.opp_key"><span class="id" title="projection">&gt;-&gt;</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Pred.opp_key"><span class="id" title="projection">pred_key</span></a>.<br/>
+<span class="id" title="keyword">Coercion</span> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Pred.add_key"><span class="id" title="projection">add_key</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Pred.add_key"><span class="id" title="projection">:</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Pred.add_key"><span class="id" title="projection">add</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Pred.add_key"><span class="id" title="projection">&gt;-&gt;</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Pred.add_key"><span class="id" title="projection">pred_key</span></a>.<br/>
+<span class="id" title="keyword">Coercion</span> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Pred.mul_key"><span class="id" title="projection">mul_key</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Pred.mul_key"><span class="id" title="projection">:</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Pred.mul_key"><span class="id" title="projection">mul</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Pred.mul_key"><span class="id" title="projection">&gt;-&gt;</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Pred.mul_key"><span class="id" title="projection">pred_key</span></a>.<br/>
+<span class="id" title="keyword">Coercion</span> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Pred.zmod_opp"><span class="id" title="definition">zmod_opp</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Pred.zmod_opp"><span class="id" title="definition">:</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Pred.zmod_opp"><span class="id" title="definition">zmod</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Pred.zmod_opp"><span class="id" title="definition">&gt;-&gt;</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Pred.zmod_opp"><span class="id" title="definition">opp</span></a>.<br/>
+<span class="id" title="keyword">Canonical</span> <span class="id" title="var">zmod_opp</span>.<br/>
+<span class="id" title="keyword">Coercion</span> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Pred.zmod_add"><span class="id" title="projection">zmod_add</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Pred.zmod_add"><span class="id" title="projection">:</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Pred.zmod_add"><span class="id" title="projection">zmod</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Pred.zmod_add"><span class="id" title="projection">&gt;-&gt;</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Pred.zmod_add"><span class="id" title="projection">add</span></a>.<br/>
+<span class="id" title="keyword">Coercion</span> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Pred.semiring_add"><span class="id" title="projection">semiring_add</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Pred.semiring_add"><span class="id" title="projection">:</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Pred.semiring_add"><span class="id" title="projection">semiring</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Pred.semiring_add"><span class="id" title="projection">&gt;-&gt;</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Pred.semiring_add"><span class="id" title="projection">add</span></a>.<br/>
+<span class="id" title="keyword">Coercion</span> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Pred.semiring_mul"><span class="id" title="definition">semiring_mul</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Pred.semiring_mul"><span class="id" title="definition">:</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Pred.semiring_mul"><span class="id" title="definition">semiring</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Pred.semiring_mul"><span class="id" title="definition">&gt;-&gt;</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Pred.semiring_mul"><span class="id" title="definition">mul</span></a>.<br/>
+<span class="id" title="keyword">Canonical</span> <span class="id" title="var">semiring_mul</span>.<br/>
+<span class="id" title="keyword">Coercion</span> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Pred.smul_opp"><span class="id" title="projection">smul_opp</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Pred.smul_opp"><span class="id" title="projection">:</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Pred.smul_opp"><span class="id" title="projection">smul</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Pred.smul_opp"><span class="id" title="projection">&gt;-&gt;</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Pred.smul_opp"><span class="id" title="projection">opp</span></a>.<br/>
+<span class="id" title="keyword">Coercion</span> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Pred.smul_mul"><span class="id" title="definition">smul_mul</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Pred.smul_mul"><span class="id" title="definition">:</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Pred.smul_mul"><span class="id" title="definition">smul</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Pred.smul_mul"><span class="id" title="definition">&gt;-&gt;</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Pred.smul_mul"><span class="id" title="definition">mul</span></a>.<br/>
+<span class="id" title="keyword">Canonical</span> <span class="id" title="var">smul_mul</span>.<br/>
+<span class="id" title="keyword">Coercion</span> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Pred.div_mul"><span class="id" title="projection">div_mul</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Pred.div_mul"><span class="id" title="projection">:</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Pred.div_mul"><span class="id" title="projection">div</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Pred.div_mul"><span class="id" title="projection">&gt;-&gt;</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Pred.div_mul"><span class="id" title="projection">mul</span></a>.<br/>
+<span class="id" title="keyword">Coercion</span> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Pred.submod_zmod"><span class="id" title="projection">submod_zmod</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Pred.submod_zmod"><span class="id" title="projection">:</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Pred.submod_zmod"><span class="id" title="projection">submod</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Pred.submod_zmod"><span class="id" title="projection">&gt;-&gt;</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Pred.submod_zmod"><span class="id" title="projection">zmod</span></a>.<br/>
+<span class="id" title="keyword">Coercion</span> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Pred.subring_zmod"><span class="id" title="projection">subring_zmod</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Pred.subring_zmod"><span class="id" title="projection">:</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Pred.subring_zmod"><span class="id" title="projection">subring</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Pred.subring_zmod"><span class="id" title="projection">&gt;-&gt;</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Pred.subring_zmod"><span class="id" title="projection">zmod</span></a>.<br/>
+<span class="id" title="keyword">Coercion</span> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Pred.subring_semi"><span class="id" title="definition">subring_semi</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Pred.subring_semi"><span class="id" title="definition">:</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Pred.subring_semi"><span class="id" title="definition">subring</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Pred.subring_semi"><span class="id" title="definition">&gt;-&gt;</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Pred.subring_semi"><span class="id" title="definition">semiring</span></a>.<br/>
+<span class="id" title="keyword">Canonical</span> <span class="id" title="var">subring_semi</span>.<br/>
+<span class="id" title="keyword">Coercion</span> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Pred.subring_smul"><span class="id" title="definition">subring_smul</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Pred.subring_smul"><span class="id" title="definition">:</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Pred.subring_smul"><span class="id" title="definition">subring</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Pred.subring_smul"><span class="id" title="definition">&gt;-&gt;</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Pred.subring_smul"><span class="id" title="definition">smul</span></a>.<br/>
+<span class="id" title="keyword">Canonical</span> <span class="id" title="var">subring_smul</span>.<br/>
+<span class="id" title="keyword">Coercion</span> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Pred.sdiv_smul"><span class="id" title="projection">sdiv_smul</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Pred.sdiv_smul"><span class="id" title="projection">:</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Pred.sdiv_smul"><span class="id" title="projection">sdiv</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Pred.sdiv_smul"><span class="id" title="projection">&gt;-&gt;</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Pred.sdiv_smul"><span class="id" title="projection">smul</span></a>.<br/>
+<span class="id" title="keyword">Coercion</span> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Pred.sdiv_div"><span class="id" title="definition">sdiv_div</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Pred.sdiv_div"><span class="id" title="definition">:</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Pred.sdiv_div"><span class="id" title="definition">sdiv</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Pred.sdiv_div"><span class="id" title="definition">&gt;-&gt;</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Pred.sdiv_div"><span class="id" title="definition">div</span></a>.<br/>
+<span class="id" title="keyword">Canonical</span> <span class="id" title="var">sdiv_div</span>.<br/>
+<span class="id" title="keyword">Coercion</span> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Pred.subalg_submod"><span class="id" title="definition">subalg_submod</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Pred.subalg_submod"><span class="id" title="definition">:</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Pred.subalg_submod"><span class="id" title="definition">subalg</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Pred.subalg_submod"><span class="id" title="definition">&gt;-&gt;</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Pred.subalg_submod"><span class="id" title="definition">submod</span></a>.<br/>
+<span class="id" title="keyword">Canonical</span> <span class="id" title="var">subalg_submod</span>.<br/>
+<span class="id" title="keyword">Coercion</span> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Pred.subalg_ring"><span class="id" title="projection">subalg_ring</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Pred.subalg_ring"><span class="id" title="projection">:</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Pred.subalg_ring"><span class="id" title="projection">subalg</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Pred.subalg_ring"><span class="id" title="projection">&gt;-&gt;</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Pred.subalg_ring"><span class="id" title="projection">subring</span></a>.<br/>
+<span class="id" title="keyword">Coercion</span> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Pred.divring_ring"><span class="id" title="projection">divring_ring</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Pred.divring_ring"><span class="id" title="projection">:</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Pred.divring_ring"><span class="id" title="projection">divring</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Pred.divring_ring"><span class="id" title="projection">&gt;-&gt;</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Pred.divring_ring"><span class="id" title="projection">subring</span></a>.<br/>
+<span class="id" title="keyword">Coercion</span> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Pred.divring_sdiv"><span class="id" title="definition">divring_sdiv</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Pred.divring_sdiv"><span class="id" title="definition">:</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Pred.divring_sdiv"><span class="id" title="definition">divring</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Pred.divring_sdiv"><span class="id" title="definition">&gt;-&gt;</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Pred.divring_sdiv"><span class="id" title="definition">sdiv</span></a>.<br/>
+<span class="id" title="keyword">Canonical</span> <span class="id" title="var">divring_sdiv</span>.<br/>
+<span class="id" title="keyword">Coercion</span> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Pred.divalg_alg"><span class="id" title="definition">divalg_alg</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Pred.divalg_alg"><span class="id" title="definition">:</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Pred.divalg_alg"><span class="id" title="definition">divalg</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Pred.divalg_alg"><span class="id" title="definition">&gt;-&gt;</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Pred.divalg_alg"><span class="id" title="definition">subalg</span></a>.<br/>
+<span class="id" title="keyword">Canonical</span> <span class="id" title="var">divalg_alg</span>.<br/>
+<span class="id" title="keyword">Coercion</span> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Pred.divalg_ring"><span class="id" title="projection">divalg_ring</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Pred.divalg_ring"><span class="id" title="projection">:</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Pred.divalg_ring"><span class="id" title="projection">divalg</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Pred.divalg_ring"><span class="id" title="projection">&gt;-&gt;</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Pred.divalg_ring"><span class="id" title="projection">divring</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Notation</span> <a name="GRing.Pred.Exports.opprPred"><span class="id" title="abbreviation">opprPred</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Pred.opp"><span class="id" title="record">opp</span></a>.<br/>
+<span class="id" title="keyword">Notation</span> <a name="GRing.Pred.Exports.addrPred"><span class="id" title="abbreviation">addrPred</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Pred.add"><span class="id" title="record">add</span></a>.<br/>
+<span class="id" title="keyword">Notation</span> <a name="GRing.Pred.Exports.mulrPred"><span class="id" title="abbreviation">mulrPred</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Pred.mul"><span class="id" title="record">mul</span></a>.<br/>
+<span class="id" title="keyword">Notation</span> <a name="GRing.Pred.Exports.zmodPred"><span class="id" title="abbreviation">zmodPred</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Pred.zmod"><span class="id" title="record">zmod</span></a>.<br/>
+<span class="id" title="keyword">Notation</span> <a name="GRing.Pred.Exports.semiringPred"><span class="id" title="abbreviation">semiringPred</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Pred.semiring"><span class="id" title="record">semiring</span></a>.<br/>
+<span class="id" title="keyword">Notation</span> <a name="GRing.Pred.Exports.smulrPred"><span class="id" title="abbreviation">smulrPred</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Pred.smul"><span class="id" title="record">smul</span></a>.<br/>
+<span class="id" title="keyword">Notation</span> <a name="GRing.Pred.Exports.divrPred"><span class="id" title="abbreviation">divrPred</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Pred.div"><span class="id" title="record">div</span></a>.<br/>
+<span class="id" title="keyword">Notation</span> <a name="GRing.Pred.Exports.submodPred"><span class="id" title="abbreviation">submodPred</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Pred.submod"><span class="id" title="record">submod</span></a>.<br/>
+<span class="id" title="keyword">Notation</span> <a name="GRing.Pred.Exports.subringPred"><span class="id" title="abbreviation">subringPred</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Pred.subring"><span class="id" title="record">subring</span></a>.<br/>
+<span class="id" title="keyword">Notation</span> <a name="GRing.Pred.Exports.sdivrPred"><span class="id" title="abbreviation">sdivrPred</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Pred.sdiv"><span class="id" title="record">sdiv</span></a>.<br/>
+<span class="id" title="keyword">Notation</span> <a name="GRing.Pred.Exports.subalgPred"><span class="id" title="abbreviation">subalgPred</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Pred.subalg"><span class="id" title="record">subalg</span></a>.<br/>
+<span class="id" title="keyword">Notation</span> <a name="GRing.Pred.Exports.divringPred"><span class="id" title="abbreviation">divringPred</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Pred.divring"><span class="id" title="record">divring</span></a>.<br/>
+<span class="id" title="keyword">Notation</span> <a name="GRing.Pred.Exports.divalgPred"><span class="id" title="abbreviation">divalgPred</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Pred.divalg"><span class="id" title="record">divalg</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Pred.Exports.OpprPred"><span class="id" title="definition">OpprPred</span></a> <span class="id" title="var">U</span> <span class="id" title="var">S</span> <span class="id" title="var">k</span> <span class="id" title="var">kS</span> <span class="id" title="var">NkS</span> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Pred.Opp"><span class="id" title="constructor">Opp</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#k"><span class="id" title="variable">k</span></a> (@<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Pred.opp_ext"><span class="id" title="lemma">opp_ext</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#U"><span class="id" title="variable">U</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#S"><span class="id" title="variable">S</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#k"><span class="id" title="variable">k</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#kS"><span class="id" title="variable">kS</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#NkS"><span class="id" title="variable">NkS</span></a>).<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Pred.Exports.AddrPred"><span class="id" title="definition">AddrPred</span></a> <span class="id" title="var">U</span> <span class="id" title="var">S</span> <span class="id" title="var">k</span> <span class="id" title="var">kS</span> <span class="id" title="var">DkS</span> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Pred.Add"><span class="id" title="constructor">Add</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#k"><span class="id" title="variable">k</span></a> (@<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Pred.add_ext"><span class="id" title="lemma">add_ext</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#U"><span class="id" title="variable">U</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#S"><span class="id" title="variable">S</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#k"><span class="id" title="variable">k</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#kS"><span class="id" title="variable">kS</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#DkS"><span class="id" title="variable">DkS</span></a>).<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Pred.Exports.MulrPred"><span class="id" title="definition">MulrPred</span></a> <span class="id" title="var">R</span> <span class="id" title="var">S</span> <span class="id" title="var">k</span> <span class="id" title="var">kS</span> <span class="id" title="var">MkS</span> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Pred.Mul"><span class="id" title="constructor">Mul</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#k"><span class="id" title="variable">k</span></a> (@<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Pred.mul_ext"><span class="id" title="lemma">mul_ext</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#R"><span class="id" title="variable">R</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#S"><span class="id" title="variable">S</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#k"><span class="id" title="variable">k</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#kS"><span class="id" title="variable">kS</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#MkS"><span class="id" title="variable">MkS</span></a>).<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Pred.Exports.ZmodPred"><span class="id" title="definition">ZmodPred</span></a> <span class="id" title="var">U</span> <span class="id" title="var">S</span> <span class="id" title="var">k</span> <span class="id" title="var">kS</span> <span class="id" title="var">NkS</span> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Pred.Zmod"><span class="id" title="constructor">Zmod</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#k"><span class="id" title="variable">k</span></a> (@<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Pred.opp_ext"><span class="id" title="lemma">opp_ext</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#U"><span class="id" title="variable">U</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#S"><span class="id" title="variable">S</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#k"><span class="id" title="variable">k</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#kS"><span class="id" title="variable">kS</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#NkS"><span class="id" title="variable">NkS</span></a>).<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Pred.Exports.SemiringPred"><span class="id" title="definition">SemiringPred</span></a> <span class="id" title="var">R</span> <span class="id" title="var">S</span> <span class="id" title="var">k</span> <span class="id" title="var">kS</span> <span class="id" title="var">MkS</span> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Pred.Semiring"><span class="id" title="constructor">Semiring</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#k"><span class="id" title="variable">k</span></a> (@<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Pred.mul_ext"><span class="id" title="lemma">mul_ext</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#R"><span class="id" title="variable">R</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#S"><span class="id" title="variable">S</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#k"><span class="id" title="variable">k</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#kS"><span class="id" title="variable">kS</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#MkS"><span class="id" title="variable">MkS</span></a>).<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Pred.Exports.SmulrPred"><span class="id" title="definition">SmulrPred</span></a> <span class="id" title="var">R</span> <span class="id" title="var">S</span> <span class="id" title="var">k</span> <span class="id" title="var">kS</span> <span class="id" title="var">MkS</span> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Pred.Smul"><span class="id" title="constructor">Smul</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#k"><span class="id" title="variable">k</span></a> (@<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Pred.mul_ext"><span class="id" title="lemma">mul_ext</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#R"><span class="id" title="variable">R</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#S"><span class="id" title="variable">S</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#k"><span class="id" title="variable">k</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#kS"><span class="id" title="variable">kS</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#MkS"><span class="id" title="variable">MkS</span></a>).<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Pred.Exports.DivrPred"><span class="id" title="definition">DivrPred</span></a> <span class="id" title="var">R</span> <span class="id" title="var">S</span> <span class="id" title="var">k</span> <span class="id" title="var">kS</span> <span class="id" title="var">VkS</span> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Pred.Div"><span class="id" title="constructor">Div</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#k"><span class="id" title="variable">k</span></a> (@<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Pred.inv_ext"><span class="id" title="lemma">inv_ext</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#R"><span class="id" title="variable">R</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#S"><span class="id" title="variable">S</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#k"><span class="id" title="variable">k</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#kS"><span class="id" title="variable">kS</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#VkS"><span class="id" title="variable">VkS</span></a>).<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Pred.Exports.SubmodPred"><span class="id" title="definition">SubmodPred</span></a> <span class="id" title="var">R</span> <span class="id" title="var">U</span> <span class="id" title="var">S</span> <span class="id" title="var">k</span> <span class="id" title="var">kS</span> <span class="id" title="var">ZkS</span> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Pred.Submod"><span class="id" title="constructor">Submod</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#k"><span class="id" title="variable">k</span></a> (@<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Pred.scale_ext"><span class="id" title="lemma">scale_ext</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#R"><span class="id" title="variable">R</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#U"><span class="id" title="variable">U</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#S"><span class="id" title="variable">S</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#k"><span class="id" title="variable">k</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#kS"><span class="id" title="variable">kS</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#ZkS"><span class="id" title="variable">ZkS</span></a>).<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Pred.Exports.SubringPred"><span class="id" title="definition">SubringPred</span></a> <span class="id" title="var">R</span> <span class="id" title="var">S</span> <span class="id" title="var">k</span> <span class="id" title="var">kS</span> <span class="id" title="var">MkS</span> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Pred.Subring"><span class="id" title="constructor">Subring</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#k"><span class="id" title="variable">k</span></a> (@<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Pred.mul_ext"><span class="id" title="lemma">mul_ext</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#R"><span class="id" title="variable">R</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#S"><span class="id" title="variable">S</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#k"><span class="id" title="variable">k</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#kS"><span class="id" title="variable">kS</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#MkS"><span class="id" title="variable">MkS</span></a>).<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Pred.Exports.SdivrPred"><span class="id" title="definition">SdivrPred</span></a> <span class="id" title="var">R</span> <span class="id" title="var">S</span> <span class="id" title="var">k</span> <span class="id" title="var">kS</span> <span class="id" title="var">VkS</span> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Pred.Sdiv"><span class="id" title="constructor">Sdiv</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#k"><span class="id" title="variable">k</span></a> (@<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Pred.inv_ext"><span class="id" title="lemma">inv_ext</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#R"><span class="id" title="variable">R</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#S"><span class="id" title="variable">S</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#k"><span class="id" title="variable">k</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#kS"><span class="id" title="variable">kS</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#VkS"><span class="id" title="variable">VkS</span></a>).<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Pred.Exports.SubalgPred"><span class="id" title="definition">SubalgPred</span></a> (<span class="id" title="var">R</span> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Ring.Exports.ringType"><span class="id" title="abbreviation">ringType</span></a>) (<span class="id" title="var">A</span> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Lalgebra.Exports.lalgType"><span class="id" title="abbreviation">lalgType</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#R"><span class="id" title="variable">R</span></a>) <span class="id" title="var">S</span> <span class="id" title="var">k</span> <span class="id" title="var">kS</span> <span class="id" title="var">ZkS</span> :=<br/>
+&nbsp;&nbsp;<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Pred.Subalg"><span class="id" title="constructor">Subalg</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#k"><span class="id" title="variable">k</span></a> (@<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Pred.scale_ext"><span class="id" title="lemma">scale_ext</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#R"><span class="id" title="variable">R</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#A"><span class="id" title="variable">A</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#S"><span class="id" title="variable">S</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#k"><span class="id" title="variable">k</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#kS"><span class="id" title="variable">kS</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#ZkS"><span class="id" title="variable">ZkS</span></a>).<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Pred.Exports.DivringPred"><span class="id" title="definition">DivringPred</span></a> <span class="id" title="var">R</span> <span class="id" title="var">S</span> <span class="id" title="var">k</span> <span class="id" title="var">kS</span> <span class="id" title="var">VkS</span> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Pred.Divring"><span class="id" title="constructor">Divring</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#k"><span class="id" title="variable">k</span></a> (@<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Pred.inv_ext"><span class="id" title="lemma">inv_ext</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#R"><span class="id" title="variable">R</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#S"><span class="id" title="variable">S</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#k"><span class="id" title="variable">k</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#kS"><span class="id" title="variable">kS</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#VkS"><span class="id" title="variable">VkS</span></a>).<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Pred.Exports.DivalgPred"><span class="id" title="definition">DivalgPred</span></a> (<span class="id" title="var">R</span> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Ring.Exports.ringType"><span class="id" title="abbreviation">ringType</span></a>) (<span class="id" title="var">A</span> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.UnitAlgebra.Exports.unitAlgType"><span class="id" title="abbreviation">unitAlgType</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#R"><span class="id" title="variable">R</span></a>) <span class="id" title="var">S</span> <span class="id" title="var">k</span> <span class="id" title="var">kS</span> <span class="id" title="var">ZkS</span> :=<br/>
+&nbsp;&nbsp;<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Pred.Divalg"><span class="id" title="constructor">Divalg</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#k"><span class="id" title="variable">k</span></a> (@<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Pred.scale_ext"><span class="id" title="lemma">scale_ext</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#R"><span class="id" title="variable">R</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#A"><span class="id" title="variable">A</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#S"><span class="id" title="variable">S</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#k"><span class="id" title="variable">k</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#kS"><span class="id" title="variable">kS</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#ZkS"><span class="id" title="variable">ZkS</span></a>).<br/>
+
+<br/>
+<span class="id" title="keyword">End</span> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Pred.Exports"><span class="id" title="module">Exports</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">End</span> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Pred"><span class="id" title="module">Pred</span></a>.<br/>
+<span class="id" title="keyword">Import</span> <span class="id" title="var">Pred.Exports</span>.<br/>
+
+<br/>
+<span class="id" title="keyword">Module</span> <a name="GRing.DefaultPred"><span class="id" title="module">DefaultPred</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Canonical</span> <span class="id" title="var">Pred.Default.opp</span>.<br/>
+<span class="id" title="keyword">Canonical</span> <span class="id" title="var">Pred.Default.add</span>.<br/>
+<span class="id" title="keyword">Canonical</span> <span class="id" title="var">Pred.Default.mul</span>.<br/>
+<span class="id" title="keyword">Canonical</span> <span class="id" title="var">Pred.Default.zmod</span>.<br/>
+<span class="id" title="keyword">Canonical</span> <span class="id" title="var">Pred.Default.semiring</span>.<br/>
+<span class="id" title="keyword">Canonical</span> <span class="id" title="var">Pred.Default.smul</span>.<br/>
+<span class="id" title="keyword">Canonical</span> <span class="id" title="var">Pred.Default.div</span>.<br/>
+<span class="id" title="keyword">Canonical</span> <span class="id" title="var">Pred.Default.submod</span>.<br/>
+<span class="id" title="keyword">Canonical</span> <span class="id" title="var">Pred.Default.subring</span>.<br/>
+<span class="id" title="keyword">Canonical</span> <span class="id" title="var">Pred.Default.sdiv</span>.<br/>
+<span class="id" title="keyword">Canonical</span> <span class="id" title="var">Pred.Default.subalg</span>.<br/>
+<span class="id" title="keyword">Canonical</span> <span class="id" title="var">Pred.Default.divring</span>.<br/>
+<span class="id" title="keyword">Canonical</span> <span class="id" title="var">Pred.Default.divalg</span>.<br/>
+
+<br/>
+<span class="id" title="keyword">End</span> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.DefaultPred"><span class="id" title="module">DefaultPred</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Section</span> <a name="GRing.ZmodulePred"><span class="id" title="section">ZmodulePred</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Variables</span> (<a name="GRing.ZmodulePred.V"><span class="id" title="variable">V</span></a> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.zmodType"><span class="id" title="abbreviation">zmodType</span></a>) (<a name="GRing.ZmodulePred.S"><span class="id" title="variable">S</span></a> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#predPredType"><span class="id" title="definition">predPredType</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#V"><span class="id" title="variable">V</span></a>).<br/>
+
+<br/>
+<span class="id" title="keyword">Section</span> <a name="GRing.ZmodulePred.Add"><span class="id" title="section">Add</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Variables</span> (<a name="GRing.ZmodulePred.Add.addS"><span class="id" title="variable">addS</span></a> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.addrPred"><span class="id" title="abbreviation">addrPred</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ZmodulePred.S"><span class="id" title="variable">S</span></a>) (<a name="GRing.ZmodulePred.Add.kS"><span class="id" title="variable">kS</span></a> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#keyed_pred"><span class="id" title="record">keyed_pred</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#addS"><span class="id" title="variable">addS</span></a>).<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.rpred0D"><span class="id" title="lemma">rpred0D</span></a> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.addr_closed"><span class="id" title="definition">addr_closed</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ZmodulePred.Add.kS"><span class="id" title="variable">kS</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.rpred0"><span class="id" title="lemma">rpred0</span></a> : 0 <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">\</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">in</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ZmodulePred.Add.kS"><span class="id" title="variable">kS</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.rpredD"><span class="id" title="lemma">rpredD</span></a> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#2bba53854f326a714d377124cccec593"><span class="id" title="notation">{</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#2bba53854f326a714d377124cccec593"><span class="id" title="notation">in</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ZmodulePred.Add.kS"><span class="id" title="variable">kS</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#2bba53854f326a714d377124cccec593"><span class="id" title="notation">&amp;,</span></a> <span class="id" title="keyword">∀</span> <span class="id" title="var">u</span> <span class="id" title="var">v</span>, <a class="idref" href="mathcomp.algebra.ssralg.html#u"><span class="id" title="variable">u</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#338c5345074fd3586073fd29273c138a"><span class="id" title="notation">+</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#v"><span class="id" title="variable">v</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">\</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">in</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ZmodulePred.Add.kS"><span class="id" title="variable">kS</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#2bba53854f326a714d377124cccec593"><span class="id" title="notation">}</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.rpred_sum"><span class="id" title="lemma">rpred_sum</span></a> <span class="id" title="var">I</span> <span class="id" title="var">r</span> (<span class="id" title="var">P</span> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#pred"><span class="id" title="definition">pred</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#I"><span class="id" title="variable">I</span></a>) <span class="id" title="var">F</span> :<br/>
+&nbsp;&nbsp;<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">(</span></a><span class="id" title="keyword">∀</span> <span class="id" title="var">i</span>, <a class="idref" href="mathcomp.algebra.ssralg.html#P"><span class="id" title="variable">P</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#i"><span class="id" title="variable">i</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#F"><span class="id" title="variable">F</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#i"><span class="id" title="variable">i</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">\</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">in</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ZmodulePred.Add.kS"><span class="id" title="variable">kS</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">)</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#664ae738a3286983847c80e5ee4c8c6b"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#664ae738a3286983847c80e5ee4c8c6b"><span class="id" title="notation">sum_</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#664ae738a3286983847c80e5ee4c8c6b"><span class="id" title="notation">(</span></a><span class="id" title="var">i</span> <a class="idref" href="mathcomp.algebra.ssralg.html#664ae738a3286983847c80e5ee4c8c6b"><span class="id" title="notation">&lt;-</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#r"><span class="id" title="variable">r</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#664ae738a3286983847c80e5ee4c8c6b"><span class="id" title="notation">|</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#P"><span class="id" title="variable">P</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#i"><span class="id" title="variable">i</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#664ae738a3286983847c80e5ee4c8c6b"><span class="id" title="notation">)</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#F"><span class="id" title="variable">F</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#i"><span class="id" title="variable">i</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">\</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">in</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ZmodulePred.Add.kS"><span class="id" title="variable">kS</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.rpredMn"><span class="id" title="lemma">rpredMn</span></a> <span class="id" title="var">n</span> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#5c59b35a0b51db520cf1fba473ecf127"><span class="id" title="notation">{</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#5c59b35a0b51db520cf1fba473ecf127"><span class="id" title="notation">in</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ZmodulePred.Add.kS"><span class="id" title="variable">kS</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#5c59b35a0b51db520cf1fba473ecf127"><span class="id" title="notation">,</span></a> <span class="id" title="keyword">∀</span> <span class="id" title="var">u</span>, <a class="idref" href="mathcomp.algebra.ssralg.html#u"><span class="id" title="variable">u</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#513eaa3129601ecbcc9e188a80d6155b"><span class="id" title="notation">*+</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#n"><span class="id" title="variable">n</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">\</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">in</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ZmodulePred.Add.kS"><span class="id" title="variable">kS</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#5c59b35a0b51db520cf1fba473ecf127"><span class="id" title="notation">}</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">End</span> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ZmodulePred.Add"><span class="id" title="section">Add</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Section</span> <a name="GRing.ZmodulePred.Opp"><span class="id" title="section">Opp</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Variables</span> (<a name="GRing.ZmodulePred.Opp.oppS"><span class="id" title="variable">oppS</span></a> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.opprPred"><span class="id" title="abbreviation">opprPred</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ZmodulePred.S"><span class="id" title="variable">S</span></a>) (<a name="GRing.ZmodulePred.Opp.kS"><span class="id" title="variable">kS</span></a> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#keyed_pred"><span class="id" title="record">keyed_pred</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#oppS"><span class="id" title="variable">oppS</span></a>).<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.rpredNr"><span class="id" title="lemma">rpredNr</span></a> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.oppr_closed"><span class="id" title="definition">oppr_closed</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ZmodulePred.Opp.kS"><span class="id" title="variable">kS</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.rpredN"><span class="id" title="lemma">rpredN</span></a> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#69ee97879e4a4ae19a99125173c5741e"><span class="id" title="notation">{</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#69ee97879e4a4ae19a99125173c5741e"><span class="id" title="notation">mono</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#221881b99d58ceaaa33c4172192f697e"><span class="id" title="notation">-%</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#221881b99d58ceaaa33c4172192f697e"><span class="id" title="notation">R</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#69ee97879e4a4ae19a99125173c5741e"><span class="id" title="notation">:</span></a> <span class="id" title="var">u</span> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#69ee97879e4a4ae19a99125173c5741e"><span class="id" title="notation">/</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#u"><span class="id" title="variable">u</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">\</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">in</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ZmodulePred.Opp.kS"><span class="id" title="variable">kS</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#69ee97879e4a4ae19a99125173c5741e"><span class="id" title="notation">}</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">End</span> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ZmodulePred.Opp"><span class="id" title="section">Opp</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Section</span> <a name="GRing.ZmodulePred.Sub"><span class="id" title="section">Sub</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Variables</span> (<a name="GRing.ZmodulePred.Sub.subS"><span class="id" title="variable">subS</span></a> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.zmodPred"><span class="id" title="abbreviation">zmodPred</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ZmodulePred.S"><span class="id" title="variable">S</span></a>) (<a name="GRing.ZmodulePred.Sub.kS"><span class="id" title="variable">kS</span></a> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#keyed_pred"><span class="id" title="record">keyed_pred</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#subS"><span class="id" title="variable">subS</span></a>).<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.rpredB"><span class="id" title="lemma">rpredB</span></a> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#2bba53854f326a714d377124cccec593"><span class="id" title="notation">{</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#2bba53854f326a714d377124cccec593"><span class="id" title="notation">in</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ZmodulePred.Sub.kS"><span class="id" title="variable">kS</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#2bba53854f326a714d377124cccec593"><span class="id" title="notation">&amp;,</span></a> <span class="id" title="keyword">∀</span> <span class="id" title="var">u</span> <span class="id" title="var">v</span>, <a class="idref" href="mathcomp.algebra.ssralg.html#u"><span class="id" title="variable">u</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#4d4b9697032429ec46472e6332d1356a"><span class="id" title="notation">-</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#v"><span class="id" title="variable">v</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">\</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">in</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ZmodulePred.Sub.kS"><span class="id" title="variable">kS</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#2bba53854f326a714d377124cccec593"><span class="id" title="notation">}</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.rpredMNn"><span class="id" title="lemma">rpredMNn</span></a> <span class="id" title="var">n</span> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#5c59b35a0b51db520cf1fba473ecf127"><span class="id" title="notation">{</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#5c59b35a0b51db520cf1fba473ecf127"><span class="id" title="notation">in</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ZmodulePred.Sub.kS"><span class="id" title="variable">kS</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#5c59b35a0b51db520cf1fba473ecf127"><span class="id" title="notation">,</span></a> <span class="id" title="keyword">∀</span> <span class="id" title="var">u</span>, <a class="idref" href="mathcomp.algebra.ssralg.html#u"><span class="id" title="variable">u</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#be9a273af87c6a30d88bd8379c802cbe"><span class="id" title="notation">*-</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#n"><span class="id" title="variable">n</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">\</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">in</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ZmodulePred.Sub.kS"><span class="id" title="variable">kS</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#5c59b35a0b51db520cf1fba473ecf127"><span class="id" title="notation">}</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.rpredDr"><span class="id" title="lemma">rpredDr</span></a> <span class="id" title="var">x</span> <span class="id" title="var">y</span> : <a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">\</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">in</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ZmodulePred.Sub.kS"><span class="id" title="variable">kS</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#y"><span class="id" title="variable">y</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#338c5345074fd3586073fd29273c138a"><span class="id" title="notation">+</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">\</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">in</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ZmodulePred.Sub.kS"><span class="id" title="variable">kS</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">)</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#y"><span class="id" title="variable">y</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">\</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">in</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ZmodulePred.Sub.kS"><span class="id" title="variable">kS</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">)</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.rpredDl"><span class="id" title="lemma">rpredDl</span></a> <span class="id" title="var">x</span> <span class="id" title="var">y</span> : <a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">\</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">in</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ZmodulePred.Sub.kS"><span class="id" title="variable">kS</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#338c5345074fd3586073fd29273c138a"><span class="id" title="notation">+</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#y"><span class="id" title="variable">y</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">\</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">in</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ZmodulePred.Sub.kS"><span class="id" title="variable">kS</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">)</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#y"><span class="id" title="variable">y</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">\</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">in</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ZmodulePred.Sub.kS"><span class="id" title="variable">kS</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">)</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.rpredBr"><span class="id" title="lemma">rpredBr</span></a> <span class="id" title="var">x</span> <span class="id" title="var">y</span> : <a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">\</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">in</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ZmodulePred.Sub.kS"><span class="id" title="variable">kS</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#y"><span class="id" title="variable">y</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#4d4b9697032429ec46472e6332d1356a"><span class="id" title="notation">-</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">\</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">in</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ZmodulePred.Sub.kS"><span class="id" title="variable">kS</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">)</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#y"><span class="id" title="variable">y</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">\</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">in</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ZmodulePred.Sub.kS"><span class="id" title="variable">kS</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">)</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.rpredBl"><span class="id" title="lemma">rpredBl</span></a> <span class="id" title="var">x</span> <span class="id" title="var">y</span> : <a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">\</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">in</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ZmodulePred.Sub.kS"><span class="id" title="variable">kS</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#4d4b9697032429ec46472e6332d1356a"><span class="id" title="notation">-</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#y"><span class="id" title="variable">y</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">\</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">in</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ZmodulePred.Sub.kS"><span class="id" title="variable">kS</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">)</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#y"><span class="id" title="variable">y</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">\</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">in</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ZmodulePred.Sub.kS"><span class="id" title="variable">kS</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">)</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">End</span> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ZmodulePred.Sub"><span class="id" title="section">Sub</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">End</span> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ZmodulePred"><span class="id" title="section">ZmodulePred</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Section</span> <a name="GRing.RingPred"><span class="id" title="section">RingPred</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Variables</span> (<a name="GRing.RingPred.R"><span class="id" title="variable">R</span></a> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ringType"><span class="id" title="abbreviation">ringType</span></a>) (<a name="GRing.RingPred.S"><span class="id" title="variable">S</span></a> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#predPredType"><span class="id" title="definition">predPredType</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#R"><span class="id" title="variable">R</span></a>).<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.rpredMsign"><span class="id" title="lemma">rpredMsign</span></a> (<span class="id" title="var">oppS</span> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.opprPred"><span class="id" title="abbreviation">opprPred</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.RingPred.S"><span class="id" title="variable">S</span></a>) (<span class="id" title="var">kS</span> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#keyed_pred"><span class="id" title="record">keyed_pred</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#oppS"><span class="id" title="variable">oppS</span></a>) <span class="id" title="var">n</span> <span class="id" title="var">x</span> :<br/>
+&nbsp;&nbsp;<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#b5a6699e28c97bb33352772cfa3ea869"><span class="id" title="notation">(</span></a>-1<a class="idref" href="mathcomp.algebra.ssralg.html#b5a6699e28c97bb33352772cfa3ea869"><span class="id" title="notation">)</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#b5a6699e28c97bb33352772cfa3ea869"><span class="id" title="notation">^+</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#n"><span class="id" title="variable">n</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#ed99e7035d9a1f8a2c1515be81ac2e5f"><span class="id" title="notation">×</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">\</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">in</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#kS"><span class="id" title="variable">kS</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">)</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">\</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">in</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#kS"><span class="id" title="variable">kS</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">)</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Section</span> <a name="GRing.RingPred.Mul"><span class="id" title="section">Mul</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Variables</span> (<a name="GRing.RingPred.Mul.mulS"><span class="id" title="variable">mulS</span></a> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.mulrPred"><span class="id" title="abbreviation">mulrPred</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.RingPred.S"><span class="id" title="variable">S</span></a>) (<a name="GRing.RingPred.Mul.kS"><span class="id" title="variable">kS</span></a> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#keyed_pred"><span class="id" title="record">keyed_pred</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#mulS"><span class="id" title="variable">mulS</span></a>).<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.rpred1M"><span class="id" title="lemma">rpred1M</span></a> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.mulr_closed"><span class="id" title="definition">mulr_closed</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.RingPred.Mul.kS"><span class="id" title="variable">kS</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.rpred1"><span class="id" title="lemma">rpred1</span></a> : 1 <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">\</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">in</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.RingPred.Mul.kS"><span class="id" title="variable">kS</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.rpredM"><span class="id" title="lemma">rpredM</span></a> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#2bba53854f326a714d377124cccec593"><span class="id" title="notation">{</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#2bba53854f326a714d377124cccec593"><span class="id" title="notation">in</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.RingPred.Mul.kS"><span class="id" title="variable">kS</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#2bba53854f326a714d377124cccec593"><span class="id" title="notation">&amp;,</span></a> <span class="id" title="keyword">∀</span> <span class="id" title="var">u</span> <span class="id" title="var">v</span>, <a class="idref" href="mathcomp.algebra.ssralg.html#u"><span class="id" title="variable">u</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#ed99e7035d9a1f8a2c1515be81ac2e5f"><span class="id" title="notation">×</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#v"><span class="id" title="variable">v</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">\</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">in</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.RingPred.Mul.kS"><span class="id" title="variable">kS</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#2bba53854f326a714d377124cccec593"><span class="id" title="notation">}</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.rpred_prod"><span class="id" title="lemma">rpred_prod</span></a> <span class="id" title="var">I</span> <span class="id" title="var">r</span> (<span class="id" title="var">P</span> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#pred"><span class="id" title="definition">pred</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#I"><span class="id" title="variable">I</span></a>) <span class="id" title="var">F</span> :<br/>
+&nbsp;&nbsp;<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">(</span></a><span class="id" title="keyword">∀</span> <span class="id" title="var">i</span>, <a class="idref" href="mathcomp.algebra.ssralg.html#P"><span class="id" title="variable">P</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#i"><span class="id" title="variable">i</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#F"><span class="id" title="variable">F</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#i"><span class="id" title="variable">i</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">\</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">in</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.RingPred.Mul.kS"><span class="id" title="variable">kS</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">)</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#3f1a950be6bcb72c9434150471b42417"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#3f1a950be6bcb72c9434150471b42417"><span class="id" title="notation">prod_</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#3f1a950be6bcb72c9434150471b42417"><span class="id" title="notation">(</span></a><span class="id" title="var">i</span> <a class="idref" href="mathcomp.algebra.ssralg.html#3f1a950be6bcb72c9434150471b42417"><span class="id" title="notation">&lt;-</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#r"><span class="id" title="variable">r</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#3f1a950be6bcb72c9434150471b42417"><span class="id" title="notation">|</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#P"><span class="id" title="variable">P</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#i"><span class="id" title="variable">i</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#3f1a950be6bcb72c9434150471b42417"><span class="id" title="notation">)</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#F"><span class="id" title="variable">F</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#i"><span class="id" title="variable">i</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">\</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">in</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.RingPred.Mul.kS"><span class="id" title="variable">kS</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.rpredX"><span class="id" title="lemma">rpredX</span></a> <span class="id" title="var">n</span> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#5c59b35a0b51db520cf1fba473ecf127"><span class="id" title="notation">{</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#5c59b35a0b51db520cf1fba473ecf127"><span class="id" title="notation">in</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.RingPred.Mul.kS"><span class="id" title="variable">kS</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#5c59b35a0b51db520cf1fba473ecf127"><span class="id" title="notation">,</span></a> <span class="id" title="keyword">∀</span> <span class="id" title="var">u</span>, <a class="idref" href="mathcomp.algebra.ssralg.html#u"><span class="id" title="variable">u</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#b5a6699e28c97bb33352772cfa3ea869"><span class="id" title="notation">^+</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#n"><span class="id" title="variable">n</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">\</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">in</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.RingPred.Mul.kS"><span class="id" title="variable">kS</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#5c59b35a0b51db520cf1fba473ecf127"><span class="id" title="notation">}</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">End</span> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.RingPred.Mul"><span class="id" title="section">Mul</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.rpred_nat"><span class="id" title="lemma">rpred_nat</span></a> (<span class="id" title="var">rngS</span> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.semiringPred"><span class="id" title="abbreviation">semiringPred</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.RingPred.S"><span class="id" title="variable">S</span></a>) (<span class="id" title="var">kS</span> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#keyed_pred"><span class="id" title="record">keyed_pred</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#rngS"><span class="id" title="variable">rngS</span></a>) <span class="id" title="var">n</span> : <a class="idref" href="mathcomp.algebra.ssralg.html#n"><span class="id" title="variable">n</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#c191333b9c7c034282647fbffacc9d18"><span class="id" title="notation">%:</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#c191333b9c7c034282647fbffacc9d18"><span class="id" title="notation">R</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">\</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">in</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#kS"><span class="id" title="variable">kS</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.rpredN1"><span class="id" title="lemma">rpredN1</span></a> (<span class="id" title="var">mulS</span> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.smulrPred"><span class="id" title="abbreviation">smulrPred</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.RingPred.S"><span class="id" title="variable">S</span></a>) (<span class="id" title="var">kS</span> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#keyed_pred"><span class="id" title="record">keyed_pred</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#mulS"><span class="id" title="variable">mulS</span></a>) : -1 <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">\</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">in</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#kS"><span class="id" title="variable">kS</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.rpred_sign"><span class="id" title="lemma">rpred_sign</span></a> (<span class="id" title="var">mulS</span> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.smulrPred"><span class="id" title="abbreviation">smulrPred</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.RingPred.S"><span class="id" title="variable">S</span></a>) (<span class="id" title="var">kS</span> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#keyed_pred"><span class="id" title="record">keyed_pred</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#mulS"><span class="id" title="variable">mulS</span></a>) <span class="id" title="var">n</span> :<br/>
+&nbsp;&nbsp;<a class="idref" href="mathcomp.algebra.ssralg.html#b5a6699e28c97bb33352772cfa3ea869"><span class="id" title="notation">(</span></a>-1<a class="idref" href="mathcomp.algebra.ssralg.html#b5a6699e28c97bb33352772cfa3ea869"><span class="id" title="notation">)</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#b5a6699e28c97bb33352772cfa3ea869"><span class="id" title="notation">^+</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#n"><span class="id" title="variable">n</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">\</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">in</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#kS"><span class="id" title="variable">kS</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">End</span> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.RingPred"><span class="id" title="section">RingPred</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Section</span> <a name="GRing.LmodPred"><span class="id" title="section">LmodPred</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Variables</span> (<a name="GRing.LmodPred.R"><span class="id" title="variable">R</span></a> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ringType"><span class="id" title="abbreviation">ringType</span></a>) (<a name="GRing.LmodPred.V"><span class="id" title="variable">V</span></a> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.lmodType"><span class="id" title="abbreviation">lmodType</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#R"><span class="id" title="variable">R</span></a>) (<a name="GRing.LmodPred.S"><span class="id" title="variable">S</span></a> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#predPredType"><span class="id" title="definition">predPredType</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#V"><span class="id" title="variable">V</span></a>).<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.rpredZsign"><span class="id" title="lemma">rpredZsign</span></a> (<span class="id" title="var">oppS</span> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.opprPred"><span class="id" title="abbreviation">opprPred</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.LmodPred.S"><span class="id" title="variable">S</span></a>) (<span class="id" title="var">kS</span> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#keyed_pred"><span class="id" title="record">keyed_pred</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#oppS"><span class="id" title="variable">oppS</span></a>) <span class="id" title="var">n</span> <span class="id" title="var">u</span> :<br/>
+&nbsp;&nbsp;<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#b5a6699e28c97bb33352772cfa3ea869"><span class="id" title="notation">(</span></a>-1<a class="idref" href="mathcomp.algebra.ssralg.html#b5a6699e28c97bb33352772cfa3ea869"><span class="id" title="notation">)</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#b5a6699e28c97bb33352772cfa3ea869"><span class="id" title="notation">^+</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#n"><span class="id" title="variable">n</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#5aa7bcc9ac922e77482767d325fdbb69"><span class="id" title="notation">*:</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#u"><span class="id" title="variable">u</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">\</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">in</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#kS"><span class="id" title="variable">kS</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">)</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#u"><span class="id" title="variable">u</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">\</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">in</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#kS"><span class="id" title="variable">kS</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">)</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.rpredZnat"><span class="id" title="lemma">rpredZnat</span></a> (<span class="id" title="var">addS</span> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.addrPred"><span class="id" title="abbreviation">addrPred</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.LmodPred.S"><span class="id" title="variable">S</span></a>) (<span class="id" title="var">kS</span> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#keyed_pred"><span class="id" title="record">keyed_pred</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#addS"><span class="id" title="variable">addS</span></a>) <span class="id" title="var">n</span> :<br/>
+&nbsp;&nbsp;<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#5c59b35a0b51db520cf1fba473ecf127"><span class="id" title="notation">{</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#5c59b35a0b51db520cf1fba473ecf127"><span class="id" title="notation">in</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#kS"><span class="id" title="variable">kS</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#5c59b35a0b51db520cf1fba473ecf127"><span class="id" title="notation">,</span></a> <span class="id" title="keyword">∀</span> <span class="id" title="var">u</span>, <a class="idref" href="mathcomp.algebra.ssralg.html#n"><span class="id" title="variable">n</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#c191333b9c7c034282647fbffacc9d18"><span class="id" title="notation">%:</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#c191333b9c7c034282647fbffacc9d18"><span class="id" title="notation">R</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#5aa7bcc9ac922e77482767d325fdbb69"><span class="id" title="notation">*:</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#u"><span class="id" title="variable">u</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">\</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">in</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#kS"><span class="id" title="variable">kS</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#5c59b35a0b51db520cf1fba473ecf127"><span class="id" title="notation">}</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.rpredZ"><span class="id" title="lemma">rpredZ</span></a> (<span class="id" title="var">linS</span> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.submodPred"><span class="id" title="abbreviation">submodPred</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.LmodPred.S"><span class="id" title="variable">S</span></a>) (<span class="id" title="var">kS</span> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#keyed_pred"><span class="id" title="record">keyed_pred</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#linS"><span class="id" title="variable">linS</span></a>) : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.scaler_closed"><span class="id" title="definition">scaler_closed</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#kS"><span class="id" title="variable">kS</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">End</span> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.LmodPred"><span class="id" title="section">LmodPred</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Section</span> <a name="GRing.UnitRingPred"><span class="id" title="section">UnitRingPred</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Variable</span> <a name="GRing.UnitRingPred.R"><span class="id" title="variable">R</span></a> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.unitRingType"><span class="id" title="abbreviation">unitRingType</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Section</span> <a name="GRing.UnitRingPred.Div"><span class="id" title="section">Div</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Variables</span> (<a name="GRing.UnitRingPred.Div.S"><span class="id" title="variable">S</span></a> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#predPredType"><span class="id" title="definition">predPredType</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.UnitRingPred.R"><span class="id" title="variable">R</span></a>) (<a name="GRing.UnitRingPred.Div.divS"><span class="id" title="variable">divS</span></a> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.divrPred"><span class="id" title="abbreviation">divrPred</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#S"><span class="id" title="variable">S</span></a>) (<a name="GRing.UnitRingPred.Div.kS"><span class="id" title="variable">kS</span></a> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#keyed_pred"><span class="id" title="record">keyed_pred</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#divS"><span class="id" title="variable">divS</span></a>).<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.rpredVr"><span class="id" title="lemma">rpredVr</span></a> <span class="id" title="var">x</span> : <a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">\</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">in</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.UnitRingPred.Div.kS"><span class="id" title="variable">kS</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#7f97e90bec2e67d9beef5851649e3fb1"><span class="id" title="notation">^-1</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">\</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">in</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.UnitRingPred.Div.kS"><span class="id" title="variable">kS</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.rpredV"><span class="id" title="lemma">rpredV</span></a> <span class="id" title="var">x</span> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#7f97e90bec2e67d9beef5851649e3fb1"><span class="id" title="notation">^-1</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">\</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">in</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.UnitRingPred.Div.kS"><span class="id" title="variable">kS</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">)</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">\</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">in</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.UnitRingPred.Div.kS"><span class="id" title="variable">kS</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">)</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.rpred_div"><span class="id" title="lemma">rpred_div</span></a> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#2bba53854f326a714d377124cccec593"><span class="id" title="notation">{</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#2bba53854f326a714d377124cccec593"><span class="id" title="notation">in</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.UnitRingPred.Div.kS"><span class="id" title="variable">kS</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#2bba53854f326a714d377124cccec593"><span class="id" title="notation">&amp;,</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.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#1adb36345c2607a4dd991537de5ddba3"><span class="id" title="notation">/</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#y"><span class="id" title="variable">y</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">\</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">in</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.UnitRingPred.Div.kS"><span class="id" title="variable">kS</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#2bba53854f326a714d377124cccec593"><span class="id" title="notation">}</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.rpredXN"><span class="id" title="lemma">rpredXN</span></a> <span class="id" title="var">n</span> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#5c59b35a0b51db520cf1fba473ecf127"><span class="id" title="notation">{</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#5c59b35a0b51db520cf1fba473ecf127"><span class="id" title="notation">in</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.UnitRingPred.Div.kS"><span class="id" title="variable">kS</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#5c59b35a0b51db520cf1fba473ecf127"><span class="id" title="notation">,</span></a> <span class="id" title="keyword">∀</span> <span class="id" title="var">x</span>, <a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#17bbfbf532cf26564c92faf790f04f34"><span class="id" title="notation">^-</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#n"><span class="id" title="variable">n</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">\</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">in</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.UnitRingPred.Div.kS"><span class="id" title="variable">kS</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#5c59b35a0b51db520cf1fba473ecf127"><span class="id" title="notation">}</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.rpredMl"><span class="id" title="lemma">rpredMl</span></a> <span class="id" title="var">x</span> <span class="id" title="var">y</span> : <a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">\</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">in</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.UnitRingPred.Div.kS"><span class="id" title="variable">kS</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#1e40fee506a85b20590ef299005b003d"><span class="id" title="notation">\</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#1e40fee506a85b20590ef299005b003d"><span class="id" title="notation">is</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#1e40fee506a85b20590ef299005b003d"><span class="id" title="notation">a</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.unit"><span class="id" title="definition">unit</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#ed99e7035d9a1f8a2c1515be81ac2e5f"><span class="id" title="notation">×</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#y"><span class="id" title="variable">y</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">\</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">in</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.UnitRingPred.Div.kS"><span class="id" title="variable">kS</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">)</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#y"><span class="id" title="variable">y</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">\</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">in</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.UnitRingPred.Div.kS"><span class="id" title="variable">kS</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">)</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.rpredMr"><span class="id" title="lemma">rpredMr</span></a> <span class="id" title="var">x</span> <span class="id" title="var">y</span> : <a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">\</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">in</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.UnitRingPred.Div.kS"><span class="id" title="variable">kS</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#1e40fee506a85b20590ef299005b003d"><span class="id" title="notation">\</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#1e40fee506a85b20590ef299005b003d"><span class="id" title="notation">is</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#1e40fee506a85b20590ef299005b003d"><span class="id" title="notation">a</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.unit"><span class="id" title="definition">unit</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#y"><span class="id" title="variable">y</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#ed99e7035d9a1f8a2c1515be81ac2e5f"><span class="id" title="notation">×</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">\</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">in</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.UnitRingPred.Div.kS"><span class="id" title="variable">kS</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">)</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#y"><span class="id" title="variable">y</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">\</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">in</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.UnitRingPred.Div.kS"><span class="id" title="variable">kS</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">)</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.rpred_divr"><span class="id" title="lemma">rpred_divr</span></a> <span class="id" title="var">x</span> <span class="id" title="var">y</span> : <a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">\</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">in</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.UnitRingPred.Div.kS"><span class="id" title="variable">kS</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#1e40fee506a85b20590ef299005b003d"><span class="id" title="notation">\</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#1e40fee506a85b20590ef299005b003d"><span class="id" title="notation">is</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#1e40fee506a85b20590ef299005b003d"><span class="id" title="notation">a</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.unit"><span class="id" title="definition">unit</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#y"><span class="id" title="variable">y</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#1adb36345c2607a4dd991537de5ddba3"><span class="id" title="notation">/</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">\</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">in</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.UnitRingPred.Div.kS"><span class="id" title="variable">kS</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">)</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#y"><span class="id" title="variable">y</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">\</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">in</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.UnitRingPred.Div.kS"><span class="id" title="variable">kS</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">)</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.rpred_divl"><span class="id" title="lemma">rpred_divl</span></a> <span class="id" title="var">x</span> <span class="id" title="var">y</span> : <a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">\</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">in</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.UnitRingPred.Div.kS"><span class="id" title="variable">kS</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#1e40fee506a85b20590ef299005b003d"><span class="id" title="notation">\</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#1e40fee506a85b20590ef299005b003d"><span class="id" title="notation">is</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#1e40fee506a85b20590ef299005b003d"><span class="id" title="notation">a</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.unit"><span class="id" title="definition">unit</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#1adb36345c2607a4dd991537de5ddba3"><span class="id" title="notation">/</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#y"><span class="id" title="variable">y</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">\</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">in</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.UnitRingPred.Div.kS"><span class="id" title="variable">kS</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">)</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#y"><span class="id" title="variable">y</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">\</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">in</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.UnitRingPred.Div.kS"><span class="id" title="variable">kS</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">)</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">End</span> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.UnitRingPred.Div"><span class="id" title="section">Div</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Fact</span> <a name="GRing.unitr_sdivr_closed"><span class="id" title="lemma">unitr_sdivr_closed</span></a> : @<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.sdivr_closed"><span class="id" title="definition">sdivr_closed</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.UnitRingPred.R"><span class="id" title="variable">R</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.unit"><span class="id" title="definition">unit</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Canonical</span> <span class="id" title="var">unit_opprPred</span> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.OpprPred"><span class="id" title="definition">OpprPred</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.unitr_sdivr_closed"><span class="id" title="lemma">unitr_sdivr_closed</span></a>.<br/>
+<span class="id" title="keyword">Canonical</span> <span class="id" title="var">unit_mulrPred</span> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.MulrPred"><span class="id" title="definition">MulrPred</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.unitr_sdivr_closed"><span class="id" title="lemma">unitr_sdivr_closed</span></a>.<br/>
+<span class="id" title="keyword">Canonical</span> <span class="id" title="var">unit_divrPred</span> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.DivrPred"><span class="id" title="definition">DivrPred</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.unitr_sdivr_closed"><span class="id" title="lemma">unitr_sdivr_closed</span></a>.<br/>
+<span class="id" title="keyword">Canonical</span> <span class="id" title="var">unit_smulrPred</span> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.SmulrPred"><span class="id" title="definition">SmulrPred</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.unitr_sdivr_closed"><span class="id" title="lemma">unitr_sdivr_closed</span></a>.<br/>
+<span class="id" title="keyword">Canonical</span> <span class="id" title="var">unit_sdivrPred</span> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.SdivrPred"><span class="id" title="definition">SdivrPred</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.unitr_sdivr_closed"><span class="id" title="lemma">unitr_sdivr_closed</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Implicit</span> <span class="id" title="keyword">Type</span> <span class="id" title="var">x</span> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.UnitRingPred.R"><span class="id" title="variable">R</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.unitrN"><span class="id" title="lemma">unitrN</span></a> <span class="id" title="var">x</span> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#eefae7eea8ed2b8fccf150cb653d7a7b"><span class="id" title="notation">-</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#1e40fee506a85b20590ef299005b003d"><span class="id" title="notation">\</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#1e40fee506a85b20590ef299005b003d"><span class="id" title="notation">is</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#1e40fee506a85b20590ef299005b003d"><span class="id" title="notation">a</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.unit"><span class="id" title="definition">unit</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">)</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#1e40fee506a85b20590ef299005b003d"><span class="id" title="notation">\</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#1e40fee506a85b20590ef299005b003d"><span class="id" title="notation">is</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#1e40fee506a85b20590ef299005b003d"><span class="id" title="notation">a</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.unit"><span class="id" title="definition">unit</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">)</span></a>. <br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.invrN"><span class="id" title="lemma">invrN</span></a> <span class="id" title="var">x</span> : <a class="idref" href="mathcomp.algebra.ssralg.html#7f97e90bec2e67d9beef5851649e3fb1"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#eefae7eea8ed2b8fccf150cb653d7a7b"><span class="id" title="notation">-</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#7f97e90bec2e67d9beef5851649e3fb1"><span class="id" title="notation">)^-1</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#eefae7eea8ed2b8fccf150cb653d7a7b"><span class="id" title="notation">-</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#7f97e90bec2e67d9beef5851649e3fb1"><span class="id" title="notation">^-1</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.invr_signM"><span class="id" title="lemma">invr_signM</span></a> <span class="id" title="var">n</span> <span class="id" title="var">x</span> : <a class="idref" href="mathcomp.algebra.ssralg.html#7f97e90bec2e67d9beef5851649e3fb1"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#b5a6699e28c97bb33352772cfa3ea869"><span class="id" title="notation">(</span></a>-1<a class="idref" href="mathcomp.algebra.ssralg.html#b5a6699e28c97bb33352772cfa3ea869"><span class="id" title="notation">)</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#b5a6699e28c97bb33352772cfa3ea869"><span class="id" title="notation">^+</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#n"><span class="id" title="variable">n</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#ed99e7035d9a1f8a2c1515be81ac2e5f"><span class="id" title="notation">×</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#7f97e90bec2e67d9beef5851649e3fb1"><span class="id" title="notation">)^-1</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#b5a6699e28c97bb33352772cfa3ea869"><span class="id" title="notation">(</span></a>-1<a class="idref" href="mathcomp.algebra.ssralg.html#b5a6699e28c97bb33352772cfa3ea869"><span class="id" title="notation">)</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#b5a6699e28c97bb33352772cfa3ea869"><span class="id" title="notation">^+</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#n"><span class="id" title="variable">n</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#ed99e7035d9a1f8a2c1515be81ac2e5f"><span class="id" title="notation">×</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#7f97e90bec2e67d9beef5851649e3fb1"><span class="id" title="notation">^-1</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.divr_signM"><span class="id" title="lemma">divr_signM</span></a> (<span class="id" title="var">b1</span> <span class="id" title="var">b2</span> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#bool"><span class="id" title="inductive">bool</span></a>) <span class="id" title="var">x1</span> <span class="id" title="var">x2</span>:<br/>
+&nbsp;&nbsp;<a class="idref" href="mathcomp.algebra.ssralg.html#1adb36345c2607a4dd991537de5ddba3"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#b5a6699e28c97bb33352772cfa3ea869"><span class="id" title="notation">(</span></a>-1<a class="idref" href="mathcomp.algebra.ssralg.html#b5a6699e28c97bb33352772cfa3ea869"><span class="id" title="notation">)</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#b5a6699e28c97bb33352772cfa3ea869"><span class="id" title="notation">^+</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#b1"><span class="id" title="variable">b1</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#ed99e7035d9a1f8a2c1515be81ac2e5f"><span class="id" title="notation">×</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#x1"><span class="id" title="variable">x1</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#1adb36345c2607a4dd991537de5ddba3"><span class="id" title="notation">)</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#1adb36345c2607a4dd991537de5ddba3"><span class="id" title="notation">/</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#1adb36345c2607a4dd991537de5ddba3"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#b5a6699e28c97bb33352772cfa3ea869"><span class="id" title="notation">(</span></a>-1<a class="idref" href="mathcomp.algebra.ssralg.html#b5a6699e28c97bb33352772cfa3ea869"><span class="id" title="notation">)</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#b5a6699e28c97bb33352772cfa3ea869"><span class="id" title="notation">^+</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#b2"><span class="id" title="variable">b2</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#ed99e7035d9a1f8a2c1515be81ac2e5f"><span class="id" title="notation">×</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#x2"><span class="id" title="variable">x2</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#1adb36345c2607a4dd991537de5ddba3"><span class="id" title="notation">)</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#b5a6699e28c97bb33352772cfa3ea869"><span class="id" title="notation">(</span></a>-1<a class="idref" href="mathcomp.algebra.ssralg.html#b5a6699e28c97bb33352772cfa3ea869"><span class="id" title="notation">)</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#b5a6699e28c97bb33352772cfa3ea869"><span class="id" title="notation">^+</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#b5a6699e28c97bb33352772cfa3ea869"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#b1"><span class="id" title="variable">b1</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#ef177bde7d01ae97c98f9cba81f6c95b"><span class="id" title="notation">(+)</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#b2"><span class="id" title="variable">b2</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#b5a6699e28c97bb33352772cfa3ea869"><span class="id" title="notation">)</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#ed99e7035d9a1f8a2c1515be81ac2e5f"><span class="id" title="notation">×</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#ed99e7035d9a1f8a2c1515be81ac2e5f"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#x1"><span class="id" title="variable">x1</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#1adb36345c2607a4dd991537de5ddba3"><span class="id" title="notation">/</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#x2"><span class="id" title="variable">x2</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#ed99e7035d9a1f8a2c1515be81ac2e5f"><span class="id" title="notation">)</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">End</span> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.UnitRingPred"><span class="id" title="section">UnitRingPred</span></a>.<br/>
+
+<br/>
+</div>
+
+<div class="doc">
+ Reification of the theory of rings with units, in named style
+</div>
+<div class="code">
+<span class="id" title="keyword">Section</span> <a name="GRing.TermDef"><span class="id" title="section">TermDef</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Variable</span> <a name="GRing.TermDef.R"><span class="id" title="variable">R</span></a> : <span class="id" title="keyword">Type</span>.<br/>
+
+<br/>
+<span class="id" title="keyword">Inductive</span> <a name="GRing.term"><span class="id" title="inductive">term</span></a> : <span class="id" title="keyword">Type</span> :=<br/>
+| <a name="GRing.Var"><span class="id" title="constructor">Var</span></a> <span class="id" title="keyword">of</span> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#nat"><span class="id" title="inductive">nat</span></a><br/>
+| <a name="GRing.Const"><span class="id" title="constructor">Const</span></a> <span class="id" title="keyword">of</span> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.TermDef.R"><span class="id" title="variable">R</span></a><br/>
+| <a name="GRing.NatConst"><span class="id" title="constructor">NatConst</span></a> <span class="id" title="keyword">of</span> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#nat"><span class="id" title="inductive">nat</span></a><br/>
+| <a name="GRing.Add"><span class="id" title="constructor">Add</span></a> <span class="id" title="keyword">of</span> <a class="idref" href="mathcomp.algebra.ssralg.html#term"><span class="id" title="inductive">term</span></a> &amp; <a class="idref" href="mathcomp.algebra.ssralg.html#term"><span class="id" title="inductive">term</span></a><br/>
+| <a name="GRing.Opp"><span class="id" title="constructor">Opp</span></a> <span class="id" title="keyword">of</span> <a class="idref" href="mathcomp.algebra.ssralg.html#term"><span class="id" title="inductive">term</span></a><br/>
+| <a name="GRing.NatMul"><span class="id" title="constructor">NatMul</span></a> <span class="id" title="keyword">of</span> <a class="idref" href="mathcomp.algebra.ssralg.html#term"><span class="id" title="inductive">term</span></a> &amp; <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#nat"><span class="id" title="inductive">nat</span></a><br/>
+| <a name="GRing.Mul"><span class="id" title="constructor">Mul</span></a> <span class="id" title="keyword">of</span> <a class="idref" href="mathcomp.algebra.ssralg.html#term"><span class="id" title="inductive">term</span></a> &amp; <a class="idref" href="mathcomp.algebra.ssralg.html#term"><span class="id" title="inductive">term</span></a><br/>
+| <a name="GRing.Inv"><span class="id" title="constructor">Inv</span></a> <span class="id" title="keyword">of</span> <a class="idref" href="mathcomp.algebra.ssralg.html#term"><span class="id" title="inductive">term</span></a><br/>
+| <a name="GRing.Exp"><span class="id" title="constructor">Exp</span></a> <span class="id" title="keyword">of</span> <a class="idref" href="mathcomp.algebra.ssralg.html#term"><span class="id" title="inductive">term</span></a> &amp; <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#nat"><span class="id" title="inductive">nat</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Inductive</span> <a name="GRing.formula"><span class="id" title="inductive">formula</span></a> : <span class="id" title="keyword">Type</span> :=<br/>
+| <a name="GRing.Bool"><span class="id" title="constructor">Bool</span></a> <span class="id" title="keyword">of</span> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#bool"><span class="id" title="inductive">bool</span></a><br/>
+| <a name="GRing.Equal"><span class="id" title="constructor">Equal</span></a> <span class="id" title="keyword">of</span> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.term"><span class="id" title="inductive">term</span></a> &amp; <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.term"><span class="id" title="inductive">term</span></a><br/>
+| <a name="GRing.Unit"><span class="id" title="constructor">Unit</span></a> <span class="id" title="keyword">of</span> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.term"><span class="id" title="inductive">term</span></a><br/>
+| <a name="GRing.And"><span class="id" title="constructor">And</span></a> <span class="id" title="keyword">of</span> <a class="idref" href="mathcomp.algebra.ssralg.html#formula"><span class="id" title="inductive">formula</span></a> &amp; <a class="idref" href="mathcomp.algebra.ssralg.html#formula"><span class="id" title="inductive">formula</span></a><br/>
+| <a name="GRing.Or"><span class="id" title="constructor">Or</span></a> <span class="id" title="keyword">of</span> <a class="idref" href="mathcomp.algebra.ssralg.html#formula"><span class="id" title="inductive">formula</span></a> &amp; <a class="idref" href="mathcomp.algebra.ssralg.html#formula"><span class="id" title="inductive">formula</span></a><br/>
+| <a name="GRing.Implies"><span class="id" title="constructor">Implies</span></a> <span class="id" title="keyword">of</span> <a class="idref" href="mathcomp.algebra.ssralg.html#formula"><span class="id" title="inductive">formula</span></a> &amp; <a class="idref" href="mathcomp.algebra.ssralg.html#formula"><span class="id" title="inductive">formula</span></a><br/>
+| <a name="GRing.Not"><span class="id" title="constructor">Not</span></a> <span class="id" title="keyword">of</span> <a class="idref" href="mathcomp.algebra.ssralg.html#formula"><span class="id" title="inductive">formula</span></a><br/>
+| <a name="GRing.Exists"><span class="id" title="constructor">Exists</span></a> <span class="id" title="keyword">of</span> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#nat"><span class="id" title="inductive">nat</span></a> &amp; <a class="idref" href="mathcomp.algebra.ssralg.html#formula"><span class="id" title="inductive">formula</span></a><br/>
+| <a name="GRing.Forall"><span class="id" title="constructor">Forall</span></a> <span class="id" title="keyword">of</span> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#nat"><span class="id" title="inductive">nat</span></a> &amp; <a class="idref" href="mathcomp.algebra.ssralg.html#formula"><span class="id" title="inductive">formula</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">End</span> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.TermDef"><span class="id" title="section">TermDef</span></a>.<br/>
+
+<br/>
+
+<br/>
+
+<br/>
+<span class="id" title="keyword">Notation</span> <a name="GRing.True"><span class="id" title="abbreviation">True</span></a> := (<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Bool"><span class="id" title="constructor">Bool</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#true"><span class="id" title="constructor">true</span></a>).<br/>
+<span class="id" title="keyword">Notation</span> <a name="GRing.False"><span class="id" title="abbreviation">False</span></a> := (<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Bool"><span class="id" title="constructor">Bool</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#false"><span class="id" title="constructor">false</span></a>).<br/>
+
+<br/>
+
+<br/>
+<span class="id" title="keyword">Section</span> <a name="GRing.Substitution"><span class="id" title="section">Substitution</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Variable</span> <a name="GRing.Substitution.R"><span class="id" title="variable">R</span></a> : <span class="id" title="keyword">Type</span>.<br/>
+
+<br/>
+<span class="id" title="keyword">Fixpoint</span> <a name="GRing.tsubst"><span class="id" title="definition">tsubst</span></a> (<span class="id" title="var">t</span> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.term"><span class="id" title="inductive">term</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Substitution.R"><span class="id" title="variable">R</span></a>) (<span class="id" title="var">s</span> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#nat"><span class="id" title="inductive">nat</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#d19c7eafd0e2d195d10df94b392087b5"><span class="id" title="notation">×</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.term"><span class="id" title="inductive">term</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Substitution.R"><span class="id" title="variable">R</span></a>) :=<br/>
+&nbsp;&nbsp;<span class="id" title="keyword">match</span> <a class="idref" href="mathcomp.algebra.ssralg.html#t"><span class="id" title="variable">t</span></a> <span class="id" title="keyword">with</span><br/>
+&nbsp;&nbsp;| <a class="idref" href="mathcomp.algebra.ssralg.html#bb8753f66ae3a3b4b3bd3423d5bd7db1"><span class="id" title="notation">'</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#bb8753f66ae3a3b4b3bd3423d5bd7db1"><span class="id" title="notation">X_i</span></a> ⇒ <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssreflect.html#0348819abaa88c2cd747e8fa60dde7ae"><span class="id" title="notation">if</span></a> <span class="id" title="var">i</span> <a class="idref" href="mathcomp.ssreflect.eqtype.html#17d28d004d0863cb022d4ce832ddaaae"><span class="id" title="notation">==</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#s"><span class="id" title="variable">s</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#c4877bbfe60d8f22b47ac99ace86216a"><span class="id" title="notation">.1</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssreflect.html#0348819abaa88c2cd747e8fa60dde7ae"><span class="id" title="notation">then</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#s"><span class="id" title="variable">s</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#f4827404159513e7fd691b60b7877737"><span class="id" title="notation">.2</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssreflect.html#0348819abaa88c2cd747e8fa60dde7ae"><span class="id" title="notation">else</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#t"><span class="id" title="variable">t</span></a><br/>
+&nbsp;&nbsp;| <span class="id" title="var">_</span><a class="idref" href="mathcomp.algebra.ssralg.html#36988dee1d5e98e959473a8f531d647c"><span class="id" title="notation">%:</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#36988dee1d5e98e959473a8f531d647c"><span class="id" title="notation">T</span></a> | <span class="id" title="var">_</span><a class="idref" href="mathcomp.algebra.ssralg.html#680a63315a46806afe986215b67ab961"><span class="id" title="notation">%:</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#680a63315a46806afe986215b67ab961"><span class="id" title="notation">R</span></a> ⇒ <a class="idref" href="mathcomp.algebra.ssralg.html#t"><span class="id" title="variable">t</span></a><br/>
+&nbsp;&nbsp;| <span class="id" title="var">t1</span> <a class="idref" href="mathcomp.algebra.ssralg.html#7f909243ac0228583a25471d8084551b"><span class="id" title="notation">+</span></a> <span class="id" title="var">t2</span> ⇒ <a class="idref" href="mathcomp.algebra.ssralg.html#tsubst"><span class="id" title="definition">tsubst</span></a> <span class="id" title="var">t1</span> <a class="idref" href="mathcomp.algebra.ssralg.html#s"><span class="id" title="variable">s</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#7f909243ac0228583a25471d8084551b"><span class="id" title="notation">+</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#tsubst"><span class="id" title="definition">tsubst</span></a> <span class="id" title="var">t2</span> <a class="idref" href="mathcomp.algebra.ssralg.html#s"><span class="id" title="variable">s</span></a><br/>
+&nbsp;&nbsp;| <a class="idref" href="mathcomp.algebra.ssralg.html#6c3b3e259d3f407cc03b5863f5d872ec"><span class="id" title="notation">-</span></a> <span class="id" title="var">t1</span> ⇒ <a class="idref" href="mathcomp.algebra.ssralg.html#6c3b3e259d3f407cc03b5863f5d872ec"><span class="id" title="notation">-</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#tsubst"><span class="id" title="definition">tsubst</span></a> <span class="id" title="var">t1</span> <a class="idref" href="mathcomp.algebra.ssralg.html#s"><span class="id" title="variable">s</span></a><br/>
+&nbsp;&nbsp;| <span class="id" title="var">t1</span> <a class="idref" href="mathcomp.algebra.ssralg.html#bb8dcb8add43cd5b4672890afb1d1839"><span class="id" title="notation">*+</span></a> <span class="id" title="var">n</span> ⇒ <a class="idref" href="mathcomp.algebra.ssralg.html#tsubst"><span class="id" title="definition">tsubst</span></a> <span class="id" title="var">t1</span> <a class="idref" href="mathcomp.algebra.ssralg.html#s"><span class="id" title="variable">s</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#bb8dcb8add43cd5b4672890afb1d1839"><span class="id" title="notation">*+</span></a> <span class="id" title="var">n</span><br/>
+&nbsp;&nbsp;| <span class="id" title="var">t1</span> <a class="idref" href="mathcomp.algebra.ssralg.html#0b9ef6879d691a4408b07cd59dbb28f0"><span class="id" title="notation">×</span></a> <span class="id" title="var">t2</span> ⇒ <a class="idref" href="mathcomp.algebra.ssralg.html#tsubst"><span class="id" title="definition">tsubst</span></a> <span class="id" title="var">t1</span> <a class="idref" href="mathcomp.algebra.ssralg.html#s"><span class="id" title="variable">s</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#0b9ef6879d691a4408b07cd59dbb28f0"><span class="id" title="notation">×</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#tsubst"><span class="id" title="definition">tsubst</span></a> <span class="id" title="var">t2</span> <a class="idref" href="mathcomp.algebra.ssralg.html#s"><span class="id" title="variable">s</span></a><br/>
+&nbsp;&nbsp;| <span class="id" title="var">t1</span><a class="idref" href="mathcomp.algebra.ssralg.html#8527e8676e2efa838eb3d51e80e2d39f"><span class="id" title="notation">^-1</span></a> ⇒ <a class="idref" href="mathcomp.algebra.ssralg.html#8527e8676e2efa838eb3d51e80e2d39f"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#tsubst"><span class="id" title="definition">tsubst</span></a> <span class="id" title="var">t1</span> <a class="idref" href="mathcomp.algebra.ssralg.html#s"><span class="id" title="variable">s</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#8527e8676e2efa838eb3d51e80e2d39f"><span class="id" title="notation">)^-1</span></a><br/>
+&nbsp;&nbsp;| <span class="id" title="var">t1</span> <a class="idref" href="mathcomp.algebra.ssralg.html#076e0496ae7ecaf146a6c132bdca5782"><span class="id" title="notation">^+</span></a> <span class="id" title="var">n</span> ⇒ <a class="idref" href="mathcomp.algebra.ssralg.html#tsubst"><span class="id" title="definition">tsubst</span></a> <span class="id" title="var">t1</span> <a class="idref" href="mathcomp.algebra.ssralg.html#s"><span class="id" title="variable">s</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#076e0496ae7ecaf146a6c132bdca5782"><span class="id" title="notation">^+</span></a> <span class="id" title="var">n</span><br/>
+&nbsp;&nbsp;<span class="id" title="keyword">end</span>%<span class="id" title="var">T</span>.<br/>
+
+<br/>
+<span class="id" title="keyword">Fixpoint</span> <a name="GRing.fsubst"><span class="id" title="definition">fsubst</span></a> (<span class="id" title="var">f</span> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.formula"><span class="id" title="inductive">formula</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Substitution.R"><span class="id" title="variable">R</span></a>) (<span class="id" title="var">s</span> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#nat"><span class="id" title="inductive">nat</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#d19c7eafd0e2d195d10df94b392087b5"><span class="id" title="notation">×</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.term"><span class="id" title="inductive">term</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Substitution.R"><span class="id" title="variable">R</span></a>) :=<br/>
+&nbsp;&nbsp;<span class="id" title="keyword">match</span> <a class="idref" href="mathcomp.algebra.ssralg.html#f"><span class="id" title="variable">f</span></a> <span class="id" title="keyword">with</span><br/>
+&nbsp;&nbsp;| <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Bool"><span class="id" title="constructor">Bool</span></a> <span class="id" title="var">_</span> ⇒ <a class="idref" href="mathcomp.algebra.ssralg.html#f"><span class="id" title="variable">f</span></a><br/>
+&nbsp;&nbsp;| <span class="id" title="var">t1</span> <a class="idref" href="mathcomp.algebra.ssralg.html#1a6fbc7f80506595657605bb77bac252"><span class="id" title="notation">==</span></a> <span class="id" title="var">t2</span> ⇒ <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.tsubst"><span class="id" title="definition">tsubst</span></a> <span class="id" title="var">t1</span> <a class="idref" href="mathcomp.algebra.ssralg.html#s"><span class="id" title="variable">s</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#1a6fbc7f80506595657605bb77bac252"><span class="id" title="notation">==</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.tsubst"><span class="id" title="definition">tsubst</span></a> <span class="id" title="var">t2</span> <a class="idref" href="mathcomp.algebra.ssralg.html#s"><span class="id" title="variable">s</span></a><br/>
+&nbsp;&nbsp;| <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Unit"><span class="id" title="constructor">Unit</span></a> <span class="id" title="var">t1</span> ⇒ <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Unit"><span class="id" title="constructor">Unit</span></a> (<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.tsubst"><span class="id" title="definition">tsubst</span></a> <span class="id" title="var">t1</span> <a class="idref" href="mathcomp.algebra.ssralg.html#s"><span class="id" title="variable">s</span></a>)<br/>
+&nbsp;&nbsp;| <span class="id" title="var">f1</span> <a class="idref" href="mathcomp.algebra.ssralg.html#421c9c3c51833f1724975feaafb4b744"><span class="id" title="notation">∧</span></a> <span class="id" title="var">f2</span> ⇒ <a class="idref" href="mathcomp.algebra.ssralg.html#fsubst"><span class="id" title="definition">fsubst</span></a> <span class="id" title="var">f1</span> <a class="idref" href="mathcomp.algebra.ssralg.html#s"><span class="id" title="variable">s</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#421c9c3c51833f1724975feaafb4b744"><span class="id" title="notation">∧</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#fsubst"><span class="id" title="definition">fsubst</span></a> <span class="id" title="var">f2</span> <a class="idref" href="mathcomp.algebra.ssralg.html#s"><span class="id" title="variable">s</span></a><br/>
+&nbsp;&nbsp;| <span class="id" title="var">f1</span> <a class="idref" href="mathcomp.algebra.ssralg.html#00b8327e04e2b6f2d979016edbc0c67a"><span class="id" title="notation">∨</span></a> <span class="id" title="var">f2</span> ⇒ <a class="idref" href="mathcomp.algebra.ssralg.html#fsubst"><span class="id" title="definition">fsubst</span></a> <span class="id" title="var">f1</span> <a class="idref" href="mathcomp.algebra.ssralg.html#s"><span class="id" title="variable">s</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#00b8327e04e2b6f2d979016edbc0c67a"><span class="id" title="notation">∨</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#fsubst"><span class="id" title="definition">fsubst</span></a> <span class="id" title="var">f2</span> <a class="idref" href="mathcomp.algebra.ssralg.html#s"><span class="id" title="variable">s</span></a><br/>
+&nbsp;&nbsp;| <span class="id" title="var">f1</span> <a class="idref" href="mathcomp.algebra.ssralg.html#0686cd1bb1af98b02865ebbedcf70bd7"><span class="id" title="notation">==&gt;</span></a> <span class="id" title="var">f2</span> ⇒ <a class="idref" href="mathcomp.algebra.ssralg.html#fsubst"><span class="id" title="definition">fsubst</span></a> <span class="id" title="var">f1</span> <a class="idref" href="mathcomp.algebra.ssralg.html#s"><span class="id" title="variable">s</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#0686cd1bb1af98b02865ebbedcf70bd7"><span class="id" title="notation">==&gt;</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#fsubst"><span class="id" title="definition">fsubst</span></a> <span class="id" title="var">f2</span> <a class="idref" href="mathcomp.algebra.ssralg.html#s"><span class="id" title="variable">s</span></a><br/>
+&nbsp;&nbsp;| <a class="idref" href="mathcomp.algebra.ssralg.html#bf1935aa3f28dfd45301897795b397a5"><span class="id" title="notation">¬</span></a> <span class="id" title="var">f1</span> ⇒ <a class="idref" href="mathcomp.algebra.ssralg.html#bf1935aa3f28dfd45301897795b397a5"><span class="id" title="notation">¬</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#fsubst"><span class="id" title="definition">fsubst</span></a> <span class="id" title="var">f1</span> <a class="idref" href="mathcomp.algebra.ssralg.html#s"><span class="id" title="variable">s</span></a><br/>
+&nbsp;&nbsp;| (<a class="idref" href="mathcomp.algebra.ssralg.html#cde0c417a2306d50158e89540db8c60d"><span class="id" title="notation">'</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#cde0c417a2306d50158e89540db8c60d"><span class="id" title="notation">∃</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#cde0c417a2306d50158e89540db8c60d"><span class="id" title="notation">'</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#cde0c417a2306d50158e89540db8c60d"><span class="id" title="notation">X_i</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#cde0c417a2306d50158e89540db8c60d"><span class="id" title="notation">,</span></a> <span class="id" title="var">f1</span>) ⇒ <a class="idref" href="mathcomp.algebra.ssralg.html#cde0c417a2306d50158e89540db8c60d"><span class="id" title="notation">'</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#cde0c417a2306d50158e89540db8c60d"><span class="id" title="notation">∃</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#cde0c417a2306d50158e89540db8c60d"><span class="id" title="notation">'</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#cde0c417a2306d50158e89540db8c60d"><span class="id" title="notation">X_i</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#cde0c417a2306d50158e89540db8c60d"><span class="id" title="notation">,</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssreflect.html#0348819abaa88c2cd747e8fa60dde7ae"><span class="id" title="notation">if</span></a> <span class="id" title="var">i</span> <a class="idref" href="mathcomp.ssreflect.eqtype.html#17d28d004d0863cb022d4ce832ddaaae"><span class="id" title="notation">==</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#s"><span class="id" title="variable">s</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#c4877bbfe60d8f22b47ac99ace86216a"><span class="id" title="notation">.1</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssreflect.html#0348819abaa88c2cd747e8fa60dde7ae"><span class="id" title="notation">then</span></a> <span class="id" title="var">f1</span> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssreflect.html#0348819abaa88c2cd747e8fa60dde7ae"><span class="id" title="notation">else</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#fsubst"><span class="id" title="definition">fsubst</span></a> <span class="id" title="var">f1</span> <a class="idref" href="mathcomp.algebra.ssralg.html#s"><span class="id" title="variable">s</span></a><br/>
+&nbsp;&nbsp;| (<a class="idref" href="mathcomp.algebra.ssralg.html#bc08eb662d28e6715d9720beafd75750"><span class="id" title="notation">'</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#bc08eb662d28e6715d9720beafd75750"><span class="id" title="notation">∀</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#bc08eb662d28e6715d9720beafd75750"><span class="id" title="notation">'</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#bc08eb662d28e6715d9720beafd75750"><span class="id" title="notation">X_i</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#bc08eb662d28e6715d9720beafd75750"><span class="id" title="notation">,</span></a> <span class="id" title="var">f1</span>) ⇒ <a class="idref" href="mathcomp.algebra.ssralg.html#bc08eb662d28e6715d9720beafd75750"><span class="id" title="notation">'</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#bc08eb662d28e6715d9720beafd75750"><span class="id" title="notation">∀</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#bc08eb662d28e6715d9720beafd75750"><span class="id" title="notation">'</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#bc08eb662d28e6715d9720beafd75750"><span class="id" title="notation">X_i</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#bc08eb662d28e6715d9720beafd75750"><span class="id" title="notation">,</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssreflect.html#0348819abaa88c2cd747e8fa60dde7ae"><span class="id" title="notation">if</span></a> <span class="id" title="var">i</span> <a class="idref" href="mathcomp.ssreflect.eqtype.html#17d28d004d0863cb022d4ce832ddaaae"><span class="id" title="notation">==</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#s"><span class="id" title="variable">s</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#c4877bbfe60d8f22b47ac99ace86216a"><span class="id" title="notation">.1</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssreflect.html#0348819abaa88c2cd747e8fa60dde7ae"><span class="id" title="notation">then</span></a> <span class="id" title="var">f1</span> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssreflect.html#0348819abaa88c2cd747e8fa60dde7ae"><span class="id" title="notation">else</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#fsubst"><span class="id" title="definition">fsubst</span></a> <span class="id" title="var">f1</span> <a class="idref" href="mathcomp.algebra.ssralg.html#s"><span class="id" title="variable">s</span></a><br/>
+&nbsp;&nbsp;<span class="id" title="keyword">end</span>%<span class="id" title="var">T</span>.<br/>
+
+<br/>
+<span class="id" title="keyword">End</span> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Substitution"><span class="id" title="section">Substitution</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Section</span> <a name="GRing.EvalTerm"><span class="id" title="section">EvalTerm</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Variable</span> <a name="GRing.EvalTerm.R"><span class="id" title="variable">R</span></a> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.unitRingType"><span class="id" title="abbreviation">unitRingType</span></a>.<br/>
+
+<br/>
+</div>
+
+<div class="doc">
+ Evaluation of a reified term into R a ring with units
+</div>
+<div class="code">
+<span class="id" title="keyword">Fixpoint</span> <a name="GRing.eval"><span class="id" title="definition">eval</span></a> (<span class="id" title="var">e</span> : <a class="idref" href="mathcomp.ssreflect.seq.html#seq"><span class="id" title="abbreviation">seq</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.EvalTerm.R"><span class="id" title="variable">R</span></a>) (<span class="id" title="var">t</span> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.term"><span class="id" title="inductive">term</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.EvalTerm.R"><span class="id" title="variable">R</span></a>) {<span class="id" title="keyword">struct</span> <span class="id" title="var">t</span>} : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.EvalTerm.R"><span class="id" title="variable">R</span></a> :=<br/>
+&nbsp;&nbsp;<span class="id" title="keyword">match</span> <a class="idref" href="mathcomp.algebra.ssralg.html#t"><span class="id" title="variable">t</span></a> <span class="id" title="keyword">with</span><br/>
+&nbsp;&nbsp;| (<a class="idref" href="mathcomp.algebra.ssralg.html#bb8753f66ae3a3b4b3bd3423d5bd7db1"><span class="id" title="notation">'</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#bb8753f66ae3a3b4b3bd3423d5bd7db1"><span class="id" title="notation">X_i</span></a>)%<span class="id" title="var">T</span> ⇒ <a class="idref" href="mathcomp.algebra.ssralg.html#e"><span class="id" title="variable">e</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#cba7c6485dff34fa5d3cd17d8c695698"><span class="id" title="notation">`</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#cba7c6485dff34fa5d3cd17d8c695698"><span class="id" title="notation">_i</span></a><br/>
+&nbsp;&nbsp;| (<span class="id" title="var">x</span><a class="idref" href="mathcomp.algebra.ssralg.html#36988dee1d5e98e959473a8f531d647c"><span class="id" title="notation">%:</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#36988dee1d5e98e959473a8f531d647c"><span class="id" title="notation">T</span></a>)%<span class="id" title="var">T</span> ⇒ <span class="id" title="var">x</span><br/>
+&nbsp;&nbsp;| (<span class="id" title="var">n</span><a class="idref" href="mathcomp.algebra.ssralg.html#680a63315a46806afe986215b67ab961"><span class="id" title="notation">%:</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#680a63315a46806afe986215b67ab961"><span class="id" title="notation">R</span></a>)%<span class="id" title="var">T</span> ⇒ <span class="id" title="var">n</span><a class="idref" href="mathcomp.algebra.ssralg.html#c191333b9c7c034282647fbffacc9d18"><span class="id" title="notation">%:</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#c191333b9c7c034282647fbffacc9d18"><span class="id" title="notation">R</span></a><br/>
+&nbsp;&nbsp;| (<span class="id" title="var">t1</span> <a class="idref" href="mathcomp.algebra.ssralg.html#7f909243ac0228583a25471d8084551b"><span class="id" title="notation">+</span></a> <span class="id" title="var">t2</span>)%<span class="id" title="var">T</span> ⇒ <a class="idref" href="mathcomp.algebra.ssralg.html#eval"><span class="id" title="definition">eval</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#e"><span class="id" title="variable">e</span></a> <span class="id" title="var">t1</span> <a class="idref" href="mathcomp.algebra.ssralg.html#338c5345074fd3586073fd29273c138a"><span class="id" title="notation">+</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#eval"><span class="id" title="definition">eval</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#e"><span class="id" title="variable">e</span></a> <span class="id" title="var">t2</span><br/>
+&nbsp;&nbsp;| (<a class="idref" href="mathcomp.algebra.ssralg.html#6c3b3e259d3f407cc03b5863f5d872ec"><span class="id" title="notation">-</span></a> <span class="id" title="var">t1</span>)%<span class="id" title="var">T</span> ⇒ <a class="idref" href="mathcomp.algebra.ssralg.html#eefae7eea8ed2b8fccf150cb653d7a7b"><span class="id" title="notation">-</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#eval"><span class="id" title="definition">eval</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#e"><span class="id" title="variable">e</span></a> <span class="id" title="var">t1</span><br/>
+&nbsp;&nbsp;| (<span class="id" title="var">t1</span> <a class="idref" href="mathcomp.algebra.ssralg.html#bb8dcb8add43cd5b4672890afb1d1839"><span class="id" title="notation">*+</span></a> <span class="id" title="var">n</span>)%<span class="id" title="var">T</span> ⇒ <a class="idref" href="mathcomp.algebra.ssralg.html#eval"><span class="id" title="definition">eval</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#e"><span class="id" title="variable">e</span></a> <span class="id" title="var">t1</span> <a class="idref" href="mathcomp.algebra.ssralg.html#513eaa3129601ecbcc9e188a80d6155b"><span class="id" title="notation">*+</span></a> <span class="id" title="var">n</span><br/>
+&nbsp;&nbsp;| (<span class="id" title="var">t1</span> <a class="idref" href="mathcomp.algebra.ssralg.html#0b9ef6879d691a4408b07cd59dbb28f0"><span class="id" title="notation">×</span></a> <span class="id" title="var">t2</span>)%<span class="id" title="var">T</span> ⇒ <a class="idref" href="mathcomp.algebra.ssralg.html#eval"><span class="id" title="definition">eval</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#e"><span class="id" title="variable">e</span></a> <span class="id" title="var">t1</span> <a class="idref" href="mathcomp.algebra.ssralg.html#ed99e7035d9a1f8a2c1515be81ac2e5f"><span class="id" title="notation">×</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#eval"><span class="id" title="definition">eval</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#e"><span class="id" title="variable">e</span></a> <span class="id" title="var">t2</span><br/>
+&nbsp;&nbsp;| <span class="id" title="var">t1</span><a class="idref" href="mathcomp.algebra.ssralg.html#8527e8676e2efa838eb3d51e80e2d39f"><span class="id" title="notation">^-1</span></a>%<span class="id" title="var">T</span> ⇒ <a class="idref" href="mathcomp.algebra.ssralg.html#7f97e90bec2e67d9beef5851649e3fb1"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#eval"><span class="id" title="definition">eval</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#e"><span class="id" title="variable">e</span></a> <span class="id" title="var">t1</span><a class="idref" href="mathcomp.algebra.ssralg.html#7f97e90bec2e67d9beef5851649e3fb1"><span class="id" title="notation">)^-1</span></a><br/>
+&nbsp;&nbsp;| (<span class="id" title="var">t1</span> <a class="idref" href="mathcomp.algebra.ssralg.html#076e0496ae7ecaf146a6c132bdca5782"><span class="id" title="notation">^+</span></a> <span class="id" title="var">n</span>)%<span class="id" title="var">T</span> ⇒ <a class="idref" href="mathcomp.algebra.ssralg.html#eval"><span class="id" title="definition">eval</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#e"><span class="id" title="variable">e</span></a> <span class="id" title="var">t1</span> <a class="idref" href="mathcomp.algebra.ssralg.html#b5a6699e28c97bb33352772cfa3ea869"><span class="id" title="notation">^+</span></a> <span class="id" title="var">n</span><br/>
+&nbsp;&nbsp;<span class="id" title="keyword">end</span>.<br/>
+
+<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.same_env"><span class="id" title="definition">same_env</span></a> (<span class="id" title="var">e</span> <span class="id" title="var">e'</span> : <a class="idref" href="mathcomp.ssreflect.seq.html#seq"><span class="id" title="abbreviation">seq</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.EvalTerm.R"><span class="id" title="variable">R</span></a>) := <a class="idref" href="mathcomp.ssreflect.seq.html#nth"><span class="id" title="definition">nth</span></a> 0 <a class="idref" href="mathcomp.algebra.ssralg.html#e"><span class="id" title="variable">e</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#2500d48ed8e862ccfda98a44dff88963"><span class="id" title="notation">=1</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#nth"><span class="id" title="definition">nth</span></a> 0 <a class="idref" href="mathcomp.algebra.ssralg.html#e'"><span class="id" title="variable">e'</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.eq_eval"><span class="id" title="lemma">eq_eval</span></a> <span class="id" title="var">e</span> <span class="id" title="var">e'</span> <span class="id" title="var">t</span> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.same_env"><span class="id" title="definition">same_env</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#e"><span class="id" title="variable">e</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#e'"><span class="id" title="variable">e'</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.eval"><span class="id" title="definition">eval</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#e"><span class="id" title="variable">e</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#t"><span class="id" title="variable">t</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.eval"><span class="id" title="definition">eval</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#e'"><span class="id" title="variable">e'</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#t"><span class="id" title="variable">t</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.eval_tsubst"><span class="id" title="lemma">eval_tsubst</span></a> <span class="id" title="var">e</span> <span class="id" title="var">t</span> <span class="id" title="var">s</span> :<br/>
+&nbsp;&nbsp;<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.eval"><span class="id" title="definition">eval</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#e"><span class="id" title="variable">e</span></a> (<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.tsubst"><span class="id" title="definition">tsubst</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#t"><span class="id" title="variable">t</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#s"><span class="id" title="variable">s</span></a>) <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.eval"><span class="id" title="definition">eval</span></a> (<a class="idref" href="mathcomp.ssreflect.seq.html#set_nth"><span class="id" title="definition">set_nth</span></a> 0 <a class="idref" href="mathcomp.algebra.ssralg.html#e"><span class="id" title="variable">e</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#s"><span class="id" title="variable">s</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#c4877bbfe60d8f22b47ac99ace86216a"><span class="id" title="notation">.1</span></a> (<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.eval"><span class="id" title="definition">eval</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#e"><span class="id" title="variable">e</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#s"><span class="id" title="variable">s</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#f4827404159513e7fd691b60b7877737"><span class="id" title="notation">.2</span></a>)) <a class="idref" href="mathcomp.algebra.ssralg.html#t"><span class="id" title="variable">t</span></a>.<br/>
+
+<br/>
+</div>
+
+<div class="doc">
+ Evaluation of a reified formula
+</div>
+<div class="code">
+<span class="id" title="keyword">Fixpoint</span> <a name="GRing.holds"><span class="id" title="definition">holds</span></a> (<span class="id" title="var">e</span> : <a class="idref" href="mathcomp.ssreflect.seq.html#seq"><span class="id" title="abbreviation">seq</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.EvalTerm.R"><span class="id" title="variable">R</span></a>) (<span class="id" title="var">f</span> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.formula"><span class="id" title="inductive">formula</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.EvalTerm.R"><span class="id" title="variable">R</span></a>) {<span class="id" title="keyword">struct</span> <span class="id" title="var">f</span>} : <span class="id" title="keyword">Prop</span> :=<br/>
+&nbsp;&nbsp;<span class="id" title="keyword">match</span> <a class="idref" href="mathcomp.algebra.ssralg.html#f"><span class="id" title="variable">f</span></a> <span class="id" title="keyword">with</span><br/>
+&nbsp;&nbsp;| <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Bool"><span class="id" title="constructor">Bool</span></a> <span class="id" title="var">b</span> ⇒ <span class="id" title="var">b</span><br/>
+&nbsp;&nbsp;| (<span class="id" title="var">t1</span> <a class="idref" href="mathcomp.algebra.ssralg.html#1a6fbc7f80506595657605bb77bac252"><span class="id" title="notation">==</span></a> <span class="id" title="var">t2</span>)%<span class="id" title="var">T</span> ⇒ <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.eval"><span class="id" title="definition">eval</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#e"><span class="id" title="variable">e</span></a> <span class="id" title="var">t1</span> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.eval"><span class="id" title="definition">eval</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#e"><span class="id" title="variable">e</span></a> <span class="id" title="var">t2</span><br/>
+&nbsp;&nbsp;| <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Unit"><span class="id" title="constructor">Unit</span></a> <span class="id" title="var">t1</span> ⇒ <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.eval"><span class="id" title="definition">eval</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#e"><span class="id" title="variable">e</span></a> <span class="id" title="var">t1</span> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">\</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">in</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.unit"><span class="id" title="definition">unit</span></a><br/>
+&nbsp;&nbsp;| (<span class="id" title="var">f1</span> <a class="idref" href="mathcomp.algebra.ssralg.html#421c9c3c51833f1724975feaafb4b744"><span class="id" title="notation">∧</span></a> <span class="id" title="var">f2</span>)%<span class="id" title="var">T</span> ⇒ <a class="idref" href="mathcomp.algebra.ssralg.html#holds"><span class="id" title="definition">holds</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#e"><span class="id" title="variable">e</span></a> <span class="id" title="var">f1</span> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d82a7d96d3659d805ffe732283716822"><span class="id" title="notation">∧</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#holds"><span class="id" title="definition">holds</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#e"><span class="id" title="variable">e</span></a> <span class="id" title="var">f2</span><br/>
+&nbsp;&nbsp;| (<span class="id" title="var">f1</span> <a class="idref" href="mathcomp.algebra.ssralg.html#00b8327e04e2b6f2d979016edbc0c67a"><span class="id" title="notation">∨</span></a> <span class="id" title="var">f2</span>)%<span class="id" title="var">T</span> ⇒ <a class="idref" href="mathcomp.algebra.ssralg.html#holds"><span class="id" title="definition">holds</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#e"><span class="id" title="variable">e</span></a> <span class="id" title="var">f1</span> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#7a45dffb109c3069e5c675be68643e60"><span class="id" title="notation">∨</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#holds"><span class="id" title="definition">holds</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#e"><span class="id" title="variable">e</span></a> <span class="id" title="var">f2</span><br/>
+&nbsp;&nbsp;| (<span class="id" title="var">f1</span> <a class="idref" href="mathcomp.algebra.ssralg.html#0686cd1bb1af98b02865ebbedcf70bd7"><span class="id" title="notation">==&gt;</span></a> <span class="id" title="var">f2</span>)%<span class="id" title="var">T</span> ⇒ <a class="idref" href="mathcomp.algebra.ssralg.html#holds"><span class="id" title="definition">holds</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#e"><span class="id" title="variable">e</span></a> <span class="id" title="var">f1</span> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#holds"><span class="id" title="definition">holds</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#e"><span class="id" title="variable">e</span></a> <span class="id" title="var">f2</span><br/>
+&nbsp;&nbsp;| (<a class="idref" href="mathcomp.algebra.ssralg.html#bf1935aa3f28dfd45301897795b397a5"><span class="id" title="notation">¬</span></a> <span class="id" title="var">f1</span>)%<span class="id" title="var">T</span> ⇒ <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#611abc97cba304de784fa909dbdea1fa"><span class="id" title="notation">¬</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#holds"><span class="id" title="definition">holds</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#e"><span class="id" title="variable">e</span></a> <span class="id" title="var">f1</span><br/>
+&nbsp;&nbsp;| (<a class="idref" href="mathcomp.algebra.ssralg.html#cde0c417a2306d50158e89540db8c60d"><span class="id" title="notation">'</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#cde0c417a2306d50158e89540db8c60d"><span class="id" title="notation">∃</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#cde0c417a2306d50158e89540db8c60d"><span class="id" title="notation">'</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#cde0c417a2306d50158e89540db8c60d"><span class="id" title="notation">X_i</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#cde0c417a2306d50158e89540db8c60d"><span class="id" title="notation">,</span></a> <span class="id" title="var">f1</span>)%<span class="id" title="var">T</span> ⇒ <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#84eb6d2849dbf3581b1c0c05add5f2d8"><span class="id" title="notation">∃</span></a> <span class="id" title="var">x</span><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#84eb6d2849dbf3581b1c0c05add5f2d8"><span class="id" title="notation">,</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#holds"><span class="id" title="definition">holds</span></a> (<a class="idref" href="mathcomp.ssreflect.seq.html#set_nth"><span class="id" title="definition">set_nth</span></a> 0 <a class="idref" href="mathcomp.algebra.ssralg.html#e"><span class="id" title="variable">e</span></a> <span class="id" title="var">i</span> <a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a>) <span class="id" title="var">f1</span><br/>
+&nbsp;&nbsp;| (<a class="idref" href="mathcomp.algebra.ssralg.html#bc08eb662d28e6715d9720beafd75750"><span class="id" title="notation">'</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#bc08eb662d28e6715d9720beafd75750"><span class="id" title="notation">∀</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#bc08eb662d28e6715d9720beafd75750"><span class="id" title="notation">'</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#bc08eb662d28e6715d9720beafd75750"><span class="id" title="notation">X_i</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#bc08eb662d28e6715d9720beafd75750"><span class="id" title="notation">,</span></a> <span class="id" title="var">f1</span>)%<span class="id" title="var">T</span> ⇒ <span class="id" title="keyword">∀</span> <span class="id" title="var">x</span>, <a class="idref" href="mathcomp.algebra.ssralg.html#holds"><span class="id" title="definition">holds</span></a> (<a class="idref" href="mathcomp.ssreflect.seq.html#set_nth"><span class="id" title="definition">set_nth</span></a> 0 <a class="idref" href="mathcomp.algebra.ssralg.html#e"><span class="id" title="variable">e</span></a> <span class="id" title="var">i</span> <a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a>) <span class="id" title="var">f1</span><br/>
+&nbsp;&nbsp;<span class="id" title="keyword">end</span>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.same_env_sym"><span class="id" title="lemma">same_env_sym</span></a> <span class="id" title="var">e</span> <span class="id" title="var">e'</span> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.same_env"><span class="id" title="definition">same_env</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#e"><span class="id" title="variable">e</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#e'"><span class="id" title="variable">e'</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.same_env"><span class="id" title="definition">same_env</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#e'"><span class="id" title="variable">e'</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#e"><span class="id" title="variable">e</span></a>.<br/>
+
+<br/>
+</div>
+
+<div class="doc">
+ Extensionality of formula evaluation
+</div>
+<div class="code">
+<span class="id" title="keyword">Lemma</span> <a name="GRing.eq_holds"><span class="id" title="lemma">eq_holds</span></a> <span class="id" title="var">e</span> <span class="id" title="var">e'</span> <span class="id" title="var">f</span> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.same_env"><span class="id" title="definition">same_env</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#e"><span class="id" title="variable">e</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#e'"><span class="id" title="variable">e'</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.holds"><span class="id" title="definition">holds</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#e"><span class="id" title="variable">e</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#f"><span class="id" title="variable">f</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.holds"><span class="id" title="definition">holds</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#e'"><span class="id" title="variable">e'</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#f"><span class="id" title="variable">f</span></a>.<br/>
+
+<br/>
+</div>
+
+<div class="doc">
+ Evaluation and substitution by a constant
+</div>
+<div class="code">
+<span class="id" title="keyword">Lemma</span> <a name="GRing.holds_fsubst"><span class="id" title="lemma">holds_fsubst</span></a> <span class="id" title="var">e</span> <span class="id" title="var">f</span> <span class="id" title="var">i</span> <span class="id" title="var">v</span> :<br/>
+&nbsp;&nbsp;<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.holds"><span class="id" title="definition">holds</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#e"><span class="id" title="variable">e</span></a> (<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.fsubst"><span class="id" title="definition">fsubst</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#f"><span class="id" title="variable">f</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#44400027531d4bc3f586a1997dc874c0"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#i"><span class="id" title="variable">i</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#44400027531d4bc3f586a1997dc874c0"><span class="id" title="notation">,</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#v"><span class="id" title="variable">v</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#36988dee1d5e98e959473a8f531d647c"><span class="id" title="notation">%:</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#36988dee1d5e98e959473a8f531d647c"><span class="id" title="notation">T</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#44400027531d4bc3f586a1997dc874c0"><span class="id" title="notation">)</span></a>%<span class="id" title="var">T</span>) <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#df1ced36fc33ce188051218bca314374"><span class="id" title="notation">↔</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.holds"><span class="id" title="definition">holds</span></a> (<a class="idref" href="mathcomp.ssreflect.seq.html#set_nth"><span class="id" title="definition">set_nth</span></a> 0 <a class="idref" href="mathcomp.algebra.ssralg.html#e"><span class="id" title="variable">e</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#i"><span class="id" title="variable">i</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#v"><span class="id" title="variable">v</span></a>) <a class="idref" href="mathcomp.algebra.ssralg.html#f"><span class="id" title="variable">f</span></a>.<br/>
+
+<br/>
+</div>
+
+<div class="doc">
+ Boolean test selecting terms in the language of rings
+</div>
+<div class="code">
+<span class="id" title="keyword">Fixpoint</span> <a name="GRing.rterm"><span class="id" title="definition">rterm</span></a> (<span class="id" title="var">t</span> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.term"><span class="id" title="inductive">term</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.EvalTerm.R"><span class="id" title="variable">R</span></a>) :=<br/>
+&nbsp;&nbsp;<span class="id" title="keyword">match</span> <a class="idref" href="mathcomp.algebra.ssralg.html#t"><span class="id" title="variable">t</span></a> <span class="id" title="keyword">with</span><br/>
+&nbsp;&nbsp;| <span class="id" title="var">_</span><a class="idref" href="mathcomp.algebra.ssralg.html#8527e8676e2efa838eb3d51e80e2d39f"><span class="id" title="notation">^-1</span></a> ⇒ <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#false"><span class="id" title="constructor">false</span></a><br/>
+&nbsp;&nbsp;| <span class="id" title="var">t1</span> <a class="idref" href="mathcomp.algebra.ssralg.html#7f909243ac0228583a25471d8084551b"><span class="id" title="notation">+</span></a> <span class="id" title="var">t2</span> | <span class="id" title="var">t1</span> <a class="idref" href="mathcomp.algebra.ssralg.html#0b9ef6879d691a4408b07cd59dbb28f0"><span class="id" title="notation">×</span></a> <span class="id" title="var">t2</span> ⇒ <a class="idref" href="mathcomp.algebra.ssralg.html#rterm"><span class="id" title="definition">rterm</span></a> <span class="id" title="var">t1</span> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#49ac24efa716d8b0ee8943bc1d1769a9"><span class="id" title="notation">&amp;&amp;</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#rterm"><span class="id" title="definition">rterm</span></a> <span class="id" title="var">t2</span><br/>
+&nbsp;&nbsp;| <a class="idref" href="mathcomp.algebra.ssralg.html#6c3b3e259d3f407cc03b5863f5d872ec"><span class="id" title="notation">-</span></a> <span class="id" title="var">t1</span> | <span class="id" title="var">t1</span> <a class="idref" href="mathcomp.algebra.ssralg.html#bb8dcb8add43cd5b4672890afb1d1839"><span class="id" title="notation">*+</span></a> <span class="id" title="var">_</span> | <span class="id" title="var">t1</span> <a class="idref" href="mathcomp.algebra.ssralg.html#076e0496ae7ecaf146a6c132bdca5782"><span class="id" title="notation">^+</span></a> <span class="id" title="var">_</span> ⇒ <a class="idref" href="mathcomp.algebra.ssralg.html#rterm"><span class="id" title="definition">rterm</span></a> <span class="id" title="var">t1</span><br/>
+&nbsp;&nbsp;| <span class="id" title="var">_</span> ⇒ <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#true"><span class="id" title="constructor">true</span></a><br/>
+&nbsp;&nbsp;<span class="id" title="keyword">end</span>%<span class="id" title="var">T</span>.<br/>
+
+<br/>
+</div>
+
+<div class="doc">
+ Boolean test selecting formulas in the theory of rings
+</div>
+<div class="code">
+<span class="id" title="keyword">Fixpoint</span> <a name="GRing.rformula"><span class="id" title="definition">rformula</span></a> (<span class="id" title="var">f</span> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.formula"><span class="id" title="inductive">formula</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.EvalTerm.R"><span class="id" title="variable">R</span></a>) :=<br/>
+&nbsp;&nbsp;<span class="id" title="keyword">match</span> <a class="idref" href="mathcomp.algebra.ssralg.html#f"><span class="id" title="variable">f</span></a> <span class="id" title="keyword">with</span><br/>
+&nbsp;&nbsp;| <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Bool"><span class="id" title="constructor">Bool</span></a> <span class="id" title="var">_</span> ⇒ <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#true"><span class="id" title="constructor">true</span></a><br/>
+&nbsp;&nbsp;| <span class="id" title="var">t1</span> <a class="idref" href="mathcomp.algebra.ssralg.html#1a6fbc7f80506595657605bb77bac252"><span class="id" title="notation">==</span></a> <span class="id" title="var">t2</span> ⇒ <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.rterm"><span class="id" title="definition">rterm</span></a> <span class="id" title="var">t1</span> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#49ac24efa716d8b0ee8943bc1d1769a9"><span class="id" title="notation">&amp;&amp;</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.rterm"><span class="id" title="definition">rterm</span></a> <span class="id" title="var">t2</span><br/>
+&nbsp;&nbsp;| <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Unit"><span class="id" title="constructor">Unit</span></a> <span class="id" title="var">t1</span> ⇒ <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#false"><span class="id" title="constructor">false</span></a><br/>
+&nbsp;&nbsp;| <span class="id" title="var">f1</span> <a class="idref" href="mathcomp.algebra.ssralg.html#421c9c3c51833f1724975feaafb4b744"><span class="id" title="notation">∧</span></a> <span class="id" title="var">f2</span> | <span class="id" title="var">f1</span> <a class="idref" href="mathcomp.algebra.ssralg.html#00b8327e04e2b6f2d979016edbc0c67a"><span class="id" title="notation">∨</span></a> <span class="id" title="var">f2</span> | <span class="id" title="var">f1</span> <a class="idref" href="mathcomp.algebra.ssralg.html#0686cd1bb1af98b02865ebbedcf70bd7"><span class="id" title="notation">==&gt;</span></a> <span class="id" title="var">f2</span> ⇒ <a class="idref" href="mathcomp.algebra.ssralg.html#rformula"><span class="id" title="definition">rformula</span></a> <span class="id" title="var">f1</span> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#49ac24efa716d8b0ee8943bc1d1769a9"><span class="id" title="notation">&amp;&amp;</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#rformula"><span class="id" title="definition">rformula</span></a> <span class="id" title="var">f2</span><br/>
+&nbsp;&nbsp;| <a class="idref" href="mathcomp.algebra.ssralg.html#bf1935aa3f28dfd45301897795b397a5"><span class="id" title="notation">¬</span></a> <span class="id" title="var">f1</span> | (<a class="idref" href="mathcomp.algebra.ssralg.html#cde0c417a2306d50158e89540db8c60d"><span class="id" title="notation">'</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#cde0c417a2306d50158e89540db8c60d"><span class="id" title="notation">∃</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#cde0c417a2306d50158e89540db8c60d"><span class="id" title="notation">'</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#cde0c417a2306d50158e89540db8c60d"><span class="id" title="notation">X__</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#cde0c417a2306d50158e89540db8c60d"><span class="id" title="notation">,</span></a> <span class="id" title="var">f1</span>) | (<a class="idref" href="mathcomp.algebra.ssralg.html#bc08eb662d28e6715d9720beafd75750"><span class="id" title="notation">'</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#bc08eb662d28e6715d9720beafd75750"><span class="id" title="notation">∀</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#bc08eb662d28e6715d9720beafd75750"><span class="id" title="notation">'</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#bc08eb662d28e6715d9720beafd75750"><span class="id" title="notation">X__</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#bc08eb662d28e6715d9720beafd75750"><span class="id" title="notation">,</span></a> <span class="id" title="var">f1</span>) ⇒ <a class="idref" href="mathcomp.algebra.ssralg.html#rformula"><span class="id" title="definition">rformula</span></a> <span class="id" title="var">f1</span><br/>
+&nbsp;&nbsp;<span class="id" title="keyword">end</span>%<span class="id" title="var">T</span>.<br/>
+
+<br/>
+</div>
+
+<div class="doc">
+ Upper bound of the names used in a term
+</div>
+<div class="code">
+<span class="id" title="keyword">Fixpoint</span> <a name="GRing.ub_var"><span class="id" title="definition">ub_var</span></a> (<span class="id" title="var">t</span> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.term"><span class="id" title="inductive">term</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.EvalTerm.R"><span class="id" title="variable">R</span></a>) :=<br/>
+&nbsp;&nbsp;<span class="id" title="keyword">match</span> <a class="idref" href="mathcomp.algebra.ssralg.html#t"><span class="id" title="variable">t</span></a> <span class="id" title="keyword">with</span><br/>
+&nbsp;&nbsp;| <a class="idref" href="mathcomp.algebra.ssralg.html#bb8753f66ae3a3b4b3bd3423d5bd7db1"><span class="id" title="notation">'</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#bb8753f66ae3a3b4b3bd3423d5bd7db1"><span class="id" title="notation">X_i</span></a> ⇒ <span class="id" title="var">i</span><a class="idref" href="mathcomp.ssreflect.ssrnat.html#361454269931ea8643f7b402f2ab7222"><span class="id" title="notation">.+1</span></a><br/>
+&nbsp;&nbsp;| <span class="id" title="var">t1</span> <a class="idref" href="mathcomp.algebra.ssralg.html#7f909243ac0228583a25471d8084551b"><span class="id" title="notation">+</span></a> <span class="id" title="var">t2</span> | <span class="id" title="var">t1</span> <a class="idref" href="mathcomp.algebra.ssralg.html#0b9ef6879d691a4408b07cd59dbb28f0"><span class="id" title="notation">×</span></a> <span class="id" title="var">t2</span> ⇒ <a class="idref" href="mathcomp.ssreflect.ssrnat.html#maxn"><span class="id" title="definition">maxn</span></a> (<a class="idref" href="mathcomp.algebra.ssralg.html#ub_var"><span class="id" title="definition">ub_var</span></a> <span class="id" title="var">t1</span>) (<a class="idref" href="mathcomp.algebra.ssralg.html#ub_var"><span class="id" title="definition">ub_var</span></a> <span class="id" title="var">t2</span>)<br/>
+&nbsp;&nbsp;| <a class="idref" href="mathcomp.algebra.ssralg.html#6c3b3e259d3f407cc03b5863f5d872ec"><span class="id" title="notation">-</span></a> <span class="id" title="var">t1</span> | <span class="id" title="var">t1</span> <a class="idref" href="mathcomp.algebra.ssralg.html#bb8dcb8add43cd5b4672890afb1d1839"><span class="id" title="notation">*+</span></a> <span class="id" title="var">_</span> | <span class="id" title="var">t1</span> <a class="idref" href="mathcomp.algebra.ssralg.html#076e0496ae7ecaf146a6c132bdca5782"><span class="id" title="notation">^+</span></a> <span class="id" title="var">_</span> | <span class="id" title="var">t1</span><a class="idref" href="mathcomp.algebra.ssralg.html#8527e8676e2efa838eb3d51e80e2d39f"><span class="id" title="notation">^-1</span></a> ⇒ <a class="idref" href="mathcomp.algebra.ssralg.html#ub_var"><span class="id" title="definition">ub_var</span></a> <span class="id" title="var">t1</span><br/>
+&nbsp;&nbsp;| <span class="id" title="var">_</span> ⇒ 0%<span class="id" title="var">N</span><br/>
+&nbsp;&nbsp;<span class="id" title="keyword">end</span>%<span class="id" title="var">T</span>.<br/>
+
+<br/>
+</div>
+
+<div class="doc">
+ Replaces inverses in the term t by fresh variables, accumulating the
+ substitution.
+</div>
+<div class="code">
+<span class="id" title="keyword">Fixpoint</span> <a name="GRing.to_rterm"><span class="id" title="definition">to_rterm</span></a> (<span class="id" title="var">t</span> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.term"><span class="id" title="inductive">term</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.EvalTerm.R"><span class="id" title="variable">R</span></a>) (<span class="id" title="var">r</span> : <a class="idref" href="mathcomp.ssreflect.seq.html#seq"><span class="id" title="abbreviation">seq</span></a> (<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.term"><span class="id" title="inductive">term</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.EvalTerm.R"><span class="id" title="variable">R</span></a>)) (<span class="id" title="var">n</span> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#nat"><span class="id" title="inductive">nat</span></a>) {<span class="id" title="keyword">struct</span> <span class="id" title="var">t</span>} :=<br/>
+&nbsp;&nbsp;<span class="id" title="keyword">match</span> <a class="idref" href="mathcomp.algebra.ssralg.html#t"><span class="id" title="variable">t</span></a> <span class="id" title="keyword">with</span><br/>
+&nbsp;&nbsp;| <span class="id" title="var">t1</span><a class="idref" href="mathcomp.algebra.ssralg.html#8527e8676e2efa838eb3d51e80e2d39f"><span class="id" title="notation">^-1</span></a> ⇒<br/>
+&nbsp;&nbsp;&nbsp;&nbsp;<span class="id" title="keyword">let</span>: <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#44400027531d4bc3f586a1997dc874c0"><span class="id" title="notation">(</span></a><span class="id" title="var">t1'</span><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#44400027531d4bc3f586a1997dc874c0"><span class="id" title="notation">,</span></a> <span class="id" title="var">r1</span><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#44400027531d4bc3f586a1997dc874c0"><span class="id" title="notation">)</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#to_rterm"><span class="id" title="definition">to_rterm</span></a> <span class="id" title="var">t1</span> <a class="idref" href="mathcomp.algebra.ssralg.html#r"><span class="id" title="variable">r</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#n"><span class="id" title="variable">n</span></a> <span class="id" title="tactic">in</span><br/>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#44400027531d4bc3f586a1997dc874c0"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#bb8753f66ae3a3b4b3bd3423d5bd7db1"><span class="id" title="notation">'</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#bb8753f66ae3a3b4b3bd3423d5bd7db1"><span class="id" title="notation">X_</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#bb8753f66ae3a3b4b3bd3423d5bd7db1"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#n"><span class="id" title="variable">n</span></a> <a class="idref" href="mathcomp.ssreflect.ssrnat.html#b3eea360671e1b32b18a26e15b3aace3"><span class="id" title="notation">+</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#size"><span class="id" title="definition">size</span></a> <span class="id" title="var">r1</span><a class="idref" href="mathcomp.algebra.ssralg.html#bb8753f66ae3a3b4b3bd3423d5bd7db1"><span class="id" title="notation">)</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#44400027531d4bc3f586a1997dc874c0"><span class="id" title="notation">,</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#rcons"><span class="id" title="definition">rcons</span></a> <span class="id" title="var">r1</span> <span class="id" title="var">t1'</span><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#44400027531d4bc3f586a1997dc874c0"><span class="id" title="notation">)</span></a><br/>
+&nbsp;&nbsp;| <span class="id" title="var">t1</span> <a class="idref" href="mathcomp.algebra.ssralg.html#7f909243ac0228583a25471d8084551b"><span class="id" title="notation">+</span></a> <span class="id" title="var">t2</span> ⇒<br/>
+&nbsp;&nbsp;&nbsp;&nbsp;<span class="id" title="keyword">let</span>: <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#44400027531d4bc3f586a1997dc874c0"><span class="id" title="notation">(</span></a><span class="id" title="var">t1'</span><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#44400027531d4bc3f586a1997dc874c0"><span class="id" title="notation">,</span></a> <span class="id" title="var">r1</span><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#44400027531d4bc3f586a1997dc874c0"><span class="id" title="notation">)</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#to_rterm"><span class="id" title="definition">to_rterm</span></a> <span class="id" title="var">t1</span> <a class="idref" href="mathcomp.algebra.ssralg.html#r"><span class="id" title="variable">r</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#n"><span class="id" title="variable">n</span></a> <span class="id" title="tactic">in</span><br/>
+&nbsp;&nbsp;&nbsp;&nbsp;<span class="id" title="keyword">let</span>: <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#44400027531d4bc3f586a1997dc874c0"><span class="id" title="notation">(</span></a><span class="id" title="var">t2'</span><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#44400027531d4bc3f586a1997dc874c0"><span class="id" title="notation">,</span></a> <span class="id" title="var">r2</span><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#44400027531d4bc3f586a1997dc874c0"><span class="id" title="notation">)</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#to_rterm"><span class="id" title="definition">to_rterm</span></a> <span class="id" title="var">t2</span> <span class="id" title="var">r1</span> <a class="idref" href="mathcomp.algebra.ssralg.html#n"><span class="id" title="variable">n</span></a> <span class="id" title="tactic">in</span><br/>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#44400027531d4bc3f586a1997dc874c0"><span class="id" title="notation">(</span></a><span class="id" title="var">t1'</span> <a class="idref" href="mathcomp.algebra.ssralg.html#7f909243ac0228583a25471d8084551b"><span class="id" title="notation">+</span></a> <span class="id" title="var">t2'</span><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#44400027531d4bc3f586a1997dc874c0"><span class="id" title="notation">,</span></a> <span class="id" title="var">r2</span><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#44400027531d4bc3f586a1997dc874c0"><span class="id" title="notation">)</span></a><br/>
+&nbsp;&nbsp;| <a class="idref" href="mathcomp.algebra.ssralg.html#6c3b3e259d3f407cc03b5863f5d872ec"><span class="id" title="notation">-</span></a> <span class="id" title="var">t1</span> ⇒<br/>
+&nbsp;&nbsp;&nbsp;<span class="id" title="keyword">let</span>: <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#44400027531d4bc3f586a1997dc874c0"><span class="id" title="notation">(</span></a><span class="id" title="var">t1'</span><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#44400027531d4bc3f586a1997dc874c0"><span class="id" title="notation">,</span></a> <span class="id" title="var">r1</span><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#44400027531d4bc3f586a1997dc874c0"><span class="id" title="notation">)</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#to_rterm"><span class="id" title="definition">to_rterm</span></a> <span class="id" title="var">t1</span> <a class="idref" href="mathcomp.algebra.ssralg.html#r"><span class="id" title="variable">r</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#n"><span class="id" title="variable">n</span></a> <span class="id" title="tactic">in</span><br/>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#44400027531d4bc3f586a1997dc874c0"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#6c3b3e259d3f407cc03b5863f5d872ec"><span class="id" title="notation">-</span></a> <span class="id" title="var">t1'</span><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#44400027531d4bc3f586a1997dc874c0"><span class="id" title="notation">,</span></a> <span class="id" title="var">r1</span><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#44400027531d4bc3f586a1997dc874c0"><span class="id" title="notation">)</span></a><br/>
+&nbsp;&nbsp;| <span class="id" title="var">t1</span> <a class="idref" href="mathcomp.algebra.ssralg.html#bb8dcb8add43cd5b4672890afb1d1839"><span class="id" title="notation">*+</span></a> <span class="id" title="var">m</span> ⇒<br/>
+&nbsp;&nbsp;&nbsp;<span class="id" title="keyword">let</span>: <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#44400027531d4bc3f586a1997dc874c0"><span class="id" title="notation">(</span></a><span class="id" title="var">t1'</span><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#44400027531d4bc3f586a1997dc874c0"><span class="id" title="notation">,</span></a> <span class="id" title="var">r1</span><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#44400027531d4bc3f586a1997dc874c0"><span class="id" title="notation">)</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#to_rterm"><span class="id" title="definition">to_rterm</span></a> <span class="id" title="var">t1</span> <a class="idref" href="mathcomp.algebra.ssralg.html#r"><span class="id" title="variable">r</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#n"><span class="id" title="variable">n</span></a> <span class="id" title="tactic">in</span><br/>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#44400027531d4bc3f586a1997dc874c0"><span class="id" title="notation">(</span></a><span class="id" title="var">t1'</span> <a class="idref" href="mathcomp.algebra.ssralg.html#bb8dcb8add43cd5b4672890afb1d1839"><span class="id" title="notation">*+</span></a> <span class="id" title="var">m</span><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#44400027531d4bc3f586a1997dc874c0"><span class="id" title="notation">,</span></a> <span class="id" title="var">r1</span><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#44400027531d4bc3f586a1997dc874c0"><span class="id" title="notation">)</span></a><br/>
+&nbsp;&nbsp;| <span class="id" title="var">t1</span> <a class="idref" href="mathcomp.algebra.ssralg.html#0b9ef6879d691a4408b07cd59dbb28f0"><span class="id" title="notation">×</span></a> <span class="id" title="var">t2</span> ⇒<br/>
+&nbsp;&nbsp;&nbsp;&nbsp;<span class="id" title="keyword">let</span>: <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#44400027531d4bc3f586a1997dc874c0"><span class="id" title="notation">(</span></a><span class="id" title="var">t1'</span><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#44400027531d4bc3f586a1997dc874c0"><span class="id" title="notation">,</span></a> <span class="id" title="var">r1</span><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#44400027531d4bc3f586a1997dc874c0"><span class="id" title="notation">)</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#to_rterm"><span class="id" title="definition">to_rterm</span></a> <span class="id" title="var">t1</span> <a class="idref" href="mathcomp.algebra.ssralg.html#r"><span class="id" title="variable">r</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#n"><span class="id" title="variable">n</span></a> <span class="id" title="tactic">in</span><br/>
+&nbsp;&nbsp;&nbsp;&nbsp;<span class="id" title="keyword">let</span>: <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#44400027531d4bc3f586a1997dc874c0"><span class="id" title="notation">(</span></a><span class="id" title="var">t2'</span><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#44400027531d4bc3f586a1997dc874c0"><span class="id" title="notation">,</span></a> <span class="id" title="var">r2</span><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#44400027531d4bc3f586a1997dc874c0"><span class="id" title="notation">)</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#to_rterm"><span class="id" title="definition">to_rterm</span></a> <span class="id" title="var">t2</span> <span class="id" title="var">r1</span> <a class="idref" href="mathcomp.algebra.ssralg.html#n"><span class="id" title="variable">n</span></a> <span class="id" title="tactic">in</span><br/>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#44400027531d4bc3f586a1997dc874c0"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Mul"><span class="id" title="constructor">Mul</span></a> <span class="id" title="var">t1'</span> <span class="id" title="var">t2'</span><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#44400027531d4bc3f586a1997dc874c0"><span class="id" title="notation">,</span></a> <span class="id" title="var">r2</span><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#44400027531d4bc3f586a1997dc874c0"><span class="id" title="notation">)</span></a><br/>
+&nbsp;&nbsp;| <span class="id" title="var">t1</span> <a class="idref" href="mathcomp.algebra.ssralg.html#076e0496ae7ecaf146a6c132bdca5782"><span class="id" title="notation">^+</span></a> <span class="id" title="var">m</span> ⇒<br/>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="id" title="keyword">let</span>: <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#44400027531d4bc3f586a1997dc874c0"><span class="id" title="notation">(</span></a><span class="id" title="var">t1'</span><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#44400027531d4bc3f586a1997dc874c0"><span class="id" title="notation">,</span></a> <span class="id" title="var">r1</span><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#44400027531d4bc3f586a1997dc874c0"><span class="id" title="notation">)</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#to_rterm"><span class="id" title="definition">to_rterm</span></a> <span class="id" title="var">t1</span> <a class="idref" href="mathcomp.algebra.ssralg.html#r"><span class="id" title="variable">r</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#n"><span class="id" title="variable">n</span></a> <span class="id" title="tactic">in</span><br/>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#44400027531d4bc3f586a1997dc874c0"><span class="id" title="notation">(</span></a><span class="id" title="var">t1'</span> <a class="idref" href="mathcomp.algebra.ssralg.html#076e0496ae7ecaf146a6c132bdca5782"><span class="id" title="notation">^+</span></a> <span class="id" title="var">m</span><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#44400027531d4bc3f586a1997dc874c0"><span class="id" title="notation">,</span></a> <span class="id" title="var">r1</span><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#44400027531d4bc3f586a1997dc874c0"><span class="id" title="notation">)</span></a><br/>
+&nbsp;&nbsp;| <span class="id" title="var">_</span> ⇒ <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#44400027531d4bc3f586a1997dc874c0"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#t"><span class="id" title="variable">t</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#44400027531d4bc3f586a1997dc874c0"><span class="id" title="notation">,</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#r"><span class="id" title="variable">r</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#44400027531d4bc3f586a1997dc874c0"><span class="id" title="notation">)</span></a><br/>
+&nbsp;&nbsp;<span class="id" title="keyword">end</span>%<span class="id" title="var">T</span>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.to_rterm_id"><span class="id" title="lemma">to_rterm_id</span></a> <span class="id" title="var">t</span> <span class="id" title="var">r</span> <span class="id" title="var">n</span> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.rterm"><span class="id" title="definition">rterm</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#t"><span class="id" title="variable">t</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.to_rterm"><span class="id" title="definition">to_rterm</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#t"><span class="id" title="variable">t</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#r"><span class="id" title="variable">r</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#n"><span class="id" title="variable">n</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#44400027531d4bc3f586a1997dc874c0"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#t"><span class="id" title="variable">t</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#44400027531d4bc3f586a1997dc874c0"><span class="id" title="notation">,</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#r"><span class="id" title="variable">r</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#44400027531d4bc3f586a1997dc874c0"><span class="id" title="notation">)</span></a>.<br/>
+
+<br/>
+</div>
+
+<div class="doc">
+ A ring formula stating that t1 is equal to 0 in the ring theory.
+ Also applies to non commutative rings.
+</div>
+<div class="code">
+<span class="id" title="keyword">Definition</span> <a name="GRing.eq0_rform"><span class="id" title="definition">eq0_rform</span></a> <span class="id" title="var">t1</span> :=<br/>
+&nbsp;&nbsp;<span class="id" title="keyword">let</span> <span class="id" title="var">m</span> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ub_var"><span class="id" title="definition">ub_var</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#t1"><span class="id" title="variable">t1</span></a> <span class="id" title="tactic">in</span><br/>
+&nbsp;&nbsp;<span class="id" title="keyword">let</span>: <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#44400027531d4bc3f586a1997dc874c0"><span class="id" title="notation">(</span></a><span class="id" title="var">t1'</span><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#44400027531d4bc3f586a1997dc874c0"><span class="id" title="notation">,</span></a> <span class="id" title="var">r1</span><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#44400027531d4bc3f586a1997dc874c0"><span class="id" title="notation">)</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.to_rterm"><span class="id" title="definition">to_rterm</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#t1"><span class="id" title="variable">t1</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#747e2b5d553b2dfe76e024e1f8fb39d1"><span class="id" title="notation">[::]</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#m"><span class="id" title="variable">m</span></a> <span class="id" title="tactic">in</span><br/>
+&nbsp;&nbsp;<span class="id" title="keyword">let</span> <span class="id" title="keyword">fix</span> <span class="id" title="var">loop</span> <span class="id" title="var">r</span> <span class="id" title="var">i</span> := <span class="id" title="keyword">match</span> <a class="idref" href="mathcomp.algebra.ssralg.html#r"><span class="id" title="variable">r</span></a> <span class="id" title="keyword">with</span><br/>
+&nbsp;&nbsp;| <a class="idref" href="mathcomp.ssreflect.seq.html#747e2b5d553b2dfe76e024e1f8fb39d1"><span class="id" title="notation">[::]</span></a> ⇒ <span class="id" title="var">t1'</span> <a class="idref" href="mathcomp.algebra.ssralg.html#1a6fbc7f80506595657605bb77bac252"><span class="id" title="notation">==</span></a> 0<br/>
+&nbsp;&nbsp;| <span class="id" title="var">t</span> <a class="idref" href="mathcomp.ssreflect.seq.html#d7fed0909a58e41c49e3ee117361b0a5"><span class="id" title="notation">::</span></a> <span class="id" title="var">r'</span> ⇒<br/>
+&nbsp;&nbsp;&nbsp;&nbsp;<span class="id" title="keyword">let</span> <span class="id" title="var">f</span> := <a class="idref" href="mathcomp.algebra.ssralg.html#bb8753f66ae3a3b4b3bd3423d5bd7db1"><span class="id" title="notation">'</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#bb8753f66ae3a3b4b3bd3423d5bd7db1"><span class="id" title="notation">X_i</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#0b9ef6879d691a4408b07cd59dbb28f0"><span class="id" title="notation">×</span></a> <span class="id" title="var">t</span> <a class="idref" href="mathcomp.algebra.ssralg.html#1a6fbc7f80506595657605bb77bac252"><span class="id" title="notation">==</span></a> 1 <a class="idref" href="mathcomp.algebra.ssralg.html#421c9c3c51833f1724975feaafb4b744"><span class="id" title="notation">∧</span></a> <span class="id" title="var">t</span> <a class="idref" href="mathcomp.algebra.ssralg.html#0b9ef6879d691a4408b07cd59dbb28f0"><span class="id" title="notation">×</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#bb8753f66ae3a3b4b3bd3423d5bd7db1"><span class="id" title="notation">'</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#bb8753f66ae3a3b4b3bd3423d5bd7db1"><span class="id" title="notation">X_i</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#1a6fbc7f80506595657605bb77bac252"><span class="id" title="notation">==</span></a> 1 <span class="id" title="tactic">in</span><br/>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a class="idref" href="mathcomp.algebra.ssralg.html#bc08eb662d28e6715d9720beafd75750"><span class="id" title="notation">'</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#bc08eb662d28e6715d9720beafd75750"><span class="id" title="notation">∀</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#bc08eb662d28e6715d9720beafd75750"><span class="id" title="notation">'</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#bc08eb662d28e6715d9720beafd75750"><span class="id" title="notation">X_i</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#bc08eb662d28e6715d9720beafd75750"><span class="id" title="notation">,</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#0686cd1bb1af98b02865ebbedcf70bd7"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#f"><span class="id" title="variable">f</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#00b8327e04e2b6f2d979016edbc0c67a"><span class="id" title="notation">∨</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#bb8753f66ae3a3b4b3bd3423d5bd7db1"><span class="id" title="notation">'</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#bb8753f66ae3a3b4b3bd3423d5bd7db1"><span class="id" title="notation">X_i</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#1a6fbc7f80506595657605bb77bac252"><span class="id" title="notation">==</span></a> <span class="id" title="var">t</span> <a class="idref" href="mathcomp.algebra.ssralg.html#421c9c3c51833f1724975feaafb4b744"><span class="id" title="notation">∧</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#bf1935aa3f28dfd45301897795b397a5"><span class="id" title="notation">¬</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#bf1935aa3f28dfd45301897795b397a5"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#cde0c417a2306d50158e89540db8c60d"><span class="id" title="notation">'</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#cde0c417a2306d50158e89540db8c60d"><span class="id" title="notation">∃</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#cde0c417a2306d50158e89540db8c60d"><span class="id" title="notation">'</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#cde0c417a2306d50158e89540db8c60d"><span class="id" title="notation">X_i</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#cde0c417a2306d50158e89540db8c60d"><span class="id" title="notation">,</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#f"><span class="id" title="variable">f</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#bf1935aa3f28dfd45301897795b397a5"><span class="id" title="notation">)</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#0686cd1bb1af98b02865ebbedcf70bd7"><span class="id" title="notation">)</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#0686cd1bb1af98b02865ebbedcf70bd7"><span class="id" title="notation">==&gt;</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#loop"><span class="id" title="variable">loop</span></a> <span class="id" title="var">r'</span> <a class="idref" href="mathcomp.algebra.ssralg.html#i"><span class="id" title="variable">i</span></a><a class="idref" href="mathcomp.ssreflect.ssrnat.html#361454269931ea8643f7b402f2ab7222"><span class="id" title="notation">.+1</span></a><br/>
+&nbsp;&nbsp;<span class="id" title="keyword">end</span>%<span class="id" title="var">T</span><br/>
+&nbsp;&nbsp;<span class="id" title="tactic">in</span> <a class="idref" href="mathcomp.algebra.ssralg.html#loop"><span class="id" title="variable">loop</span></a> <span class="id" title="var">r1</span> <a class="idref" href="mathcomp.algebra.ssralg.html#m"><span class="id" title="variable">m</span></a>.<br/>
+
+<br/>
+</div>
+
+<div class="doc">
+ Transformation of a formula in the theory of rings with units into an
+ equivalent formula in the sub-theory of rings.
+</div>
+<div class="code">
+<span class="id" title="keyword">Fixpoint</span> <a name="GRing.to_rform"><span class="id" title="definition">to_rform</span></a> <span class="id" title="var">f</span> :=<br/>
+&nbsp;&nbsp;<span class="id" title="keyword">match</span> <a class="idref" href="mathcomp.algebra.ssralg.html#f"><span class="id" title="variable">f</span></a> <span class="id" title="keyword">with</span><br/>
+&nbsp;&nbsp;| <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Bool"><span class="id" title="constructor">Bool</span></a> <span class="id" title="var">b</span> ⇒ <a class="idref" href="mathcomp.algebra.ssralg.html#f"><span class="id" title="variable">f</span></a><br/>
+&nbsp;&nbsp;| <span class="id" title="var">t1</span> <a class="idref" href="mathcomp.algebra.ssralg.html#1a6fbc7f80506595657605bb77bac252"><span class="id" title="notation">==</span></a> <span class="id" title="var">t2</span> ⇒ <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.eq0_rform"><span class="id" title="definition">eq0_rform</span></a> (<span class="id" title="var">t1</span> <a class="idref" href="mathcomp.algebra.ssralg.html#18e2ce36b5b2614b64eb5d1e85d95826"><span class="id" title="notation">-</span></a> <span class="id" title="var">t2</span>)<br/>
+&nbsp;&nbsp;| <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Unit"><span class="id" title="constructor">Unit</span></a> <span class="id" title="var">t1</span> ⇒ <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.eq0_rform"><span class="id" title="definition">eq0_rform</span></a> (<span class="id" title="var">t1</span> <a class="idref" href="mathcomp.algebra.ssralg.html#0b9ef6879d691a4408b07cd59dbb28f0"><span class="id" title="notation">×</span></a> <span class="id" title="var">t1</span><a class="idref" href="mathcomp.algebra.ssralg.html#8527e8676e2efa838eb3d51e80e2d39f"><span class="id" title="notation">^-1</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#18e2ce36b5b2614b64eb5d1e85d95826"><span class="id" title="notation">-</span></a> 1)<br/>
+&nbsp;&nbsp;| <span class="id" title="var">f1</span> <a class="idref" href="mathcomp.algebra.ssralg.html#421c9c3c51833f1724975feaafb4b744"><span class="id" title="notation">∧</span></a> <span class="id" title="var">f2</span> ⇒ <a class="idref" href="mathcomp.algebra.ssralg.html#to_rform"><span class="id" title="definition">to_rform</span></a> <span class="id" title="var">f1</span> <a class="idref" href="mathcomp.algebra.ssralg.html#421c9c3c51833f1724975feaafb4b744"><span class="id" title="notation">∧</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#to_rform"><span class="id" title="definition">to_rform</span></a> <span class="id" title="var">f2</span><br/>
+&nbsp;&nbsp;| <span class="id" title="var">f1</span> <a class="idref" href="mathcomp.algebra.ssralg.html#00b8327e04e2b6f2d979016edbc0c67a"><span class="id" title="notation">∨</span></a> <span class="id" title="var">f2</span> ⇒ <a class="idref" href="mathcomp.algebra.ssralg.html#to_rform"><span class="id" title="definition">to_rform</span></a> <span class="id" title="var">f1</span> <a class="idref" href="mathcomp.algebra.ssralg.html#00b8327e04e2b6f2d979016edbc0c67a"><span class="id" title="notation">∨</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#to_rform"><span class="id" title="definition">to_rform</span></a> <span class="id" title="var">f2</span><br/>
+&nbsp;&nbsp;| <span class="id" title="var">f1</span> <a class="idref" href="mathcomp.algebra.ssralg.html#0686cd1bb1af98b02865ebbedcf70bd7"><span class="id" title="notation">==&gt;</span></a> <span class="id" title="var">f2</span> ⇒ <a class="idref" href="mathcomp.algebra.ssralg.html#to_rform"><span class="id" title="definition">to_rform</span></a> <span class="id" title="var">f1</span> <a class="idref" href="mathcomp.algebra.ssralg.html#0686cd1bb1af98b02865ebbedcf70bd7"><span class="id" title="notation">==&gt;</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#to_rform"><span class="id" title="definition">to_rform</span></a> <span class="id" title="var">f2</span><br/>
+&nbsp;&nbsp;| <a class="idref" href="mathcomp.algebra.ssralg.html#bf1935aa3f28dfd45301897795b397a5"><span class="id" title="notation">¬</span></a> <span class="id" title="var">f1</span> ⇒ <a class="idref" href="mathcomp.algebra.ssralg.html#bf1935aa3f28dfd45301897795b397a5"><span class="id" title="notation">¬</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#to_rform"><span class="id" title="definition">to_rform</span></a> <span class="id" title="var">f1</span><br/>
+&nbsp;&nbsp;| (<a class="idref" href="mathcomp.algebra.ssralg.html#cde0c417a2306d50158e89540db8c60d"><span class="id" title="notation">'</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#cde0c417a2306d50158e89540db8c60d"><span class="id" title="notation">∃</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#cde0c417a2306d50158e89540db8c60d"><span class="id" title="notation">'</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#cde0c417a2306d50158e89540db8c60d"><span class="id" title="notation">X_i</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#cde0c417a2306d50158e89540db8c60d"><span class="id" title="notation">,</span></a> <span class="id" title="var">f1</span>) ⇒ <a class="idref" href="mathcomp.algebra.ssralg.html#cde0c417a2306d50158e89540db8c60d"><span class="id" title="notation">'</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#cde0c417a2306d50158e89540db8c60d"><span class="id" title="notation">∃</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#cde0c417a2306d50158e89540db8c60d"><span class="id" title="notation">'</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#cde0c417a2306d50158e89540db8c60d"><span class="id" title="notation">X_i</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#cde0c417a2306d50158e89540db8c60d"><span class="id" title="notation">,</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#to_rform"><span class="id" title="definition">to_rform</span></a> <span class="id" title="var">f1</span><br/>
+&nbsp;&nbsp;| (<a class="idref" href="mathcomp.algebra.ssralg.html#bc08eb662d28e6715d9720beafd75750"><span class="id" title="notation">'</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#bc08eb662d28e6715d9720beafd75750"><span class="id" title="notation">∀</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#bc08eb662d28e6715d9720beafd75750"><span class="id" title="notation">'</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#bc08eb662d28e6715d9720beafd75750"><span class="id" title="notation">X_i</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#bc08eb662d28e6715d9720beafd75750"><span class="id" title="notation">,</span></a> <span class="id" title="var">f1</span>) ⇒ <a class="idref" href="mathcomp.algebra.ssralg.html#bc08eb662d28e6715d9720beafd75750"><span class="id" title="notation">'</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#bc08eb662d28e6715d9720beafd75750"><span class="id" title="notation">∀</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#bc08eb662d28e6715d9720beafd75750"><span class="id" title="notation">'</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#bc08eb662d28e6715d9720beafd75750"><span class="id" title="notation">X_i</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#bc08eb662d28e6715d9720beafd75750"><span class="id" title="notation">,</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#to_rform"><span class="id" title="definition">to_rform</span></a> <span class="id" title="var">f1</span><br/>
+&nbsp;&nbsp;<span class="id" title="keyword">end</span>%<span class="id" title="var">T</span>.<br/>
+
+<br/>
+</div>
+
+<div class="doc">
+ The transformation gives a ring formula.
+</div>
+<div class="code">
+<span class="id" title="keyword">Lemma</span> <a name="GRing.to_rform_rformula"><span class="id" title="lemma">to_rform_rformula</span></a> <span class="id" title="var">f</span> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.rformula"><span class="id" title="definition">rformula</span></a> (<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.to_rform"><span class="id" title="definition">to_rform</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#f"><span class="id" title="variable">f</span></a>).<br/>
+
+<br/>
+</div>
+
+<div class="doc">
+ Correctness of the transformation.
+</div>
+<div class="code">
+<span class="id" title="keyword">Lemma</span> <a name="GRing.to_rformP"><span class="id" title="lemma">to_rformP</span></a> <span class="id" title="var">e</span> <span class="id" title="var">f</span> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.holds"><span class="id" title="definition">holds</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#e"><span class="id" title="variable">e</span></a> (<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.to_rform"><span class="id" title="definition">to_rform</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#f"><span class="id" title="variable">f</span></a>) <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#df1ced36fc33ce188051218bca314374"><span class="id" title="notation">↔</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.holds"><span class="id" title="definition">holds</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#e"><span class="id" title="variable">e</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#f"><span class="id" title="variable">f</span></a>.<br/>
+
+<br/>
+</div>
+
+<div class="doc">
+ Boolean test selecting formulas which describe a constructible set,
+ i.e. formulas without quantifiers.
+<div class="paragraph"> </div>
+
+ The quantifier elimination check.
+</div>
+<div class="code">
+<span class="id" title="keyword">Fixpoint</span> <a name="GRing.qf_form"><span class="id" title="definition">qf_form</span></a> (<span class="id" title="var">f</span> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.formula"><span class="id" title="inductive">formula</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.EvalTerm.R"><span class="id" title="variable">R</span></a>) :=<br/>
+&nbsp;&nbsp;<span class="id" title="keyword">match</span> <a class="idref" href="mathcomp.algebra.ssralg.html#f"><span class="id" title="variable">f</span></a> <span class="id" title="keyword">with</span><br/>
+&nbsp;&nbsp;| <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Bool"><span class="id" title="constructor">Bool</span></a> <span class="id" title="var">_</span> | <span class="id" title="var">_</span> <a class="idref" href="mathcomp.algebra.ssralg.html#1a6fbc7f80506595657605bb77bac252"><span class="id" title="notation">==</span></a> <span class="id" title="var">_</span> | <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Unit"><span class="id" title="constructor">Unit</span></a> <span class="id" title="var">_</span> ⇒ <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#true"><span class="id" title="constructor">true</span></a><br/>
+&nbsp;&nbsp;| <span class="id" title="var">f1</span> <a class="idref" href="mathcomp.algebra.ssralg.html#421c9c3c51833f1724975feaafb4b744"><span class="id" title="notation">∧</span></a> <span class="id" title="var">f2</span> | <span class="id" title="var">f1</span> <a class="idref" href="mathcomp.algebra.ssralg.html#00b8327e04e2b6f2d979016edbc0c67a"><span class="id" title="notation">∨</span></a> <span class="id" title="var">f2</span> | <span class="id" title="var">f1</span> <a class="idref" href="mathcomp.algebra.ssralg.html#0686cd1bb1af98b02865ebbedcf70bd7"><span class="id" title="notation">==&gt;</span></a> <span class="id" title="var">f2</span> ⇒ <a class="idref" href="mathcomp.algebra.ssralg.html#qf_form"><span class="id" title="definition">qf_form</span></a> <span class="id" title="var">f1</span> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#49ac24efa716d8b0ee8943bc1d1769a9"><span class="id" title="notation">&amp;&amp;</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#qf_form"><span class="id" title="definition">qf_form</span></a> <span class="id" title="var">f2</span><br/>
+&nbsp;&nbsp;| <a class="idref" href="mathcomp.algebra.ssralg.html#bf1935aa3f28dfd45301897795b397a5"><span class="id" title="notation">¬</span></a> <span class="id" title="var">f1</span> ⇒ <a class="idref" href="mathcomp.algebra.ssralg.html#qf_form"><span class="id" title="definition">qf_form</span></a> <span class="id" title="var">f1</span><br/>
+&nbsp;&nbsp;| <span class="id" title="var">_</span> ⇒ <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#false"><span class="id" title="constructor">false</span></a><br/>
+&nbsp;&nbsp;<span class="id" title="keyword">end</span>%<span class="id" title="var">T</span>.<br/>
+
+<br/>
+</div>
+
+<div class="doc">
+ Boolean holds predicate for quantifier free formulas
+</div>
+<div class="code">
+<span class="id" title="keyword">Definition</span> <a name="GRing.qf_eval"><span class="id" title="definition">qf_eval</span></a> <span class="id" title="var">e</span> := <span class="id" title="keyword">fix</span> <span class="id" title="var">loop</span> (<span class="id" title="var">f</span> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.formula"><span class="id" title="inductive">formula</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.EvalTerm.R"><span class="id" title="variable">R</span></a>) : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#bool"><span class="id" title="inductive">bool</span></a> :=<br/>
+&nbsp;&nbsp;<span class="id" title="keyword">match</span> <a class="idref" href="mathcomp.algebra.ssralg.html#f"><span class="id" title="variable">f</span></a> <span class="id" title="keyword">with</span><br/>
+&nbsp;&nbsp;| <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Bool"><span class="id" title="constructor">Bool</span></a> <span class="id" title="var">b</span> ⇒ <span class="id" title="var">b</span><br/>
+&nbsp;&nbsp;| <span class="id" title="var">t1</span> <a class="idref" href="mathcomp.algebra.ssralg.html#1a6fbc7f80506595657605bb77bac252"><span class="id" title="notation">==</span></a> <span class="id" title="var">t2</span> ⇒ (<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.eval"><span class="id" title="definition">eval</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#e"><span class="id" title="variable">e</span></a> <span class="id" title="var">t1</span> <a class="idref" href="mathcomp.ssreflect.eqtype.html#17d28d004d0863cb022d4ce832ddaaae"><span class="id" title="notation">==</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.eval"><span class="id" title="definition">eval</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#e"><span class="id" title="variable">e</span></a> <span class="id" title="var">t2</span>)%<span class="id" title="var">bool</span><br/>
+&nbsp;&nbsp;| <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Unit"><span class="id" title="constructor">Unit</span></a> <span class="id" title="var">t1</span> ⇒ <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.eval"><span class="id" title="definition">eval</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#e"><span class="id" title="variable">e</span></a> <span class="id" title="var">t1</span> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">\</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">in</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.unit"><span class="id" title="definition">unit</span></a><br/>
+&nbsp;&nbsp;| <span class="id" title="var">f1</span> <a class="idref" href="mathcomp.algebra.ssralg.html#421c9c3c51833f1724975feaafb4b744"><span class="id" title="notation">∧</span></a> <span class="id" title="var">f2</span> ⇒ <a class="idref" href="mathcomp.algebra.ssralg.html#loop"><span class="id" title="variable">loop</span></a> <span class="id" title="var">f1</span> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#49ac24efa716d8b0ee8943bc1d1769a9"><span class="id" title="notation">&amp;&amp;</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#loop"><span class="id" title="variable">loop</span></a> <span class="id" title="var">f2</span><br/>
+&nbsp;&nbsp;| <span class="id" title="var">f1</span> <a class="idref" href="mathcomp.algebra.ssralg.html#00b8327e04e2b6f2d979016edbc0c67a"><span class="id" title="notation">∨</span></a> <span class="id" title="var">f2</span> ⇒ <a class="idref" href="mathcomp.algebra.ssralg.html#loop"><span class="id" title="variable">loop</span></a> <span class="id" title="var">f1</span> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#14a7a9c7dc61f86bfb664d400fabaf8a"><span class="id" title="notation">||</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#loop"><span class="id" title="variable">loop</span></a> <span class="id" title="var">f2</span><br/>
+&nbsp;&nbsp;| <span class="id" title="var">f1</span> <a class="idref" href="mathcomp.algebra.ssralg.html#0686cd1bb1af98b02865ebbedcf70bd7"><span class="id" title="notation">==&gt;</span></a> <span class="id" title="var">f2</span> ⇒ (<a class="idref" href="mathcomp.algebra.ssralg.html#loop"><span class="id" title="variable">loop</span></a> <span class="id" title="var">f1</span> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#3b17cb5f3a16fa64a62421f68786f750"><span class="id" title="notation">==&gt;</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#loop"><span class="id" title="variable">loop</span></a> <span class="id" title="var">f2</span>)%<span class="id" title="var">bool</span><br/>
+&nbsp;&nbsp;| <a class="idref" href="mathcomp.algebra.ssralg.html#bf1935aa3f28dfd45301897795b397a5"><span class="id" title="notation">¬</span></a> <span class="id" title="var">f1</span> ⇒ <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#4b80c70cdb231351c5e129ba61f7f956"><span class="id" title="notation">~~</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#loop"><span class="id" title="variable">loop</span></a> <span class="id" title="var">f1</span><br/>
+&nbsp;&nbsp;|<span class="id" title="var">_</span> ⇒ <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#false"><span class="id" title="constructor">false</span></a><br/>
+&nbsp;&nbsp;<span class="id" title="keyword">end</span>%<span class="id" title="var">T</span>.<br/>
+
+<br/>
+</div>
+
+<div class="doc">
+ qf_eval is equivalent to holds
+</div>
+<div class="code">
+<span class="id" title="keyword">Lemma</span> <a name="GRing.qf_evalP"><span class="id" title="lemma">qf_evalP</span></a> <span class="id" title="var">e</span> <span class="id" title="var">f</span> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.qf_form"><span class="id" title="definition">qf_form</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#f"><span class="id" title="variable">f</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#reflect"><span class="id" title="abbreviation">reflect</span></a> (<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.holds"><span class="id" title="definition">holds</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#e"><span class="id" title="variable">e</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#f"><span class="id" title="variable">f</span></a>) (<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.qf_eval"><span class="id" title="definition">qf_eval</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#e"><span class="id" title="variable">e</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#f"><span class="id" title="variable">f</span></a>).<br/>
+
+<br/>
+<span class="id" title="keyword">Implicit</span> <span class="id" title="keyword">Type</span> <span class="id" title="var">bc</span> : <a class="idref" href="mathcomp.ssreflect.seq.html#seq"><span class="id" title="abbreviation">seq</span></a> (<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.term"><span class="id" title="inductive">term</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.EvalTerm.R"><span class="id" title="variable">R</span></a>) <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#d19c7eafd0e2d195d10df94b392087b5"><span class="id" title="notation">×</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#seq"><span class="id" title="abbreviation">seq</span></a> (<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.term"><span class="id" title="inductive">term</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.EvalTerm.R"><span class="id" title="variable">R</span></a>).<br/>
+
+<br/>
+</div>
+
+<div class="doc">
+ Quantifier-free formula are normalized into DNF. A DNF is
+ represented by the type seq (seq (term R) * seq (term R)), where we
+ separate positive and negative literals
+<div class="paragraph"> </div>
+
+ DNF preserving conjunction
+</div>
+<div class="code">
+<span class="id" title="keyword">Definition</span> <a name="GRing.and_dnf"><span class="id" title="definition">and_dnf</span></a> <span class="id" title="var">bcs1</span> <span class="id" title="var">bcs2</span> :=<br/>
+&nbsp;&nbsp;<a class="idref" href="mathcomp.ssreflect.bigop.html#30705c25db0a97e8b1b08168f9199b27"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.ssreflect.bigop.html#30705c25db0a97e8b1b08168f9199b27"><span class="id" title="notation">big</span></a><a class="idref" href="mathcomp.ssreflect.bigop.html#30705c25db0a97e8b1b08168f9199b27"><span class="id" title="notation">[</span></a><a class="idref" href="mathcomp.ssreflect.seq.html#cat"><span class="id" title="definition">cat</span></a><a class="idref" href="mathcomp.ssreflect.bigop.html#30705c25db0a97e8b1b08168f9199b27"><span class="id" title="notation">/</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#nil"><span class="id" title="constructor">nil</span></a><a class="idref" href="mathcomp.ssreflect.bigop.html#30705c25db0a97e8b1b08168f9199b27"><span class="id" title="notation">]</span></a><a class="idref" href="mathcomp.ssreflect.bigop.html#30705c25db0a97e8b1b08168f9199b27"><span class="id" title="notation">_</span></a><a class="idref" href="mathcomp.ssreflect.bigop.html#30705c25db0a97e8b1b08168f9199b27"><span class="id" title="notation">(</span></a><span class="id" title="var">bc1</span> <a class="idref" href="mathcomp.ssreflect.bigop.html#30705c25db0a97e8b1b08168f9199b27"><span class="id" title="notation">&lt;-</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#bcs1"><span class="id" title="variable">bcs1</span></a><a class="idref" href="mathcomp.ssreflect.bigop.html#30705c25db0a97e8b1b08168f9199b27"><span class="id" title="notation">)</span></a><br/>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a class="idref" href="mathcomp.ssreflect.seq.html#map"><span class="id" title="definition">map</span></a> (<span class="id" title="keyword">fun</span> <span class="id" title="var">bc2</span> ⇒ <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#44400027531d4bc3f586a1997dc874c0"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#bc1"><span class="id" title="variable">bc1</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#c4877bbfe60d8f22b47ac99ace86216a"><span class="id" title="notation">.1</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#2ac9001c05ad5bd2f6d5f68e59f48fbb"><span class="id" title="notation">++</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#bc2"><span class="id" title="variable">bc2</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#c4877bbfe60d8f22b47ac99ace86216a"><span class="id" title="notation">.1</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#44400027531d4bc3f586a1997dc874c0"><span class="id" title="notation">,</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#bc1"><span class="id" title="variable">bc1</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#f4827404159513e7fd691b60b7877737"><span class="id" title="notation">.2</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#2ac9001c05ad5bd2f6d5f68e59f48fbb"><span class="id" title="notation">++</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#bc2"><span class="id" title="variable">bc2</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#f4827404159513e7fd691b60b7877737"><span class="id" title="notation">.2</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#44400027531d4bc3f586a1997dc874c0"><span class="id" title="notation">)</span></a>) <a class="idref" href="mathcomp.algebra.ssralg.html#bcs2"><span class="id" title="variable">bcs2</span></a>.<br/>
+
+<br/>
+</div>
+
+<div class="doc">
+ Computes a DNF from a qf ring formula
+</div>
+<div class="code">
+<span class="id" title="keyword">Fixpoint</span> <a name="GRing.qf_to_dnf"><span class="id" title="definition">qf_to_dnf</span></a> (<span class="id" title="var">f</span> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.formula"><span class="id" title="inductive">formula</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.EvalTerm.R"><span class="id" title="variable">R</span></a>) (<span class="id" title="var">neg</span> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#bool"><span class="id" title="inductive">bool</span></a>) {<span class="id" title="keyword">struct</span> <span class="id" title="var">f</span>} :=<br/>
+&nbsp;&nbsp;<span class="id" title="keyword">match</span> <a class="idref" href="mathcomp.algebra.ssralg.html#f"><span class="id" title="variable">f</span></a> <span class="id" title="keyword">with</span><br/>
+&nbsp;&nbsp;| <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Bool"><span class="id" title="constructor">Bool</span></a> <span class="id" title="var">b</span> ⇒ <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssreflect.html#0348819abaa88c2cd747e8fa60dde7ae"><span class="id" title="notation">if</span></a> <span class="id" title="var">b</span> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#ef177bde7d01ae97c98f9cba81f6c95b"><span class="id" title="notation">(+)</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#neg"><span class="id" title="variable">neg</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssreflect.html#0348819abaa88c2cd747e8fa60dde7ae"><span class="id" title="notation">then</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#36229928b54642a4a7da943ccf8f9612"><span class="id" title="notation">[::</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#44400027531d4bc3f586a1997dc874c0"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.ssreflect.seq.html#747e2b5d553b2dfe76e024e1f8fb39d1"><span class="id" title="notation">[::]</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#44400027531d4bc3f586a1997dc874c0"><span class="id" title="notation">,</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#747e2b5d553b2dfe76e024e1f8fb39d1"><span class="id" title="notation">[::]</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#44400027531d4bc3f586a1997dc874c0"><span class="id" title="notation">)</span></a><a class="idref" href="mathcomp.ssreflect.seq.html#36229928b54642a4a7da943ccf8f9612"><span class="id" title="notation">]</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssreflect.html#0348819abaa88c2cd747e8fa60dde7ae"><span class="id" title="notation">else</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#747e2b5d553b2dfe76e024e1f8fb39d1"><span class="id" title="notation">[::]</span></a><br/>
+&nbsp;&nbsp;| <span class="id" title="var">t1</span> <a class="idref" href="mathcomp.algebra.ssralg.html#1a6fbc7f80506595657605bb77bac252"><span class="id" title="notation">==</span></a> <span class="id" title="var">t2</span> ⇒ <a class="idref" href="mathcomp.ssreflect.seq.html#36229928b54642a4a7da943ccf8f9612"><span class="id" title="notation">[::</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssreflect.html#0348819abaa88c2cd747e8fa60dde7ae"><span class="id" title="notation">if</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#neg"><span class="id" title="variable">neg</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssreflect.html#0348819abaa88c2cd747e8fa60dde7ae"><span class="id" title="notation">then</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#44400027531d4bc3f586a1997dc874c0"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.ssreflect.seq.html#747e2b5d553b2dfe76e024e1f8fb39d1"><span class="id" title="notation">[::]</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#44400027531d4bc3f586a1997dc874c0"><span class="id" title="notation">,</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#36229928b54642a4a7da943ccf8f9612"><span class="id" title="notation">[::</span></a> <span class="id" title="var">t1</span> <a class="idref" href="mathcomp.algebra.ssralg.html#18e2ce36b5b2614b64eb5d1e85d95826"><span class="id" title="notation">-</span></a> <span class="id" title="var">t2</span><a class="idref" href="mathcomp.ssreflect.seq.html#36229928b54642a4a7da943ccf8f9612"><span class="id" title="notation">]</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#44400027531d4bc3f586a1997dc874c0"><span class="id" title="notation">)</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssreflect.html#0348819abaa88c2cd747e8fa60dde7ae"><span class="id" title="notation">else</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#44400027531d4bc3f586a1997dc874c0"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.ssreflect.seq.html#36229928b54642a4a7da943ccf8f9612"><span class="id" title="notation">[::</span></a> <span class="id" title="var">t1</span> <a class="idref" href="mathcomp.algebra.ssralg.html#18e2ce36b5b2614b64eb5d1e85d95826"><span class="id" title="notation">-</span></a> <span class="id" title="var">t2</span><a class="idref" href="mathcomp.ssreflect.seq.html#36229928b54642a4a7da943ccf8f9612"><span class="id" title="notation">]</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#44400027531d4bc3f586a1997dc874c0"><span class="id" title="notation">,</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#747e2b5d553b2dfe76e024e1f8fb39d1"><span class="id" title="notation">[::]</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#44400027531d4bc3f586a1997dc874c0"><span class="id" title="notation">)</span></a><a class="idref" href="mathcomp.ssreflect.seq.html#36229928b54642a4a7da943ccf8f9612"><span class="id" title="notation">]</span></a><br/>
+&nbsp;&nbsp;| <span class="id" title="var">f1</span> <a class="idref" href="mathcomp.algebra.ssralg.html#421c9c3c51833f1724975feaafb4b744"><span class="id" title="notation">∧</span></a> <span class="id" title="var">f2</span> ⇒ (<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssreflect.html#0348819abaa88c2cd747e8fa60dde7ae"><span class="id" title="notation">if</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#neg"><span class="id" title="variable">neg</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssreflect.html#0348819abaa88c2cd747e8fa60dde7ae"><span class="id" title="notation">then</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#cat"><span class="id" title="definition">cat</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssreflect.html#0348819abaa88c2cd747e8fa60dde7ae"><span class="id" title="notation">else</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.and_dnf"><span class="id" title="definition">and_dnf</span></a>) <a class="idref" href="mathcomp.algebra.ssralg.html#532298027342e33d4d5bcb7293144f7f"><span class="id" title="notation">[</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#532298027342e33d4d5bcb7293144f7f"><span class="id" title="notation">rec</span></a> <span class="id" title="var">f1</span><a class="idref" href="mathcomp.algebra.ssralg.html#532298027342e33d4d5bcb7293144f7f"><span class="id" title="notation">,</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#neg"><span class="id" title="variable">neg</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#532298027342e33d4d5bcb7293144f7f"><span class="id" title="notation">]</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#532298027342e33d4d5bcb7293144f7f"><span class="id" title="notation">[</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#532298027342e33d4d5bcb7293144f7f"><span class="id" title="notation">rec</span></a> <span class="id" title="var">f2</span><a class="idref" href="mathcomp.algebra.ssralg.html#532298027342e33d4d5bcb7293144f7f"><span class="id" title="notation">,</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#neg"><span class="id" title="variable">neg</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#532298027342e33d4d5bcb7293144f7f"><span class="id" title="notation">]</span></a><br/>
+&nbsp;&nbsp;| <span class="id" title="var">f1</span> <a class="idref" href="mathcomp.algebra.ssralg.html#00b8327e04e2b6f2d979016edbc0c67a"><span class="id" title="notation">∨</span></a> <span class="id" title="var">f2</span> ⇒ (<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssreflect.html#0348819abaa88c2cd747e8fa60dde7ae"><span class="id" title="notation">if</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#neg"><span class="id" title="variable">neg</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssreflect.html#0348819abaa88c2cd747e8fa60dde7ae"><span class="id" title="notation">then</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.and_dnf"><span class="id" title="definition">and_dnf</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssreflect.html#0348819abaa88c2cd747e8fa60dde7ae"><span class="id" title="notation">else</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#cat"><span class="id" title="definition">cat</span></a>) <a class="idref" href="mathcomp.algebra.ssralg.html#532298027342e33d4d5bcb7293144f7f"><span class="id" title="notation">[</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#532298027342e33d4d5bcb7293144f7f"><span class="id" title="notation">rec</span></a> <span class="id" title="var">f1</span><a class="idref" href="mathcomp.algebra.ssralg.html#532298027342e33d4d5bcb7293144f7f"><span class="id" title="notation">,</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#neg"><span class="id" title="variable">neg</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#532298027342e33d4d5bcb7293144f7f"><span class="id" title="notation">]</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#532298027342e33d4d5bcb7293144f7f"><span class="id" title="notation">[</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#532298027342e33d4d5bcb7293144f7f"><span class="id" title="notation">rec</span></a> <span class="id" title="var">f2</span><a class="idref" href="mathcomp.algebra.ssralg.html#532298027342e33d4d5bcb7293144f7f"><span class="id" title="notation">,</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#neg"><span class="id" title="variable">neg</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#532298027342e33d4d5bcb7293144f7f"><span class="id" title="notation">]</span></a><br/>
+&nbsp;&nbsp;| <span class="id" title="var">f1</span> <a class="idref" href="mathcomp.algebra.ssralg.html#0686cd1bb1af98b02865ebbedcf70bd7"><span class="id" title="notation">==&gt;</span></a> <span class="id" title="var">f2</span> ⇒ (<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssreflect.html#0348819abaa88c2cd747e8fa60dde7ae"><span class="id" title="notation">if</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#neg"><span class="id" title="variable">neg</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssreflect.html#0348819abaa88c2cd747e8fa60dde7ae"><span class="id" title="notation">then</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.and_dnf"><span class="id" title="definition">and_dnf</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssreflect.html#0348819abaa88c2cd747e8fa60dde7ae"><span class="id" title="notation">else</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#cat"><span class="id" title="definition">cat</span></a>) <a class="idref" href="mathcomp.algebra.ssralg.html#532298027342e33d4d5bcb7293144f7f"><span class="id" title="notation">[</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#532298027342e33d4d5bcb7293144f7f"><span class="id" title="notation">rec</span></a> <span class="id" title="var">f1</span><a class="idref" href="mathcomp.algebra.ssralg.html#532298027342e33d4d5bcb7293144f7f"><span class="id" title="notation">,</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#4b80c70cdb231351c5e129ba61f7f956"><span class="id" title="notation">~~</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#neg"><span class="id" title="variable">neg</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#532298027342e33d4d5bcb7293144f7f"><span class="id" title="notation">]</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#532298027342e33d4d5bcb7293144f7f"><span class="id" title="notation">[</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#532298027342e33d4d5bcb7293144f7f"><span class="id" title="notation">rec</span></a> <span class="id" title="var">f2</span><a class="idref" href="mathcomp.algebra.ssralg.html#532298027342e33d4d5bcb7293144f7f"><span class="id" title="notation">,</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#neg"><span class="id" title="variable">neg</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#532298027342e33d4d5bcb7293144f7f"><span class="id" title="notation">]</span></a><br/>
+&nbsp;&nbsp;| <a class="idref" href="mathcomp.algebra.ssralg.html#bf1935aa3f28dfd45301897795b397a5"><span class="id" title="notation">¬</span></a> <span class="id" title="var">f1</span> ⇒ <a class="idref" href="mathcomp.algebra.ssralg.html#532298027342e33d4d5bcb7293144f7f"><span class="id" title="notation">[</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#532298027342e33d4d5bcb7293144f7f"><span class="id" title="notation">rec</span></a> <span class="id" title="var">f1</span><a class="idref" href="mathcomp.algebra.ssralg.html#532298027342e33d4d5bcb7293144f7f"><span class="id" title="notation">,</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#4b80c70cdb231351c5e129ba61f7f956"><span class="id" title="notation">~~</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#neg"><span class="id" title="variable">neg</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#532298027342e33d4d5bcb7293144f7f"><span class="id" title="notation">]</span></a><br/>
+&nbsp;&nbsp;| <span class="id" title="var">_</span> ⇒ <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssreflect.html#0348819abaa88c2cd747e8fa60dde7ae"><span class="id" title="notation">if</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#neg"><span class="id" title="variable">neg</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssreflect.html#0348819abaa88c2cd747e8fa60dde7ae"><span class="id" title="notation">then</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#36229928b54642a4a7da943ccf8f9612"><span class="id" title="notation">[::</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#44400027531d4bc3f586a1997dc874c0"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.ssreflect.seq.html#747e2b5d553b2dfe76e024e1f8fb39d1"><span class="id" title="notation">[::]</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#44400027531d4bc3f586a1997dc874c0"><span class="id" title="notation">,</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#747e2b5d553b2dfe76e024e1f8fb39d1"><span class="id" title="notation">[::]</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#44400027531d4bc3f586a1997dc874c0"><span class="id" title="notation">)</span></a><a class="idref" href="mathcomp.ssreflect.seq.html#36229928b54642a4a7da943ccf8f9612"><span class="id" title="notation">]</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssreflect.html#0348819abaa88c2cd747e8fa60dde7ae"><span class="id" title="notation">else</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#747e2b5d553b2dfe76e024e1f8fb39d1"><span class="id" title="notation">[::]</span></a><br/>
+&nbsp;&nbsp;<span class="id" title="keyword">end</span>%<span class="id" title="var">T</span> <span class="id" title="keyword">where</span> <a name="532298027342e33d4d5bcb7293144f7f"><span class="id" title="notation">&quot;</span></a>[ 'rec' f , neg ]" := (<a class="idref" href="mathcomp.algebra.ssralg.html#qf_to_dnf"><span class="id" title="definition">qf_to_dnf</span></a> <span class="id" title="var">f</span> <span class="id" title="var">neg</span>).<br/>
+
+<br/>
+</div>
+
+<div class="doc">
+ Conversely, transforms a DNF into a formula
+</div>
+<div class="code">
+<span class="id" title="keyword">Definition</span> <a name="GRing.dnf_to_form"><span class="id" title="definition">dnf_to_form</span></a> :=<br/>
+&nbsp;&nbsp;<span class="id" title="keyword">let</span> <span class="id" title="var">pos_lit</span> <span class="id" title="var">t</span> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.And"><span class="id" title="constructor">And</span></a> (<a class="idref" href="mathcomp.algebra.ssralg.html#t"><span class="id" title="variable">t</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#1a6fbc7f80506595657605bb77bac252"><span class="id" title="notation">==</span></a> 0) <span class="id" title="tactic">in</span> <span class="id" title="keyword">let</span> <span class="id" title="var">neg_lit</span> <span class="id" title="var">t</span> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.And"><span class="id" title="constructor">And</span></a> (<a class="idref" href="mathcomp.algebra.ssralg.html#t"><span class="id" title="variable">t</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#5df5d3023a888489ad7cff86e72ea2fd"><span class="id" title="notation">!=</span></a> 0) <span class="id" title="tactic">in</span> <br/>
+&nbsp;&nbsp;<span class="id" title="keyword">let</span> <span class="id" title="var">cls</span> <span class="id" title="var">bc</span> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Or"><span class="id" title="constructor">Or</span></a> (<a class="idref" href="mathcomp.ssreflect.seq.html#foldr"><span class="id" title="definition">foldr</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#pos_lit"><span class="id" title="variable">pos_lit</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.True"><span class="id" title="abbreviation">True</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#bc"><span class="id" title="variable">bc</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#c4877bbfe60d8f22b47ac99ace86216a"><span class="id" title="notation">.1</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#421c9c3c51833f1724975feaafb4b744"><span class="id" title="notation">∧</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#foldr"><span class="id" title="definition">foldr</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#neg_lit"><span class="id" title="variable">neg_lit</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.True"><span class="id" title="abbreviation">True</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#bc"><span class="id" title="variable">bc</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#f4827404159513e7fd691b60b7877737"><span class="id" title="notation">.2</span></a>) <span class="id" title="tactic">in</span><br/>
+&nbsp;&nbsp;<a class="idref" href="mathcomp.ssreflect.seq.html#foldr"><span class="id" title="definition">foldr</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#cls"><span class="id" title="variable">cls</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.False"><span class="id" title="abbreviation">False</span></a>.<br/>
+
+<br/>
+</div>
+
+<div class="doc">
+ Catenation of dnf is the Or of formulas
+</div>
+<div class="code">
+<span class="id" title="keyword">Lemma</span> <a name="GRing.cat_dnfP"><span class="id" title="lemma">cat_dnfP</span></a> <span class="id" title="var">e</span> <span class="id" title="var">bcs1</span> <span class="id" title="var">bcs2</span> :<br/>
+&nbsp;&nbsp;<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.qf_eval"><span class="id" title="definition">qf_eval</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#e"><span class="id" title="variable">e</span></a> (<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.dnf_to_form"><span class="id" title="definition">dnf_to_form</span></a> (<a class="idref" href="mathcomp.algebra.ssralg.html#bcs1"><span class="id" title="variable">bcs1</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#2ac9001c05ad5bd2f6d5f68e59f48fbb"><span class="id" title="notation">++</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#bcs2"><span class="id" title="variable">bcs2</span></a>))<br/>
+&nbsp;&nbsp;&nbsp;&nbsp;<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.qf_eval"><span class="id" title="definition">qf_eval</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#e"><span class="id" title="variable">e</span></a> (<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.dnf_to_form"><span class="id" title="definition">dnf_to_form</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#bcs1"><span class="id" title="variable">bcs1</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#00b8327e04e2b6f2d979016edbc0c67a"><span class="id" title="notation">∨</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.dnf_to_form"><span class="id" title="definition">dnf_to_form</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#bcs2"><span class="id" title="variable">bcs2</span></a>).<br/>
+
+<br/>
+</div>
+
+<div class="doc">
+ and_dnf is the And of formulas
+</div>
+<div class="code">
+<span class="id" title="keyword">Lemma</span> <a name="GRing.and_dnfP"><span class="id" title="lemma">and_dnfP</span></a> <span class="id" title="var">e</span> <span class="id" title="var">bcs1</span> <span class="id" title="var">bcs2</span> :<br/>
+&nbsp;&nbsp;<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.qf_eval"><span class="id" title="definition">qf_eval</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#e"><span class="id" title="variable">e</span></a> (<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.dnf_to_form"><span class="id" title="definition">dnf_to_form</span></a> (<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.and_dnf"><span class="id" title="definition">and_dnf</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#bcs1"><span class="id" title="variable">bcs1</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#bcs2"><span class="id" title="variable">bcs2</span></a>))<br/>
+&nbsp;&nbsp;&nbsp;<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.qf_eval"><span class="id" title="definition">qf_eval</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#e"><span class="id" title="variable">e</span></a> (<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.dnf_to_form"><span class="id" title="definition">dnf_to_form</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#bcs1"><span class="id" title="variable">bcs1</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#421c9c3c51833f1724975feaafb4b744"><span class="id" title="notation">∧</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.dnf_to_form"><span class="id" title="definition">dnf_to_form</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#bcs2"><span class="id" title="variable">bcs2</span></a>).<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.qf_to_dnfP"><span class="id" title="lemma">qf_to_dnfP</span></a> <span class="id" title="var">e</span> :<br/>
+&nbsp;&nbsp;<span class="id" title="keyword">let</span> <span class="id" title="var">qev</span> <span class="id" title="var">f</span> <span class="id" title="var">b</span> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.qf_eval"><span class="id" title="definition">qf_eval</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#e"><span class="id" title="variable">e</span></a> (<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.dnf_to_form"><span class="id" title="definition">dnf_to_form</span></a> (<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.qf_to_dnf"><span class="id" title="definition">qf_to_dnf</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#f"><span class="id" title="variable">f</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#b"><span class="id" title="variable">b</span></a>)) <span class="id" title="tactic">in</span><br/>
+&nbsp;&nbsp;<span class="id" title="keyword">∀</span> <span class="id" title="var">f</span>, <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.qf_form"><span class="id" title="definition">qf_form</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#f"><span class="id" title="variable">f</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#49ac24efa716d8b0ee8943bc1d1769a9"><span class="id" title="notation">&amp;&amp;</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.rformula"><span class="id" title="definition">rformula</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#f"><span class="id" title="variable">f</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#qev"><span class="id" title="variable">qev</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#f"><span class="id" title="variable">f</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#false"><span class="id" title="constructor">false</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.qf_eval"><span class="id" title="definition">qf_eval</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#e"><span class="id" title="variable">e</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#f"><span class="id" title="variable">f</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.dnf_to_form_qf"><span class="id" title="lemma">dnf_to_form_qf</span></a> <span class="id" title="var">bcs</span> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.qf_form"><span class="id" title="definition">qf_form</span></a> (<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.dnf_to_form"><span class="id" title="definition">dnf_to_form</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#bcs"><span class="id" title="variable">bcs</span></a>).<br/>
+
+<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.dnf_rterm"><span class="id" title="definition">dnf_rterm</span></a> <span class="id" title="var">cl</span> := <a class="idref" href="mathcomp.ssreflect.seq.html#all"><span class="id" title="definition">all</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.rterm"><span class="id" title="definition">rterm</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#cl"><span class="id" title="variable">cl</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#c4877bbfe60d8f22b47ac99ace86216a"><span class="id" title="notation">.1</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#49ac24efa716d8b0ee8943bc1d1769a9"><span class="id" title="notation">&amp;&amp;</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#all"><span class="id" title="definition">all</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.rterm"><span class="id" title="definition">rterm</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#cl"><span class="id" title="variable">cl</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#f4827404159513e7fd691b60b7877737"><span class="id" title="notation">.2</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.qf_to_dnf_rterm"><span class="id" title="lemma">qf_to_dnf_rterm</span></a> <span class="id" title="var">f</span> <span class="id" title="var">b</span> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.rformula"><span class="id" title="definition">rformula</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#f"><span class="id" title="variable">f</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#all"><span class="id" title="definition">all</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.dnf_rterm"><span class="id" title="definition">dnf_rterm</span></a> (<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.qf_to_dnf"><span class="id" title="definition">qf_to_dnf</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#f"><span class="id" title="variable">f</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#b"><span class="id" title="variable">b</span></a>).<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.dnf_to_rform"><span class="id" title="lemma">dnf_to_rform</span></a> <span class="id" title="var">bcs</span> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.rformula"><span class="id" title="definition">rformula</span></a> (<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.dnf_to_form"><span class="id" title="definition">dnf_to_form</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#bcs"><span class="id" title="variable">bcs</span></a>) <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#all"><span class="id" title="definition">all</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.dnf_rterm"><span class="id" title="definition">dnf_rterm</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#bcs"><span class="id" title="variable">bcs</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Section</span> <a name="GRing.EvalTerm.If"><span class="id" title="section">If</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Variables</span> (<a name="GRing.EvalTerm.If.pred_f"><span class="id" title="variable">pred_f</span></a> <a name="GRing.EvalTerm.If.then_f"><span class="id" title="variable">then_f</span></a> <a name="GRing.EvalTerm.If.else_f"><span class="id" title="variable">else_f</span></a> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.formula"><span class="id" title="inductive">formula</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.EvalTerm.R"><span class="id" title="variable">R</span></a>).<br/>
+
+<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.If"><span class="id" title="definition">If</span></a> := (<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.EvalTerm.If.pred_f"><span class="id" title="variable">pred_f</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#421c9c3c51833f1724975feaafb4b744"><span class="id" title="notation">∧</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.EvalTerm.If.then_f"><span class="id" title="variable">then_f</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#00b8327e04e2b6f2d979016edbc0c67a"><span class="id" title="notation">∨</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#bf1935aa3f28dfd45301897795b397a5"><span class="id" title="notation">¬</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.EvalTerm.If.pred_f"><span class="id" title="variable">pred_f</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#421c9c3c51833f1724975feaafb4b744"><span class="id" title="notation">∧</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.EvalTerm.If.else_f"><span class="id" title="variable">else_f</span></a>)%<span class="id" title="var">T</span>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.If_form_qf"><span class="id" title="lemma">If_form_qf</span></a> :<br/>
+&nbsp;&nbsp;<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.qf_form"><span class="id" title="definition">qf_form</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.EvalTerm.If.pred_f"><span class="id" title="variable">pred_f</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.qf_form"><span class="id" title="definition">qf_form</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.EvalTerm.If.then_f"><span class="id" title="variable">then_f</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.qf_form"><span class="id" title="definition">qf_form</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.EvalTerm.If.else_f"><span class="id" title="variable">else_f</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.qf_form"><span class="id" title="definition">qf_form</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.If"><span class="id" title="definition">If</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.If_form_rf"><span class="id" title="lemma">If_form_rf</span></a> :<br/>
+&nbsp;&nbsp;<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.rformula"><span class="id" title="definition">rformula</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.EvalTerm.If.pred_f"><span class="id" title="variable">pred_f</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.rformula"><span class="id" title="definition">rformula</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.EvalTerm.If.then_f"><span class="id" title="variable">then_f</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.rformula"><span class="id" title="definition">rformula</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.EvalTerm.If.else_f"><span class="id" title="variable">else_f</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.rformula"><span class="id" title="definition">rformula</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.If"><span class="id" title="definition">If</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.eval_If"><span class="id" title="lemma">eval_If</span></a> <span class="id" title="var">e</span> :<br/>
+&nbsp;&nbsp;<span class="id" title="keyword">let</span> <span class="id" title="var">ev</span> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.qf_eval"><span class="id" title="definition">qf_eval</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#e"><span class="id" title="variable">e</span></a> <span class="id" title="tactic">in</span> <a class="idref" href="mathcomp.algebra.ssralg.html#ev"><span class="id" title="variable">ev</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.If"><span class="id" title="definition">If</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">(</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssreflect.html#0348819abaa88c2cd747e8fa60dde7ae"><span class="id" title="notation">if</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#ev"><span class="id" title="variable">ev</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.EvalTerm.If.pred_f"><span class="id" title="variable">pred_f</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssreflect.html#0348819abaa88c2cd747e8fa60dde7ae"><span class="id" title="notation">then</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#ev"><span class="id" title="variable">ev</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.EvalTerm.If.then_f"><span class="id" title="variable">then_f</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssreflect.html#0348819abaa88c2cd747e8fa60dde7ae"><span class="id" title="notation">else</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#ev"><span class="id" title="variable">ev</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.EvalTerm.If.else_f"><span class="id" title="variable">else_f</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">)</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">End</span> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.EvalTerm.If"><span class="id" title="section">If</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Section</span> <a name="GRing.EvalTerm.Pick"><span class="id" title="section">Pick</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Variables</span> (<a name="GRing.EvalTerm.Pick.I"><span class="id" title="variable">I</span></a> : <a class="idref" href="mathcomp.ssreflect.fintype.html#Finite.Exports.finType"><span class="id" title="abbreviation">finType</span></a>) (<a name="GRing.EvalTerm.Pick.pred_f"><span class="id" title="variable">pred_f</span></a> <a name="GRing.EvalTerm.Pick.then_f"><span class="id" title="variable">then_f</span></a> : <a class="idref" href="mathcomp.algebra.ssralg.html#I"><span class="id" title="variable">I</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.formula"><span class="id" title="inductive">formula</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.EvalTerm.R"><span class="id" title="variable">R</span></a>) (<a name="GRing.EvalTerm.Pick.else_f"><span class="id" title="variable">else_f</span></a> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.formula"><span class="id" title="inductive">formula</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.EvalTerm.R"><span class="id" title="variable">R</span></a>).<br/>
+
+<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Pick"><span class="id" title="definition">Pick</span></a> :=<br/>
+&nbsp;&nbsp;<a class="idref" href="mathcomp.ssreflect.bigop.html#7c24ccda1da6510c0183e6d456463b39"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.ssreflect.bigop.html#7c24ccda1da6510c0183e6d456463b39"><span class="id" title="notation">big</span></a><a class="idref" href="mathcomp.ssreflect.bigop.html#7c24ccda1da6510c0183e6d456463b39"><span class="id" title="notation">[</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Or"><span class="id" title="constructor">Or</span></a><a class="idref" href="mathcomp.ssreflect.bigop.html#7c24ccda1da6510c0183e6d456463b39"><span class="id" title="notation">/</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#GRing.False"><span class="id" title="abbreviation">False</span></a><a class="idref" href="mathcomp.ssreflect.bigop.html#7c24ccda1da6510c0183e6d456463b39"><span class="id" title="notation">]</span></a><a class="idref" href="mathcomp.ssreflect.bigop.html#7c24ccda1da6510c0183e6d456463b39"><span class="id" title="notation">_</span></a><a class="idref" href="mathcomp.ssreflect.bigop.html#7c24ccda1da6510c0183e6d456463b39"><span class="id" title="notation">(</span></a><span class="id" title="var">p</span> <a class="idref" href="mathcomp.ssreflect.bigop.html#7c24ccda1da6510c0183e6d456463b39"><span class="id" title="notation">:</span></a> <a class="idref" href="mathcomp.ssreflect.finfun.html#9f24a6f16bf73832c2d9aa4e2c16f692"><span class="id" title="notation">{</span></a><a class="idref" href="mathcomp.ssreflect.finfun.html#9f24a6f16bf73832c2d9aa4e2c16f692"><span class="id" title="notation">ffun</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#pred"><span class="id" title="definition">pred</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.EvalTerm.Pick.I"><span class="id" title="variable">I</span></a><a class="idref" href="mathcomp.ssreflect.finfun.html#9f24a6f16bf73832c2d9aa4e2c16f692"><span class="id" title="notation">}</span></a><a class="idref" href="mathcomp.ssreflect.bigop.html#7c24ccda1da6510c0183e6d456463b39"><span class="id" title="notation">)</span></a><br/>
+&nbsp;&nbsp;&nbsp;&nbsp;(<a class="idref" href="mathcomp.algebra.ssralg.html#421c9c3c51833f1724975feaafb4b744"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.ssreflect.bigop.html#a0ddbff8fbef0617dd5dab072904e591"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.ssreflect.bigop.html#a0ddbff8fbef0617dd5dab072904e591"><span class="id" title="notation">big</span></a><a class="idref" href="mathcomp.ssreflect.bigop.html#a0ddbff8fbef0617dd5dab072904e591"><span class="id" title="notation">[</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#GRing.And"><span class="id" title="constructor">And</span></a><a class="idref" href="mathcomp.ssreflect.bigop.html#a0ddbff8fbef0617dd5dab072904e591"><span class="id" title="notation">/</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#GRing.True"><span class="id" title="abbreviation">True</span></a><a class="idref" href="mathcomp.ssreflect.bigop.html#a0ddbff8fbef0617dd5dab072904e591"><span class="id" title="notation">]</span></a><a class="idref" href="mathcomp.ssreflect.bigop.html#a0ddbff8fbef0617dd5dab072904e591"><span class="id" title="notation">_i</span></a> <a class="idref" href="mathcomp.ssreflect.bigop.html#a0ddbff8fbef0617dd5dab072904e591"><span class="id" title="notation">(</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssreflect.html#0348819abaa88c2cd747e8fa60dde7ae"><span class="id" title="notation">if</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#p"><span class="id" title="variable">p</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#i"><span class="id" title="variable">i</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssreflect.html#0348819abaa88c2cd747e8fa60dde7ae"><span class="id" title="notation">then</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.EvalTerm.Pick.pred_f"><span class="id" title="variable">pred_f</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#i"><span class="id" title="variable">i</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssreflect.html#0348819abaa88c2cd747e8fa60dde7ae"><span class="id" title="notation">else</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#bf1935aa3f28dfd45301897795b397a5"><span class="id" title="notation">¬</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.EvalTerm.Pick.pred_f"><span class="id" title="variable">pred_f</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#i"><span class="id" title="variable">i</span></a><a class="idref" href="mathcomp.ssreflect.bigop.html#a0ddbff8fbef0617dd5dab072904e591"><span class="id" title="notation">)</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#421c9c3c51833f1724975feaafb4b744"><span class="id" title="notation">)</span></a><br/>
+&nbsp;&nbsp;&nbsp;&nbsp;<a class="idref" href="mathcomp.algebra.ssralg.html#421c9c3c51833f1724975feaafb4b744"><span class="id" title="notation">∧</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#421c9c3c51833f1724975feaafb4b744"><span class="id" title="notation">(</span></a><span class="id" title="keyword">if</span> <a class="idref" href="mathcomp.ssreflect.fintype.html#pick"><span class="id" title="definition">pick</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#p"><span class="id" title="variable">p</span></a> <span class="id" title="keyword">is</span> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#Some"><span class="id" title="constructor">Some</span></a> <span class="id" title="var">i</span> <span class="id" title="keyword">then</span> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.EvalTerm.Pick.then_f"><span class="id" title="variable">then_f</span></a> <span class="id" title="var">i</span> <span class="id" title="keyword">else</span> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.EvalTerm.Pick.else_f"><span class="id" title="variable">else_f</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#421c9c3c51833f1724975feaafb4b744"><span class="id" title="notation">)</span></a>)%<span class="id" title="var">T</span>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.Pick_form_qf"><span class="id" title="lemma">Pick_form_qf</span></a> :<br/>
+&nbsp;&nbsp;&nbsp;<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">(</span></a><span class="id" title="keyword">∀</span> <span class="id" title="var">i</span>, <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.qf_form"><span class="id" title="definition">qf_form</span></a> (<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.EvalTerm.Pick.pred_f"><span class="id" title="variable">pred_f</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#i"><span class="id" title="variable">i</span></a>)<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">)</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a><br/>
+&nbsp;&nbsp;&nbsp;<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">(</span></a><span class="id" title="keyword">∀</span> <span class="id" title="var">i</span>, <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.qf_form"><span class="id" title="definition">qf_form</span></a> (<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.EvalTerm.Pick.then_f"><span class="id" title="variable">then_f</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#i"><span class="id" title="variable">i</span></a>)<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">)</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a><br/>
+&nbsp;&nbsp;&nbsp;&nbsp;<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.qf_form"><span class="id" title="definition">qf_form</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.EvalTerm.Pick.else_f"><span class="id" title="variable">else_f</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a><br/>
+&nbsp;&nbsp;<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.qf_form"><span class="id" title="definition">qf_form</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Pick"><span class="id" title="definition">Pick</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.eval_Pick"><span class="id" title="lemma">eval_Pick</span></a> <span class="id" title="var">e</span> (<span class="id" title="var">qev</span> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.qf_eval"><span class="id" title="definition">qf_eval</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#e"><span class="id" title="variable">e</span></a>) :<br/>
+&nbsp;&nbsp;<span class="id" title="keyword">let</span> <span class="id" title="var">P</span> <span class="id" title="var">i</span> := <a class="idref" href="mathcomp.algebra.ssralg.html#qev"><span class="id" title="variable">qev</span></a> (<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.EvalTerm.Pick.pred_f"><span class="id" title="variable">pred_f</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#i"><span class="id" title="variable">i</span></a>) <span class="id" title="tactic">in</span><br/>
+&nbsp;&nbsp;<a class="idref" href="mathcomp.algebra.ssralg.html#qev"><span class="id" title="variable">qev</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Pick"><span class="id" title="definition">Pick</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">(</span></a><span class="id" title="keyword">if</span> <a class="idref" href="mathcomp.ssreflect.fintype.html#pick"><span class="id" title="definition">pick</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#P"><span class="id" title="variable">P</span></a> <span class="id" title="keyword">is</span> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#Some"><span class="id" title="constructor">Some</span></a> <span class="id" title="var">i</span> <span class="id" title="keyword">then</span> <a class="idref" href="mathcomp.algebra.ssralg.html#qev"><span class="id" title="variable">qev</span></a> (<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.EvalTerm.Pick.then_f"><span class="id" title="variable">then_f</span></a> <span class="id" title="var">i</span>) <span class="id" title="keyword">else</span> <a class="idref" href="mathcomp.algebra.ssralg.html#qev"><span class="id" title="variable">qev</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.EvalTerm.Pick.else_f"><span class="id" title="variable">else_f</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">)</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">End</span> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.EvalTerm.Pick"><span class="id" title="section">Pick</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Section</span> <a name="GRing.EvalTerm.MultiQuant"><span class="id" title="section">MultiQuant</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Variable</span> <a name="GRing.EvalTerm.MultiQuant.f"><span class="id" title="variable">f</span></a> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.formula"><span class="id" title="inductive">formula</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.EvalTerm.R"><span class="id" title="variable">R</span></a>.<br/>
+<span class="id" title="keyword">Implicit</span> <span class="id" title="keyword">Types</span> (<span class="id" title="var">I</span> : <a class="idref" href="mathcomp.ssreflect.seq.html#seq"><span class="id" title="abbreviation">seq</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#nat"><span class="id" title="inductive">nat</span></a>) (<span class="id" title="var">e</span> : <a class="idref" href="mathcomp.ssreflect.seq.html#seq"><span class="id" title="abbreviation">seq</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.EvalTerm.R"><span class="id" title="variable">R</span></a>).<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.foldExistsP"><span class="id" title="lemma">foldExistsP</span></a> <span class="id" title="var">I</span> <span class="id" title="var">e</span> :<br/>
+&nbsp;&nbsp;<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#df1ced36fc33ce188051218bca314374"><span class="id" title="notation">(</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#28b18e493f7cb0bd8447607bdc385ff8"><span class="id" title="notation">exists2</span></a> <span class="id" title="var">e'</span><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#28b18e493f7cb0bd8447607bdc385ff8"><span class="id" title="notation">,</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#5c59b35a0b51db520cf1fba473ecf127"><span class="id" title="notation">{</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#5c59b35a0b51db520cf1fba473ecf127"><span class="id" title="notation">in</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#c2f58fba484177bda65c2ab1289a6fe6"><span class="id" title="notation">[</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#c2f58fba484177bda65c2ab1289a6fe6"><span class="id" title="notation">predC</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#I"><span class="id" title="variable">I</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#c2f58fba484177bda65c2ab1289a6fe6"><span class="id" title="notation">]</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#5c59b35a0b51db520cf1fba473ecf127"><span class="id" title="notation">,</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.same_env"><span class="id" title="definition">same_env</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#e"><span class="id" title="variable">e</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#e'"><span class="id" title="variable">e'</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#5c59b35a0b51db520cf1fba473ecf127"><span class="id" title="notation">}</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#28b18e493f7cb0bd8447607bdc385ff8"><span class="id" title="notation">&amp;</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.holds"><span class="id" title="definition">holds</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#e'"><span class="id" title="variable">e'</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.EvalTerm.MultiQuant.f"><span class="id" title="variable">f</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#df1ced36fc33ce188051218bca314374"><span class="id" title="notation">)</span></a><br/>
+&nbsp;&nbsp;&nbsp;&nbsp;<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#df1ced36fc33ce188051218bca314374"><span class="id" title="notation">↔</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.holds"><span class="id" title="definition">holds</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#e"><span class="id" title="variable">e</span></a> (<a class="idref" href="mathcomp.ssreflect.seq.html#foldr"><span class="id" title="definition">foldr</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Exists"><span class="id" title="constructor">Exists</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.EvalTerm.MultiQuant.f"><span class="id" title="variable">f</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#I"><span class="id" title="variable">I</span></a>).<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.foldForallP"><span class="id" title="lemma">foldForallP</span></a> <span class="id" title="var">I</span> <span class="id" title="var">e</span> :<br/>
+&nbsp;&nbsp;<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#df1ced36fc33ce188051218bca314374"><span class="id" title="notation">(</span></a><span class="id" title="keyword">∀</span> <span class="id" title="var">e'</span>, <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#5c59b35a0b51db520cf1fba473ecf127"><span class="id" title="notation">{</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#5c59b35a0b51db520cf1fba473ecf127"><span class="id" title="notation">in</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#c2f58fba484177bda65c2ab1289a6fe6"><span class="id" title="notation">[</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#c2f58fba484177bda65c2ab1289a6fe6"><span class="id" title="notation">predC</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#I"><span class="id" title="variable">I</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#c2f58fba484177bda65c2ab1289a6fe6"><span class="id" title="notation">]</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#5c59b35a0b51db520cf1fba473ecf127"><span class="id" title="notation">,</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.same_env"><span class="id" title="definition">same_env</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#e"><span class="id" title="variable">e</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#e'"><span class="id" title="variable">e'</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#5c59b35a0b51db520cf1fba473ecf127"><span class="id" title="notation">}</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.holds"><span class="id" title="definition">holds</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#e'"><span class="id" title="variable">e'</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.EvalTerm.MultiQuant.f"><span class="id" title="variable">f</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#df1ced36fc33ce188051218bca314374"><span class="id" title="notation">)</span></a><br/>
+&nbsp;&nbsp;&nbsp;&nbsp;<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#df1ced36fc33ce188051218bca314374"><span class="id" title="notation">↔</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.holds"><span class="id" title="definition">holds</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#e"><span class="id" title="variable">e</span></a> (<a class="idref" href="mathcomp.ssreflect.seq.html#foldr"><span class="id" title="definition">foldr</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Forall"><span class="id" title="constructor">Forall</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.EvalTerm.MultiQuant.f"><span class="id" title="variable">f</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#I"><span class="id" title="variable">I</span></a>).<br/>
+
+<br/>
+<span class="id" title="keyword">End</span> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.EvalTerm.MultiQuant"><span class="id" title="section">MultiQuant</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">End</span> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.EvalTerm"><span class="id" title="section">EvalTerm</span></a>.<br/>
+
+<br/>
+
+<br/>
+<span class="id" title="keyword">Module</span> <a name="GRing.IntegralDomain"><span class="id" title="module">IntegralDomain</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.IntegralDomain.axiom"><span class="id" title="definition">axiom</span></a> (<span class="id" title="var">R</span> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Ring.Exports.ringType"><span class="id" title="abbreviation">ringType</span></a>) :=<br/>
+&nbsp;&nbsp;<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.algebra.ssralg.html#R"><span class="id" title="variable">R</span></a>, <a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#ed99e7035d9a1f8a2c1515be81ac2e5f"><span class="id" title="notation">×</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#y"><span class="id" title="variable">y</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> 0 <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#14a7a9c7dc61f86bfb664d400fabaf8a"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#17d28d004d0863cb022d4ce832ddaaae"><span class="id" title="notation">==</span></a> 0<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#14a7a9c7dc61f86bfb664d400fabaf8a"><span class="id" title="notation">)</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#14a7a9c7dc61f86bfb664d400fabaf8a"><span class="id" title="notation">||</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#14a7a9c7dc61f86bfb664d400fabaf8a"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#y"><span class="id" title="variable">y</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#17d28d004d0863cb022d4ce832ddaaae"><span class="id" title="notation">==</span></a> 0<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#14a7a9c7dc61f86bfb664d400fabaf8a"><span class="id" title="notation">)</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Section</span> <a name="GRing.IntegralDomain.ClassDef"><span class="id" title="section">ClassDef</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Record</span> <a name="GRing.IntegralDomain.class_of"><span class="id" title="record">class_of</span></a> (<span class="id" title="var">R</span> : <span class="id" title="keyword">Type</span>) : <span class="id" title="keyword">Type</span> :=<br/>
+&nbsp;&nbsp;<a name="GRing.IntegralDomain.Class"><span class="id" title="constructor">Class</span></a> {<a name="GRing.IntegralDomain.base"><span class="id" title="projection">base</span></a> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ComUnitRing.class_of"><span class="id" title="record">ComUnitRing.class_of</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#R"><span class="id" title="variable">R</span></a>; <a name="GRing.IntegralDomain.mixin"><span class="id" title="projection">mixin</span></a> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.IntegralDomain.axiom"><span class="id" title="definition">axiom</span></a> (<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Ring.Pack"><span class="id" title="constructor">Ring.Pack</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#base"><span class="id" title="method">base</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#R"><span class="id" title="variable">R</span></a>)}.<br/>
+
+<br/>
+<span class="id" title="keyword">Structure</span> <a name="GRing.IntegralDomain.type"><span class="id" title="record">type</span></a> := <a name="GRing.IntegralDomain.Pack"><span class="id" title="constructor">Pack</span></a> {<a name="GRing.IntegralDomain.sort"><span class="id" title="projection">sort</span></a>; <span class="id" title="var">_</span> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.IntegralDomain.class_of"><span class="id" title="record">class_of</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#sort"><span class="id" title="method">sort</span></a>; <span class="id" title="var">_</span> : <span class="id" title="keyword">Type</span>}.<br/>
+<span class="id" title="keyword">Variable</span> (<a name="GRing.IntegralDomain.ClassDef.T"><span class="id" title="variable">T</span></a> : <span class="id" title="keyword">Type</span>) (<a name="GRing.IntegralDomain.ClassDef.cT"><span class="id" title="variable">cT</span></a> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.IntegralDomain.type"><span class="id" title="record">type</span></a>).<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.IntegralDomain.class"><span class="id" title="definition">class</span></a> := <span class="id" title="keyword">let</span>: <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.IntegralDomain.Pack"><span class="id" title="constructor">Pack</span></a> <span class="id" title="var">_</span> <span class="id" title="var">c</span> <span class="id" title="var">_</span> <span class="id" title="keyword">as</span> <span class="id" title="var">cT'</span> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.IntegralDomain.ClassDef.cT"><span class="id" title="variable">cT</span></a> <span class="id" title="keyword">return</span> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.IntegralDomain.class_of"><span class="id" title="record">class_of</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#cT'"><span class="id" title="variable">cT'</span></a> <span class="id" title="tactic">in</span> <span class="id" title="var">c</span>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.IntegralDomain.clone"><span class="id" title="definition">clone</span></a> <span class="id" title="var">c</span> <span class="id" title="keyword">of</span> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#phant_id"><span class="id" title="definition">phant_id</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.IntegralDomain.class"><span class="id" title="definition">class</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#c"><span class="id" title="variable">c</span></a> := @<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.IntegralDomain.Pack"><span class="id" title="constructor">Pack</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.IntegralDomain.ClassDef.T"><span class="id" title="variable">T</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#c"><span class="id" title="variable">c</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.IntegralDomain.ClassDef.T"><span class="id" title="variable">T</span></a>.<br/>
+<span class="id" title="keyword">Let</span> <a name="GRing.IntegralDomain.ClassDef.xT"><span class="id" title="variable">xT</span></a> := <span class="id" title="keyword">let</span>: <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.IntegralDomain.Pack"><span class="id" title="constructor">Pack</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="mathcomp.algebra.ssralg.html#GRing.IntegralDomain.ClassDef.cT"><span class="id" title="variable">cT</span></a> <span class="id" title="tactic">in</span> <span class="id" title="var">T</span>.<br/>
+<span class="id" title="keyword">Notation</span> <a name="GRing.IntegralDomain.xclass"><span class="id" title="abbreviation">xclass</span></a> := (<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.IntegralDomain.class"><span class="id" title="definition">class</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssreflect.html#4509b22bf26e3d6d771897e22bd8bc8f"><span class="id" title="notation">:</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.IntegralDomain.class_of"><span class="id" title="record">class_of</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.IntegralDomain.ClassDef.xT"><span class="id" title="variable">xT</span></a>).<br/>
+
+<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.IntegralDomain.pack"><span class="id" title="definition">pack</span></a> <span class="id" title="var">b0</span> (<span class="id" title="var">m0</span> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.IntegralDomain.axiom"><span class="id" title="definition">axiom</span></a> (@<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Ring.Pack"><span class="id" title="constructor">Ring.Pack</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.IntegralDomain.ClassDef.T"><span class="id" title="variable">T</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#b0"><span class="id" title="variable">b0</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.IntegralDomain.ClassDef.T"><span class="id" title="variable">T</span></a>)) :=<br/>
+&nbsp;&nbsp;<span class="id" title="keyword">fun</span> <span class="id" title="var">bT</span> <span class="id" title="var">b</span> &amp; <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#phant_id"><span class="id" title="definition">phant_id</span></a> (<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ComUnitRing.class"><span class="id" title="definition">ComUnitRing.class</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#bT"><span class="id" title="variable">bT</span></a>) <a class="idref" href="mathcomp.algebra.ssralg.html#b"><span class="id" title="variable">b</span></a> ⇒<br/>
+&nbsp;&nbsp;<span class="id" title="keyword">fun</span> <span class="id" title="var">m</span> &amp; <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#phant_id"><span class="id" title="definition">phant_id</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#m0"><span class="id" title="variable">m0</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#m"><span class="id" title="variable">m</span></a> ⇒ <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.IntegralDomain.Pack"><span class="id" title="constructor">Pack</span></a> (@<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.IntegralDomain.Class"><span class="id" title="constructor">Class</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.IntegralDomain.ClassDef.T"><span class="id" title="variable">T</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#b"><span class="id" title="variable">b</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#m"><span class="id" title="variable">m</span></a>) <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.IntegralDomain.ClassDef.T"><span class="id" title="variable">T</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.IntegralDomain.eqType"><span class="id" title="definition">eqType</span></a> := @<a class="idref" href="mathcomp.ssreflect.eqtype.html#Equality.Pack"><span class="id" title="constructor">Equality.Pack</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.IntegralDomain.ClassDef.cT"><span class="id" title="variable">cT</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.IntegralDomain.xclass"><span class="id" title="abbreviation">xclass</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.IntegralDomain.ClassDef.xT"><span class="id" title="variable">xT</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.IntegralDomain.choiceType"><span class="id" title="definition">choiceType</span></a> := @<a class="idref" href="mathcomp.ssreflect.choice.html#Choice.Pack"><span class="id" title="constructor">Choice.Pack</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.IntegralDomain.ClassDef.cT"><span class="id" title="variable">cT</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.IntegralDomain.xclass"><span class="id" title="abbreviation">xclass</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.IntegralDomain.ClassDef.xT"><span class="id" title="variable">xT</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.IntegralDomain.zmodType"><span class="id" title="definition">zmodType</span></a> := @<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Zmodule.Pack"><span class="id" title="constructor">Zmodule.Pack</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.IntegralDomain.ClassDef.cT"><span class="id" title="variable">cT</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.IntegralDomain.xclass"><span class="id" title="abbreviation">xclass</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.IntegralDomain.ClassDef.xT"><span class="id" title="variable">xT</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.IntegralDomain.ringType"><span class="id" title="definition">ringType</span></a> := @<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Ring.Pack"><span class="id" title="constructor">Ring.Pack</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.IntegralDomain.ClassDef.cT"><span class="id" title="variable">cT</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.IntegralDomain.xclass"><span class="id" title="abbreviation">xclass</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.IntegralDomain.ClassDef.xT"><span class="id" title="variable">xT</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.IntegralDomain.comRingType"><span class="id" title="definition">comRingType</span></a> := @<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ComRing.Pack"><span class="id" title="constructor">ComRing.Pack</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.IntegralDomain.ClassDef.cT"><span class="id" title="variable">cT</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.IntegralDomain.xclass"><span class="id" title="abbreviation">xclass</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.IntegralDomain.ClassDef.xT"><span class="id" title="variable">xT</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.IntegralDomain.unitRingType"><span class="id" title="definition">unitRingType</span></a> := @<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.UnitRing.Pack"><span class="id" title="constructor">UnitRing.Pack</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.IntegralDomain.ClassDef.cT"><span class="id" title="variable">cT</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.IntegralDomain.xclass"><span class="id" title="abbreviation">xclass</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.IntegralDomain.ClassDef.xT"><span class="id" title="variable">xT</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.IntegralDomain.comUnitRingType"><span class="id" title="definition">comUnitRingType</span></a> := @<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ComUnitRing.Pack"><span class="id" title="constructor">ComUnitRing.Pack</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.IntegralDomain.ClassDef.cT"><span class="id" title="variable">cT</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.IntegralDomain.xclass"><span class="id" title="abbreviation">xclass</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.IntegralDomain.ClassDef.xT"><span class="id" title="variable">xT</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">End</span> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.IntegralDomain.ClassDef"><span class="id" title="section">ClassDef</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Module</span> <a name="GRing.IntegralDomain.Exports"><span class="id" title="module">Exports</span></a>.<br/>
+<span class="id" title="keyword">Coercion</span> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.IntegralDomain.base"><span class="id" title="projection">base</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.IntegralDomain.base"><span class="id" title="projection">:</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.IntegralDomain.base"><span class="id" title="projection">class_of</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.IntegralDomain.base"><span class="id" title="projection">&gt;-&gt;</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.IntegralDomain.base"><span class="id" title="projection">ComUnitRing.class_of</span></a>.<br/>
+<span class="id" title="keyword">Coercion</span> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.IntegralDomain.mixin"><span class="id" title="projection">mixin</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.IntegralDomain.mixin"><span class="id" title="projection">:</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.IntegralDomain.mixin"><span class="id" title="projection">class_of</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.IntegralDomain.mixin"><span class="id" title="projection">&gt;-&gt;</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.IntegralDomain.mixin"><span class="id" title="projection">axiom</span></a>.<br/>
+<span class="id" title="keyword">Coercion</span> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.IntegralDomain.sort"><span class="id" title="projection">sort</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.IntegralDomain.sort"><span class="id" title="projection">:</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.IntegralDomain.sort"><span class="id" title="projection">type</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.IntegralDomain.sort"><span class="id" title="projection">&gt;-&gt;</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.IntegralDomain.sort"><span class="id" title="projection">Sortclass</span></a>.<br/>
+<span class="id" title="keyword">Coercion</span> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.IntegralDomain.eqType"><span class="id" title="definition">eqType</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.IntegralDomain.eqType"><span class="id" title="definition">:</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.IntegralDomain.eqType"><span class="id" title="definition">type</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.IntegralDomain.eqType"><span class="id" title="definition">&gt;-&gt;</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.IntegralDomain.eqType"><span class="id" title="definition">Equality.type</span></a>.<br/>
+<span class="id" title="keyword">Canonical</span> <span class="id" title="var">eqType</span>.<br/>
+<span class="id" title="keyword">Coercion</span> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.IntegralDomain.choiceType"><span class="id" title="definition">choiceType</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.IntegralDomain.choiceType"><span class="id" title="definition">:</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.IntegralDomain.choiceType"><span class="id" title="definition">type</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.IntegralDomain.choiceType"><span class="id" title="definition">&gt;-&gt;</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.IntegralDomain.choiceType"><span class="id" title="definition">Choice.type</span></a>.<br/>
+<span class="id" title="keyword">Canonical</span> <span class="id" title="var">choiceType</span>.<br/>
+<span class="id" title="keyword">Coercion</span> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.IntegralDomain.zmodType"><span class="id" title="definition">zmodType</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.IntegralDomain.zmodType"><span class="id" title="definition">:</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.IntegralDomain.zmodType"><span class="id" title="definition">type</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.IntegralDomain.zmodType"><span class="id" title="definition">&gt;-&gt;</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.IntegralDomain.zmodType"><span class="id" title="definition">Zmodule.type</span></a>.<br/>
+<span class="id" title="keyword">Canonical</span> <span class="id" title="var">zmodType</span>.<br/>
+<span class="id" title="keyword">Coercion</span> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.IntegralDomain.ringType"><span class="id" title="definition">ringType</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.IntegralDomain.ringType"><span class="id" title="definition">:</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.IntegralDomain.ringType"><span class="id" title="definition">type</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.IntegralDomain.ringType"><span class="id" title="definition">&gt;-&gt;</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.IntegralDomain.ringType"><span class="id" title="definition">Ring.type</span></a>.<br/>
+<span class="id" title="keyword">Canonical</span> <span class="id" title="var">ringType</span>.<br/>
+<span class="id" title="keyword">Coercion</span> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.IntegralDomain.comRingType"><span class="id" title="definition">comRingType</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.IntegralDomain.comRingType"><span class="id" title="definition">:</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.IntegralDomain.comRingType"><span class="id" title="definition">type</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.IntegralDomain.comRingType"><span class="id" title="definition">&gt;-&gt;</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.IntegralDomain.comRingType"><span class="id" title="definition">ComRing.type</span></a>.<br/>
+<span class="id" title="keyword">Canonical</span> <span class="id" title="var">comRingType</span>.<br/>
+<span class="id" title="keyword">Coercion</span> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.IntegralDomain.unitRingType"><span class="id" title="definition">unitRingType</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.IntegralDomain.unitRingType"><span class="id" title="definition">:</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.IntegralDomain.unitRingType"><span class="id" title="definition">type</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.IntegralDomain.unitRingType"><span class="id" title="definition">&gt;-&gt;</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.IntegralDomain.unitRingType"><span class="id" title="definition">UnitRing.type</span></a>.<br/>
+<span class="id" title="keyword">Canonical</span> <span class="id" title="var">unitRingType</span>.<br/>
+<span class="id" title="keyword">Coercion</span> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.IntegralDomain.comUnitRingType"><span class="id" title="definition">comUnitRingType</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.IntegralDomain.comUnitRingType"><span class="id" title="definition">:</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.IntegralDomain.comUnitRingType"><span class="id" title="definition">type</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.IntegralDomain.comUnitRingType"><span class="id" title="definition">&gt;-&gt;</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.IntegralDomain.comUnitRingType"><span class="id" title="definition">ComUnitRing.type</span></a>.<br/>
+<span class="id" title="keyword">Canonical</span> <span class="id" title="var">comUnitRingType</span>.<br/>
+<span class="id" title="keyword">Notation</span> <a name="GRing.IntegralDomain.Exports.idomainType"><span class="id" title="abbreviation">idomainType</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.IntegralDomain.type"><span class="id" title="record">type</span></a>.<br/>
+<span class="id" title="keyword">Notation</span> <a name="GRing.IntegralDomain.Exports.IdomainType"><span class="id" title="abbreviation">IdomainType</span></a> <span class="id" title="var">T</span> <span class="id" title="var">m</span> := (@<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.IntegralDomain.pack"><span class="id" title="definition">pack</span></a> <span class="id" title="var">T</span> <span class="id" title="var">_</span> <span class="id" title="var">m</span> <span class="id" title="var">_</span> <span class="id" title="var">_</span> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#id"><span class="id" title="abbreviation">id</span></a> <span class="id" title="var">_</span> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#id"><span class="id" title="abbreviation">id</span></a>).<br/>
+<span class="id" title="keyword">Notation</span> <a name="29ac7480dfde2720a0c36d25103fa4a7"><span class="id" title="notation">&quot;</span></a>[ 'idomainType' 'of' T 'for' cT ]" := (@<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.IntegralDomain.clone"><span class="id" title="definition">clone</span></a> <span class="id" title="var">T</span> <span class="id" title="var">cT</span> <span class="id" title="var">_</span> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#idfun"><span class="id" title="abbreviation">idfun</span></a>)<br/>
+&nbsp;&nbsp;(<span class="id" title="tactic">at</span> <span class="id" title="keyword">level</span> 0, <span class="id" title="var">format</span> "[ 'idomainType' 'of' T 'for' cT ]") : <span class="id" title="var">form_scope</span>.<br/>
+<span class="id" title="keyword">Notation</span> <a name="9894f8fff6e44a40eb9fd9cfcbde7780"><span class="id" title="notation">&quot;</span></a>[ 'idomainType' 'of' T ]" := (@<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.IntegralDomain.clone"><span class="id" title="definition">clone</span></a> <span class="id" title="var">T</span> <span class="id" title="var">_</span> <span class="id" title="var">_</span> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#id"><span class="id" title="abbreviation">id</span></a>)<br/>
+&nbsp;&nbsp;(<span class="id" title="tactic">at</span> <span class="id" title="keyword">level</span> 0, <span class="id" title="var">format</span> "[ 'idomainType' 'of' T ]") : <span class="id" title="var">form_scope</span>.<br/>
+<span class="id" title="keyword">End</span> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.IntegralDomain.Exports"><span class="id" title="module">Exports</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">End</span> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.IntegralDomain"><span class="id" title="module">IntegralDomain</span></a>.<br/>
+<span class="id" title="keyword">Import</span> <span class="id" title="var">IntegralDomain.Exports</span>.<br/>
+
+<br/>
+<span class="id" title="keyword">Section</span> <a name="GRing.IntegralDomainTheory"><span class="id" title="section">IntegralDomainTheory</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Variable</span> <a name="GRing.IntegralDomainTheory.R"><span class="id" title="variable">R</span></a> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.idomainType"><span class="id" title="abbreviation">idomainType</span></a>.<br/>
+<span class="id" title="keyword">Implicit</span> <span class="id" title="keyword">Types</span> <span class="id" title="var">x</span> <span class="id" title="var">y</span> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.IntegralDomainTheory.R"><span class="id" title="variable">R</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.mulf_eq0"><span class="id" title="lemma">mulf_eq0</span></a> <span class="id" title="var">x</span> <span class="id" title="var">y</span> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#ed99e7035d9a1f8a2c1515be81ac2e5f"><span class="id" title="notation">×</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#y"><span class="id" title="variable">y</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#17d28d004d0863cb022d4ce832ddaaae"><span class="id" title="notation">==</span></a> 0<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">)</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#14a7a9c7dc61f86bfb664d400fabaf8a"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#17d28d004d0863cb022d4ce832ddaaae"><span class="id" title="notation">==</span></a> 0<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#14a7a9c7dc61f86bfb664d400fabaf8a"><span class="id" title="notation">)</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#14a7a9c7dc61f86bfb664d400fabaf8a"><span class="id" title="notation">||</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#14a7a9c7dc61f86bfb664d400fabaf8a"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#y"><span class="id" title="variable">y</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#17d28d004d0863cb022d4ce832ddaaae"><span class="id" title="notation">==</span></a> 0<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#14a7a9c7dc61f86bfb664d400fabaf8a"><span class="id" title="notation">)</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.prodf_eq0"><span class="id" title="lemma">prodf_eq0</span></a> (<span class="id" title="var">I</span> : <a class="idref" href="mathcomp.ssreflect.fintype.html#Finite.Exports.finType"><span class="id" title="abbreviation">finType</span></a>) (<span class="id" title="var">P</span> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#pred"><span class="id" title="definition">pred</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#I"><span class="id" title="variable">I</span></a>) (<span class="id" title="var">F</span> : <a class="idref" href="mathcomp.algebra.ssralg.html#I"><span class="id" title="variable">I</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.IntegralDomainTheory.R"><span class="id" title="variable">R</span></a>) :<br/>
+&nbsp;&nbsp;<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#reflect"><span class="id" title="abbreviation">reflect</span></a> (<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#28b18e493f7cb0bd8447607bdc385ff8"><span class="id" title="notation">exists2</span></a> <span class="id" title="var">i</span><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#28b18e493f7cb0bd8447607bdc385ff8"><span class="id" title="notation">,</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#P"><span class="id" title="variable">P</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#i"><span class="id" title="variable">i</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#28b18e493f7cb0bd8447607bdc385ff8"><span class="id" title="notation">&amp;</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#28b18e493f7cb0bd8447607bdc385ff8"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#F"><span class="id" title="variable">F</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#i"><span class="id" title="variable">i</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#17d28d004d0863cb022d4ce832ddaaae"><span class="id" title="notation">==</span></a> 0<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#28b18e493f7cb0bd8447607bdc385ff8"><span class="id" title="notation">)</span></a>) (<a class="idref" href="mathcomp.algebra.ssralg.html#939d2f6b3eeb99c97ee97374f97463ee"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#939d2f6b3eeb99c97ee97374f97463ee"><span class="id" title="notation">prod_</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#939d2f6b3eeb99c97ee97374f97463ee"><span class="id" title="notation">(</span></a><span class="id" title="var">i</span> <a class="idref" href="mathcomp.algebra.ssralg.html#939d2f6b3eeb99c97ee97374f97463ee"><span class="id" title="notation">|</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#P"><span class="id" title="variable">P</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#i"><span class="id" title="variable">i</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#939d2f6b3eeb99c97ee97374f97463ee"><span class="id" title="notation">)</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#F"><span class="id" title="variable">F</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#i"><span class="id" title="variable">i</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#17d28d004d0863cb022d4ce832ddaaae"><span class="id" title="notation">==</span></a> 0).<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.prodf_seq_eq0"><span class="id" title="lemma">prodf_seq_eq0</span></a> <span class="id" title="var">I</span> <span class="id" title="var">r</span> (<span class="id" title="var">P</span> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#pred"><span class="id" title="definition">pred</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#I"><span class="id" title="variable">I</span></a>) (<span class="id" title="var">F</span> : <a class="idref" href="mathcomp.algebra.ssralg.html#I"><span class="id" title="variable">I</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.IntegralDomainTheory.R"><span class="id" title="variable">R</span></a>) :<br/>
+&nbsp;&nbsp;<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#3f1a950be6bcb72c9434150471b42417"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#3f1a950be6bcb72c9434150471b42417"><span class="id" title="notation">prod_</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#3f1a950be6bcb72c9434150471b42417"><span class="id" title="notation">(</span></a><span class="id" title="var">i</span> <a class="idref" href="mathcomp.algebra.ssralg.html#3f1a950be6bcb72c9434150471b42417"><span class="id" title="notation">&lt;-</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#r"><span class="id" title="variable">r</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#3f1a950be6bcb72c9434150471b42417"><span class="id" title="notation">|</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#P"><span class="id" title="variable">P</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#i"><span class="id" title="variable">i</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#3f1a950be6bcb72c9434150471b42417"><span class="id" title="notation">)</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#F"><span class="id" title="variable">F</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#i"><span class="id" title="variable">i</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#17d28d004d0863cb022d4ce832ddaaae"><span class="id" title="notation">==</span></a> 0<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">)</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#has"><span class="id" title="definition">has</span></a> (<span class="id" title="keyword">fun</span> <span class="id" title="var">i</span> ⇒ <a class="idref" href="mathcomp.algebra.ssralg.html#P"><span class="id" title="variable">P</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#i"><span class="id" title="variable">i</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#49ac24efa716d8b0ee8943bc1d1769a9"><span class="id" title="notation">&amp;&amp;</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#49ac24efa716d8b0ee8943bc1d1769a9"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#F"><span class="id" title="variable">F</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#i"><span class="id" title="variable">i</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#17d28d004d0863cb022d4ce832ddaaae"><span class="id" title="notation">==</span></a> 0<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#49ac24efa716d8b0ee8943bc1d1769a9"><span class="id" title="notation">)</span></a>) <a class="idref" href="mathcomp.algebra.ssralg.html#r"><span class="id" title="variable">r</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.mulf_neq0"><span class="id" title="lemma">mulf_neq0</span></a> <span class="id" title="var">x</span> <span class="id" title="var">y</span> : <a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#b1eeadc2feabc7422252baa895418c7b"><span class="id" title="notation">!=</span></a> 0 <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#y"><span class="id" title="variable">y</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#b1eeadc2feabc7422252baa895418c7b"><span class="id" title="notation">!=</span></a> 0 <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#ed99e7035d9a1f8a2c1515be81ac2e5f"><span class="id" title="notation">×</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#y"><span class="id" title="variable">y</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#b1eeadc2feabc7422252baa895418c7b"><span class="id" title="notation">!=</span></a> 0.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.prodf_neq0"><span class="id" title="lemma">prodf_neq0</span></a> (<span class="id" title="var">I</span> : <a class="idref" href="mathcomp.ssreflect.fintype.html#Finite.Exports.finType"><span class="id" title="abbreviation">finType</span></a>) (<span class="id" title="var">P</span> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#pred"><span class="id" title="definition">pred</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#I"><span class="id" title="variable">I</span></a>) (<span class="id" title="var">F</span> : <a class="idref" href="mathcomp.algebra.ssralg.html#I"><span class="id" title="variable">I</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.IntegralDomainTheory.R"><span class="id" title="variable">R</span></a>) :<br/>
+&nbsp;&nbsp;<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#reflect"><span class="id" title="abbreviation">reflect</span></a> (<span class="id" title="keyword">∀</span> <span class="id" title="var">i</span>, <a class="idref" href="mathcomp.algebra.ssralg.html#P"><span class="id" title="variable">P</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#i"><span class="id" title="variable">i</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#F"><span class="id" title="variable">F</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#i"><span class="id" title="variable">i</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#b1eeadc2feabc7422252baa895418c7b"><span class="id" title="notation">!=</span></a> 0<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">)</span></a>) (<a class="idref" href="mathcomp.algebra.ssralg.html#939d2f6b3eeb99c97ee97374f97463ee"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#939d2f6b3eeb99c97ee97374f97463ee"><span class="id" title="notation">prod_</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#939d2f6b3eeb99c97ee97374f97463ee"><span class="id" title="notation">(</span></a><span class="id" title="var">i</span> <a class="idref" href="mathcomp.algebra.ssralg.html#939d2f6b3eeb99c97ee97374f97463ee"><span class="id" title="notation">|</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#P"><span class="id" title="variable">P</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#i"><span class="id" title="variable">i</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#939d2f6b3eeb99c97ee97374f97463ee"><span class="id" title="notation">)</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#F"><span class="id" title="variable">F</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#i"><span class="id" title="variable">i</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#b1eeadc2feabc7422252baa895418c7b"><span class="id" title="notation">!=</span></a> 0).<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.prodf_seq_neq0"><span class="id" title="lemma">prodf_seq_neq0</span></a> <span class="id" title="var">I</span> <span class="id" title="var">r</span> (<span class="id" title="var">P</span> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#pred"><span class="id" title="definition">pred</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#I"><span class="id" title="variable">I</span></a>) (<span class="id" title="var">F</span> : <a class="idref" href="mathcomp.algebra.ssralg.html#I"><span class="id" title="variable">I</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.IntegralDomainTheory.R"><span class="id" title="variable">R</span></a>) :<br/>
+&nbsp;&nbsp;<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#3f1a950be6bcb72c9434150471b42417"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#3f1a950be6bcb72c9434150471b42417"><span class="id" title="notation">prod_</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#3f1a950be6bcb72c9434150471b42417"><span class="id" title="notation">(</span></a><span class="id" title="var">i</span> <a class="idref" href="mathcomp.algebra.ssralg.html#3f1a950be6bcb72c9434150471b42417"><span class="id" title="notation">&lt;-</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#r"><span class="id" title="variable">r</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#3f1a950be6bcb72c9434150471b42417"><span class="id" title="notation">|</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#P"><span class="id" title="variable">P</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#i"><span class="id" title="variable">i</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#3f1a950be6bcb72c9434150471b42417"><span class="id" title="notation">)</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#F"><span class="id" title="variable">F</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#i"><span class="id" title="variable">i</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#b1eeadc2feabc7422252baa895418c7b"><span class="id" title="notation">!=</span></a> 0<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">)</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#all"><span class="id" title="definition">all</span></a> (<span class="id" title="keyword">fun</span> <span class="id" title="var">i</span> ⇒ <a class="idref" href="mathcomp.algebra.ssralg.html#P"><span class="id" title="variable">P</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#i"><span class="id" title="variable">i</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#3b17cb5f3a16fa64a62421f68786f750"><span class="id" title="notation">==&gt;</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#3b17cb5f3a16fa64a62421f68786f750"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#F"><span class="id" title="variable">F</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#i"><span class="id" title="variable">i</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#b1eeadc2feabc7422252baa895418c7b"><span class="id" title="notation">!=</span></a> 0<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#3b17cb5f3a16fa64a62421f68786f750"><span class="id" title="notation">)</span></a>) <a class="idref" href="mathcomp.algebra.ssralg.html#r"><span class="id" title="variable">r</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.expf_eq0"><span class="id" title="lemma">expf_eq0</span></a> <span class="id" title="var">x</span> <span class="id" title="var">n</span> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#b5a6699e28c97bb33352772cfa3ea869"><span class="id" title="notation">^+</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#n"><span class="id" title="variable">n</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#17d28d004d0863cb022d4ce832ddaaae"><span class="id" title="notation">==</span></a> 0<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">)</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#49ac24efa716d8b0ee8943bc1d1769a9"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#n"><span class="id" title="variable">n</span></a> <a class="idref" href="mathcomp.ssreflect.ssrnat.html#19ab5cfd7e4f60fa14f22b576013bd96"><span class="id" title="notation">&gt;</span></a> 0<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#49ac24efa716d8b0ee8943bc1d1769a9"><span class="id" title="notation">)</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#49ac24efa716d8b0ee8943bc1d1769a9"><span class="id" title="notation">&amp;&amp;</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#49ac24efa716d8b0ee8943bc1d1769a9"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#17d28d004d0863cb022d4ce832ddaaae"><span class="id" title="notation">==</span></a> 0<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#49ac24efa716d8b0ee8943bc1d1769a9"><span class="id" title="notation">)</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.sqrf_eq0"><span class="id" title="lemma">sqrf_eq0</span></a> <span class="id" title="var">x</span> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#b5a6699e28c97bb33352772cfa3ea869"><span class="id" title="notation">^+</span></a> 2 <a class="idref" href="mathcomp.ssreflect.eqtype.html#17d28d004d0863cb022d4ce832ddaaae"><span class="id" title="notation">==</span></a> 0<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">)</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#17d28d004d0863cb022d4ce832ddaaae"><span class="id" title="notation">==</span></a> 0<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">)</span></a>. <br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.expf_neq0"><span class="id" title="lemma">expf_neq0</span></a> <span class="id" title="var">x</span> <span class="id" title="var">m</span> : <a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#b1eeadc2feabc7422252baa895418c7b"><span class="id" title="notation">!=</span></a> 0 <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#b5a6699e28c97bb33352772cfa3ea869"><span class="id" title="notation">^+</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#m"><span class="id" title="variable">m</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#b1eeadc2feabc7422252baa895418c7b"><span class="id" title="notation">!=</span></a> 0.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.natf_neq0"><span class="id" title="lemma">natf_neq0</span></a> <span class="id" title="var">n</span> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#n"><span class="id" title="variable">n</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#c191333b9c7c034282647fbffacc9d18"><span class="id" title="notation">%:</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#c191333b9c7c034282647fbffacc9d18"><span class="id" title="notation">R</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#9e45f909d1732d6d9e153b650829bccf"><span class="id" title="notation">!=</span></a> 0 <a class="idref" href="mathcomp.ssreflect.eqtype.html#9e45f909d1732d6d9e153b650829bccf"><span class="id" title="notation">:&gt;</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.IntegralDomainTheory.R"><span class="id" title="variable">R</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">)</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#51fab11b73193ca5e8e7a62cac129ebc"><span class="id" title="notation">[</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#51fab11b73193ca5e8e7a62cac129ebc"><span class="id" title="notation">char</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.IntegralDomainTheory.R"><span class="id" title="variable">R</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#51fab11b73193ca5e8e7a62cac129ebc"><span class="id" title="notation">]</span></a><a class="idref" href="mathcomp.ssreflect.prime.html#233366c70a33ee49ba3eedb41626d66a"><span class="id" title="notation">^'</span></a><a class="idref" href="mathcomp.ssreflect.prime.html#8663a77d1d910826e10ba42d1e8d2a02"><span class="id" title="notation">.-</span></a><a class="idref" href="mathcomp.ssreflect.prime.html#8663a77d1d910826e10ba42d1e8d2a02"><span class="id" title="notation">nat</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#n"><span class="id" title="variable">n</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.natf0_char"><span class="id" title="lemma">natf0_char</span></a> <span class="id" title="var">n</span> : <a class="idref" href="mathcomp.algebra.ssralg.html#n"><span class="id" title="variable">n</span></a> <a class="idref" href="mathcomp.ssreflect.ssrnat.html#19ab5cfd7e4f60fa14f22b576013bd96"><span class="id" title="notation">&gt;</span></a> 0 <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#n"><span class="id" title="variable">n</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#c191333b9c7c034282647fbffacc9d18"><span class="id" title="notation">%:</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#c191333b9c7c034282647fbffacc9d18"><span class="id" title="notation">R</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#340b60eb5a3e9913f807040630cb8d43"><span class="id" title="notation">==</span></a> 0 <a class="idref" href="mathcomp.ssreflect.eqtype.html#340b60eb5a3e9913f807040630cb8d43"><span class="id" title="notation">:&gt;</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.IntegralDomainTheory.R"><span class="id" title="variable">R</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#84eb6d2849dbf3581b1c0c05add5f2d8"><span class="id" title="notation">∃</span></a> <span class="id" title="var">p</span><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#84eb6d2849dbf3581b1c0c05add5f2d8"><span class="id" title="notation">,</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#p"><span class="id" title="variable">p</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">\</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">in</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#51fab11b73193ca5e8e7a62cac129ebc"><span class="id" title="notation">[</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#51fab11b73193ca5e8e7a62cac129ebc"><span class="id" title="notation">char</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.IntegralDomainTheory.R"><span class="id" title="variable">R</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#51fab11b73193ca5e8e7a62cac129ebc"><span class="id" title="notation">]</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.charf'_nat"><span class="id" title="lemma">charf'_nat</span></a> <span class="id" title="var">n</span> : <a class="idref" href="mathcomp.algebra.ssralg.html#51fab11b73193ca5e8e7a62cac129ebc"><span class="id" title="notation">[</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#51fab11b73193ca5e8e7a62cac129ebc"><span class="id" title="notation">char</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.IntegralDomainTheory.R"><span class="id" title="variable">R</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#51fab11b73193ca5e8e7a62cac129ebc"><span class="id" title="notation">]</span></a><a class="idref" href="mathcomp.ssreflect.prime.html#233366c70a33ee49ba3eedb41626d66a"><span class="id" title="notation">^'</span></a><a class="idref" href="mathcomp.ssreflect.prime.html#8663a77d1d910826e10ba42d1e8d2a02"><span class="id" title="notation">.-</span></a><a class="idref" href="mathcomp.ssreflect.prime.html#8663a77d1d910826e10ba42d1e8d2a02"><span class="id" title="notation">nat</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#n"><span class="id" title="variable">n</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#n"><span class="id" title="variable">n</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#c191333b9c7c034282647fbffacc9d18"><span class="id" title="notation">%:</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#c191333b9c7c034282647fbffacc9d18"><span class="id" title="notation">R</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#9e45f909d1732d6d9e153b650829bccf"><span class="id" title="notation">!=</span></a> 0 <a class="idref" href="mathcomp.ssreflect.eqtype.html#9e45f909d1732d6d9e153b650829bccf"><span class="id" title="notation">:&gt;</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.IntegralDomainTheory.R"><span class="id" title="variable">R</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">)</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.charf0P"><span class="id" title="lemma">charf0P</span></a> : <a class="idref" href="mathcomp.algebra.ssralg.html#51fab11b73193ca5e8e7a62cac129ebc"><span class="id" title="notation">[</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#51fab11b73193ca5e8e7a62cac129ebc"><span class="id" title="notation">char</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.IntegralDomainTheory.R"><span class="id" title="variable">R</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#51fab11b73193ca5e8e7a62cac129ebc"><span class="id" title="notation">]</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#20bf07099d6d8cf369383b22fd37862e"><span class="id" title="notation">=</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#20bf07099d6d8cf369383b22fd37862e"><span class="id" title="notation">i</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#pred0"><span class="id" title="definition">pred0</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#df1ced36fc33ce188051218bca314374"><span class="id" title="notation">↔</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#df1ced36fc33ce188051218bca314374"><span class="id" title="notation">(</span></a><span class="id" title="keyword">∀</span> <span class="id" title="var">n</span>, <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#n"><span class="id" title="variable">n</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#c191333b9c7c034282647fbffacc9d18"><span class="id" title="notation">%:</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#c191333b9c7c034282647fbffacc9d18"><span class="id" title="notation">R</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#340b60eb5a3e9913f807040630cb8d43"><span class="id" title="notation">==</span></a> 0 <a class="idref" href="mathcomp.ssreflect.eqtype.html#340b60eb5a3e9913f807040630cb8d43"><span class="id" title="notation">:&gt;</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.IntegralDomainTheory.R"><span class="id" title="variable">R</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">)</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> (<a class="idref" href="mathcomp.algebra.ssralg.html#n"><span class="id" title="variable">n</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#17d28d004d0863cb022d4ce832ddaaae"><span class="id" title="notation">==</span></a> 0)%<span class="id" title="var">N</span><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#df1ced36fc33ce188051218bca314374"><span class="id" title="notation">)</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.eqf_sqr"><span class="id" title="lemma">eqf_sqr</span></a> <span class="id" title="var">x</span> <span class="id" title="var">y</span> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#b5a6699e28c97bb33352772cfa3ea869"><span class="id" title="notation">^+</span></a> 2 <a class="idref" href="mathcomp.ssreflect.eqtype.html#17d28d004d0863cb022d4ce832ddaaae"><span class="id" title="notation">==</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#y"><span class="id" title="variable">y</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#b5a6699e28c97bb33352772cfa3ea869"><span class="id" title="notation">^+</span></a> 2<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">)</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#14a7a9c7dc61f86bfb664d400fabaf8a"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#17d28d004d0863cb022d4ce832ddaaae"><span class="id" title="notation">==</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#y"><span class="id" title="variable">y</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#14a7a9c7dc61f86bfb664d400fabaf8a"><span class="id" title="notation">)</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#14a7a9c7dc61f86bfb664d400fabaf8a"><span class="id" title="notation">||</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#14a7a9c7dc61f86bfb664d400fabaf8a"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#17d28d004d0863cb022d4ce832ddaaae"><span class="id" title="notation">==</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#eefae7eea8ed2b8fccf150cb653d7a7b"><span class="id" title="notation">-</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#y"><span class="id" title="variable">y</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#14a7a9c7dc61f86bfb664d400fabaf8a"><span class="id" title="notation">)</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.mulfI"><span class="id" title="lemma">mulfI</span></a> <span class="id" title="var">x</span> : <a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#b1eeadc2feabc7422252baa895418c7b"><span class="id" title="notation">!=</span></a> 0 <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#injective"><span class="id" title="definition">injective</span></a> ( <a class="idref" href="mathcomp.algebra.ssralg.html#6498e6e308d8a143464cf2d2ba603d36"><span class="id" title="notation">*%</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#6498e6e308d8a143464cf2d2ba603d36"><span class="id" title="notation">R</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#6498e6e308d8a143464cf2d2ba603d36"><span class="id" title="notation">x</span></a>).<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.mulIf"><span class="id" title="lemma">mulIf</span></a> <span class="id" title="var">x</span> : <a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#b1eeadc2feabc7422252baa895418c7b"><span class="id" title="notation">!=</span></a> 0 <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#injective"><span class="id" title="definition">injective</span></a> ( <a class="idref" href="mathcomp.algebra.ssralg.html#6498e6e308d8a143464cf2d2ba603d36"><span class="id" title="notation">*%</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#6498e6e308d8a143464cf2d2ba603d36"><span class="id" title="notation">R</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#8f28bbd804547edd8de802d63ef85617"><span class="id" title="notation">^~</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a>).<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.divfI"><span class="id" title="lemma">divfI</span></a> <span class="id" title="var">x</span> : <a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#b1eeadc2feabc7422252baa895418c7b"><span class="id" title="notation">!=</span></a> 0 <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#injective"><span class="id" title="definition">injective</span></a> (<span class="id" title="keyword">fun</span> <span class="id" title="var">y</span> ⇒ <a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#1adb36345c2607a4dd991537de5ddba3"><span class="id" title="notation">/</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#y"><span class="id" title="variable">y</span></a>).<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.divIf"><span class="id" title="lemma">divIf</span></a> <span class="id" title="var">y</span> : <a class="idref" href="mathcomp.algebra.ssralg.html#y"><span class="id" title="variable">y</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#b1eeadc2feabc7422252baa895418c7b"><span class="id" title="notation">!=</span></a> 0 <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#injective"><span class="id" title="definition">injective</span></a> (<span class="id" title="keyword">fun</span> <span class="id" title="var">x</span> ⇒ <a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#1adb36345c2607a4dd991537de5ddba3"><span class="id" title="notation">/</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#y"><span class="id" title="variable">y</span></a>).<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.sqrf_eq1"><span class="id" title="lemma">sqrf_eq1</span></a> <span class="id" title="var">x</span> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#b5a6699e28c97bb33352772cfa3ea869"><span class="id" title="notation">^+</span></a> 2 <a class="idref" href="mathcomp.ssreflect.eqtype.html#17d28d004d0863cb022d4ce832ddaaae"><span class="id" title="notation">==</span></a> 1<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">)</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#14a7a9c7dc61f86bfb664d400fabaf8a"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#17d28d004d0863cb022d4ce832ddaaae"><span class="id" title="notation">==</span></a> 1<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#14a7a9c7dc61f86bfb664d400fabaf8a"><span class="id" title="notation">)</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#14a7a9c7dc61f86bfb664d400fabaf8a"><span class="id" title="notation">||</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#14a7a9c7dc61f86bfb664d400fabaf8a"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#17d28d004d0863cb022d4ce832ddaaae"><span class="id" title="notation">==</span></a> -1<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#14a7a9c7dc61f86bfb664d400fabaf8a"><span class="id" title="notation">)</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.expfS_eq1"><span class="id" title="lemma">expfS_eq1</span></a> <span class="id" title="var">x</span> <span class="id" title="var">n</span> :<br/>
+&nbsp;&nbsp;<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#b5a6699e28c97bb33352772cfa3ea869"><span class="id" title="notation">^+</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#n"><span class="id" title="variable">n</span></a><a class="idref" href="mathcomp.ssreflect.ssrnat.html#361454269931ea8643f7b402f2ab7222"><span class="id" title="notation">.+1</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#17d28d004d0863cb022d4ce832ddaaae"><span class="id" title="notation">==</span></a> 1<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">)</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#14a7a9c7dc61f86bfb664d400fabaf8a"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#17d28d004d0863cb022d4ce832ddaaae"><span class="id" title="notation">==</span></a> 1<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#14a7a9c7dc61f86bfb664d400fabaf8a"><span class="id" title="notation">)</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#14a7a9c7dc61f86bfb664d400fabaf8a"><span class="id" title="notation">||</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#14a7a9c7dc61f86bfb664d400fabaf8a"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#33f78485f60ea5a637d17f41367f37d2"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#33f78485f60ea5a637d17f41367f37d2"><span class="id" title="notation">sum_</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#33f78485f60ea5a637d17f41367f37d2"><span class="id" title="notation">(</span></a><span class="id" title="var">i</span> <a class="idref" href="mathcomp.algebra.ssralg.html#33f78485f60ea5a637d17f41367f37d2"><span class="id" title="notation">&lt;</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#n"><span class="id" title="variable">n</span></a><a class="idref" href="mathcomp.ssreflect.ssrnat.html#361454269931ea8643f7b402f2ab7222"><span class="id" title="notation">.+1</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#33f78485f60ea5a637d17f41367f37d2"><span class="id" title="notation">)</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#b5a6699e28c97bb33352772cfa3ea869"><span class="id" title="notation">^+</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#i"><span class="id" title="variable">i</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#17d28d004d0863cb022d4ce832ddaaae"><span class="id" title="notation">==</span></a> 0<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#14a7a9c7dc61f86bfb664d400fabaf8a"><span class="id" title="notation">)</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.lregP"><span class="id" title="lemma">lregP</span></a> <span class="id" title="var">x</span> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#reflect"><span class="id" title="abbreviation">reflect</span></a> (<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.lreg"><span class="id" title="definition">lreg</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a>) (<a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#b1eeadc2feabc7422252baa895418c7b"><span class="id" title="notation">!=</span></a> 0).<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.rregP"><span class="id" title="lemma">rregP</span></a> <span class="id" title="var">x</span> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#reflect"><span class="id" title="abbreviation">reflect</span></a> (<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.rreg"><span class="id" title="definition">rreg</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a>) (<a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#b1eeadc2feabc7422252baa895418c7b"><span class="id" title="notation">!=</span></a> 0).<br/>
+
+<br/>
+<span class="id" title="keyword">Canonical</span> <span class="id" title="var">regular_idomainType</span> := <a class="idref" href="mathcomp.algebra.ssralg.html#9894f8fff6e44a40eb9fd9cfcbde7780"><span class="id" title="notation">[</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#9894f8fff6e44a40eb9fd9cfcbde7780"><span class="id" title="notation">idomainType</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#9894f8fff6e44a40eb9fd9cfcbde7780"><span class="id" title="notation">of</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.IntegralDomainTheory.R"><span class="id" title="variable">R</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#44fd865ce10e1d30970d09bdd85a0c8e"><span class="id" title="notation">^</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#44fd865ce10e1d30970d09bdd85a0c8e"><span class="id" title="notation">o</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#9894f8fff6e44a40eb9fd9cfcbde7780"><span class="id" title="notation">]</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">End</span> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.IntegralDomainTheory"><span class="id" title="section">IntegralDomainTheory</span></a>.<br/>
+
+<br/>
+
+<br/>
+<span class="id" title="keyword">Module</span> <a name="GRing.Field"><span class="id" title="module">Field</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Field.mixin_of"><span class="id" title="definition">mixin_of</span></a> (<span class="id" title="var">F</span> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.UnitRing.Exports.unitRingType"><span class="id" title="abbreviation">unitRingType</span></a>) := <span class="id" title="keyword">∀</span> <span class="id" title="var">x</span> : <a class="idref" href="mathcomp.algebra.ssralg.html#F"><span class="id" title="variable">F</span></a>, <a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#b1eeadc2feabc7422252baa895418c7b"><span class="id" title="notation">!=</span></a> 0 <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">\</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">in</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.unit"><span class="id" title="definition">unit</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.Field.IdomainMixin"><span class="id" title="lemma">IdomainMixin</span></a> <span class="id" title="var">R</span> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Field.mixin_of"><span class="id" title="definition">mixin_of</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#R"><span class="id" title="variable">R</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.IntegralDomain.axiom"><span class="id" title="definition">IntegralDomain.axiom</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#R"><span class="id" title="variable">R</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Section</span> <a name="GRing.Field.Mixins"><span class="id" title="section">Mixins</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Variables</span> (<a name="GRing.Field.Mixins.R"><span class="id" title="variable">R</span></a> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ComRing.Exports.comRingType"><span class="id" title="abbreviation">comRingType</span></a>) (<a name="GRing.Field.Mixins.inv"><span class="id" title="variable">inv</span></a> : <a class="idref" href="mathcomp.algebra.ssralg.html#R"><span class="id" title="variable">R</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#R"><span class="id" title="variable">R</span></a>).<br/>
+
+<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Field.axiom"><span class="id" title="definition">axiom</span></a> := <span class="id" title="keyword">∀</span> <span class="id" title="var">x</span>, <a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#b1eeadc2feabc7422252baa895418c7b"><span class="id" title="notation">!=</span></a> 0 <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Field.Mixins.inv"><span class="id" title="variable">inv</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#ed99e7035d9a1f8a2c1515be81ac2e5f"><span class="id" title="notation">×</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> 1.<br/>
+<span class="id" title="keyword">Hypothesis</span> <a name="GRing.Field.Mixins.mulVx"><span class="id" title="variable">mulVx</span></a> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Field.axiom"><span class="id" title="definition">axiom</span></a>.<br/>
+<span class="id" title="keyword">Hypothesis</span> <a name="GRing.Field.Mixins.inv0"><span class="id" title="variable">inv0</span></a> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Field.Mixins.inv"><span class="id" title="variable">inv</span></a> 0 <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> 0.<br/>
+
+<br/>
+<span class="id" title="keyword">Fact</span> <a name="GRing.Field.intro_unit"><span class="id" title="lemma">intro_unit</span></a> (<span class="id" title="var">x</span> <span class="id" title="var">y</span> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Field.Mixins.R"><span class="id" title="variable">R</span></a>) : <a class="idref" href="mathcomp.algebra.ssralg.html#y"><span class="id" title="variable">y</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#ed99e7035d9a1f8a2c1515be81ac2e5f"><span class="id" title="notation">×</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> 1 <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#b1eeadc2feabc7422252baa895418c7b"><span class="id" title="notation">!=</span></a> 0.<br/>
+
+<br/>
+<span class="id" title="keyword">Fact</span> <a name="GRing.Field.inv_out"><span class="id" title="lemma">inv_out</span></a> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#5c59b35a0b51db520cf1fba473ecf127"><span class="id" title="notation">{</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#5c59b35a0b51db520cf1fba473ecf127"><span class="id" title="notation">in</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#predC"><span class="id" title="definition">predC</span></a> (<a class="idref" href="mathcomp.ssreflect.eqtype.html#predC1"><span class="id" title="definition">predC1</span></a> 0)<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#5c59b35a0b51db520cf1fba473ecf127"><span class="id" title="notation">,</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Field.Mixins.inv"><span class="id" title="variable">inv</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#2500d48ed8e862ccfda98a44dff88963"><span class="id" title="notation">=1</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#id"><span class="id" title="abbreviation">id</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#5c59b35a0b51db520cf1fba473ecf127"><span class="id" title="notation">}</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Field.UnitMixin"><span class="id" title="definition">UnitMixin</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ComUnitRing.Mixin"><span class="id" title="definition">ComUnitRing.Mixin</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Field.Mixins.mulVx"><span class="id" title="variable">mulVx</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Field.intro_unit"><span class="id" title="lemma">intro_unit</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Field.inv_out"><span class="id" title="lemma">inv_out</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.Field.Mixin"><span class="id" title="lemma">Mixin</span></a> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Field.mixin_of"><span class="id" title="definition">mixin_of</span></a> (<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.UnitRing.Pack"><span class="id" title="constructor">UnitRing.Pack</span></a> (<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.UnitRing.Class"><span class="id" title="constructor">UnitRing.Class</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Field.UnitMixin"><span class="id" title="definition">UnitMixin</span></a>) <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Field.Mixins.R"><span class="id" title="variable">R</span></a>).<br/>
+
+<br/>
+<span class="id" title="keyword">End</span> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Field.Mixins"><span class="id" title="section">Mixins</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Section</span> <a name="GRing.Field.ClassDef"><span class="id" title="section">ClassDef</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Record</span> <a name="GRing.Field.class_of"><span class="id" title="record">class_of</span></a> (<span class="id" title="var">F</span> : <span class="id" title="keyword">Type</span>) : <span class="id" title="keyword">Type</span> := <a name="GRing.Field.Class"><span class="id" title="constructor">Class</span></a> {<br/>
+&nbsp;&nbsp;<a name="GRing.Field.base"><span class="id" title="projection">base</span></a> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.IntegralDomain.class_of"><span class="id" title="record">IntegralDomain.class_of</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#F"><span class="id" title="variable">F</span></a>;<br/>
+&nbsp;&nbsp;<a name="GRing.Field.mixin"><span class="id" title="projection">mixin</span></a> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Field.mixin_of"><span class="id" title="definition">mixin_of</span></a> (<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.UnitRing.Pack"><span class="id" title="constructor">UnitRing.Pack</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#base"><span class="id" title="method">base</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#F"><span class="id" title="variable">F</span></a>)<br/>
+}.<br/>
+
+<br/>
+<span class="id" title="keyword">Structure</span> <a name="GRing.Field.type"><span class="id" title="record">type</span></a> := <a name="GRing.Field.Pack"><span class="id" title="constructor">Pack</span></a> {<a name="GRing.Field.sort"><span class="id" title="projection">sort</span></a>; <span class="id" title="var">_</span> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Field.class_of"><span class="id" title="record">class_of</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#sort"><span class="id" title="method">sort</span></a>; <span class="id" title="var">_</span> : <span class="id" title="keyword">Type</span>}.<br/>
+<span class="id" title="keyword">Variable</span> (<a name="GRing.Field.ClassDef.T"><span class="id" title="variable">T</span></a> : <span class="id" title="keyword">Type</span>) (<a name="GRing.Field.ClassDef.cT"><span class="id" title="variable">cT</span></a> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Field.type"><span class="id" title="record">type</span></a>).<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Field.class"><span class="id" title="definition">class</span></a> := <span class="id" title="keyword">let</span>: <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Field.Pack"><span class="id" title="constructor">Pack</span></a> <span class="id" title="var">_</span> <span class="id" title="var">c</span> <span class="id" title="var">_</span> <span class="id" title="keyword">as</span> <span class="id" title="var">cT'</span> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Field.ClassDef.cT"><span class="id" title="variable">cT</span></a> <span class="id" title="keyword">return</span> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Field.class_of"><span class="id" title="record">class_of</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#cT'"><span class="id" title="variable">cT'</span></a> <span class="id" title="tactic">in</span> <span class="id" title="var">c</span>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Field.clone"><span class="id" title="definition">clone</span></a> <span class="id" title="var">c</span> <span class="id" title="keyword">of</span> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#phant_id"><span class="id" title="definition">phant_id</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Field.class"><span class="id" title="definition">class</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#c"><span class="id" title="variable">c</span></a> := @<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Field.Pack"><span class="id" title="constructor">Pack</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Field.ClassDef.T"><span class="id" title="variable">T</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#c"><span class="id" title="variable">c</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Field.ClassDef.T"><span class="id" title="variable">T</span></a>.<br/>
+<span class="id" title="keyword">Let</span> <a name="GRing.Field.ClassDef.xT"><span class="id" title="variable">xT</span></a> := <span class="id" title="keyword">let</span>: <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Field.Pack"><span class="id" title="constructor">Pack</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="mathcomp.algebra.ssralg.html#GRing.Field.ClassDef.cT"><span class="id" title="variable">cT</span></a> <span class="id" title="tactic">in</span> <span class="id" title="var">T</span>.<br/>
+<span class="id" title="keyword">Notation</span> <a name="GRing.Field.xclass"><span class="id" title="abbreviation">xclass</span></a> := (<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Field.class"><span class="id" title="definition">class</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssreflect.html#4509b22bf26e3d6d771897e22bd8bc8f"><span class="id" title="notation">:</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Field.class_of"><span class="id" title="record">class_of</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Field.ClassDef.xT"><span class="id" title="variable">xT</span></a>).<br/>
+
+<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Field.pack"><span class="id" title="definition">pack</span></a> <span class="id" title="var">b0</span> (<span class="id" title="var">m0</span> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Field.mixin_of"><span class="id" title="definition">mixin_of</span></a> (@<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.UnitRing.Pack"><span class="id" title="constructor">UnitRing.Pack</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Field.ClassDef.T"><span class="id" title="variable">T</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#b0"><span class="id" title="variable">b0</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Field.ClassDef.T"><span class="id" title="variable">T</span></a>)) :=<br/>
+&nbsp;&nbsp;<span class="id" title="keyword">fun</span> <span class="id" title="var">bT</span> <span class="id" title="var">b</span> &amp; <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#phant_id"><span class="id" title="definition">phant_id</span></a> (<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.IntegralDomain.class"><span class="id" title="definition">IntegralDomain.class</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#bT"><span class="id" title="variable">bT</span></a>) <a class="idref" href="mathcomp.algebra.ssralg.html#b"><span class="id" title="variable">b</span></a> ⇒<br/>
+&nbsp;&nbsp;<span class="id" title="keyword">fun</span> <span class="id" title="var">m</span> &amp; <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#phant_id"><span class="id" title="definition">phant_id</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#m0"><span class="id" title="variable">m0</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#m"><span class="id" title="variable">m</span></a> ⇒ <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Field.Pack"><span class="id" title="constructor">Pack</span></a> (@<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Field.Class"><span class="id" title="constructor">Class</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Field.ClassDef.T"><span class="id" title="variable">T</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#b"><span class="id" title="variable">b</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#m"><span class="id" title="variable">m</span></a>) <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Field.ClassDef.T"><span class="id" title="variable">T</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Field.eqType"><span class="id" title="definition">eqType</span></a> := @<a class="idref" href="mathcomp.ssreflect.eqtype.html#Equality.Pack"><span class="id" title="constructor">Equality.Pack</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Field.ClassDef.cT"><span class="id" title="variable">cT</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Field.xclass"><span class="id" title="abbreviation">xclass</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Field.ClassDef.xT"><span class="id" title="variable">xT</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Field.choiceType"><span class="id" title="definition">choiceType</span></a> := @<a class="idref" href="mathcomp.ssreflect.choice.html#Choice.Pack"><span class="id" title="constructor">Choice.Pack</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Field.ClassDef.cT"><span class="id" title="variable">cT</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Field.xclass"><span class="id" title="abbreviation">xclass</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Field.ClassDef.xT"><span class="id" title="variable">xT</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Field.zmodType"><span class="id" title="definition">zmodType</span></a> := @<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Zmodule.Pack"><span class="id" title="constructor">Zmodule.Pack</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Field.ClassDef.cT"><span class="id" title="variable">cT</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Field.xclass"><span class="id" title="abbreviation">xclass</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Field.ClassDef.xT"><span class="id" title="variable">xT</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Field.ringType"><span class="id" title="definition">ringType</span></a> := @<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Ring.Pack"><span class="id" title="constructor">Ring.Pack</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Field.ClassDef.cT"><span class="id" title="variable">cT</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Field.xclass"><span class="id" title="abbreviation">xclass</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Field.ClassDef.xT"><span class="id" title="variable">xT</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Field.comRingType"><span class="id" title="definition">comRingType</span></a> := @<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ComRing.Pack"><span class="id" title="constructor">ComRing.Pack</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Field.ClassDef.cT"><span class="id" title="variable">cT</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Field.xclass"><span class="id" title="abbreviation">xclass</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Field.ClassDef.xT"><span class="id" title="variable">xT</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Field.unitRingType"><span class="id" title="definition">unitRingType</span></a> := @<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.UnitRing.Pack"><span class="id" title="constructor">UnitRing.Pack</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Field.ClassDef.cT"><span class="id" title="variable">cT</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Field.xclass"><span class="id" title="abbreviation">xclass</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Field.ClassDef.xT"><span class="id" title="variable">xT</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Field.comUnitRingType"><span class="id" title="definition">comUnitRingType</span></a> := @<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ComUnitRing.Pack"><span class="id" title="constructor">ComUnitRing.Pack</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Field.ClassDef.cT"><span class="id" title="variable">cT</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Field.xclass"><span class="id" title="abbreviation">xclass</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Field.ClassDef.xT"><span class="id" title="variable">xT</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Field.idomainType"><span class="id" title="definition">idomainType</span></a> := @<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.IntegralDomain.Pack"><span class="id" title="constructor">IntegralDomain.Pack</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Field.ClassDef.cT"><span class="id" title="variable">cT</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Field.xclass"><span class="id" title="abbreviation">xclass</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Field.ClassDef.xT"><span class="id" title="variable">xT</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">End</span> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Field.ClassDef"><span class="id" title="section">ClassDef</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Module</span> <a name="GRing.Field.Exports"><span class="id" title="module">Exports</span></a>.<br/>
+<span class="id" title="keyword">Coercion</span> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Field.base"><span class="id" title="projection">base</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Field.base"><span class="id" title="projection">:</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Field.base"><span class="id" title="projection">class_of</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Field.base"><span class="id" title="projection">&gt;-&gt;</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Field.base"><span class="id" title="projection">IntegralDomain.class_of</span></a>.<br/>
+<span class="id" title="keyword">Coercion</span> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Field.mixin"><span class="id" title="projection">mixin</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Field.mixin"><span class="id" title="projection">:</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Field.mixin"><span class="id" title="projection">class_of</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Field.mixin"><span class="id" title="projection">&gt;-&gt;</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Field.mixin"><span class="id" title="projection">mixin_of</span></a>.<br/>
+<span class="id" title="keyword">Coercion</span> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Field.sort"><span class="id" title="projection">sort</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Field.sort"><span class="id" title="projection">:</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Field.sort"><span class="id" title="projection">type</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Field.sort"><span class="id" title="projection">&gt;-&gt;</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Field.sort"><span class="id" title="projection">Sortclass</span></a>.<br/>
+<span class="id" title="keyword">Coercion</span> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Field.eqType"><span class="id" title="definition">eqType</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Field.eqType"><span class="id" title="definition">:</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Field.eqType"><span class="id" title="definition">type</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Field.eqType"><span class="id" title="definition">&gt;-&gt;</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Field.eqType"><span class="id" title="definition">Equality.type</span></a>.<br/>
+<span class="id" title="keyword">Canonical</span> <span class="id" title="var">eqType</span>.<br/>
+<span class="id" title="keyword">Coercion</span> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Field.choiceType"><span class="id" title="definition">choiceType</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Field.choiceType"><span class="id" title="definition">:</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Field.choiceType"><span class="id" title="definition">type</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Field.choiceType"><span class="id" title="definition">&gt;-&gt;</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Field.choiceType"><span class="id" title="definition">Choice.type</span></a>.<br/>
+<span class="id" title="keyword">Canonical</span> <span class="id" title="var">choiceType</span>.<br/>
+<span class="id" title="keyword">Coercion</span> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Field.zmodType"><span class="id" title="definition">zmodType</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Field.zmodType"><span class="id" title="definition">:</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Field.zmodType"><span class="id" title="definition">type</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Field.zmodType"><span class="id" title="definition">&gt;-&gt;</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Field.zmodType"><span class="id" title="definition">Zmodule.type</span></a>.<br/>
+<span class="id" title="keyword">Canonical</span> <span class="id" title="var">zmodType</span>.<br/>
+<span class="id" title="keyword">Coercion</span> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Field.ringType"><span class="id" title="definition">ringType</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Field.ringType"><span class="id" title="definition">:</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Field.ringType"><span class="id" title="definition">type</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Field.ringType"><span class="id" title="definition">&gt;-&gt;</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Field.ringType"><span class="id" title="definition">Ring.type</span></a>.<br/>
+<span class="id" title="keyword">Canonical</span> <span class="id" title="var">ringType</span>.<br/>
+<span class="id" title="keyword">Coercion</span> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Field.comRingType"><span class="id" title="definition">comRingType</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Field.comRingType"><span class="id" title="definition">:</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Field.comRingType"><span class="id" title="definition">type</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Field.comRingType"><span class="id" title="definition">&gt;-&gt;</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Field.comRingType"><span class="id" title="definition">ComRing.type</span></a>.<br/>
+<span class="id" title="keyword">Canonical</span> <span class="id" title="var">comRingType</span>.<br/>
+<span class="id" title="keyword">Coercion</span> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Field.unitRingType"><span class="id" title="definition">unitRingType</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Field.unitRingType"><span class="id" title="definition">:</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Field.unitRingType"><span class="id" title="definition">type</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Field.unitRingType"><span class="id" title="definition">&gt;-&gt;</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Field.unitRingType"><span class="id" title="definition">UnitRing.type</span></a>.<br/>
+<span class="id" title="keyword">Canonical</span> <span class="id" title="var">unitRingType</span>.<br/>
+<span class="id" title="keyword">Coercion</span> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Field.comUnitRingType"><span class="id" title="definition">comUnitRingType</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Field.comUnitRingType"><span class="id" title="definition">:</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Field.comUnitRingType"><span class="id" title="definition">type</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Field.comUnitRingType"><span class="id" title="definition">&gt;-&gt;</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Field.comUnitRingType"><span class="id" title="definition">ComUnitRing.type</span></a>.<br/>
+<span class="id" title="keyword">Canonical</span> <span class="id" title="var">comUnitRingType</span>.<br/>
+<span class="id" title="keyword">Coercion</span> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Field.idomainType"><span class="id" title="definition">idomainType</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Field.idomainType"><span class="id" title="definition">:</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Field.idomainType"><span class="id" title="definition">type</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Field.idomainType"><span class="id" title="definition">&gt;-&gt;</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Field.idomainType"><span class="id" title="definition">IntegralDomain.type</span></a>.<br/>
+<span class="id" title="keyword">Canonical</span> <span class="id" title="var">idomainType</span>.<br/>
+<span class="id" title="keyword">Notation</span> <a name="GRing.Field.Exports.fieldType"><span class="id" title="abbreviation">fieldType</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Field.type"><span class="id" title="record">type</span></a>.<br/>
+<span class="id" title="keyword">Notation</span> <a name="GRing.Field.Exports.FieldType"><span class="id" title="abbreviation">FieldType</span></a> <span class="id" title="var">T</span> <span class="id" title="var">m</span> := (@<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Field.pack"><span class="id" title="definition">pack</span></a> <span class="id" title="var">T</span> <span class="id" title="var">_</span> <span class="id" title="var">m</span> <span class="id" title="var">_</span> <span class="id" title="var">_</span> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#id"><span class="id" title="abbreviation">id</span></a> <span class="id" title="var">_</span> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#id"><span class="id" title="abbreviation">id</span></a>).<br/>
+<span class="id" title="keyword">Notation</span> <a name="GRing.Field.Exports.FieldUnitMixin"><span class="id" title="abbreviation">FieldUnitMixin</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Field.UnitMixin"><span class="id" title="definition">UnitMixin</span></a>.<br/>
+<span class="id" title="keyword">Notation</span> <a name="GRing.Field.Exports.FieldIdomainMixin"><span class="id" title="abbreviation">FieldIdomainMixin</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Field.IdomainMixin"><span class="id" title="lemma">IdomainMixin</span></a>.<br/>
+<span class="id" title="keyword">Notation</span> <a name="GRing.Field.Exports.FieldMixin"><span class="id" title="abbreviation">FieldMixin</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Field.Mixin"><span class="id" title="lemma">Mixin</span></a>.<br/>
+<span class="id" title="keyword">Notation</span> <a name="8c9c50e5199526a82960ff32ca0ae688"><span class="id" title="notation">&quot;</span></a>[ 'fieldType' 'of' T 'for' cT ]" := (@<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Field.clone"><span class="id" title="definition">clone</span></a> <span class="id" title="var">T</span> <span class="id" title="var">cT</span> <span class="id" title="var">_</span> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#idfun"><span class="id" title="abbreviation">idfun</span></a>)<br/>
+&nbsp;&nbsp;(<span class="id" title="tactic">at</span> <span class="id" title="keyword">level</span> 0, <span class="id" title="var">format</span> "[ 'fieldType' 'of' T 'for' cT ]") : <span class="id" title="var">form_scope</span>.<br/>
+<span class="id" title="keyword">Notation</span> <a name="005edfce3bb0bbe988e3333ca30adc0f"><span class="id" title="notation">&quot;</span></a>[ 'fieldType' 'of' T ]" := (@<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Field.clone"><span class="id" title="definition">clone</span></a> <span class="id" title="var">T</span> <span class="id" title="var">_</span> <span class="id" title="var">_</span> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#id"><span class="id" title="abbreviation">id</span></a>)<br/>
+&nbsp;&nbsp;(<span class="id" title="tactic">at</span> <span class="id" title="keyword">level</span> 0, <span class="id" title="var">format</span> "[ 'fieldType' 'of' T ]") : <span class="id" title="var">form_scope</span>.<br/>
+<span class="id" title="keyword">End</span> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Field.Exports"><span class="id" title="module">Exports</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">End</span> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Field"><span class="id" title="module">Field</span></a>.<br/>
+<span class="id" title="keyword">Import</span> <span class="id" title="var">Field.Exports</span>.<br/>
+
+<br/>
+<span class="id" title="keyword">Section</span> <a name="GRing.FieldTheory"><span class="id" title="section">FieldTheory</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Variable</span> <a name="GRing.FieldTheory.F"><span class="id" title="variable">F</span></a> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.fieldType"><span class="id" title="abbreviation">fieldType</span></a>.<br/>
+<span class="id" title="keyword">Implicit</span> <span class="id" title="keyword">Types</span> <span class="id" title="var">x</span> <span class="id" title="var">y</span> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.FieldTheory.F"><span class="id" title="variable">F</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.fieldP"><span class="id" title="lemma">fieldP</span></a> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.mixin_of"><span class="id" title="definition">Field.mixin_of</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.FieldTheory.F"><span class="id" title="variable">F</span></a>. <br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.unitfE"><span class="id" title="lemma">unitfE</span></a> <span class="id" title="var">x</span> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">\</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">in</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.unit"><span class="id" title="definition">unit</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">)</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#b1eeadc2feabc7422252baa895418c7b"><span class="id" title="notation">!=</span></a> 0<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">)</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.mulVf"><span class="id" title="lemma">mulVf</span></a> <span class="id" title="var">x</span> : <a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#b1eeadc2feabc7422252baa895418c7b"><span class="id" title="notation">!=</span></a> 0 <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#7f97e90bec2e67d9beef5851649e3fb1"><span class="id" title="notation">^-1</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#ed99e7035d9a1f8a2c1515be81ac2e5f"><span class="id" title="notation">×</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> 1.<br/>
+ <span class="id" title="keyword">Lemma</span> <a name="GRing.divff"><span class="id" title="lemma">divff</span></a> <span class="id" title="var">x</span> : <a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#b1eeadc2feabc7422252baa895418c7b"><span class="id" title="notation">!=</span></a> 0 <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#1adb36345c2607a4dd991537de5ddba3"><span class="id" title="notation">/</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> 1.<br/>
+ <span class="id" title="keyword">Definition</span> <a name="GRing.mulfV"><span class="id" title="definition">mulfV</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.divff"><span class="id" title="lemma">divff</span></a>.<br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.mulKf"><span class="id" title="lemma">mulKf</span></a> <span class="id" title="var">x</span> : <a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#b1eeadc2feabc7422252baa895418c7b"><span class="id" title="notation">!=</span></a> 0 <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#cancel"><span class="id" title="definition">cancel</span></a> ( <a class="idref" href="mathcomp.algebra.ssralg.html#6498e6e308d8a143464cf2d2ba603d36"><span class="id" title="notation">*%</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#6498e6e308d8a143464cf2d2ba603d36"><span class="id" title="notation">R</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#6498e6e308d8a143464cf2d2ba603d36"><span class="id" title="notation">x</span></a>) ( <a class="idref" href="mathcomp.algebra.ssralg.html#6498e6e308d8a143464cf2d2ba603d36"><span class="id" title="notation">*%</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#6498e6e308d8a143464cf2d2ba603d36"><span class="id" title="notation">R</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#6498e6e308d8a143464cf2d2ba603d36"><span class="id" title="notation">x</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#6498e6e308d8a143464cf2d2ba603d36"><span class="id" title="notation">^-1</span></a>).<br/>
+ <span class="id" title="keyword">Lemma</span> <a name="GRing.mulVKf"><span class="id" title="lemma">mulVKf</span></a> <span class="id" title="var">x</span> : <a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#b1eeadc2feabc7422252baa895418c7b"><span class="id" title="notation">!=</span></a> 0 <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#cancel"><span class="id" title="definition">cancel</span></a> ( <a class="idref" href="mathcomp.algebra.ssralg.html#6498e6e308d8a143464cf2d2ba603d36"><span class="id" title="notation">*%</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#6498e6e308d8a143464cf2d2ba603d36"><span class="id" title="notation">R</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#6498e6e308d8a143464cf2d2ba603d36"><span class="id" title="notation">x</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#6498e6e308d8a143464cf2d2ba603d36"><span class="id" title="notation">^-1</span></a>) ( <a class="idref" href="mathcomp.algebra.ssralg.html#6498e6e308d8a143464cf2d2ba603d36"><span class="id" title="notation">*%</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#6498e6e308d8a143464cf2d2ba603d36"><span class="id" title="notation">R</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#6498e6e308d8a143464cf2d2ba603d36"><span class="id" title="notation">x</span></a>).<br/>
+ <span class="id" title="keyword">Lemma</span> <a name="GRing.mulfK"><span class="id" title="lemma">mulfK</span></a> <span class="id" title="var">x</span> : <a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#b1eeadc2feabc7422252baa895418c7b"><span class="id" title="notation">!=</span></a> 0 <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#cancel"><span class="id" title="definition">cancel</span></a> ( <a class="idref" href="mathcomp.algebra.ssralg.html#6498e6e308d8a143464cf2d2ba603d36"><span class="id" title="notation">*%</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#6498e6e308d8a143464cf2d2ba603d36"><span class="id" title="notation">R</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#8f28bbd804547edd8de802d63ef85617"><span class="id" title="notation">^~</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a>) ( <a class="idref" href="mathcomp.algebra.ssralg.html#6498e6e308d8a143464cf2d2ba603d36"><span class="id" title="notation">*%</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#6498e6e308d8a143464cf2d2ba603d36"><span class="id" title="notation">R</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#8f28bbd804547edd8de802d63ef85617"><span class="id" title="notation">^~</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#7f97e90bec2e67d9beef5851649e3fb1"><span class="id" title="notation">^-1</span></a>).<br/>
+ <span class="id" title="keyword">Lemma</span> <a name="GRing.mulfVK"><span class="id" title="lemma">mulfVK</span></a> <span class="id" title="var">x</span> : <a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#b1eeadc2feabc7422252baa895418c7b"><span class="id" title="notation">!=</span></a> 0 <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#cancel"><span class="id" title="definition">cancel</span></a> ( <a class="idref" href="mathcomp.algebra.ssralg.html#6498e6e308d8a143464cf2d2ba603d36"><span class="id" title="notation">*%</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#6498e6e308d8a143464cf2d2ba603d36"><span class="id" title="notation">R</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#8f28bbd804547edd8de802d63ef85617"><span class="id" title="notation">^~</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#7f97e90bec2e67d9beef5851649e3fb1"><span class="id" title="notation">^-1</span></a>) ( <a class="idref" href="mathcomp.algebra.ssralg.html#6498e6e308d8a143464cf2d2ba603d36"><span class="id" title="notation">*%</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#6498e6e308d8a143464cf2d2ba603d36"><span class="id" title="notation">R</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#8f28bbd804547edd8de802d63ef85617"><span class="id" title="notation">^~</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a>).<br/>
+ <span class="id" title="keyword">Definition</span> <a name="GRing.divfK"><span class="id" title="definition">divfK</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.mulfVK"><span class="id" title="lemma">mulfVK</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.invfM"><span class="id" title="lemma">invfM</span></a> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#3014e73af2a90fd800d8681479d76336"><span class="id" title="notation">{</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#3014e73af2a90fd800d8681479d76336"><span class="id" title="notation">morph</span></a> @<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.inv"><span class="id" title="definition">inv</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.FieldTheory.F"><span class="id" title="variable">F</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#3014e73af2a90fd800d8681479d76336"><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/8.8.0/stdlib//Coq.ssr.ssrfun.html#3014e73af2a90fd800d8681479d76336"><span class="id" title="notation">/</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#ed99e7035d9a1f8a2c1515be81ac2e5f"><span class="id" title="notation">×</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#y"><span class="id" title="variable">y</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#3014e73af2a90fd800d8681479d76336"><span class="id" title="notation">}</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.invf_div"><span class="id" title="lemma">invf_div</span></a> <span class="id" title="var">x</span> <span class="id" title="var">y</span> : <a class="idref" href="mathcomp.algebra.ssralg.html#7f97e90bec2e67d9beef5851649e3fb1"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#1adb36345c2607a4dd991537de5ddba3"><span class="id" title="notation">/</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#y"><span class="id" title="variable">y</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#7f97e90bec2e67d9beef5851649e3fb1"><span class="id" title="notation">)^-1</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#y"><span class="id" title="variable">y</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#1adb36345c2607a4dd991537de5ddba3"><span class="id" title="notation">/</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.divKf"><span class="id" title="lemma">divKf</span></a> <span class="id" title="var">x</span> : <a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#b1eeadc2feabc7422252baa895418c7b"><span class="id" title="notation">!=</span></a> 0 <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#involutive"><span class="id" title="definition">involutive</span></a> (<span class="id" title="keyword">fun</span> <span class="id" title="var">y</span> ⇒ <a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#1adb36345c2607a4dd991537de5ddba3"><span class="id" title="notation">/</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#y"><span class="id" title="variable">y</span></a>).<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.expfB_cond"><span class="id" title="lemma">expfB_cond</span></a> <span class="id" title="var">m</span> <span class="id" title="var">n</span> <span class="id" title="var">x</span> : <a class="idref" href="mathcomp.ssreflect.ssrnat.html#b3eea360671e1b32b18a26e15b3aace3"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#17d28d004d0863cb022d4ce832ddaaae"><span class="id" title="notation">==</span></a> 0<a class="idref" href="mathcomp.ssreflect.ssrnat.html#b3eea360671e1b32b18a26e15b3aace3"><span class="id" title="notation">)</span></a> <a class="idref" href="mathcomp.ssreflect.ssrnat.html#b3eea360671e1b32b18a26e15b3aace3"><span class="id" title="notation">+</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#n"><span class="id" title="variable">n</span></a> <a class="idref" href="mathcomp.ssreflect.ssrnat.html#9b077c369e19739ef880736ba34623ff"><span class="id" title="notation">≤</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#m"><span class="id" title="variable">m</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#b5a6699e28c97bb33352772cfa3ea869"><span class="id" title="notation">^+</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#b5a6699e28c97bb33352772cfa3ea869"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#m"><span class="id" title="variable">m</span></a> <a class="idref" href="mathcomp.ssreflect.ssrnat.html#9482aae3d3b06e249765c1225dbb8cbb"><span class="id" title="notation">-</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#n"><span class="id" title="variable">n</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#b5a6699e28c97bb33352772cfa3ea869"><span class="id" title="notation">)</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#b5a6699e28c97bb33352772cfa3ea869"><span class="id" title="notation">^+</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#m"><span class="id" title="variable">m</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#1adb36345c2607a4dd991537de5ddba3"><span class="id" title="notation">/</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#b5a6699e28c97bb33352772cfa3ea869"><span class="id" title="notation">^+</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#n"><span class="id" title="variable">n</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.expfB"><span class="id" title="lemma">expfB</span></a> <span class="id" title="var">m</span> <span class="id" title="var">n</span> <span class="id" title="var">x</span> : <a class="idref" href="mathcomp.algebra.ssralg.html#n"><span class="id" title="variable">n</span></a> <a class="idref" href="mathcomp.ssreflect.ssrnat.html#989c98e7ddd65d5bf37c334ff2076de8"><span class="id" title="notation">&lt;</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#m"><span class="id" title="variable">m</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#b5a6699e28c97bb33352772cfa3ea869"><span class="id" title="notation">^+</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#b5a6699e28c97bb33352772cfa3ea869"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#m"><span class="id" title="variable">m</span></a> <a class="idref" href="mathcomp.ssreflect.ssrnat.html#9482aae3d3b06e249765c1225dbb8cbb"><span class="id" title="notation">-</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#n"><span class="id" title="variable">n</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#b5a6699e28c97bb33352772cfa3ea869"><span class="id" title="notation">)</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#b5a6699e28c97bb33352772cfa3ea869"><span class="id" title="notation">^+</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#m"><span class="id" title="variable">m</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#1adb36345c2607a4dd991537de5ddba3"><span class="id" title="notation">/</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#b5a6699e28c97bb33352772cfa3ea869"><span class="id" title="notation">^+</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#n"><span class="id" title="variable">n</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.prodfV"><span class="id" title="lemma">prodfV</span></a> <span class="id" title="var">I</span> <span class="id" title="var">r</span> (<span class="id" title="var">P</span> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#pred"><span class="id" title="definition">pred</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#I"><span class="id" title="variable">I</span></a>) (<span class="id" title="var">E</span> : <a class="idref" href="mathcomp.algebra.ssralg.html#I"><span class="id" title="variable">I</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.FieldTheory.F"><span class="id" title="variable">F</span></a>) :<br/>
+&nbsp;&nbsp;<a class="idref" href="mathcomp.algebra.ssralg.html#3f1a950be6bcb72c9434150471b42417"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#3f1a950be6bcb72c9434150471b42417"><span class="id" title="notation">prod_</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#3f1a950be6bcb72c9434150471b42417"><span class="id" title="notation">(</span></a><span class="id" title="var">i</span> <a class="idref" href="mathcomp.algebra.ssralg.html#3f1a950be6bcb72c9434150471b42417"><span class="id" title="notation">&lt;-</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#r"><span class="id" title="variable">r</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#3f1a950be6bcb72c9434150471b42417"><span class="id" title="notation">|</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#P"><span class="id" title="variable">P</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#i"><span class="id" title="variable">i</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#3f1a950be6bcb72c9434150471b42417"><span class="id" title="notation">)</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#7f97e90bec2e67d9beef5851649e3fb1"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#E"><span class="id" title="variable">E</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#i"><span class="id" title="variable">i</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#7f97e90bec2e67d9beef5851649e3fb1"><span class="id" title="notation">)^-1</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#7f97e90bec2e67d9beef5851649e3fb1"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#3f1a950be6bcb72c9434150471b42417"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#3f1a950be6bcb72c9434150471b42417"><span class="id" title="notation">prod_</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#3f1a950be6bcb72c9434150471b42417"><span class="id" title="notation">(</span></a><span class="id" title="var">i</span> <a class="idref" href="mathcomp.algebra.ssralg.html#3f1a950be6bcb72c9434150471b42417"><span class="id" title="notation">&lt;-</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#r"><span class="id" title="variable">r</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#3f1a950be6bcb72c9434150471b42417"><span class="id" title="notation">|</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#P"><span class="id" title="variable">P</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#i"><span class="id" title="variable">i</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#3f1a950be6bcb72c9434150471b42417"><span class="id" title="notation">)</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#E"><span class="id" title="variable">E</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#i"><span class="id" title="variable">i</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#7f97e90bec2e67d9beef5851649e3fb1"><span class="id" title="notation">)^-1</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.prodf_div"><span class="id" title="lemma">prodf_div</span></a> <span class="id" title="var">I</span> <span class="id" title="var">r</span> (<span class="id" title="var">P</span> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#pred"><span class="id" title="definition">pred</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#I"><span class="id" title="variable">I</span></a>) (<span class="id" title="var">E</span> <span class="id" title="var">D</span> : <a class="idref" href="mathcomp.algebra.ssralg.html#I"><span class="id" title="variable">I</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.FieldTheory.F"><span class="id" title="variable">F</span></a>) :<br/>
+&nbsp;&nbsp;<a class="idref" href="mathcomp.algebra.ssralg.html#3f1a950be6bcb72c9434150471b42417"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#3f1a950be6bcb72c9434150471b42417"><span class="id" title="notation">prod_</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#3f1a950be6bcb72c9434150471b42417"><span class="id" title="notation">(</span></a><span class="id" title="var">i</span> <a class="idref" href="mathcomp.algebra.ssralg.html#3f1a950be6bcb72c9434150471b42417"><span class="id" title="notation">&lt;-</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#r"><span class="id" title="variable">r</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#3f1a950be6bcb72c9434150471b42417"><span class="id" title="notation">|</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#P"><span class="id" title="variable">P</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#i"><span class="id" title="variable">i</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#3f1a950be6bcb72c9434150471b42417"><span class="id" title="notation">)</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#3f1a950be6bcb72c9434150471b42417"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#E"><span class="id" title="variable">E</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#i"><span class="id" title="variable">i</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#1adb36345c2607a4dd991537de5ddba3"><span class="id" title="notation">/</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#D"><span class="id" title="variable">D</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#i"><span class="id" title="variable">i</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#3f1a950be6bcb72c9434150471b42417"><span class="id" title="notation">)</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a><br/>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a class="idref" href="mathcomp.algebra.ssralg.html#3f1a950be6bcb72c9434150471b42417"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#3f1a950be6bcb72c9434150471b42417"><span class="id" title="notation">prod_</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#3f1a950be6bcb72c9434150471b42417"><span class="id" title="notation">(</span></a><span class="id" title="var">i</span> <a class="idref" href="mathcomp.algebra.ssralg.html#3f1a950be6bcb72c9434150471b42417"><span class="id" title="notation">&lt;-</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#r"><span class="id" title="variable">r</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#3f1a950be6bcb72c9434150471b42417"><span class="id" title="notation">|</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#P"><span class="id" title="variable">P</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#i"><span class="id" title="variable">i</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#3f1a950be6bcb72c9434150471b42417"><span class="id" title="notation">)</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#E"><span class="id" title="variable">E</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#i"><span class="id" title="variable">i</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#1adb36345c2607a4dd991537de5ddba3"><span class="id" title="notation">/</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#3f1a950be6bcb72c9434150471b42417"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#3f1a950be6bcb72c9434150471b42417"><span class="id" title="notation">prod_</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#3f1a950be6bcb72c9434150471b42417"><span class="id" title="notation">(</span></a><span class="id" title="var">i</span> <a class="idref" href="mathcomp.algebra.ssralg.html#3f1a950be6bcb72c9434150471b42417"><span class="id" title="notation">&lt;-</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#r"><span class="id" title="variable">r</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#3f1a950be6bcb72c9434150471b42417"><span class="id" title="notation">|</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#P"><span class="id" title="variable">P</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#i"><span class="id" title="variable">i</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#3f1a950be6bcb72c9434150471b42417"><span class="id" title="notation">)</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#D"><span class="id" title="variable">D</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#i"><span class="id" title="variable">i</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.telescope_prodf"><span class="id" title="lemma">telescope_prodf</span></a> <span class="id" title="var">n</span> <span class="id" title="var">m</span> (<span class="id" title="var">f</span> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#nat"><span class="id" title="inductive">nat</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.FieldTheory.F"><span class="id" title="variable">F</span></a>) :<br/>
+&nbsp;&nbsp;&nbsp;&nbsp;<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">(</span></a><span class="id" title="keyword">∀</span> <span class="id" title="var">k</span>, <a class="idref" href="mathcomp.algebra.ssralg.html#n"><span class="id" title="variable">n</span></a> <a class="idref" href="mathcomp.ssreflect.ssrnat.html#432e31800fc09abd260feb634dbbd1af"><span class="id" title="notation">&lt;</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#k"><span class="id" title="variable">k</span></a> <a class="idref" href="mathcomp.ssreflect.ssrnat.html#432e31800fc09abd260feb634dbbd1af"><span class="id" title="notation">&lt;</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#m"><span class="id" title="variable">m</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#f"><span class="id" title="variable">f</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#k"><span class="id" title="variable">k</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#b1eeadc2feabc7422252baa895418c7b"><span class="id" title="notation">!=</span></a> 0<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">)</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#n"><span class="id" title="variable">n</span></a> <a class="idref" href="mathcomp.ssreflect.ssrnat.html#989c98e7ddd65d5bf37c334ff2076de8"><span class="id" title="notation">&lt;</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#m"><span class="id" title="variable">m</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a><br/>
+&nbsp;&nbsp;<a class="idref" href="mathcomp.algebra.ssralg.html#0efa7b1cdb084a1541f915d91ff051e5"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#0efa7b1cdb084a1541f915d91ff051e5"><span class="id" title="notation">prod_</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#0efa7b1cdb084a1541f915d91ff051e5"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#n"><span class="id" title="variable">n</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#0efa7b1cdb084a1541f915d91ff051e5"><span class="id" title="notation">≤</span></a> <span class="id" title="var">k</span> <a class="idref" href="mathcomp.algebra.ssralg.html#0efa7b1cdb084a1541f915d91ff051e5"><span class="id" title="notation">&lt;</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#m"><span class="id" title="variable">m</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#0efa7b1cdb084a1541f915d91ff051e5"><span class="id" title="notation">)</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#0efa7b1cdb084a1541f915d91ff051e5"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#f"><span class="id" title="variable">f</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#k"><span class="id" title="variable">k</span></a><a class="idref" href="mathcomp.ssreflect.ssrnat.html#361454269931ea8643f7b402f2ab7222"><span class="id" title="notation">.+1</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#1adb36345c2607a4dd991537de5ddba3"><span class="id" title="notation">/</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#f"><span class="id" title="variable">f</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#k"><span class="id" title="variable">k</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#0efa7b1cdb084a1541f915d91ff051e5"><span class="id" title="notation">)</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#f"><span class="id" title="variable">f</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#m"><span class="id" title="variable">m</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#1adb36345c2607a4dd991537de5ddba3"><span class="id" title="notation">/</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#f"><span class="id" title="variable">f</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#n"><span class="id" title="variable">n</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.addf_div"><span class="id" title="lemma">addf_div</span></a> <span class="id" title="var">x1</span> <span class="id" title="var">y1</span> <span class="id" title="var">x2</span> <span class="id" title="var">y2</span> :<br/>
+&nbsp;&nbsp;<a class="idref" href="mathcomp.algebra.ssralg.html#y1"><span class="id" title="variable">y1</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#b1eeadc2feabc7422252baa895418c7b"><span class="id" title="notation">!=</span></a> 0 <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#y2"><span class="id" title="variable">y2</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#b1eeadc2feabc7422252baa895418c7b"><span class="id" title="notation">!=</span></a> 0 <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#x1"><span class="id" title="variable">x1</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#1adb36345c2607a4dd991537de5ddba3"><span class="id" title="notation">/</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#y1"><span class="id" title="variable">y1</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#338c5345074fd3586073fd29273c138a"><span class="id" title="notation">+</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#x2"><span class="id" title="variable">x2</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#1adb36345c2607a4dd991537de5ddba3"><span class="id" title="notation">/</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#y2"><span class="id" title="variable">y2</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#1adb36345c2607a4dd991537de5ddba3"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#x1"><span class="id" title="variable">x1</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#ed99e7035d9a1f8a2c1515be81ac2e5f"><span class="id" title="notation">×</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#y2"><span class="id" title="variable">y2</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#338c5345074fd3586073fd29273c138a"><span class="id" title="notation">+</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#x2"><span class="id" title="variable">x2</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#ed99e7035d9a1f8a2c1515be81ac2e5f"><span class="id" title="notation">×</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#y1"><span class="id" title="variable">y1</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#1adb36345c2607a4dd991537de5ddba3"><span class="id" title="notation">)</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#1adb36345c2607a4dd991537de5ddba3"><span class="id" title="notation">/</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#1adb36345c2607a4dd991537de5ddba3"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#y1"><span class="id" title="variable">y1</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#ed99e7035d9a1f8a2c1515be81ac2e5f"><span class="id" title="notation">×</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#y2"><span class="id" title="variable">y2</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#1adb36345c2607a4dd991537de5ddba3"><span class="id" title="notation">)</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.mulf_div"><span class="id" title="lemma">mulf_div</span></a> <span class="id" title="var">x1</span> <span class="id" title="var">y1</span> <span class="id" title="var">x2</span> <span class="id" title="var">y2</span> : <a class="idref" href="mathcomp.algebra.ssralg.html#ed99e7035d9a1f8a2c1515be81ac2e5f"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#x1"><span class="id" title="variable">x1</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#1adb36345c2607a4dd991537de5ddba3"><span class="id" title="notation">/</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#y1"><span class="id" title="variable">y1</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#ed99e7035d9a1f8a2c1515be81ac2e5f"><span class="id" title="notation">)</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#ed99e7035d9a1f8a2c1515be81ac2e5f"><span class="id" title="notation">×</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#ed99e7035d9a1f8a2c1515be81ac2e5f"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#x2"><span class="id" title="variable">x2</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#1adb36345c2607a4dd991537de5ddba3"><span class="id" title="notation">/</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#y2"><span class="id" title="variable">y2</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#ed99e7035d9a1f8a2c1515be81ac2e5f"><span class="id" title="notation">)</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#1adb36345c2607a4dd991537de5ddba3"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#x1"><span class="id" title="variable">x1</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#ed99e7035d9a1f8a2c1515be81ac2e5f"><span class="id" title="notation">×</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#x2"><span class="id" title="variable">x2</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#1adb36345c2607a4dd991537de5ddba3"><span class="id" title="notation">)</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#1adb36345c2607a4dd991537de5ddba3"><span class="id" title="notation">/</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#1adb36345c2607a4dd991537de5ddba3"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#y1"><span class="id" title="variable">y1</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#ed99e7035d9a1f8a2c1515be81ac2e5f"><span class="id" title="notation">×</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#y2"><span class="id" title="variable">y2</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#1adb36345c2607a4dd991537de5ddba3"><span class="id" title="notation">)</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.char0_natf_div"><span class="id" title="lemma">char0_natf_div</span></a> :<br/>
+&nbsp;&nbsp;<a class="idref" href="mathcomp.algebra.ssralg.html#51fab11b73193ca5e8e7a62cac129ebc"><span class="id" title="notation">[</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#51fab11b73193ca5e8e7a62cac129ebc"><span class="id" title="notation">char</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.FieldTheory.F"><span class="id" title="variable">F</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#51fab11b73193ca5e8e7a62cac129ebc"><span class="id" title="notation">]</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#20bf07099d6d8cf369383b22fd37862e"><span class="id" title="notation">=</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#20bf07099d6d8cf369383b22fd37862e"><span class="id" title="notation">i</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#pred0"><span class="id" title="definition">pred0</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <span class="id" title="keyword">∀</span> <span class="id" title="var">m</span> <span class="id" title="var">d</span>, <a class="idref" href="mathcomp.algebra.ssralg.html#d"><span class="id" title="variable">d</span></a> <a class="idref" href="mathcomp.ssreflect.div.html#aa34fd1c61c5cf0a3356b624a5d2afed"><span class="id" title="notation">%|</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#m"><span class="id" title="variable">m</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#c191333b9c7c034282647fbffacc9d18"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#m"><span class="id" title="variable">m</span></a> <a class="idref" href="mathcomp.ssreflect.div.html#df17451da28eb630dbb51b12706ba39e"><span class="id" title="notation">%/</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#d"><span class="id" title="variable">d</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#c191333b9c7c034282647fbffacc9d18"><span class="id" title="notation">)%:</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#c191333b9c7c034282647fbffacc9d18"><span class="id" title="notation">R</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#8f9364556521ebb498093f28eea2240f"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#m"><span class="id" title="variable">m</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#c191333b9c7c034282647fbffacc9d18"><span class="id" title="notation">%:</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#c191333b9c7c034282647fbffacc9d18"><span class="id" title="notation">R</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#1adb36345c2607a4dd991537de5ddba3"><span class="id" title="notation">/</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#d"><span class="id" title="variable">d</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#c191333b9c7c034282647fbffacc9d18"><span class="id" title="notation">%:</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#c191333b9c7c034282647fbffacc9d18"><span class="id" title="notation">R</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#8f9364556521ebb498093f28eea2240f"><span class="id" title="notation">:&gt;</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.FieldTheory.F"><span class="id" title="variable">F</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Section</span> <a name="GRing.FieldTheory.FieldMorphismInj"><span class="id" title="section">FieldMorphismInj</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Variables</span> (<a name="GRing.FieldTheory.FieldMorphismInj.R"><span class="id" title="variable">R</span></a> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ringType"><span class="id" title="abbreviation">ringType</span></a>) (<a name="GRing.FieldTheory.FieldMorphismInj.f"><span class="id" title="variable">f</span></a> : <a class="idref" href="mathcomp.algebra.ssralg.html#0c709ebe43ddbd7719f75250a7b916d9"><span class="id" title="notation">{</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#0c709ebe43ddbd7719f75250a7b916d9"><span class="id" title="notation">rmorphism</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.FieldTheory.F"><span class="id" title="variable">F</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#R"><span class="id" title="variable">R</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#0c709ebe43ddbd7719f75250a7b916d9"><span class="id" title="notation">}</span></a>).<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.fmorph_eq0"><span class="id" title="lemma">fmorph_eq0</span></a> <span class="id" title="var">x</span> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#GRing.FieldTheory.FieldMorphismInj.f"><span class="id" title="variable">f</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#17d28d004d0863cb022d4ce832ddaaae"><span class="id" title="notation">==</span></a> 0<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">)</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#17d28d004d0863cb022d4ce832ddaaae"><span class="id" title="notation">==</span></a> 0<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">)</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.fmorph_inj"><span class="id" title="lemma">fmorph_inj</span></a> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#injective"><span class="id" title="definition">injective</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.FieldTheory.FieldMorphismInj.f"><span class="id" title="variable">f</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.fmorph_eq1"><span class="id" title="lemma">fmorph_eq1</span></a> <span class="id" title="var">x</span> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#GRing.FieldTheory.FieldMorphismInj.f"><span class="id" title="variable">f</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#17d28d004d0863cb022d4ce832ddaaae"><span class="id" title="notation">==</span></a> 1<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">)</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#17d28d004d0863cb022d4ce832ddaaae"><span class="id" title="notation">==</span></a> 1<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">)</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.fmorph_char"><span class="id" title="lemma">fmorph_char</span></a> : <a class="idref" href="mathcomp.algebra.ssralg.html#51fab11b73193ca5e8e7a62cac129ebc"><span class="id" title="notation">[</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#51fab11b73193ca5e8e7a62cac129ebc"><span class="id" title="notation">char</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.FieldTheory.FieldMorphismInj.R"><span class="id" title="variable">R</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#51fab11b73193ca5e8e7a62cac129ebc"><span class="id" title="notation">]</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#20bf07099d6d8cf369383b22fd37862e"><span class="id" title="notation">=</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#20bf07099d6d8cf369383b22fd37862e"><span class="id" title="notation">i</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#51fab11b73193ca5e8e7a62cac129ebc"><span class="id" title="notation">[</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#51fab11b73193ca5e8e7a62cac129ebc"><span class="id" title="notation">char</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.FieldTheory.F"><span class="id" title="variable">F</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#51fab11b73193ca5e8e7a62cac129ebc"><span class="id" title="notation">]</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">End</span> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.FieldTheory.FieldMorphismInj"><span class="id" title="section">FieldMorphismInj</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Section</span> <a name="GRing.FieldTheory.FieldMorphismInv"><span class="id" title="section">FieldMorphismInv</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Variables</span> (<a name="GRing.FieldTheory.FieldMorphismInv.R"><span class="id" title="variable">R</span></a> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.unitRingType"><span class="id" title="abbreviation">unitRingType</span></a>) (<a name="GRing.FieldTheory.FieldMorphismInv.f"><span class="id" title="variable">f</span></a> : <a class="idref" href="mathcomp.algebra.ssralg.html#0c709ebe43ddbd7719f75250a7b916d9"><span class="id" title="notation">{</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#0c709ebe43ddbd7719f75250a7b916d9"><span class="id" title="notation">rmorphism</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.FieldTheory.F"><span class="id" title="variable">F</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#R"><span class="id" title="variable">R</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#0c709ebe43ddbd7719f75250a7b916d9"><span class="id" title="notation">}</span></a>).<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.fmorph_unit"><span class="id" title="lemma">fmorph_unit</span></a> <span class="id" title="var">x</span> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#GRing.FieldTheory.FieldMorphismInv.f"><span class="id" title="variable">f</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">\</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">in</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.unit"><span class="id" title="definition">unit</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">)</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#b1eeadc2feabc7422252baa895418c7b"><span class="id" title="notation">!=</span></a> 0<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">)</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.fmorphV"><span class="id" title="lemma">fmorphV</span></a> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#c3c88e2b30b681cd767a54649faf5973"><span class="id" title="notation">{</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#c3c88e2b30b681cd767a54649faf5973"><span class="id" title="notation">morph</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.FieldTheory.FieldMorphismInv.f"><span class="id" title="variable">f</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#c3c88e2b30b681cd767a54649faf5973"><span class="id" title="notation">:</span></a> <span class="id" title="var">x</span> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#c3c88e2b30b681cd767a54649faf5973"><span class="id" title="notation">/</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#7f97e90bec2e67d9beef5851649e3fb1"><span class="id" title="notation">^-1</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#c3c88e2b30b681cd767a54649faf5973"><span class="id" title="notation">}</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.fmorph_div"><span class="id" title="lemma">fmorph_div</span></a> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#3014e73af2a90fd800d8681479d76336"><span class="id" title="notation">{</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#3014e73af2a90fd800d8681479d76336"><span class="id" title="notation">morph</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.FieldTheory.FieldMorphismInv.f"><span class="id" title="variable">f</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#3014e73af2a90fd800d8681479d76336"><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/8.8.0/stdlib//Coq.ssr.ssrfun.html#3014e73af2a90fd800d8681479d76336"><span class="id" title="notation">/</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#1adb36345c2607a4dd991537de5ddba3"><span class="id" title="notation">/</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#y"><span class="id" title="variable">y</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#3014e73af2a90fd800d8681479d76336"><span class="id" title="notation">}</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">End</span> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.FieldTheory.FieldMorphismInv"><span class="id" title="section">FieldMorphismInv</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Canonical</span> <span class="id" title="var">regular_fieldType</span> := <a class="idref" href="mathcomp.algebra.ssralg.html#005edfce3bb0bbe988e3333ca30adc0f"><span class="id" title="notation">[</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#005edfce3bb0bbe988e3333ca30adc0f"><span class="id" title="notation">fieldType</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#005edfce3bb0bbe988e3333ca30adc0f"><span class="id" title="notation">of</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.FieldTheory.F"><span class="id" title="variable">F</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#44fd865ce10e1d30970d09bdd85a0c8e"><span class="id" title="notation">^</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#44fd865ce10e1d30970d09bdd85a0c8e"><span class="id" title="notation">o</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#005edfce3bb0bbe988e3333ca30adc0f"><span class="id" title="notation">]</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Section</span> <a name="GRing.FieldTheory.ModuleTheory"><span class="id" title="section">ModuleTheory</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Variable</span> <a name="GRing.FieldTheory.ModuleTheory.V"><span class="id" title="variable">V</span></a> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.lmodType"><span class="id" title="abbreviation">lmodType</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.FieldTheory.F"><span class="id" title="variable">F</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="mathcomp.algebra.ssralg.html#GRing.FieldTheory.F"><span class="id" title="variable">F</span></a>) (<span class="id" title="var">v</span> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.FieldTheory.ModuleTheory.V"><span class="id" title="variable">V</span></a>).<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.scalerK"><span class="id" title="lemma">scalerK</span></a> <span class="id" title="var">a</span> : <a class="idref" href="mathcomp.algebra.ssralg.html#a"><span class="id" title="variable">a</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#b1eeadc2feabc7422252baa895418c7b"><span class="id" title="notation">!=</span></a> 0 <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#cancel"><span class="id" title="definition">cancel</span></a> ( <a class="idref" href="mathcomp.algebra.ssralg.html#9d4bc68f8a37455428efb931e05d31ce"><span class="id" title="notation">*:%</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#9d4bc68f8a37455428efb931e05d31ce"><span class="id" title="notation">R</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#9d4bc68f8a37455428efb931e05d31ce"><span class="id" title="notation">a</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssreflect.html#4509b22bf26e3d6d771897e22bd8bc8f"><span class="id" title="notation">:</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.FieldTheory.ModuleTheory.V"><span class="id" title="variable">V</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.FieldTheory.ModuleTheory.V"><span class="id" title="variable">V</span></a>) ( <a class="idref" href="mathcomp.algebra.ssralg.html#9d4bc68f8a37455428efb931e05d31ce"><span class="id" title="notation">*:%</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#9d4bc68f8a37455428efb931e05d31ce"><span class="id" title="notation">R</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#9d4bc68f8a37455428efb931e05d31ce"><span class="id" title="notation">a</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#9d4bc68f8a37455428efb931e05d31ce"><span class="id" title="notation">^-1</span></a>).<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.scalerKV"><span class="id" title="lemma">scalerKV</span></a> <span class="id" title="var">a</span> : <a class="idref" href="mathcomp.algebra.ssralg.html#a"><span class="id" title="variable">a</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#b1eeadc2feabc7422252baa895418c7b"><span class="id" title="notation">!=</span></a> 0 <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#cancel"><span class="id" title="definition">cancel</span></a> ( <a class="idref" href="mathcomp.algebra.ssralg.html#9d4bc68f8a37455428efb931e05d31ce"><span class="id" title="notation">*:%</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#9d4bc68f8a37455428efb931e05d31ce"><span class="id" title="notation">R</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#9d4bc68f8a37455428efb931e05d31ce"><span class="id" title="notation">a</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#9d4bc68f8a37455428efb931e05d31ce"><span class="id" title="notation">^-1</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssreflect.html#4509b22bf26e3d6d771897e22bd8bc8f"><span class="id" title="notation">:</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.FieldTheory.ModuleTheory.V"><span class="id" title="variable">V</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.FieldTheory.ModuleTheory.V"><span class="id" title="variable">V</span></a>) ( <a class="idref" href="mathcomp.algebra.ssralg.html#9d4bc68f8a37455428efb931e05d31ce"><span class="id" title="notation">*:%</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#9d4bc68f8a37455428efb931e05d31ce"><span class="id" title="notation">R</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#9d4bc68f8a37455428efb931e05d31ce"><span class="id" title="notation">a</span></a>).<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.scalerI"><span class="id" title="lemma">scalerI</span></a> <span class="id" title="var">a</span> : <a class="idref" href="mathcomp.algebra.ssralg.html#a"><span class="id" title="variable">a</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#b1eeadc2feabc7422252baa895418c7b"><span class="id" title="notation">!=</span></a> 0 <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#injective"><span class="id" title="definition">injective</span></a> ( <a class="idref" href="mathcomp.algebra.ssralg.html#9d4bc68f8a37455428efb931e05d31ce"><span class="id" title="notation">*:%</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#9d4bc68f8a37455428efb931e05d31ce"><span class="id" title="notation">R</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#9d4bc68f8a37455428efb931e05d31ce"><span class="id" title="notation">a</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssreflect.html#4509b22bf26e3d6d771897e22bd8bc8f"><span class="id" title="notation">:</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.FieldTheory.ModuleTheory.V"><span class="id" title="variable">V</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.FieldTheory.ModuleTheory.V"><span class="id" title="variable">V</span></a>).<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.scaler_eq0"><span class="id" title="lemma">scaler_eq0</span></a> <span class="id" title="var">a</span> <span class="id" title="var">v</span> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#a"><span class="id" title="variable">a</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#5aa7bcc9ac922e77482767d325fdbb69"><span class="id" title="notation">*:</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#v"><span class="id" title="variable">v</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#17d28d004d0863cb022d4ce832ddaaae"><span class="id" title="notation">==</span></a> 0<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">)</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#14a7a9c7dc61f86bfb664d400fabaf8a"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#a"><span class="id" title="variable">a</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#17d28d004d0863cb022d4ce832ddaaae"><span class="id" title="notation">==</span></a> 0<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#14a7a9c7dc61f86bfb664d400fabaf8a"><span class="id" title="notation">)</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#14a7a9c7dc61f86bfb664d400fabaf8a"><span class="id" title="notation">||</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#14a7a9c7dc61f86bfb664d400fabaf8a"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#v"><span class="id" title="variable">v</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#17d28d004d0863cb022d4ce832ddaaae"><span class="id" title="notation">==</span></a> 0<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#14a7a9c7dc61f86bfb664d400fabaf8a"><span class="id" title="notation">)</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.rpredZeq"><span class="id" title="lemma">rpredZeq</span></a> <span class="id" title="var">S</span> (<span class="id" title="var">modS</span> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.submodPred"><span class="id" title="abbreviation">submodPred</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#S"><span class="id" title="variable">S</span></a>) (<span class="id" title="var">kS</span> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#keyed_pred"><span class="id" title="record">keyed_pred</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#modS"><span class="id" title="variable">modS</span></a>) <span class="id" title="var">a</span> <span class="id" title="var">v</span> :<br/>
+&nbsp;&nbsp;<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#a"><span class="id" title="variable">a</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#5aa7bcc9ac922e77482767d325fdbb69"><span class="id" title="notation">*:</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#v"><span class="id" title="variable">v</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">\</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">in</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#kS"><span class="id" title="variable">kS</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">)</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#14a7a9c7dc61f86bfb664d400fabaf8a"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#a"><span class="id" title="variable">a</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#17d28d004d0863cb022d4ce832ddaaae"><span class="id" title="notation">==</span></a> 0<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#14a7a9c7dc61f86bfb664d400fabaf8a"><span class="id" title="notation">)</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#14a7a9c7dc61f86bfb664d400fabaf8a"><span class="id" title="notation">||</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#14a7a9c7dc61f86bfb664d400fabaf8a"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#v"><span class="id" title="variable">v</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">\</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">in</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#kS"><span class="id" title="variable">kS</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#14a7a9c7dc61f86bfb664d400fabaf8a"><span class="id" title="notation">)</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">End</span> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.FieldTheory.ModuleTheory"><span class="id" title="section">ModuleTheory</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.char_lalg"><span class="id" title="lemma">char_lalg</span></a> (<span class="id" title="var">A</span> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.lalgType"><span class="id" title="abbreviation">lalgType</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.FieldTheory.F"><span class="id" title="variable">F</span></a>) : <a class="idref" href="mathcomp.algebra.ssralg.html#51fab11b73193ca5e8e7a62cac129ebc"><span class="id" title="notation">[</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#51fab11b73193ca5e8e7a62cac129ebc"><span class="id" title="notation">char</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#A"><span class="id" title="variable">A</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#51fab11b73193ca5e8e7a62cac129ebc"><span class="id" title="notation">]</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#20bf07099d6d8cf369383b22fd37862e"><span class="id" title="notation">=</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#20bf07099d6d8cf369383b22fd37862e"><span class="id" title="notation">i</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#51fab11b73193ca5e8e7a62cac129ebc"><span class="id" title="notation">[</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#51fab11b73193ca5e8e7a62cac129ebc"><span class="id" title="notation">char</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.FieldTheory.F"><span class="id" title="variable">F</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#51fab11b73193ca5e8e7a62cac129ebc"><span class="id" title="notation">]</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Section</span> <a name="GRing.FieldTheory.Predicates"><span class="id" title="section">Predicates</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Context</span> (<span class="id" title="var">S</span> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#pred_class"><span class="id" title="abbreviation">pred_class</span></a>) (<span class="id" title="var">divS</span> : @<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.divrPred"><span class="id" title="abbreviation">divrPred</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.FieldTheory.F"><span class="id" title="variable">F</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#S"><span class="id" title="variable">S</span></a>) (<span class="id" title="var">kS</span> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#keyed_pred"><span class="id" title="record">keyed_pred</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#divS"><span class="id" title="variable">divS</span></a>).<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.fpredMl"><span class="id" title="lemma">fpredMl</span></a> <span class="id" title="var">x</span> <span class="id" title="var">y</span> : <a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">\</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">in</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.FieldTheory.Predicates.kS"><span class="id" title="variable">kS</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#b1eeadc2feabc7422252baa895418c7b"><span class="id" title="notation">!=</span></a> 0 <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#ed99e7035d9a1f8a2c1515be81ac2e5f"><span class="id" title="notation">×</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#y"><span class="id" title="variable">y</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">\</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">in</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.FieldTheory.Predicates.kS"><span class="id" title="variable">kS</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">)</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#y"><span class="id" title="variable">y</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">\</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">in</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.FieldTheory.Predicates.kS"><span class="id" title="variable">kS</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">)</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.fpredMr"><span class="id" title="lemma">fpredMr</span></a> <span class="id" title="var">x</span> <span class="id" title="var">y</span> : <a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">\</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">in</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.FieldTheory.Predicates.kS"><span class="id" title="variable">kS</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#b1eeadc2feabc7422252baa895418c7b"><span class="id" title="notation">!=</span></a> 0 <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#y"><span class="id" title="variable">y</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#ed99e7035d9a1f8a2c1515be81ac2e5f"><span class="id" title="notation">×</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">\</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">in</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.FieldTheory.Predicates.kS"><span class="id" title="variable">kS</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">)</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#y"><span class="id" title="variable">y</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">\</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">in</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.FieldTheory.Predicates.kS"><span class="id" title="variable">kS</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">)</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.fpred_divl"><span class="id" title="lemma">fpred_divl</span></a> <span class="id" title="var">x</span> <span class="id" title="var">y</span> : <a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">\</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">in</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.FieldTheory.Predicates.kS"><span class="id" title="variable">kS</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#b1eeadc2feabc7422252baa895418c7b"><span class="id" title="notation">!=</span></a> 0 <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#1adb36345c2607a4dd991537de5ddba3"><span class="id" title="notation">/</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#y"><span class="id" title="variable">y</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">\</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">in</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.FieldTheory.Predicates.kS"><span class="id" title="variable">kS</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">)</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#y"><span class="id" title="variable">y</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">\</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">in</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.FieldTheory.Predicates.kS"><span class="id" title="variable">kS</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">)</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.fpred_divr"><span class="id" title="lemma">fpred_divr</span></a> <span class="id" title="var">x</span> <span class="id" title="var">y</span> : <a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">\</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">in</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.FieldTheory.Predicates.kS"><span class="id" title="variable">kS</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#b1eeadc2feabc7422252baa895418c7b"><span class="id" title="notation">!=</span></a> 0 <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#y"><span class="id" title="variable">y</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#1adb36345c2607a4dd991537de5ddba3"><span class="id" title="notation">/</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">\</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">in</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.FieldTheory.Predicates.kS"><span class="id" title="variable">kS</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">)</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#y"><span class="id" title="variable">y</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">\</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">in</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.FieldTheory.Predicates.kS"><span class="id" title="variable">kS</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">)</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">End</span> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.FieldTheory.Predicates"><span class="id" title="section">Predicates</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">End</span> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.FieldTheory"><span class="id" title="section">FieldTheory</span></a>.<br/>
+
+<br/>
+
+<br/>
+<span class="id" title="keyword">Module</span> <a name="GRing.DecidableField"><span class="id" title="module">DecidableField</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.DecidableField.axiom"><span class="id" title="definition">axiom</span></a> (<span class="id" title="var">R</span> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.UnitRing.Exports.unitRingType"><span class="id" title="abbreviation">unitRingType</span></a>) (<span class="id" title="var">s</span> : <a class="idref" href="mathcomp.ssreflect.seq.html#seq"><span class="id" title="abbreviation">seq</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#R"><span class="id" title="variable">R</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#pred"><span class="id" title="definition">pred</span></a> (<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.formula"><span class="id" title="inductive">formula</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#R"><span class="id" title="variable">R</span></a>)) :=<br/>
+&nbsp;&nbsp;<span class="id" title="keyword">∀</span> <span class="id" title="var">e</span> <span class="id" title="var">f</span>, <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#reflect"><span class="id" title="abbreviation">reflect</span></a> (<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.holds"><span class="id" title="definition">holds</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#e"><span class="id" title="variable">e</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#f"><span class="id" title="variable">f</span></a>) (<a class="idref" href="mathcomp.algebra.ssralg.html#s"><span class="id" title="variable">s</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#e"><span class="id" title="variable">e</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#f"><span class="id" title="variable">f</span></a>).<br/>
+
+<br/>
+<span class="id" title="keyword">Record</span> <a name="GRing.DecidableField.mixin_of"><span class="id" title="record">mixin_of</span></a> (<span class="id" title="var">R</span> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.UnitRing.Exports.unitRingType"><span class="id" title="abbreviation">unitRingType</span></a>) : <span class="id" title="keyword">Type</span> :=<br/>
+&nbsp;&nbsp;<a name="GRing.DecidableField.Mixin"><span class="id" title="constructor">Mixin</span></a> { <a name="GRing.DecidableField.sat"><span class="id" title="projection">sat</span></a> : <a class="idref" href="mathcomp.ssreflect.seq.html#seq"><span class="id" title="abbreviation">seq</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#R"><span class="id" title="variable">R</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#pred"><span class="id" title="definition">pred</span></a> (<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.formula"><span class="id" title="inductive">formula</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#R"><span class="id" title="variable">R</span></a>); <a name="GRing.DecidableField.satP"><span class="id" title="projection">satP</span></a> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.DecidableField.axiom"><span class="id" title="definition">axiom</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#sat"><span class="id" title="method">sat</span></a>}.<br/>
+
+<br/>
+<span class="id" title="keyword">Section</span> <a name="GRing.DecidableField.ClassDef"><span class="id" title="section">ClassDef</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Record</span> <a name="GRing.DecidableField.class_of"><span class="id" title="record">class_of</span></a> (<span class="id" title="var">F</span> : <span class="id" title="keyword">Type</span>) : <span class="id" title="keyword">Type</span> :=<br/>
+&nbsp;&nbsp;<a name="GRing.DecidableField.Class"><span class="id" title="constructor">Class</span></a> {<a name="GRing.DecidableField.base"><span class="id" title="projection">base</span></a> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Field.class_of"><span class="id" title="record">Field.class_of</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#F"><span class="id" title="variable">F</span></a>; <a name="GRing.DecidableField.mixin"><span class="id" title="projection">mixin</span></a> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.DecidableField.mixin_of"><span class="id" title="record">mixin_of</span></a> (<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.UnitRing.Pack"><span class="id" title="constructor">UnitRing.Pack</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#base"><span class="id" title="method">base</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#F"><span class="id" title="variable">F</span></a>)}.<br/>
+
+<br/>
+<span class="id" title="keyword">Structure</span> <a name="GRing.DecidableField.type"><span class="id" title="record">type</span></a> := <a name="GRing.DecidableField.Pack"><span class="id" title="constructor">Pack</span></a> {<a name="GRing.DecidableField.sort"><span class="id" title="projection">sort</span></a>; <span class="id" title="var">_</span> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.DecidableField.class_of"><span class="id" title="record">class_of</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#sort"><span class="id" title="method">sort</span></a>; <span class="id" title="var">_</span> : <span class="id" title="keyword">Type</span>}.<br/>
+<span class="id" title="keyword">Variable</span> (<a name="GRing.DecidableField.ClassDef.T"><span class="id" title="variable">T</span></a> : <span class="id" title="keyword">Type</span>) (<a name="GRing.DecidableField.ClassDef.cT"><span class="id" title="variable">cT</span></a> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.DecidableField.type"><span class="id" title="record">type</span></a>).<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.DecidableField.class"><span class="id" title="definition">class</span></a> := <span class="id" title="keyword">let</span>: <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.DecidableField.Pack"><span class="id" title="constructor">Pack</span></a> <span class="id" title="var">_</span> <span class="id" title="var">c</span> <span class="id" title="var">_</span> <span class="id" title="keyword">as</span> <span class="id" title="var">cT'</span> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.DecidableField.ClassDef.cT"><span class="id" title="variable">cT</span></a> <span class="id" title="keyword">return</span> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.DecidableField.class_of"><span class="id" title="record">class_of</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#cT'"><span class="id" title="variable">cT'</span></a> <span class="id" title="tactic">in</span> <span class="id" title="var">c</span>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.DecidableField.clone"><span class="id" title="definition">clone</span></a> <span class="id" title="var">c</span> <span class="id" title="keyword">of</span> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#phant_id"><span class="id" title="definition">phant_id</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.DecidableField.class"><span class="id" title="definition">class</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#c"><span class="id" title="variable">c</span></a> := @<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.DecidableField.Pack"><span class="id" title="constructor">Pack</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.DecidableField.ClassDef.T"><span class="id" title="variable">T</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#c"><span class="id" title="variable">c</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.DecidableField.ClassDef.T"><span class="id" title="variable">T</span></a>.<br/>
+<span class="id" title="keyword">Let</span> <a name="GRing.DecidableField.ClassDef.xT"><span class="id" title="variable">xT</span></a> := <span class="id" title="keyword">let</span>: <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.DecidableField.Pack"><span class="id" title="constructor">Pack</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="mathcomp.algebra.ssralg.html#GRing.DecidableField.ClassDef.cT"><span class="id" title="variable">cT</span></a> <span class="id" title="tactic">in</span> <span class="id" title="var">T</span>.<br/>
+<span class="id" title="keyword">Notation</span> <a name="GRing.DecidableField.xclass"><span class="id" title="abbreviation">xclass</span></a> := (<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.DecidableField.class"><span class="id" title="definition">class</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssreflect.html#4509b22bf26e3d6d771897e22bd8bc8f"><span class="id" title="notation">:</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.DecidableField.class_of"><span class="id" title="record">class_of</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.DecidableField.ClassDef.xT"><span class="id" title="variable">xT</span></a>).<br/>
+
+<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.DecidableField.pack"><span class="id" title="definition">pack</span></a> <span class="id" title="var">b0</span> (<span class="id" title="var">m0</span> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.DecidableField.mixin_of"><span class="id" title="record">mixin_of</span></a> (@<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.UnitRing.Pack"><span class="id" title="constructor">UnitRing.Pack</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.DecidableField.ClassDef.T"><span class="id" title="variable">T</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#b0"><span class="id" title="variable">b0</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.DecidableField.ClassDef.T"><span class="id" title="variable">T</span></a>)) :=<br/>
+&nbsp;&nbsp;<span class="id" title="keyword">fun</span> <span class="id" title="var">bT</span> <span class="id" title="var">b</span> &amp; <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#phant_id"><span class="id" title="definition">phant_id</span></a> (<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Field.class"><span class="id" title="definition">Field.class</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#bT"><span class="id" title="variable">bT</span></a>) <a class="idref" href="mathcomp.algebra.ssralg.html#b"><span class="id" title="variable">b</span></a> ⇒<br/>
+&nbsp;&nbsp;<span class="id" title="keyword">fun</span> <span class="id" title="var">m</span> &amp; <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#phant_id"><span class="id" title="definition">phant_id</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#m0"><span class="id" title="variable">m0</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#m"><span class="id" title="variable">m</span></a> ⇒ <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.DecidableField.Pack"><span class="id" title="constructor">Pack</span></a> (@<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.DecidableField.Class"><span class="id" title="constructor">Class</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.DecidableField.ClassDef.T"><span class="id" title="variable">T</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#b"><span class="id" title="variable">b</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#m"><span class="id" title="variable">m</span></a>) <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.DecidableField.ClassDef.T"><span class="id" title="variable">T</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.DecidableField.eqType"><span class="id" title="definition">eqType</span></a> := @<a class="idref" href="mathcomp.ssreflect.eqtype.html#Equality.Pack"><span class="id" title="constructor">Equality.Pack</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.DecidableField.ClassDef.cT"><span class="id" title="variable">cT</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.DecidableField.xclass"><span class="id" title="abbreviation">xclass</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.DecidableField.ClassDef.xT"><span class="id" title="variable">xT</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.DecidableField.choiceType"><span class="id" title="definition">choiceType</span></a> := @<a class="idref" href="mathcomp.ssreflect.choice.html#Choice.Pack"><span class="id" title="constructor">Choice.Pack</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.DecidableField.ClassDef.cT"><span class="id" title="variable">cT</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.DecidableField.xclass"><span class="id" title="abbreviation">xclass</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.DecidableField.ClassDef.xT"><span class="id" title="variable">xT</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.DecidableField.zmodType"><span class="id" title="definition">zmodType</span></a> := @<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Zmodule.Pack"><span class="id" title="constructor">Zmodule.Pack</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.DecidableField.ClassDef.cT"><span class="id" title="variable">cT</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.DecidableField.xclass"><span class="id" title="abbreviation">xclass</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.DecidableField.ClassDef.xT"><span class="id" title="variable">xT</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.DecidableField.ringType"><span class="id" title="definition">ringType</span></a> := @<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Ring.Pack"><span class="id" title="constructor">Ring.Pack</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.DecidableField.ClassDef.cT"><span class="id" title="variable">cT</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.DecidableField.xclass"><span class="id" title="abbreviation">xclass</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.DecidableField.ClassDef.xT"><span class="id" title="variable">xT</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.DecidableField.comRingType"><span class="id" title="definition">comRingType</span></a> := @<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ComRing.Pack"><span class="id" title="constructor">ComRing.Pack</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.DecidableField.ClassDef.cT"><span class="id" title="variable">cT</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.DecidableField.xclass"><span class="id" title="abbreviation">xclass</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.DecidableField.ClassDef.xT"><span class="id" title="variable">xT</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.DecidableField.unitRingType"><span class="id" title="definition">unitRingType</span></a> := @<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.UnitRing.Pack"><span class="id" title="constructor">UnitRing.Pack</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.DecidableField.ClassDef.cT"><span class="id" title="variable">cT</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.DecidableField.xclass"><span class="id" title="abbreviation">xclass</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.DecidableField.ClassDef.xT"><span class="id" title="variable">xT</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.DecidableField.comUnitRingType"><span class="id" title="definition">comUnitRingType</span></a> := @<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ComUnitRing.Pack"><span class="id" title="constructor">ComUnitRing.Pack</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.DecidableField.ClassDef.cT"><span class="id" title="variable">cT</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.DecidableField.xclass"><span class="id" title="abbreviation">xclass</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.DecidableField.ClassDef.xT"><span class="id" title="variable">xT</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.DecidableField.idomainType"><span class="id" title="definition">idomainType</span></a> := @<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.IntegralDomain.Pack"><span class="id" title="constructor">IntegralDomain.Pack</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.DecidableField.ClassDef.cT"><span class="id" title="variable">cT</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.DecidableField.xclass"><span class="id" title="abbreviation">xclass</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.DecidableField.ClassDef.xT"><span class="id" title="variable">xT</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.DecidableField.fieldType"><span class="id" title="definition">fieldType</span></a> := @<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Field.Pack"><span class="id" title="constructor">Field.Pack</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.DecidableField.ClassDef.cT"><span class="id" title="variable">cT</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.DecidableField.xclass"><span class="id" title="abbreviation">xclass</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.DecidableField.ClassDef.xT"><span class="id" title="variable">xT</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">End</span> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.DecidableField.ClassDef"><span class="id" title="section">ClassDef</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Module</span> <a name="GRing.DecidableField.Exports"><span class="id" title="module">Exports</span></a>.<br/>
+<span class="id" title="keyword">Coercion</span> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.DecidableField.base"><span class="id" title="projection">base</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.DecidableField.base"><span class="id" title="projection">:</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.DecidableField.base"><span class="id" title="projection">class_of</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.DecidableField.base"><span class="id" title="projection">&gt;-&gt;</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.DecidableField.base"><span class="id" title="projection">Field.class_of</span></a>.<br/>
+<span class="id" title="keyword">Coercion</span> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.DecidableField.mixin"><span class="id" title="projection">mixin</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.DecidableField.mixin"><span class="id" title="projection">:</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.DecidableField.mixin"><span class="id" title="projection">class_of</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.DecidableField.mixin"><span class="id" title="projection">&gt;-&gt;</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.DecidableField.mixin"><span class="id" title="projection">mixin_of</span></a>.<br/>
+<span class="id" title="keyword">Coercion</span> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.DecidableField.sort"><span class="id" title="projection">sort</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.DecidableField.sort"><span class="id" title="projection">:</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.DecidableField.sort"><span class="id" title="projection">type</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.DecidableField.sort"><span class="id" title="projection">&gt;-&gt;</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.DecidableField.sort"><span class="id" title="projection">Sortclass</span></a>.<br/>
+<span class="id" title="keyword">Coercion</span> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.DecidableField.eqType"><span class="id" title="definition">eqType</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.DecidableField.eqType"><span class="id" title="definition">:</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.DecidableField.eqType"><span class="id" title="definition">type</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.DecidableField.eqType"><span class="id" title="definition">&gt;-&gt;</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.DecidableField.eqType"><span class="id" title="definition">Equality.type</span></a>.<br/>
+<span class="id" title="keyword">Canonical</span> <span class="id" title="var">eqType</span>.<br/>
+<span class="id" title="keyword">Coercion</span> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.DecidableField.choiceType"><span class="id" title="definition">choiceType</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.DecidableField.choiceType"><span class="id" title="definition">:</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.DecidableField.choiceType"><span class="id" title="definition">type</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.DecidableField.choiceType"><span class="id" title="definition">&gt;-&gt;</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.DecidableField.choiceType"><span class="id" title="definition">Choice.type</span></a>.<br/>
+<span class="id" title="keyword">Canonical</span> <span class="id" title="var">choiceType</span>.<br/>
+<span class="id" title="keyword">Coercion</span> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.DecidableField.zmodType"><span class="id" title="definition">zmodType</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.DecidableField.zmodType"><span class="id" title="definition">:</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.DecidableField.zmodType"><span class="id" title="definition">type</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.DecidableField.zmodType"><span class="id" title="definition">&gt;-&gt;</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.DecidableField.zmodType"><span class="id" title="definition">Zmodule.type</span></a>.<br/>
+<span class="id" title="keyword">Canonical</span> <span class="id" title="var">zmodType</span>.<br/>
+<span class="id" title="keyword">Coercion</span> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.DecidableField.ringType"><span class="id" title="definition">ringType</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.DecidableField.ringType"><span class="id" title="definition">:</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.DecidableField.ringType"><span class="id" title="definition">type</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.DecidableField.ringType"><span class="id" title="definition">&gt;-&gt;</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.DecidableField.ringType"><span class="id" title="definition">Ring.type</span></a>.<br/>
+<span class="id" title="keyword">Canonical</span> <span class="id" title="var">ringType</span>.<br/>
+<span class="id" title="keyword">Coercion</span> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.DecidableField.comRingType"><span class="id" title="definition">comRingType</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.DecidableField.comRingType"><span class="id" title="definition">:</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.DecidableField.comRingType"><span class="id" title="definition">type</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.DecidableField.comRingType"><span class="id" title="definition">&gt;-&gt;</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.DecidableField.comRingType"><span class="id" title="definition">ComRing.type</span></a>.<br/>
+<span class="id" title="keyword">Canonical</span> <span class="id" title="var">comRingType</span>.<br/>
+<span class="id" title="keyword">Coercion</span> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.DecidableField.unitRingType"><span class="id" title="definition">unitRingType</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.DecidableField.unitRingType"><span class="id" title="definition">:</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.DecidableField.unitRingType"><span class="id" title="definition">type</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.DecidableField.unitRingType"><span class="id" title="definition">&gt;-&gt;</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.DecidableField.unitRingType"><span class="id" title="definition">UnitRing.type</span></a>.<br/>
+<span class="id" title="keyword">Canonical</span> <span class="id" title="var">unitRingType</span>.<br/>
+<span class="id" title="keyword">Coercion</span> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.DecidableField.comUnitRingType"><span class="id" title="definition">comUnitRingType</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.DecidableField.comUnitRingType"><span class="id" title="definition">:</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.DecidableField.comUnitRingType"><span class="id" title="definition">type</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.DecidableField.comUnitRingType"><span class="id" title="definition">&gt;-&gt;</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.DecidableField.comUnitRingType"><span class="id" title="definition">ComUnitRing.type</span></a>.<br/>
+<span class="id" title="keyword">Canonical</span> <span class="id" title="var">comUnitRingType</span>.<br/>
+<span class="id" title="keyword">Coercion</span> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.DecidableField.idomainType"><span class="id" title="definition">idomainType</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.DecidableField.idomainType"><span class="id" title="definition">:</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.DecidableField.idomainType"><span class="id" title="definition">type</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.DecidableField.idomainType"><span class="id" title="definition">&gt;-&gt;</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.DecidableField.idomainType"><span class="id" title="definition">IntegralDomain.type</span></a>.<br/>
+<span class="id" title="keyword">Canonical</span> <span class="id" title="var">idomainType</span>.<br/>
+<span class="id" title="keyword">Coercion</span> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.DecidableField.fieldType"><span class="id" title="definition">fieldType</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.DecidableField.fieldType"><span class="id" title="definition">:</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.DecidableField.fieldType"><span class="id" title="definition">type</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.DecidableField.fieldType"><span class="id" title="definition">&gt;-&gt;</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.DecidableField.fieldType"><span class="id" title="definition">Field.type</span></a>.<br/>
+<span class="id" title="keyword">Canonical</span> <span class="id" title="var">fieldType</span>.<br/>
+<span class="id" title="keyword">Notation</span> <a name="GRing.DecidableField.Exports.decFieldType"><span class="id" title="abbreviation">decFieldType</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.DecidableField.type"><span class="id" title="record">type</span></a>.<br/>
+<span class="id" title="keyword">Notation</span> <a name="GRing.DecidableField.Exports.DecFieldType"><span class="id" title="abbreviation">DecFieldType</span></a> <span class="id" title="var">T</span> <span class="id" title="var">m</span> := (@<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.DecidableField.pack"><span class="id" title="definition">pack</span></a> <span class="id" title="var">T</span> <span class="id" title="var">_</span> <span class="id" title="var">m</span> <span class="id" title="var">_</span> <span class="id" title="var">_</span> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#id"><span class="id" title="abbreviation">id</span></a> <span class="id" title="var">_</span> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#id"><span class="id" title="abbreviation">id</span></a>).<br/>
+<span class="id" title="keyword">Notation</span> <a name="GRing.DecidableField.Exports.DecFieldMixin"><span class="id" title="abbreviation">DecFieldMixin</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.DecidableField.Mixin"><span class="id" title="constructor">Mixin</span></a>.<br/>
+<span class="id" title="keyword">Notation</span> <a name="571e046df0f3cfb95cda10363e01c19e"><span class="id" title="notation">&quot;</span></a>[ 'decFieldType' 'of' T 'for' cT ]" := (@<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.DecidableField.clone"><span class="id" title="definition">clone</span></a> <span class="id" title="var">T</span> <span class="id" title="var">cT</span> <span class="id" title="var">_</span> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#idfun"><span class="id" title="abbreviation">idfun</span></a>)<br/>
+&nbsp;&nbsp;(<span class="id" title="tactic">at</span> <span class="id" title="keyword">level</span> 0, <span class="id" title="var">format</span> "[ 'decFieldType' 'of' T 'for' cT ]") : <span class="id" title="var">form_scope</span>.<br/>
+<span class="id" title="keyword">Notation</span> <a name="69397cdbaa48460ee270e9344cbfe301"><span class="id" title="notation">&quot;</span></a>[ 'decFieldType' 'of' T ]" := (@<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.DecidableField.clone"><span class="id" title="definition">clone</span></a> <span class="id" title="var">T</span> <span class="id" title="var">_</span> <span class="id" title="var">_</span> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#id"><span class="id" title="abbreviation">id</span></a>)<br/>
+&nbsp;&nbsp;(<span class="id" title="tactic">at</span> <span class="id" title="keyword">level</span> 0, <span class="id" title="var">format</span> "[ 'decFieldType' 'of' T ]") : <span class="id" title="var">form_scope</span>.<br/>
+<span class="id" title="keyword">End</span> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.DecidableField.Exports"><span class="id" title="module">Exports</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">End</span> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.DecidableField"><span class="id" title="module">DecidableField</span></a>.<br/>
+<span class="id" title="keyword">Import</span> <span class="id" title="var">DecidableField.Exports</span>.<br/>
+
+<br/>
+<span class="id" title="keyword">Section</span> <a name="GRing.DecidableFieldTheory"><span class="id" title="section">DecidableFieldTheory</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Variable</span> <a name="GRing.DecidableFieldTheory.F"><span class="id" title="variable">F</span></a> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.decFieldType"><span class="id" title="abbreviation">decFieldType</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.sat"><span class="id" title="definition">sat</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.sat"><span class="id" title="projection">DecidableField.sat</span></a> (<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.class"><span class="id" title="definition">DecidableField.class</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.DecidableFieldTheory.F"><span class="id" title="variable">F</span></a>).<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.satP"><span class="id" title="lemma">satP</span></a> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.axiom"><span class="id" title="definition">DecidableField.axiom</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.sat"><span class="id" title="definition">sat</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Fact</span> <a name="GRing.sol_subproof"><span class="id" title="lemma">sol_subproof</span></a> <span class="id" title="var">n</span> <span class="id" title="var">f</span> :<br/>
+&nbsp;&nbsp;<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#reflect"><span class="id" title="abbreviation">reflect</span></a> (<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#84eb6d2849dbf3581b1c0c05add5f2d8"><span class="id" title="notation">∃</span></a> <span class="id" title="var">s</span><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#84eb6d2849dbf3581b1c0c05add5f2d8"><span class="id" title="notation">,</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#49ac24efa716d8b0ee8943bc1d1769a9"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.ssreflect.seq.html#size"><span class="id" title="definition">size</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#s"><span class="id" title="variable">s</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#17d28d004d0863cb022d4ce832ddaaae"><span class="id" title="notation">==</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#n"><span class="id" title="variable">n</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#49ac24efa716d8b0ee8943bc1d1769a9"><span class="id" title="notation">)</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#49ac24efa716d8b0ee8943bc1d1769a9"><span class="id" title="notation">&amp;&amp;</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.sat"><span class="id" title="definition">sat</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#s"><span class="id" title="variable">s</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#f"><span class="id" title="variable">f</span></a>)<br/>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.sat"><span class="id" title="definition">sat</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#747e2b5d553b2dfe76e024e1f8fb39d1"><span class="id" title="notation">[::]</span></a> (<a class="idref" href="mathcomp.ssreflect.seq.html#foldr"><span class="id" title="definition">foldr</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Exists"><span class="id" title="constructor">Exists</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#f"><span class="id" title="variable">f</span></a> (<a class="idref" href="mathcomp.ssreflect.seq.html#iota"><span class="id" title="definition">iota</span></a> 0 <a class="idref" href="mathcomp.algebra.ssralg.html#n"><span class="id" title="variable">n</span></a>))).<br/>
+
+<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.sol"><span class="id" title="definition">sol</span></a> <span class="id" title="var">n</span> <span class="id" title="var">f</span> :=<br/>
+&nbsp;&nbsp;<span class="id" title="keyword">if</span> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.sol_subproof"><span class="id" title="lemma">sol_subproof</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#n"><span class="id" title="variable">n</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#f"><span class="id" title="variable">f</span></a> <span class="id" title="keyword">is</span> <span class="id" title="var">ReflectT</span> <span class="id" title="var">sP</span> <span class="id" title="keyword">then</span> <a class="idref" href="mathcomp.ssreflect.choice.html#xchoose"><span class="id" title="definition">xchoose</span></a> <span class="id" title="var">sP</span> <span class="id" title="keyword">else</span> <a class="idref" href="mathcomp.ssreflect.seq.html#nseq"><span class="id" title="definition">nseq</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#n"><span class="id" title="variable">n</span></a> 0.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.size_sol"><span class="id" title="lemma">size_sol</span></a> <span class="id" title="var">n</span> <span class="id" title="var">f</span> : <a class="idref" href="mathcomp.ssreflect.seq.html#size"><span class="id" title="definition">size</span></a> (<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.sol"><span class="id" title="definition">sol</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#n"><span class="id" title="variable">n</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#f"><span class="id" title="variable">f</span></a>) <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#n"><span class="id" title="variable">n</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.solP"><span class="id" title="lemma">solP</span></a> <span class="id" title="var">n</span> <span class="id" title="var">f</span> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#reflect"><span class="id" title="abbreviation">reflect</span></a> (<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#28b18e493f7cb0bd8447607bdc385ff8"><span class="id" title="notation">exists2</span></a> <span class="id" title="var">s</span><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#28b18e493f7cb0bd8447607bdc385ff8"><span class="id" title="notation">,</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#size"><span class="id" title="definition">size</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#s"><span class="id" title="variable">s</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#n"><span class="id" title="variable">n</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#28b18e493f7cb0bd8447607bdc385ff8"><span class="id" title="notation">&amp;</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.holds"><span class="id" title="definition">holds</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#s"><span class="id" title="variable">s</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#f"><span class="id" title="variable">f</span></a>) (<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.sat"><span class="id" title="definition">sat</span></a> (<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.sol"><span class="id" title="definition">sol</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#n"><span class="id" title="variable">n</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#f"><span class="id" title="variable">f</span></a>) <a class="idref" href="mathcomp.algebra.ssralg.html#f"><span class="id" title="variable">f</span></a>).<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.eq_sat"><span class="id" title="lemma">eq_sat</span></a> <span class="id" title="var">f1</span> <span class="id" title="var">f2</span> :<br/>
+&nbsp;&nbsp;<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">(</span></a><span class="id" title="keyword">∀</span> <span class="id" title="var">e</span>, <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.holds"><span class="id" title="definition">holds</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#e"><span class="id" title="variable">e</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#f1"><span class="id" title="variable">f1</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#df1ced36fc33ce188051218bca314374"><span class="id" title="notation">↔</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.holds"><span class="id" title="definition">holds</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#e"><span class="id" title="variable">e</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#f2"><span class="id" title="variable">f2</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">)</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.sat"><span class="id" title="definition">sat</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#8f28bbd804547edd8de802d63ef85617"><span class="id" title="notation">^~</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#f1"><span class="id" title="variable">f1</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#2500d48ed8e862ccfda98a44dff88963"><span class="id" title="notation">=1</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.sat"><span class="id" title="definition">sat</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#8f28bbd804547edd8de802d63ef85617"><span class="id" title="notation">^~</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#f2"><span class="id" title="variable">f2</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.eq_sol"><span class="id" title="lemma">eq_sol</span></a> <span class="id" title="var">f1</span> <span class="id" title="var">f2</span> :<br/>
+&nbsp;&nbsp;<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">(</span></a><span class="id" title="keyword">∀</span> <span class="id" title="var">e</span>, <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.holds"><span class="id" title="definition">holds</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#e"><span class="id" title="variable">e</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#f1"><span class="id" title="variable">f1</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#df1ced36fc33ce188051218bca314374"><span class="id" title="notation">↔</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.holds"><span class="id" title="definition">holds</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#e"><span class="id" title="variable">e</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#f2"><span class="id" title="variable">f2</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">)</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.sol"><span class="id" title="definition">sol</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#8f28bbd804547edd8de802d63ef85617"><span class="id" title="notation">^~</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#f1"><span class="id" title="variable">f1</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#2500d48ed8e862ccfda98a44dff88963"><span class="id" title="notation">=1</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.sol"><span class="id" title="definition">sol</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#8f28bbd804547edd8de802d63ef85617"><span class="id" title="notation">^~</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#f2"><span class="id" title="variable">f2</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">End</span> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.DecidableFieldTheory"><span class="id" title="section">DecidableFieldTheory</span></a>.<br/>
+
+<br/>
+
+<br/>
+<span class="id" title="keyword">Section</span> <a name="GRing.QE_Mixin"><span class="id" title="section">QE_Mixin</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Variable</span> <a name="GRing.QE_Mixin.F"><span class="id" title="variable">F</span></a> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.type"><span class="id" title="record">Field.type</span></a>.<br/>
+<span class="id" title="keyword">Implicit</span> <span class="id" title="keyword">Type</span> <span class="id" title="var">f</span> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.formula"><span class="id" title="inductive">formula</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.QE_Mixin.F"><span class="id" title="variable">F</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Variable</span> <a name="GRing.QE_Mixin.proj"><span class="id" title="variable">proj</span></a> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#nat"><span class="id" title="inductive">nat</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#seq"><span class="id" title="abbreviation">seq</span></a> (<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.term"><span class="id" title="inductive">term</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.QE_Mixin.F"><span class="id" title="variable">F</span></a>) <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#d19c7eafd0e2d195d10df94b392087b5"><span class="id" title="notation">×</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#seq"><span class="id" title="abbreviation">seq</span></a> (<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.term"><span class="id" title="inductive">term</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.QE_Mixin.F"><span class="id" title="variable">F</span></a>) <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.formula"><span class="id" title="inductive">formula</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.QE_Mixin.F"><span class="id" title="variable">F</span></a>.<br/>
+</div>
+
+<div class="doc">
+ proj is the elimination of a single existential quantifier
+<div class="paragraph"> </div>
+
+ The elimination projector is well_formed.
+</div>
+<div class="code">
+<span class="id" title="keyword">Definition</span> <a name="GRing.wf_QE_proj"><span class="id" title="definition">wf_QE_proj</span></a> :=<br/>
+&nbsp;&nbsp;<span class="id" title="keyword">∀</span> <span class="id" title="var">i</span> <span class="id" title="var">bc</span> (<span class="id" title="var">bc_i</span> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.QE_Mixin.proj"><span class="id" title="variable">proj</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#i"><span class="id" title="variable">i</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#bc"><span class="id" title="variable">bc</span></a>),<br/>
+&nbsp;&nbsp;<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.dnf_rterm"><span class="id" title="definition">dnf_rterm</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#bc"><span class="id" title="variable">bc</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.qf_form"><span class="id" title="definition">qf_form</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#bc_i"><span class="id" title="variable">bc_i</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#49ac24efa716d8b0ee8943bc1d1769a9"><span class="id" title="notation">&amp;&amp;</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.rformula"><span class="id" title="definition">rformula</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#bc_i"><span class="id" title="variable">bc_i</span></a>.<br/>
+
+<br/>
+</div>
+
+<div class="doc">
+ The elimination projector is valid
+</div>
+<div class="code">
+<span class="id" title="keyword">Definition</span> <a name="GRing.valid_QE_proj"><span class="id" title="definition">valid_QE_proj</span></a> :=<br/>
+&nbsp;&nbsp;<span class="id" title="keyword">∀</span> <span class="id" title="var">i</span> <span class="id" title="var">bc</span> (<span class="id" title="var">ex_i_bc</span> := (<a class="idref" href="mathcomp.algebra.ssralg.html#cde0c417a2306d50158e89540db8c60d"><span class="id" title="notation">'</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#cde0c417a2306d50158e89540db8c60d"><span class="id" title="notation">∃</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#cde0c417a2306d50158e89540db8c60d"><span class="id" title="notation">'</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#cde0c417a2306d50158e89540db8c60d"><span class="id" title="notation">X_i</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#cde0c417a2306d50158e89540db8c60d"><span class="id" title="notation">,</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.dnf_to_form"><span class="id" title="definition">dnf_to_form</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#36229928b54642a4a7da943ccf8f9612"><span class="id" title="notation">[::</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#bc"><span class="id" title="variable">bc</span></a><a class="idref" href="mathcomp.ssreflect.seq.html#36229928b54642a4a7da943ccf8f9612"><span class="id" title="notation">]</span></a>)%<span class="id" title="var">T</span>) <span class="id" title="var">e</span>,<br/>
+&nbsp;&nbsp;<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.dnf_rterm"><span class="id" title="definition">dnf_rterm</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#bc"><span class="id" title="variable">bc</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#reflect"><span class="id" title="abbreviation">reflect</span></a> (<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.holds"><span class="id" title="definition">holds</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#e"><span class="id" title="variable">e</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#ex_i_bc"><span class="id" title="variable">ex_i_bc</span></a>) (<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.qf_eval"><span class="id" title="definition">qf_eval</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#e"><span class="id" title="variable">e</span></a> (<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.QE_Mixin.proj"><span class="id" title="variable">proj</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#i"><span class="id" title="variable">i</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#bc"><span class="id" title="variable">bc</span></a>)).<br/>
+
+<br/>
+<span class="id" title="keyword">Hypotheses</span> (<a name="GRing.QE_Mixin.wf_proj"><span class="id" title="variable">wf_proj</span></a> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.wf_QE_proj"><span class="id" title="definition">wf_QE_proj</span></a>) (<a name="GRing.QE_Mixin.ok_proj"><span class="id" title="variable">ok_proj</span></a> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.valid_QE_proj"><span class="id" title="definition">valid_QE_proj</span></a>).<br/>
+
+<br/>
+<span class="id" title="keyword">Let</span> <a name="GRing.QE_Mixin.elim_aux"><span class="id" title="variable">elim_aux</span></a> <span class="id" title="var">f</span> <span class="id" title="var">n</span> := <a class="idref" href="mathcomp.ssreflect.seq.html#foldr"><span class="id" title="definition">foldr</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Or"><span class="id" title="constructor">Or</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.False"><span class="id" title="abbreviation">False</span></a> (<a class="idref" href="mathcomp.ssreflect.seq.html#map"><span class="id" title="definition">map</span></a> (<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.QE_Mixin.proj"><span class="id" title="variable">proj</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#n"><span class="id" title="variable">n</span></a>) (<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.qf_to_dnf"><span class="id" title="definition">qf_to_dnf</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#f"><span class="id" title="variable">f</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#false"><span class="id" title="constructor">false</span></a>)).<br/>
+
+<br/>
+<span class="id" title="keyword">Fixpoint</span> <a name="GRing.quantifier_elim"><span class="id" title="definition">quantifier_elim</span></a> <span class="id" title="var">f</span> :=<br/>
+&nbsp;&nbsp;<span class="id" title="keyword">match</span> <a class="idref" href="mathcomp.algebra.ssralg.html#f"><span class="id" title="variable">f</span></a> <span class="id" title="keyword">with</span><br/>
+&nbsp;&nbsp;| <span class="id" title="var">f1</span> <a class="idref" href="mathcomp.algebra.ssralg.html#421c9c3c51833f1724975feaafb4b744"><span class="id" title="notation">∧</span></a> <span class="id" title="var">f2</span> ⇒ <a class="idref" href="mathcomp.algebra.ssralg.html#421c9c3c51833f1724975feaafb4b744"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#quantifier_elim"><span class="id" title="definition">quantifier_elim</span></a> <span class="id" title="var">f1</span><a class="idref" href="mathcomp.algebra.ssralg.html#421c9c3c51833f1724975feaafb4b744"><span class="id" title="notation">)</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#421c9c3c51833f1724975feaafb4b744"><span class="id" title="notation">∧</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#421c9c3c51833f1724975feaafb4b744"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#quantifier_elim"><span class="id" title="definition">quantifier_elim</span></a> <span class="id" title="var">f2</span><a class="idref" href="mathcomp.algebra.ssralg.html#421c9c3c51833f1724975feaafb4b744"><span class="id" title="notation">)</span></a><br/>
+&nbsp;&nbsp;| <span class="id" title="var">f1</span> <a class="idref" href="mathcomp.algebra.ssralg.html#00b8327e04e2b6f2d979016edbc0c67a"><span class="id" title="notation">∨</span></a> <span class="id" title="var">f2</span> ⇒ <a class="idref" href="mathcomp.algebra.ssralg.html#00b8327e04e2b6f2d979016edbc0c67a"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#quantifier_elim"><span class="id" title="definition">quantifier_elim</span></a> <span class="id" title="var">f1</span><a class="idref" href="mathcomp.algebra.ssralg.html#00b8327e04e2b6f2d979016edbc0c67a"><span class="id" title="notation">)</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#00b8327e04e2b6f2d979016edbc0c67a"><span class="id" title="notation">∨</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#00b8327e04e2b6f2d979016edbc0c67a"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#quantifier_elim"><span class="id" title="definition">quantifier_elim</span></a> <span class="id" title="var">f2</span><a class="idref" href="mathcomp.algebra.ssralg.html#00b8327e04e2b6f2d979016edbc0c67a"><span class="id" title="notation">)</span></a><br/>
+&nbsp;&nbsp;| <span class="id" title="var">f1</span> <a class="idref" href="mathcomp.algebra.ssralg.html#0686cd1bb1af98b02865ebbedcf70bd7"><span class="id" title="notation">==&gt;</span></a> <span class="id" title="var">f2</span> ⇒ <a class="idref" href="mathcomp.algebra.ssralg.html#00b8327e04e2b6f2d979016edbc0c67a"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#bf1935aa3f28dfd45301897795b397a5"><span class="id" title="notation">¬</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#quantifier_elim"><span class="id" title="definition">quantifier_elim</span></a> <span class="id" title="var">f1</span><a class="idref" href="mathcomp.algebra.ssralg.html#00b8327e04e2b6f2d979016edbc0c67a"><span class="id" title="notation">)</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#00b8327e04e2b6f2d979016edbc0c67a"><span class="id" title="notation">∨</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#00b8327e04e2b6f2d979016edbc0c67a"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#quantifier_elim"><span class="id" title="definition">quantifier_elim</span></a> <span class="id" title="var">f2</span><a class="idref" href="mathcomp.algebra.ssralg.html#00b8327e04e2b6f2d979016edbc0c67a"><span class="id" title="notation">)</span></a><br/>
+&nbsp;&nbsp;| <a class="idref" href="mathcomp.algebra.ssralg.html#bf1935aa3f28dfd45301897795b397a5"><span class="id" title="notation">¬</span></a> <span class="id" title="var">f</span> ⇒ <a class="idref" href="mathcomp.algebra.ssralg.html#bf1935aa3f28dfd45301897795b397a5"><span class="id" title="notation">¬</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#quantifier_elim"><span class="id" title="definition">quantifier_elim</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#f"><span class="id" title="variable">f</span></a><br/>
+&nbsp;&nbsp;| (<a class="idref" href="mathcomp.algebra.ssralg.html#cde0c417a2306d50158e89540db8c60d"><span class="id" title="notation">'</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#cde0c417a2306d50158e89540db8c60d"><span class="id" title="notation">∃</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#cde0c417a2306d50158e89540db8c60d"><span class="id" title="notation">'</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#cde0c417a2306d50158e89540db8c60d"><span class="id" title="notation">X_n</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#cde0c417a2306d50158e89540db8c60d"><span class="id" title="notation">,</span></a> <span class="id" title="var">f</span>) ⇒ <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.QE_Mixin.elim_aux"><span class="id" title="variable">elim_aux</span></a> (<a class="idref" href="mathcomp.algebra.ssralg.html#quantifier_elim"><span class="id" title="definition">quantifier_elim</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#f"><span class="id" title="variable">f</span></a>) <span class="id" title="var">n</span><br/>
+&nbsp;&nbsp;| (<a class="idref" href="mathcomp.algebra.ssralg.html#bc08eb662d28e6715d9720beafd75750"><span class="id" title="notation">'</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#bc08eb662d28e6715d9720beafd75750"><span class="id" title="notation">∀</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#bc08eb662d28e6715d9720beafd75750"><span class="id" title="notation">'</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#bc08eb662d28e6715d9720beafd75750"><span class="id" title="notation">X_n</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#bc08eb662d28e6715d9720beafd75750"><span class="id" title="notation">,</span></a> <span class="id" title="var">f</span>) ⇒ <a class="idref" href="mathcomp.algebra.ssralg.html#bf1935aa3f28dfd45301897795b397a5"><span class="id" title="notation">¬</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.QE_Mixin.elim_aux"><span class="id" title="variable">elim_aux</span></a> (<a class="idref" href="mathcomp.algebra.ssralg.html#bf1935aa3f28dfd45301897795b397a5"><span class="id" title="notation">¬</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#quantifier_elim"><span class="id" title="definition">quantifier_elim</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#f"><span class="id" title="variable">f</span></a>) <span class="id" title="var">n</span><br/>
+&nbsp;&nbsp;| <span class="id" title="var">_</span> ⇒ <a class="idref" href="mathcomp.algebra.ssralg.html#f"><span class="id" title="variable">f</span></a><br/>
+&nbsp;&nbsp;<span class="id" title="keyword">end</span>%<span class="id" title="var">T</span>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.quantifier_elim_wf"><span class="id" title="lemma">quantifier_elim_wf</span></a> <span class="id" title="var">f</span> :<br/>
+&nbsp;&nbsp;<span class="id" title="keyword">let</span> <span class="id" title="var">qf</span> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.quantifier_elim"><span class="id" title="definition">quantifier_elim</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#f"><span class="id" title="variable">f</span></a> <span class="id" title="tactic">in</span> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.rformula"><span class="id" title="definition">rformula</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#f"><span class="id" title="variable">f</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.qf_form"><span class="id" title="definition">qf_form</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#qf"><span class="id" title="variable">qf</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#49ac24efa716d8b0ee8943bc1d1769a9"><span class="id" title="notation">&amp;&amp;</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.rformula"><span class="id" title="definition">rformula</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#qf"><span class="id" title="variable">qf</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.quantifier_elim_rformP"><span class="id" title="lemma">quantifier_elim_rformP</span></a> <span class="id" title="var">e</span> <span class="id" title="var">f</span> :<br/>
+&nbsp;&nbsp;<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.rformula"><span class="id" title="definition">rformula</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#f"><span class="id" title="variable">f</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#reflect"><span class="id" title="abbreviation">reflect</span></a> (<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.holds"><span class="id" title="definition">holds</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#e"><span class="id" title="variable">e</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#f"><span class="id" title="variable">f</span></a>) (<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.qf_eval"><span class="id" title="definition">qf_eval</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#e"><span class="id" title="variable">e</span></a> (<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.quantifier_elim"><span class="id" title="definition">quantifier_elim</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#f"><span class="id" title="variable">f</span></a>)).<br/>
+
+<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.proj_sat"><span class="id" title="definition">proj_sat</span></a> <span class="id" title="var">e</span> <span class="id" title="var">f</span> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.qf_eval"><span class="id" title="definition">qf_eval</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#e"><span class="id" title="variable">e</span></a> (<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.quantifier_elim"><span class="id" title="definition">quantifier_elim</span></a> (<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.to_rform"><span class="id" title="definition">to_rform</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#f"><span class="id" title="variable">f</span></a>)).<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.proj_satP"><span class="id" title="lemma">proj_satP</span></a> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.axiom"><span class="id" title="definition">DecidableField.axiom</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.proj_sat"><span class="id" title="definition">proj_sat</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.QEdecFieldMixin"><span class="id" title="definition">QEdecFieldMixin</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Mixin"><span class="id" title="constructor">DecidableField.Mixin</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.proj_satP"><span class="id" title="lemma">proj_satP</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">End</span> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.QE_Mixin"><span class="id" title="section">QE_Mixin</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Module</span> <a name="GRing.ClosedField"><span class="id" title="module">ClosedField</span></a>.<br/>
+
+<br/>
+</div>
+
+<div class="doc">
+ Axiom == all non-constant monic polynomials have a root
+</div>
+<div class="code">
+<span class="id" title="keyword">Definition</span> <a name="GRing.ClosedField.axiom"><span class="id" title="definition">axiom</span></a> (<span class="id" title="var">R</span> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Ring.Exports.ringType"><span class="id" title="abbreviation">ringType</span></a>) :=<br/>
+&nbsp;&nbsp;<span class="id" title="keyword">∀</span> <span class="id" title="var">n</span> (<span class="id" title="var">P</span> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#nat"><span class="id" title="inductive">nat</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#R"><span class="id" title="variable">R</span></a>), <a class="idref" href="mathcomp.algebra.ssralg.html#n"><span class="id" title="variable">n</span></a> <a class="idref" href="mathcomp.ssreflect.ssrnat.html#19ab5cfd7e4f60fa14f22b576013bd96"><span class="id" title="notation">&gt;</span></a> 0 <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a><br/>
+&nbsp;&nbsp;&nbsp;<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#84eb6d2849dbf3581b1c0c05add5f2d8"><span class="id" title="notation">∃</span></a> <span class="id" title="var">x</span> : <a class="idref" href="mathcomp.algebra.ssralg.html#R"><span class="id" title="variable">R</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#84eb6d2849dbf3581b1c0c05add5f2d8"><span class="id" title="notation">,</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#b5a6699e28c97bb33352772cfa3ea869"><span class="id" title="notation">^+</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#n"><span class="id" title="variable">n</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#33f78485f60ea5a637d17f41367f37d2"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#33f78485f60ea5a637d17f41367f37d2"><span class="id" title="notation">sum_</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#33f78485f60ea5a637d17f41367f37d2"><span class="id" title="notation">(</span></a><span class="id" title="var">i</span> <a class="idref" href="mathcomp.algebra.ssralg.html#33f78485f60ea5a637d17f41367f37d2"><span class="id" title="notation">&lt;</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#n"><span class="id" title="variable">n</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#33f78485f60ea5a637d17f41367f37d2"><span class="id" title="notation">)</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#P"><span class="id" title="variable">P</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#i"><span class="id" title="variable">i</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#ed99e7035d9a1f8a2c1515be81ac2e5f"><span class="id" title="notation">×</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#ed99e7035d9a1f8a2c1515be81ac2e5f"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#b5a6699e28c97bb33352772cfa3ea869"><span class="id" title="notation">^+</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#i"><span class="id" title="variable">i</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#ed99e7035d9a1f8a2c1515be81ac2e5f"><span class="id" title="notation">)</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Section</span> <a name="GRing.ClosedField.ClassDef"><span class="id" title="section">ClassDef</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Record</span> <a name="GRing.ClosedField.class_of"><span class="id" title="record">class_of</span></a> (<span class="id" title="var">F</span> : <span class="id" title="keyword">Type</span>) : <span class="id" title="keyword">Type</span> :=<br/>
+&nbsp;&nbsp;<a name="GRing.ClosedField.Class"><span class="id" title="constructor">Class</span></a> {<a name="GRing.ClosedField.base"><span class="id" title="projection">base</span></a> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.DecidableField.class_of"><span class="id" title="record">DecidableField.class_of</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#F"><span class="id" title="variable">F</span></a>; <span class="id" title="var">_</span> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ClosedField.axiom"><span class="id" title="definition">axiom</span></a> (<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Ring.Pack"><span class="id" title="constructor">Ring.Pack</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#base"><span class="id" title="method">base</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#F"><span class="id" title="variable">F</span></a>)}.<br/>
+
+<br/>
+<span class="id" title="keyword">Structure</span> <a name="GRing.ClosedField.type"><span class="id" title="record">type</span></a> := <a name="GRing.ClosedField.Pack"><span class="id" title="constructor">Pack</span></a> {<a name="GRing.ClosedField.sort"><span class="id" title="projection">sort</span></a>; <span class="id" title="var">_</span> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ClosedField.class_of"><span class="id" title="record">class_of</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#sort"><span class="id" title="method">sort</span></a>; <span class="id" title="var">_</span> : <span class="id" title="keyword">Type</span>}.<br/>
+<span class="id" title="keyword">Variable</span> (<a name="GRing.ClosedField.ClassDef.T"><span class="id" title="variable">T</span></a> : <span class="id" title="keyword">Type</span>) (<a name="GRing.ClosedField.ClassDef.cT"><span class="id" title="variable">cT</span></a> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ClosedField.type"><span class="id" title="record">type</span></a>).<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.ClosedField.class"><span class="id" title="definition">class</span></a> := <span class="id" title="keyword">let</span>: <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ClosedField.Pack"><span class="id" title="constructor">Pack</span></a> <span class="id" title="var">_</span> <span class="id" title="var">c</span> <span class="id" title="var">_</span> <span class="id" title="keyword">as</span> <span class="id" title="var">cT'</span> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ClosedField.ClassDef.cT"><span class="id" title="variable">cT</span></a> <span class="id" title="keyword">return</span> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ClosedField.class_of"><span class="id" title="record">class_of</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#cT'"><span class="id" title="variable">cT'</span></a> <span class="id" title="tactic">in</span> <span class="id" title="var">c</span>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.ClosedField.clone"><span class="id" title="definition">clone</span></a> <span class="id" title="var">c</span> <span class="id" title="keyword">of</span> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#phant_id"><span class="id" title="definition">phant_id</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ClosedField.class"><span class="id" title="definition">class</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#c"><span class="id" title="variable">c</span></a> := @<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ClosedField.Pack"><span class="id" title="constructor">Pack</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ClosedField.ClassDef.T"><span class="id" title="variable">T</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#c"><span class="id" title="variable">c</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ClosedField.ClassDef.T"><span class="id" title="variable">T</span></a>.<br/>
+<span class="id" title="keyword">Let</span> <a name="GRing.ClosedField.ClassDef.xT"><span class="id" title="variable">xT</span></a> := <span class="id" title="keyword">let</span>: <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ClosedField.Pack"><span class="id" title="constructor">Pack</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="mathcomp.algebra.ssralg.html#GRing.ClosedField.ClassDef.cT"><span class="id" title="variable">cT</span></a> <span class="id" title="tactic">in</span> <span class="id" title="var">T</span>.<br/>
+<span class="id" title="keyword">Notation</span> <a name="GRing.ClosedField.xclass"><span class="id" title="abbreviation">xclass</span></a> := (<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ClosedField.class"><span class="id" title="definition">class</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssreflect.html#4509b22bf26e3d6d771897e22bd8bc8f"><span class="id" title="notation">:</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ClosedField.class_of"><span class="id" title="record">class_of</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ClosedField.ClassDef.xT"><span class="id" title="variable">xT</span></a>).<br/>
+
+<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.ClosedField.pack"><span class="id" title="definition">pack</span></a> <span class="id" title="var">b0</span> (<span class="id" title="var">m0</span> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ClosedField.axiom"><span class="id" title="definition">axiom</span></a> (@<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Ring.Pack"><span class="id" title="constructor">Ring.Pack</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ClosedField.ClassDef.T"><span class="id" title="variable">T</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#b0"><span class="id" title="variable">b0</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ClosedField.ClassDef.T"><span class="id" title="variable">T</span></a>)) :=<br/>
+&nbsp;&nbsp;<span class="id" title="keyword">fun</span> <span class="id" title="var">bT</span> <span class="id" title="var">b</span> &amp; <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#phant_id"><span class="id" title="definition">phant_id</span></a> (<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.DecidableField.class"><span class="id" title="definition">DecidableField.class</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#bT"><span class="id" title="variable">bT</span></a>) <a class="idref" href="mathcomp.algebra.ssralg.html#b"><span class="id" title="variable">b</span></a> ⇒<br/>
+&nbsp;&nbsp;<span class="id" title="keyword">fun</span> <span class="id" title="var">m</span> &amp; <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#phant_id"><span class="id" title="definition">phant_id</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#m0"><span class="id" title="variable">m0</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#m"><span class="id" title="variable">m</span></a> ⇒ <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ClosedField.Pack"><span class="id" title="constructor">Pack</span></a> (@<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ClosedField.Class"><span class="id" title="constructor">Class</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ClosedField.ClassDef.T"><span class="id" title="variable">T</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#b"><span class="id" title="variable">b</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#m"><span class="id" title="variable">m</span></a>) <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ClosedField.ClassDef.T"><span class="id" title="variable">T</span></a>.<br/>
+
+<br/>
+</div>
+
+<div class="doc">
+ There should eventually be a constructor from polynomial resolution
+ that builds the DecidableField mixin using QE.
+</div>
+<div class="code">
+
+<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.ClosedField.eqType"><span class="id" title="definition">eqType</span></a> := @<a class="idref" href="mathcomp.ssreflect.eqtype.html#Equality.Pack"><span class="id" title="constructor">Equality.Pack</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ClosedField.ClassDef.cT"><span class="id" title="variable">cT</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ClosedField.xclass"><span class="id" title="abbreviation">xclass</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ClosedField.ClassDef.xT"><span class="id" title="variable">xT</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.ClosedField.choiceType"><span class="id" title="definition">choiceType</span></a> := @<a class="idref" href="mathcomp.ssreflect.choice.html#Choice.Pack"><span class="id" title="constructor">Choice.Pack</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ClosedField.ClassDef.cT"><span class="id" title="variable">cT</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ClosedField.xclass"><span class="id" title="abbreviation">xclass</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ClosedField.ClassDef.xT"><span class="id" title="variable">xT</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.ClosedField.zmodType"><span class="id" title="definition">zmodType</span></a> := @<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Zmodule.Pack"><span class="id" title="constructor">Zmodule.Pack</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ClosedField.ClassDef.cT"><span class="id" title="variable">cT</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ClosedField.xclass"><span class="id" title="abbreviation">xclass</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ClosedField.ClassDef.xT"><span class="id" title="variable">xT</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.ClosedField.ringType"><span class="id" title="definition">ringType</span></a> := @<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Ring.Pack"><span class="id" title="constructor">Ring.Pack</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ClosedField.ClassDef.cT"><span class="id" title="variable">cT</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ClosedField.xclass"><span class="id" title="abbreviation">xclass</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ClosedField.ClassDef.xT"><span class="id" title="variable">xT</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.ClosedField.comRingType"><span class="id" title="definition">comRingType</span></a> := @<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ComRing.Pack"><span class="id" title="constructor">ComRing.Pack</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ClosedField.ClassDef.cT"><span class="id" title="variable">cT</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ClosedField.xclass"><span class="id" title="abbreviation">xclass</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ClosedField.ClassDef.xT"><span class="id" title="variable">xT</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.ClosedField.unitRingType"><span class="id" title="definition">unitRingType</span></a> := @<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.UnitRing.Pack"><span class="id" title="constructor">UnitRing.Pack</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ClosedField.ClassDef.cT"><span class="id" title="variable">cT</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ClosedField.xclass"><span class="id" title="abbreviation">xclass</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ClosedField.ClassDef.xT"><span class="id" title="variable">xT</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.ClosedField.comUnitRingType"><span class="id" title="definition">comUnitRingType</span></a> := @<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ComUnitRing.Pack"><span class="id" title="constructor">ComUnitRing.Pack</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ClosedField.ClassDef.cT"><span class="id" title="variable">cT</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ClosedField.xclass"><span class="id" title="abbreviation">xclass</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ClosedField.ClassDef.xT"><span class="id" title="variable">xT</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.ClosedField.idomainType"><span class="id" title="definition">idomainType</span></a> := @<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.IntegralDomain.Pack"><span class="id" title="constructor">IntegralDomain.Pack</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ClosedField.ClassDef.cT"><span class="id" title="variable">cT</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ClosedField.xclass"><span class="id" title="abbreviation">xclass</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ClosedField.ClassDef.xT"><span class="id" title="variable">xT</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.ClosedField.fieldType"><span class="id" title="definition">fieldType</span></a> := @<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Field.Pack"><span class="id" title="constructor">Field.Pack</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ClosedField.ClassDef.cT"><span class="id" title="variable">cT</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ClosedField.xclass"><span class="id" title="abbreviation">xclass</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ClosedField.ClassDef.xT"><span class="id" title="variable">xT</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.ClosedField.decFieldType"><span class="id" title="definition">decFieldType</span></a> := @<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.DecidableField.Pack"><span class="id" title="constructor">DecidableField.Pack</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ClosedField.ClassDef.cT"><span class="id" title="variable">cT</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ClosedField.class"><span class="id" title="definition">class</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ClosedField.ClassDef.xT"><span class="id" title="variable">xT</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">End</span> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ClosedField.ClassDef"><span class="id" title="section">ClassDef</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Module</span> <a name="GRing.ClosedField.Exports"><span class="id" title="module">Exports</span></a>.<br/>
+<span class="id" title="keyword">Coercion</span> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ClosedField.base"><span class="id" title="projection">base</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ClosedField.base"><span class="id" title="projection">:</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ClosedField.base"><span class="id" title="projection">class_of</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ClosedField.base"><span class="id" title="projection">&gt;-&gt;</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ClosedField.base"><span class="id" title="projection">DecidableField.class_of</span></a>.<br/>
+<span class="id" title="keyword">Coercion</span> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ClosedField.sort"><span class="id" title="projection">sort</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ClosedField.sort"><span class="id" title="projection">:</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ClosedField.sort"><span class="id" title="projection">type</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ClosedField.sort"><span class="id" title="projection">&gt;-&gt;</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ClosedField.sort"><span class="id" title="projection">Sortclass</span></a>.<br/>
+<span class="id" title="keyword">Coercion</span> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ClosedField.eqType"><span class="id" title="definition">eqType</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ClosedField.eqType"><span class="id" title="definition">:</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ClosedField.eqType"><span class="id" title="definition">type</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ClosedField.eqType"><span class="id" title="definition">&gt;-&gt;</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ClosedField.eqType"><span class="id" title="definition">Equality.type</span></a>.<br/>
+<span class="id" title="keyword">Canonical</span> <span class="id" title="var">eqType</span>.<br/>
+<span class="id" title="keyword">Coercion</span> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ClosedField.choiceType"><span class="id" title="definition">choiceType</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ClosedField.choiceType"><span class="id" title="definition">:</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ClosedField.choiceType"><span class="id" title="definition">type</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ClosedField.choiceType"><span class="id" title="definition">&gt;-&gt;</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ClosedField.choiceType"><span class="id" title="definition">Choice.type</span></a>.<br/>
+<span class="id" title="keyword">Canonical</span> <span class="id" title="var">choiceType</span>.<br/>
+<span class="id" title="keyword">Coercion</span> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ClosedField.zmodType"><span class="id" title="definition">zmodType</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ClosedField.zmodType"><span class="id" title="definition">:</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ClosedField.zmodType"><span class="id" title="definition">type</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ClosedField.zmodType"><span class="id" title="definition">&gt;-&gt;</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ClosedField.zmodType"><span class="id" title="definition">Zmodule.type</span></a>.<br/>
+<span class="id" title="keyword">Canonical</span> <span class="id" title="var">zmodType</span>.<br/>
+<span class="id" title="keyword">Coercion</span> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ClosedField.ringType"><span class="id" title="definition">ringType</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ClosedField.ringType"><span class="id" title="definition">:</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ClosedField.ringType"><span class="id" title="definition">type</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ClosedField.ringType"><span class="id" title="definition">&gt;-&gt;</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ClosedField.ringType"><span class="id" title="definition">Ring.type</span></a>.<br/>
+<span class="id" title="keyword">Canonical</span> <span class="id" title="var">ringType</span>.<br/>
+<span class="id" title="keyword">Coercion</span> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ClosedField.comRingType"><span class="id" title="definition">comRingType</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ClosedField.comRingType"><span class="id" title="definition">:</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ClosedField.comRingType"><span class="id" title="definition">type</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ClosedField.comRingType"><span class="id" title="definition">&gt;-&gt;</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ClosedField.comRingType"><span class="id" title="definition">ComRing.type</span></a>.<br/>
+<span class="id" title="keyword">Canonical</span> <span class="id" title="var">comRingType</span>.<br/>
+<span class="id" title="keyword">Coercion</span> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ClosedField.unitRingType"><span class="id" title="definition">unitRingType</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ClosedField.unitRingType"><span class="id" title="definition">:</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ClosedField.unitRingType"><span class="id" title="definition">type</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ClosedField.unitRingType"><span class="id" title="definition">&gt;-&gt;</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ClosedField.unitRingType"><span class="id" title="definition">UnitRing.type</span></a>.<br/>
+<span class="id" title="keyword">Canonical</span> <span class="id" title="var">unitRingType</span>.<br/>
+<span class="id" title="keyword">Coercion</span> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ClosedField.comUnitRingType"><span class="id" title="definition">comUnitRingType</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ClosedField.comUnitRingType"><span class="id" title="definition">:</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ClosedField.comUnitRingType"><span class="id" title="definition">type</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ClosedField.comUnitRingType"><span class="id" title="definition">&gt;-&gt;</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ClosedField.comUnitRingType"><span class="id" title="definition">ComUnitRing.type</span></a>.<br/>
+<span class="id" title="keyword">Canonical</span> <span class="id" title="var">comUnitRingType</span>.<br/>
+<span class="id" title="keyword">Coercion</span> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ClosedField.idomainType"><span class="id" title="definition">idomainType</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ClosedField.idomainType"><span class="id" title="definition">:</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ClosedField.idomainType"><span class="id" title="definition">type</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ClosedField.idomainType"><span class="id" title="definition">&gt;-&gt;</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ClosedField.idomainType"><span class="id" title="definition">IntegralDomain.type</span></a>.<br/>
+<span class="id" title="keyword">Canonical</span> <span class="id" title="var">idomainType</span>.<br/>
+<span class="id" title="keyword">Coercion</span> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ClosedField.fieldType"><span class="id" title="definition">fieldType</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ClosedField.fieldType"><span class="id" title="definition">:</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ClosedField.fieldType"><span class="id" title="definition">type</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ClosedField.fieldType"><span class="id" title="definition">&gt;-&gt;</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ClosedField.fieldType"><span class="id" title="definition">Field.type</span></a>.<br/>
+<span class="id" title="keyword">Canonical</span> <span class="id" title="var">fieldType</span>.<br/>
+<span class="id" title="keyword">Coercion</span> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ClosedField.decFieldType"><span class="id" title="definition">decFieldType</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ClosedField.decFieldType"><span class="id" title="definition">:</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ClosedField.decFieldType"><span class="id" title="definition">type</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ClosedField.decFieldType"><span class="id" title="definition">&gt;-&gt;</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ClosedField.decFieldType"><span class="id" title="definition">DecidableField.type</span></a>.<br/>
+<span class="id" title="keyword">Canonical</span> <span class="id" title="var">decFieldType</span>.<br/>
+<span class="id" title="keyword">Notation</span> <a name="GRing.ClosedField.Exports.closedFieldType"><span class="id" title="abbreviation">closedFieldType</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ClosedField.type"><span class="id" title="record">type</span></a>.<br/>
+<span class="id" title="keyword">Notation</span> <a name="GRing.ClosedField.Exports.ClosedFieldType"><span class="id" title="abbreviation">ClosedFieldType</span></a> <span class="id" title="var">T</span> <span class="id" title="var">m</span> := (@<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ClosedField.pack"><span class="id" title="definition">pack</span></a> <span class="id" title="var">T</span> <span class="id" title="var">_</span> <span class="id" title="var">m</span> <span class="id" title="var">_</span> <span class="id" title="var">_</span> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#id"><span class="id" title="abbreviation">id</span></a> <span class="id" title="var">_</span> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#id"><span class="id" title="abbreviation">id</span></a>).<br/>
+<span class="id" title="keyword">Notation</span> <a name="65cd3e8351f6b67d79f598a877d53892"><span class="id" title="notation">&quot;</span></a>[ 'closedFieldType' 'of' T 'for' cT ]" := (@<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ClosedField.clone"><span class="id" title="definition">clone</span></a> <span class="id" title="var">T</span> <span class="id" title="var">cT</span> <span class="id" title="var">_</span> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#idfun"><span class="id" title="abbreviation">idfun</span></a>)<br/>
+&nbsp;&nbsp;(<span class="id" title="tactic">at</span> <span class="id" title="keyword">level</span> 0, <span class="id" title="var">format</span> "[ 'closedFieldType' 'of' T 'for' cT ]") : <span class="id" title="var">form_scope</span>.<br/>
+<span class="id" title="keyword">Notation</span> <a name="048a114d22ff709784bf346d4799d085"><span class="id" title="notation">&quot;</span></a>[ 'closedFieldType' 'of' T ]" := (@<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ClosedField.clone"><span class="id" title="definition">clone</span></a> <span class="id" title="var">T</span> <span class="id" title="var">_</span> <span class="id" title="var">_</span> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#id"><span class="id" title="abbreviation">id</span></a>)<br/>
+&nbsp;&nbsp;(<span class="id" title="tactic">at</span> <span class="id" title="keyword">level</span> 0, <span class="id" title="var">format</span> "[ 'closedFieldType' 'of' T ]") : <span class="id" title="var">form_scope</span>.<br/>
+<span class="id" title="keyword">End</span> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ClosedField.Exports"><span class="id" title="module">Exports</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">End</span> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ClosedField"><span class="id" title="module">ClosedField</span></a>.<br/>
+<span class="id" title="keyword">Import</span> <span class="id" title="var">ClosedField.Exports</span>.<br/>
+
+<br/>
+<span class="id" title="keyword">Section</span> <a name="GRing.ClosedFieldTheory"><span class="id" title="section">ClosedFieldTheory</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Variable</span> <a name="GRing.ClosedFieldTheory.F"><span class="id" title="variable">F</span></a> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.closedFieldType"><span class="id" title="abbreviation">closedFieldType</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.solve_monicpoly"><span class="id" title="lemma">solve_monicpoly</span></a> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.axiom"><span class="id" title="definition">ClosedField.axiom</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ClosedFieldTheory.F"><span class="id" title="variable">F</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.imaginary_exists"><span class="id" title="lemma">imaginary_exists</span></a> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Specif.html#72ca3fac4636a1b19c963b12162882cf"><span class="id" title="notation">{</span></a><span class="id" title="var">i</span> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Specif.html#72ca3fac4636a1b19c963b12162882cf"><span class="id" title="notation">:</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ClosedFieldTheory.F"><span class="id" title="variable">F</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Specif.html#72ca3fac4636a1b19c963b12162882cf"><span class="id" title="notation">|</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#i"><span class="id" title="variable">i</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#b5a6699e28c97bb33352772cfa3ea869"><span class="id" title="notation">^+</span></a> 2 <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> -1<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Specif.html#72ca3fac4636a1b19c963b12162882cf"><span class="id" title="notation">}</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">End</span> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ClosedFieldTheory"><span class="id" title="section">ClosedFieldTheory</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Module</span> <a name="GRing.SubType"><span class="id" title="module">SubType</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Section</span> <a name="GRing.SubType.Zmodule"><span class="id" title="section">Zmodule</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Variables</span> (<a name="GRing.SubType.Zmodule.V"><span class="id" title="variable">V</span></a> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Zmodule.Exports.zmodType"><span class="id" title="abbreviation">zmodType</span></a>) (<a name="GRing.SubType.Zmodule.S"><span class="id" title="variable">S</span></a> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#predPredType"><span class="id" title="definition">predPredType</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#V"><span class="id" title="variable">V</span></a>).<br/>
+<span class="id" title="keyword">Variables</span> (<a name="GRing.SubType.Zmodule.subS"><span class="id" title="variable">subS</span></a> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Pred.Exports.zmodPred"><span class="id" title="abbreviation">zmodPred</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.SubType.Zmodule.S"><span class="id" title="variable">S</span></a>) (<a name="GRing.SubType.Zmodule.kS"><span class="id" title="variable">kS</span></a> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#keyed_pred"><span class="id" title="record">keyed_pred</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#subS"><span class="id" title="variable">subS</span></a>).<br/>
+<span class="id" title="keyword">Variable</span> <a name="GRing.SubType.Zmodule.U"><span class="id" title="variable">U</span></a> : <a class="idref" href="mathcomp.ssreflect.eqtype.html#subType"><span class="id" title="record">subType</span></a> (<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#mem"><span class="id" title="definition">mem</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.SubType.Zmodule.kS"><span class="id" title="variable">kS</span></a>).<br/>
+
+<br/>
+<span class="id" title="keyword">Let</span> <a name="GRing.SubType.Zmodule.inU"><span class="id" title="variable">inU</span></a> <span class="id" title="var">v</span> <span class="id" title="var">Sv</span> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.SubType.Zmodule.U"><span class="id" title="variable">U</span></a> := <a class="idref" href="mathcomp.ssreflect.eqtype.html#Sub"><span class="id" title="projection">Sub</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#v"><span class="id" title="variable">v</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#Sv"><span class="id" title="variable">Sv</span></a>.<br/>
+<span class="id" title="keyword">Let</span> <a name="GRing.SubType.Zmodule.zeroU"><span class="id" title="variable">zeroU</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.SubType.Zmodule.inU"><span class="id" title="variable">inU</span></a> (<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.rpred0"><span class="id" title="lemma">rpred0</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.SubType.Zmodule.kS"><span class="id" title="variable">kS</span></a>).<br/>
+
+<br/>
+<span class="id" title="keyword">Let</span> <a name="GRing.SubType.Zmodule.oppU"><span class="id" title="variable">oppU</span></a> (<span class="id" title="var">u</span> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.SubType.Zmodule.U"><span class="id" title="variable">U</span></a>) := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.SubType.Zmodule.inU"><span class="id" title="variable">inU</span></a> (<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.rpredNr"><span class="id" title="lemma">rpredNr</span></a> (<a class="idref" href="mathcomp.ssreflect.eqtype.html#valP"><span class="id" title="lemma">valP</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#u"><span class="id" title="variable">u</span></a>)).<br/>
+<span class="id" title="keyword">Let</span> <a name="GRing.SubType.Zmodule.addU"><span class="id" title="variable">addU</span></a> (<span class="id" title="var">u1</span> <span class="id" title="var">u2</span> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.SubType.Zmodule.U"><span class="id" title="variable">U</span></a>) := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.SubType.Zmodule.inU"><span class="id" title="variable">inU</span></a> (<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.rpredD"><span class="id" title="lemma">rpredD</span></a> (<a class="idref" href="mathcomp.ssreflect.eqtype.html#valP"><span class="id" title="lemma">valP</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#u1"><span class="id" title="variable">u1</span></a>) (<a class="idref" href="mathcomp.ssreflect.eqtype.html#valP"><span class="id" title="lemma">valP</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#u2"><span class="id" title="variable">u2</span></a>)).<br/>
+
+<br/>
+<span class="id" title="keyword">Fact</span> <a name="GRing.SubType.addA"><span class="id" title="lemma">addA</span></a> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#associative"><span class="id" title="definition">associative</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.SubType.Zmodule.addU"><span class="id" title="variable">addU</span></a>.<br/>
+ <span class="id" title="keyword">Fact</span> <a name="GRing.SubType.addC"><span class="id" title="lemma">addC</span></a> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#commutative"><span class="id" title="definition">commutative</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.SubType.Zmodule.addU"><span class="id" title="variable">addU</span></a>.<br/>
+ <span class="id" title="keyword">Fact</span> <a name="GRing.SubType.add0"><span class="id" title="lemma">add0</span></a> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#left_id"><span class="id" title="definition">left_id</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.SubType.Zmodule.zeroU"><span class="id" title="variable">zeroU</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.SubType.Zmodule.addU"><span class="id" title="variable">addU</span></a>.<br/>
+ <span class="id" title="keyword">Fact</span> <a name="GRing.SubType.addN"><span class="id" title="lemma">addN</span></a> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#left_inverse"><span class="id" title="definition">left_inverse</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.SubType.Zmodule.zeroU"><span class="id" title="variable">zeroU</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.SubType.Zmodule.oppU"><span class="id" title="variable">oppU</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.SubType.Zmodule.addU"><span class="id" title="variable">addU</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.SubType.zmodMixin"><span class="id" title="definition">zmodMixin</span></a> <span class="id" title="keyword">of</span> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssreflect.html#phant"><span class="id" title="inductive">phant</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.SubType.Zmodule.U"><span class="id" title="variable">U</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Zmodule.Exports.ZmodMixin"><span class="id" title="abbreviation">ZmodMixin</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.SubType.addA"><span class="id" title="lemma">addA</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.SubType.addC"><span class="id" title="lemma">addC</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.SubType.add0"><span class="id" title="lemma">add0</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.SubType.addN"><span class="id" title="lemma">addN</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">End</span> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.SubType.Zmodule"><span class="id" title="section">Zmodule</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Section</span> <a name="GRing.SubType.Ring"><span class="id" title="section">Ring</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Variables</span> (<a name="GRing.SubType.Ring.R"><span class="id" title="variable">R</span></a> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Ring.Exports.ringType"><span class="id" title="abbreviation">ringType</span></a>) (<a name="GRing.SubType.Ring.S"><span class="id" title="variable">S</span></a> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#predPredType"><span class="id" title="definition">predPredType</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#R"><span class="id" title="variable">R</span></a>).<br/>
+<span class="id" title="keyword">Variables</span> (<a name="GRing.SubType.Ring.ringS"><span class="id" title="variable">ringS</span></a> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Pred.Exports.subringPred"><span class="id" title="abbreviation">subringPred</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.SubType.Ring.S"><span class="id" title="variable">S</span></a>) (<a name="GRing.SubType.Ring.kS"><span class="id" title="variable">kS</span></a> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#keyed_pred"><span class="id" title="record">keyed_pred</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#ringS"><span class="id" title="variable">ringS</span></a>).<br/>
+
+<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.SubType.cast_zmodType"><span class="id" title="definition">cast_zmodType</span></a> (<span class="id" title="var">V</span> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Zmodule.Exports.zmodType"><span class="id" title="abbreviation">zmodType</span></a>) <span class="id" title="var">T</span> (<span class="id" title="var">VeqT</span> : <a class="idref" href="mathcomp.algebra.ssralg.html#V"><span class="id" title="variable">V</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#8f9364556521ebb498093f28eea2240f"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#T"><span class="id" title="variable">T</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#8f9364556521ebb498093f28eea2240f"><span class="id" title="notation">:&gt;</span></a> <span class="id" title="keyword">Type</span>) :=<br/>
+&nbsp;&nbsp;<span class="id" title="keyword">let</span> <span class="id" title="var">cast</span> <span class="id" title="var">mV</span> := <span class="id" title="keyword">let</span>: <span class="id" title="var">erefl</span> <span class="id" title="tactic">in</span> <span class="id" title="var">_</span> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <span class="id" title="var">T</span> := <a class="idref" href="mathcomp.algebra.ssralg.html#VeqT"><span class="id" title="variable">VeqT</span></a> <span class="id" title="keyword">return</span> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Zmodule.class_of"><span class="id" title="record">Zmodule.class_of</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#T"><span class="id" title="variable">T</span></a> <span class="id" title="tactic">in</span> <a class="idref" href="mathcomp.algebra.ssralg.html#mV"><span class="id" title="variable">mV</span></a> <span class="id" title="tactic">in</span><br/>
+&nbsp;&nbsp;<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Zmodule.Pack"><span class="id" title="constructor">Zmodule.Pack</span></a> (<a class="idref" href="mathcomp.algebra.ssralg.html#cast"><span class="id" title="variable">cast</span></a> (<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Zmodule.class"><span class="id" title="definition">Zmodule.class</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#V"><span class="id" title="variable">V</span></a>)) <a class="idref" href="mathcomp.algebra.ssralg.html#T"><span class="id" title="variable">T</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Variable</span> (<a name="GRing.SubType.Ring.T"><span class="id" title="variable">T</span></a> : <a class="idref" href="mathcomp.ssreflect.eqtype.html#subType"><span class="id" title="record">subType</span></a> (<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#mem"><span class="id" title="definition">mem</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.SubType.Ring.kS"><span class="id" title="variable">kS</span></a>)) (<a name="GRing.SubType.Ring.V"><span class="id" title="variable">V</span></a> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Zmodule.Exports.zmodType"><span class="id" title="abbreviation">zmodType</span></a>) (<a name="GRing.SubType.Ring.VeqT"><span class="id" title="variable">VeqT</span></a>: <a class="idref" href="mathcomp.algebra.ssralg.html#V"><span class="id" title="variable">V</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#8f9364556521ebb498093f28eea2240f"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#T"><span class="id" title="variable">T</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#8f9364556521ebb498093f28eea2240f"><span class="id" title="notation">:&gt;</span></a> <span class="id" title="keyword">Type</span>).<br/>
+
+<br/>
+<span class="id" title="keyword">Let</span> <a name="GRing.SubType.Ring.inT"><span class="id" title="variable">inT</span></a> <span class="id" title="var">x</span> <span class="id" title="var">Sx</span> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.SubType.Ring.T"><span class="id" title="variable">T</span></a> := <a class="idref" href="mathcomp.ssreflect.eqtype.html#Sub"><span class="id" title="projection">Sub</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#Sx"><span class="id" title="variable">Sx</span></a>.<br/>
+<span class="id" title="keyword">Let</span> <a name="GRing.SubType.Ring.oneT"><span class="id" title="variable">oneT</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.SubType.Ring.inT"><span class="id" title="variable">inT</span></a> (<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.rpred1"><span class="id" title="lemma">rpred1</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.SubType.Ring.kS"><span class="id" title="variable">kS</span></a>).<br/>
+<span class="id" title="keyword">Let</span> <a name="GRing.SubType.Ring.mulT"><span class="id" title="variable">mulT</span></a> (<span class="id" title="var">u1</span> <span class="id" title="var">u2</span> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.SubType.Ring.T"><span class="id" title="variable">T</span></a>) := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.SubType.Ring.inT"><span class="id" title="variable">inT</span></a> (<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.rpredM"><span class="id" title="lemma">rpredM</span></a> (<a class="idref" href="mathcomp.ssreflect.eqtype.html#valP"><span class="id" title="lemma">valP</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#u1"><span class="id" title="variable">u1</span></a>) (<a class="idref" href="mathcomp.ssreflect.eqtype.html#valP"><span class="id" title="lemma">valP</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#u2"><span class="id" title="variable">u2</span></a>)).<br/>
+<span class="id" title="keyword">Let</span> <a name="GRing.SubType.Ring.T'"><span class="id" title="variable">T'</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.SubType.cast_zmodType"><span class="id" title="definition">cast_zmodType</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.SubType.Ring.VeqT"><span class="id" title="variable">VeqT</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Hypothesis</span> <a name="GRing.SubType.Ring.valM"><span class="id" title="variable">valM</span></a> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#3014e73af2a90fd800d8681479d76336"><span class="id" title="notation">{</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#3014e73af2a90fd800d8681479d76336"><span class="id" title="notation">morph</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#3014e73af2a90fd800d8681479d76336"><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="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssreflect.html#4509b22bf26e3d6d771897e22bd8bc8f"><span class="id" title="notation">:</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.SubType.Ring.T'"><span class="id" title="variable">T'</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.SubType.Ring.R"><span class="id" title="variable">R</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#3014e73af2a90fd800d8681479d76336"><span class="id" title="notation">)</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#3014e73af2a90fd800d8681479d76336"><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/8.8.0/stdlib//Coq.ssr.ssrfun.html#3014e73af2a90fd800d8681479d76336"><span class="id" title="notation">/</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#4d4b9697032429ec46472e6332d1356a"><span class="id" title="notation">-</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#y"><span class="id" title="variable">y</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#3014e73af2a90fd800d8681479d76336"><span class="id" title="notation">}</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Let</span> <a name="GRing.SubType.Ring.val0"><span class="id" title="variable">val0</span></a> : <a class="idref" href="mathcomp.ssreflect.eqtype.html#val"><span class="id" title="projection">val</span></a> (0 <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssreflect.html#4509b22bf26e3d6d771897e22bd8bc8f"><span class="id" title="notation">:</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.SubType.Ring.T'"><span class="id" title="variable">T'</span></a>) <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> 0.<br/>
+ <span class="id" title="keyword">Let</span> <a name="GRing.SubType.Ring.valD"><span class="id" title="variable">valD</span></a> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#3014e73af2a90fd800d8681479d76336"><span class="id" title="notation">{</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#3014e73af2a90fd800d8681479d76336"><span class="id" title="notation">morph</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#3014e73af2a90fd800d8681479d76336"><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="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssreflect.html#4509b22bf26e3d6d771897e22bd8bc8f"><span class="id" title="notation">:</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.SubType.Ring.T'"><span class="id" title="variable">T'</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.SubType.Ring.R"><span class="id" title="variable">R</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#3014e73af2a90fd800d8681479d76336"><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/8.8.0/stdlib//Coq.ssr.ssrfun.html#3014e73af2a90fd800d8681479d76336"><span class="id" title="notation">/</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#338c5345074fd3586073fd29273c138a"><span class="id" title="notation">+</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#y"><span class="id" title="variable">y</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#3014e73af2a90fd800d8681479d76336"><span class="id" title="notation">}</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Fact</span> <a name="GRing.SubType.mulA"><span class="id" title="lemma">mulA</span></a> : @<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#associative"><span class="id" title="definition">associative</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.SubType.Ring.T'"><span class="id" title="variable">T'</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.SubType.Ring.mulT"><span class="id" title="variable">mulT</span></a>.<br/>
+ <span class="id" title="keyword">Fact</span> <a name="GRing.SubType.mul1l"><span class="id" title="lemma">mul1l</span></a> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#left_id"><span class="id" title="definition">left_id</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.SubType.Ring.oneT"><span class="id" title="variable">oneT</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.SubType.Ring.mulT"><span class="id" title="variable">mulT</span></a>.<br/>
+ <span class="id" title="keyword">Fact</span> <a name="GRing.SubType.mul1r"><span class="id" title="lemma">mul1r</span></a> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#right_id"><span class="id" title="definition">right_id</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.SubType.Ring.oneT"><span class="id" title="variable">oneT</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.SubType.Ring.mulT"><span class="id" title="variable">mulT</span></a>.<br/>
+ <span class="id" title="keyword">Fact</span> <a name="GRing.SubType.mulDl"><span class="id" title="lemma">mulDl</span></a> : @<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#left_distributive"><span class="id" title="definition">left_distributive</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.SubType.Ring.T'"><span class="id" title="variable">T'</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.SubType.Ring.T'"><span class="id" title="variable">T'</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.SubType.Ring.mulT"><span class="id" title="variable">mulT</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#6c3404a70e11a79a0fa82b3d398aa71f"><span class="id" title="notation">+%</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#6c3404a70e11a79a0fa82b3d398aa71f"><span class="id" title="notation">R</span></a>.<br/>
+ <span class="id" title="keyword">Fact</span> <a name="GRing.SubType.mulDr"><span class="id" title="lemma">mulDr</span></a> : @<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#right_distributive"><span class="id" title="definition">right_distributive</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.SubType.Ring.T'"><span class="id" title="variable">T'</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.SubType.Ring.T'"><span class="id" title="variable">T'</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.SubType.Ring.mulT"><span class="id" title="variable">mulT</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#6c3404a70e11a79a0fa82b3d398aa71f"><span class="id" title="notation">+%</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#6c3404a70e11a79a0fa82b3d398aa71f"><span class="id" title="notation">R</span></a>.<br/>
+ <span class="id" title="keyword">Fact</span> <a name="GRing.SubType.nz1"><span class="id" title="lemma">nz1</span></a> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.SubType.Ring.oneT"><span class="id" title="variable">oneT</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#9e45f909d1732d6d9e153b650829bccf"><span class="id" title="notation">!=</span></a> 0 <a class="idref" href="mathcomp.ssreflect.eqtype.html#9e45f909d1732d6d9e153b650829bccf"><span class="id" title="notation">:&gt;</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.SubType.Ring.T'"><span class="id" title="variable">T'</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.SubType.ringMixin"><span class="id" title="definition">ringMixin</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Ring.Exports.RingMixin"><span class="id" title="abbreviation">RingMixin</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.SubType.mulA"><span class="id" title="lemma">mulA</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.SubType.mul1l"><span class="id" title="lemma">mul1l</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.SubType.mul1r"><span class="id" title="lemma">mul1r</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.SubType.mulDl"><span class="id" title="lemma">mulDl</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.SubType.mulDr"><span class="id" title="lemma">mulDr</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.SubType.nz1"><span class="id" title="lemma">nz1</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">End</span> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.SubType.Ring"><span class="id" title="section">Ring</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Section</span> <a name="GRing.SubType.Lmodule"><span class="id" title="section">Lmodule</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Variables</span> (<a name="GRing.SubType.Lmodule.R"><span class="id" title="variable">R</span></a> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Ring.Exports.ringType"><span class="id" title="abbreviation">ringType</span></a>) (<a name="GRing.SubType.Lmodule.V"><span class="id" title="variable">V</span></a> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Lmodule.Exports.lmodType"><span class="id" title="abbreviation">lmodType</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#R"><span class="id" title="variable">R</span></a>) (<a name="GRing.SubType.Lmodule.S"><span class="id" title="variable">S</span></a> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#predPredType"><span class="id" title="definition">predPredType</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#V"><span class="id" title="variable">V</span></a>).<br/>
+<span class="id" title="keyword">Variables</span> (<a name="GRing.SubType.Lmodule.linS"><span class="id" title="variable">linS</span></a> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Pred.Exports.submodPred"><span class="id" title="abbreviation">submodPred</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.SubType.Lmodule.S"><span class="id" title="variable">S</span></a>) (<a name="GRing.SubType.Lmodule.kS"><span class="id" title="variable">kS</span></a> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#keyed_pred"><span class="id" title="record">keyed_pred</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#linS"><span class="id" title="variable">linS</span></a>).<br/>
+<span class="id" title="keyword">Variables</span> (<a name="GRing.SubType.Lmodule.W"><span class="id" title="variable">W</span></a> : <a class="idref" href="mathcomp.ssreflect.eqtype.html#subType"><span class="id" title="record">subType</span></a> (<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#mem"><span class="id" title="definition">mem</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.SubType.Lmodule.kS"><span class="id" title="variable">kS</span></a>)) (<a name="GRing.SubType.Lmodule.Z"><span class="id" title="variable">Z</span></a> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Zmodule.Exports.zmodType"><span class="id" title="abbreviation">zmodType</span></a>) (<a name="GRing.SubType.Lmodule.ZeqW"><span class="id" title="variable">ZeqW</span></a> : <a class="idref" href="mathcomp.algebra.ssralg.html#Z"><span class="id" title="variable">Z</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#8f9364556521ebb498093f28eea2240f"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#W"><span class="id" title="variable">W</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#8f9364556521ebb498093f28eea2240f"><span class="id" title="notation">:&gt;</span></a> <span class="id" title="keyword">Type</span>).<br/>
+
+<br/>
+<span class="id" title="keyword">Let</span> <a name="GRing.SubType.Lmodule.scaleW"><span class="id" title="variable">scaleW</span></a> <span class="id" title="var">a</span> (<span class="id" title="var">w</span> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.SubType.Lmodule.W"><span class="id" title="variable">W</span></a>) := (<a class="idref" href="mathcomp.ssreflect.eqtype.html#Sub"><span class="id" title="projection">Sub</span></a> <span class="id" title="var">_</span> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssreflect.html#4509b22bf26e3d6d771897e22bd8bc8f"><span class="id" title="notation">:</span></a> <span class="id" title="var">_</span> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.SubType.Lmodule.W"><span class="id" title="variable">W</span></a>) (<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.rpredZ"><span class="id" title="lemma">rpredZ</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#a"><span class="id" title="variable">a</span></a> (<a class="idref" href="mathcomp.ssreflect.eqtype.html#valP"><span class="id" title="lemma">valP</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#w"><span class="id" title="variable">w</span></a>)).<br/>
+<span class="id" title="keyword">Let</span> <a name="GRing.SubType.Lmodule.W'"><span class="id" title="variable">W'</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.SubType.cast_zmodType"><span class="id" title="definition">cast_zmodType</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.SubType.Lmodule.ZeqW"><span class="id" title="variable">ZeqW</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Hypothesis</span> <a name="GRing.SubType.Lmodule.valD"><span class="id" title="variable">valD</span></a> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#3014e73af2a90fd800d8681479d76336"><span class="id" title="notation">{</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#3014e73af2a90fd800d8681479d76336"><span class="id" title="notation">morph</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#3014e73af2a90fd800d8681479d76336"><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="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssreflect.html#4509b22bf26e3d6d771897e22bd8bc8f"><span class="id" title="notation">:</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.SubType.Lmodule.W'"><span class="id" title="variable">W'</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.SubType.Lmodule.V"><span class="id" title="variable">V</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#3014e73af2a90fd800d8681479d76336"><span class="id" title="notation">)</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#3014e73af2a90fd800d8681479d76336"><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/8.8.0/stdlib//Coq.ssr.ssrfun.html#3014e73af2a90fd800d8681479d76336"><span class="id" title="notation">/</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#338c5345074fd3586073fd29273c138a"><span class="id" title="notation">+</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#y"><span class="id" title="variable">y</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#3014e73af2a90fd800d8681479d76336"><span class="id" title="notation">}</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Fact</span> <a name="GRing.SubType.scaleA"><span class="id" title="lemma">scaleA</span></a> <span class="id" title="var">a</span> <span class="id" title="var">b</span> (<span class="id" title="var">w</span> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.SubType.Lmodule.W'"><span class="id" title="variable">W'</span></a>) : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.SubType.Lmodule.scaleW"><span class="id" title="variable">scaleW</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#a"><span class="id" title="variable">a</span></a> (<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.SubType.Lmodule.scaleW"><span class="id" title="variable">scaleW</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#b"><span class="id" title="variable">b</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#w"><span class="id" title="variable">w</span></a>) <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.SubType.Lmodule.scaleW"><span class="id" title="variable">scaleW</span></a> (<a class="idref" href="mathcomp.algebra.ssralg.html#a"><span class="id" title="variable">a</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#ed99e7035d9a1f8a2c1515be81ac2e5f"><span class="id" title="notation">×</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#b"><span class="id" title="variable">b</span></a>) <a class="idref" href="mathcomp.algebra.ssralg.html#w"><span class="id" title="variable">w</span></a>.<br/>
+ <span class="id" title="keyword">Fact</span> <a name="GRing.SubType.scale1"><span class="id" title="lemma">scale1</span></a> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#left_id"><span class="id" title="definition">left_id</span></a> 1 <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.SubType.Lmodule.scaleW"><span class="id" title="variable">scaleW</span></a>.<br/>
+ <span class="id" title="keyword">Fact</span> <a name="GRing.SubType.scaleDr"><span class="id" title="lemma">scaleDr</span></a> : @<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#right_distributive"><span class="id" title="definition">right_distributive</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.SubType.Lmodule.R"><span class="id" title="variable">R</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.SubType.Lmodule.W'"><span class="id" title="variable">W'</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.SubType.Lmodule.scaleW"><span class="id" title="variable">scaleW</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#6c3404a70e11a79a0fa82b3d398aa71f"><span class="id" title="notation">+%</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#6c3404a70e11a79a0fa82b3d398aa71f"><span class="id" title="notation">R</span></a>.<br/>
+ <span class="id" title="keyword">Fact</span> <a name="GRing.SubType.scaleDl"><span class="id" title="lemma">scaleDl</span></a> <span class="id" title="var">w</span> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#3014e73af2a90fd800d8681479d76336"><span class="id" title="notation">{</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#3014e73af2a90fd800d8681479d76336"><span class="id" title="notation">morph</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#3014e73af2a90fd800d8681479d76336"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#GRing.SubType.Lmodule.scaleW"><span class="id" title="variable">scaleW</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#8f28bbd804547edd8de802d63ef85617"><span class="id" title="notation">^~</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#w"><span class="id" title="variable">w</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssreflect.html#4509b22bf26e3d6d771897e22bd8bc8f"><span class="id" title="notation">:</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.SubType.Lmodule.R"><span class="id" title="variable">R</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.SubType.Lmodule.W'"><span class="id" title="variable">W'</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#3014e73af2a90fd800d8681479d76336"><span class="id" title="notation">)</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#3014e73af2a90fd800d8681479d76336"><span class="id" title="notation">:</span></a> <span class="id" title="var">a</span> <span class="id" title="var">b</span> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#3014e73af2a90fd800d8681479d76336"><span class="id" title="notation">/</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#a"><span class="id" title="variable">a</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#338c5345074fd3586073fd29273c138a"><span class="id" title="notation">+</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#b"><span class="id" title="variable">b</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#3014e73af2a90fd800d8681479d76336"><span class="id" title="notation">}</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.SubType.lmodMixin"><span class="id" title="definition">lmodMixin</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Lmodule.Exports.LmodMixin"><span class="id" title="abbreviation">LmodMixin</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.SubType.scaleA"><span class="id" title="lemma">scaleA</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.SubType.scale1"><span class="id" title="lemma">scale1</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.SubType.scaleDr"><span class="id" title="lemma">scaleDr</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.SubType.scaleDl"><span class="id" title="lemma">scaleDl</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">End</span> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.SubType.Lmodule"><span class="id" title="section">Lmodule</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.SubType.lalgMixin"><span class="id" title="lemma">lalgMixin</span></a> (<span class="id" title="var">R</span> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Ring.Exports.ringType"><span class="id" title="abbreviation">ringType</span></a>) (<span class="id" title="var">A</span> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Lalgebra.Exports.lalgType"><span class="id" title="abbreviation">lalgType</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#R"><span class="id" title="variable">R</span></a>) (<span class="id" title="var">B</span> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Lmodule.Exports.lmodType"><span class="id" title="abbreviation">lmodType</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#R"><span class="id" title="variable">R</span></a>) (<span class="id" title="var">f</span> : <a class="idref" href="mathcomp.algebra.ssralg.html#B"><span class="id" title="variable">B</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#A"><span class="id" title="variable">A</span></a>) :<br/>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssreflect.html#phant"><span class="id" title="inductive">phant</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#B"><span class="id" title="variable">B</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#injective"><span class="id" title="definition">injective</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#f"><span class="id" title="variable">f</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.scalable"><span class="id" title="abbreviation">scalable</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#f"><span class="id" title="variable">f</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <br/>
+&nbsp;&nbsp;&nbsp;<span class="id" title="keyword">∀</span> <span class="id" title="var">mulB</span>, <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#a0fd72584f326d7220475d01d3fceccd"><span class="id" title="notation">{</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#a0fd72584f326d7220475d01d3fceccd"><span class="id" title="notation">morph</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#f"><span class="id" title="variable">f</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#a0fd72584f326d7220475d01d3fceccd"><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/8.8.0/stdlib//Coq.ssr.ssrfun.html#a0fd72584f326d7220475d01d3fceccd"><span class="id" title="notation">/</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#mulB"><span class="id" title="variable">mulB</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#y"><span class="id" title="variable">y</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#a0fd72584f326d7220475d01d3fceccd"><span class="id" title="notation">&gt;-&gt;</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#ed99e7035d9a1f8a2c1515be81ac2e5f"><span class="id" title="notation">×</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#y"><span class="id" title="variable">y</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#a0fd72584f326d7220475d01d3fceccd"><span class="id" title="notation">}</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Lalgebra.axiom"><span class="id" title="definition">Lalgebra.axiom</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#mulB"><span class="id" title="variable">mulB</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.SubType.comRingMixin"><span class="id" title="lemma">comRingMixin</span></a> (<span class="id" title="var">R</span> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ComRing.Exports.comRingType"><span class="id" title="abbreviation">comRingType</span></a>) (<span class="id" title="var">T</span> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Ring.Exports.ringType"><span class="id" title="abbreviation">ringType</span></a>) (<span class="id" title="var">f</span> : <a class="idref" href="mathcomp.algebra.ssralg.html#T"><span class="id" title="variable">T</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#R"><span class="id" title="variable">R</span></a>) :<br/>
+&nbsp;&nbsp;<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssreflect.html#phant"><span class="id" title="inductive">phant</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#T"><span class="id" title="variable">T</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#injective"><span class="id" title="definition">injective</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#f"><span class="id" title="variable">f</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#3014e73af2a90fd800d8681479d76336"><span class="id" title="notation">{</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#3014e73af2a90fd800d8681479d76336"><span class="id" title="notation">morph</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#f"><span class="id" title="variable">f</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#3014e73af2a90fd800d8681479d76336"><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/8.8.0/stdlib//Coq.ssr.ssrfun.html#3014e73af2a90fd800d8681479d76336"><span class="id" title="notation">/</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#ed99e7035d9a1f8a2c1515be81ac2e5f"><span class="id" title="notation">×</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#y"><span class="id" title="variable">y</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#3014e73af2a90fd800d8681479d76336"><span class="id" title="notation">}</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#commutative"><span class="id" title="definition">commutative</span></a> (@<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.mul"><span class="id" title="definition">mul</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#T"><span class="id" title="variable">T</span></a>).<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.SubType.algMixin"><span class="id" title="lemma">algMixin</span></a> (<span class="id" title="var">R</span> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ComRing.Exports.comRingType"><span class="id" title="abbreviation">comRingType</span></a>) (<span class="id" title="var">A</span> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Algebra.Exports.algType"><span class="id" title="abbreviation">algType</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#R"><span class="id" title="variable">R</span></a>) (<span class="id" title="var">B</span> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Lalgebra.Exports.lalgType"><span class="id" title="abbreviation">lalgType</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#R"><span class="id" title="variable">R</span></a>) (<span class="id" title="var">f</span> : <a class="idref" href="mathcomp.algebra.ssralg.html#B"><span class="id" title="variable">B</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#A"><span class="id" title="variable">A</span></a>) :<br/>
+&nbsp;&nbsp;&nbsp;&nbsp;<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssreflect.html#phant"><span class="id" title="inductive">phant</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#B"><span class="id" title="variable">B</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#injective"><span class="id" title="definition">injective</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#f"><span class="id" title="variable">f</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#3014e73af2a90fd800d8681479d76336"><span class="id" title="notation">{</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#3014e73af2a90fd800d8681479d76336"><span class="id" title="notation">morph</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#f"><span class="id" title="variable">f</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#3014e73af2a90fd800d8681479d76336"><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/8.8.0/stdlib//Coq.ssr.ssrfun.html#3014e73af2a90fd800d8681479d76336"><span class="id" title="notation">/</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#ed99e7035d9a1f8a2c1515be81ac2e5f"><span class="id" title="notation">×</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#y"><span class="id" title="variable">y</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#3014e73af2a90fd800d8681479d76336"><span class="id" title="notation">}</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.scalable"><span class="id" title="abbreviation">scalable</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#f"><span class="id" title="variable">f</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a><br/>
+&nbsp;&nbsp;@<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Algebra.axiom"><span class="id" title="definition">Algebra.axiom</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#R"><span class="id" title="variable">R</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#B"><span class="id" title="variable">B</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Section</span> <a name="GRing.SubType.UnitRing"><span class="id" title="section">UnitRing</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.SubType.cast_ringType"><span class="id" title="definition">cast_ringType</span></a> (<span class="id" title="var">Q</span> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Ring.Exports.ringType"><span class="id" title="abbreviation">ringType</span></a>) <span class="id" title="var">T</span> (<span class="id" title="var">QeqT</span> : <a class="idref" href="mathcomp.algebra.ssralg.html#Q"><span class="id" title="variable">Q</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#8f9364556521ebb498093f28eea2240f"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#T"><span class="id" title="variable">T</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#8f9364556521ebb498093f28eea2240f"><span class="id" title="notation">:&gt;</span></a> <span class="id" title="keyword">Type</span>) :=<br/>
+&nbsp;&nbsp;<span class="id" title="keyword">let</span> <span class="id" title="var">cast</span> <span class="id" title="var">rQ</span> := <span class="id" title="keyword">let</span>: <span class="id" title="var">erefl</span> <span class="id" title="tactic">in</span> <span class="id" title="var">_</span> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <span class="id" title="var">T</span> := <a class="idref" href="mathcomp.algebra.ssralg.html#QeqT"><span class="id" title="variable">QeqT</span></a> <span class="id" title="keyword">return</span> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Ring.class_of"><span class="id" title="record">Ring.class_of</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#T"><span class="id" title="variable">T</span></a> <span class="id" title="tactic">in</span> <a class="idref" href="mathcomp.algebra.ssralg.html#rQ"><span class="id" title="variable">rQ</span></a> <span class="id" title="tactic">in</span><br/>
+&nbsp;&nbsp;<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Ring.Pack"><span class="id" title="constructor">Ring.Pack</span></a> (<a class="idref" href="mathcomp.algebra.ssralg.html#cast"><span class="id" title="variable">cast</span></a> (<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Ring.class"><span class="id" title="definition">Ring.class</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#Q"><span class="id" title="variable">Q</span></a>)) <a class="idref" href="mathcomp.algebra.ssralg.html#T"><span class="id" title="variable">T</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Variables</span> (<a name="GRing.SubType.UnitRing.R"><span class="id" title="variable">R</span></a> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.UnitRing.Exports.unitRingType"><span class="id" title="abbreviation">unitRingType</span></a>) (<a name="GRing.SubType.UnitRing.S"><span class="id" title="variable">S</span></a> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#predPredType"><span class="id" title="definition">predPredType</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#R"><span class="id" title="variable">R</span></a>).<br/>
+<span class="id" title="keyword">Variables</span> (<a name="GRing.SubType.UnitRing.ringS"><span class="id" title="variable">ringS</span></a> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Pred.Exports.divringPred"><span class="id" title="abbreviation">divringPred</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.SubType.UnitRing.S"><span class="id" title="variable">S</span></a>) (<a name="GRing.SubType.UnitRing.kS"><span class="id" title="variable">kS</span></a> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#keyed_pred"><span class="id" title="record">keyed_pred</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#ringS"><span class="id" title="variable">ringS</span></a>).<br/>
+
+<br/>
+<span class="id" title="keyword">Variables</span> (<a name="GRing.SubType.UnitRing.T"><span class="id" title="variable">T</span></a> : <a class="idref" href="mathcomp.ssreflect.eqtype.html#subType"><span class="id" title="record">subType</span></a> (<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#mem"><span class="id" title="definition">mem</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.SubType.UnitRing.kS"><span class="id" title="variable">kS</span></a>)) (<a name="GRing.SubType.UnitRing.Q"><span class="id" title="variable">Q</span></a> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Ring.Exports.ringType"><span class="id" title="abbreviation">ringType</span></a>) (<a name="GRing.SubType.UnitRing.QeqT"><span class="id" title="variable">QeqT</span></a> : <a class="idref" href="mathcomp.algebra.ssralg.html#Q"><span class="id" title="variable">Q</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#8f9364556521ebb498093f28eea2240f"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#T"><span class="id" title="variable">T</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#8f9364556521ebb498093f28eea2240f"><span class="id" title="notation">:&gt;</span></a> <span class="id" title="keyword">Type</span>).<br/>
+
+<br/>
+<span class="id" title="keyword">Let</span> <a name="GRing.SubType.UnitRing.inT"><span class="id" title="variable">inT</span></a> <span class="id" title="var">x</span> <span class="id" title="var">Sx</span> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.SubType.UnitRing.T"><span class="id" title="variable">T</span></a> := <a class="idref" href="mathcomp.ssreflect.eqtype.html#Sub"><span class="id" title="projection">Sub</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#Sx"><span class="id" title="variable">Sx</span></a>.<br/>
+<span class="id" title="keyword">Let</span> <a name="GRing.SubType.UnitRing.invT"><span class="id" title="variable">invT</span></a> (<span class="id" title="var">u</span> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.SubType.UnitRing.T"><span class="id" title="variable">T</span></a>) := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.SubType.UnitRing.inT"><span class="id" title="variable">inT</span></a> (<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.rpredVr"><span class="id" title="lemma">rpredVr</span></a> (<a class="idref" href="mathcomp.ssreflect.eqtype.html#valP"><span class="id" title="lemma">valP</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#u"><span class="id" title="variable">u</span></a>)).<br/>
+<span class="id" title="keyword">Let</span> <a name="GRing.SubType.UnitRing.unitT"><span class="id" title="variable">unitT</span></a> := <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#3838d61fb3e8125493e649946f677b04"><span class="id" title="notation">[</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#3838d61fb3e8125493e649946f677b04"><span class="id" title="notation">qualify</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#3838d61fb3e8125493e649946f677b04"><span class="id" title="notation">a</span></a> <span class="id" title="var">u</span> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#3838d61fb3e8125493e649946f677b04"><span class="id" title="notation">:</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.SubType.UnitRing.T"><span class="id" title="variable">T</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#3838d61fb3e8125493e649946f677b04"><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.algebra.ssralg.html#u"><span class="id" title="variable">u</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#1e40fee506a85b20590ef299005b003d"><span class="id" title="notation">\</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#1e40fee506a85b20590ef299005b003d"><span class="id" title="notation">is</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#1e40fee506a85b20590ef299005b003d"><span class="id" title="notation">a</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.unit"><span class="id" title="definition">unit</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#3838d61fb3e8125493e649946f677b04"><span class="id" title="notation">]</span></a>.<br/>
+<span class="id" title="keyword">Let</span> <a name="GRing.SubType.UnitRing.T'"><span class="id" title="variable">T'</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.SubType.cast_ringType"><span class="id" title="definition">cast_ringType</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.SubType.UnitRing.QeqT"><span class="id" title="variable">QeqT</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Hypothesis</span> <a name="GRing.SubType.UnitRing.val1"><span class="id" title="variable">val1</span></a> : <a class="idref" href="mathcomp.ssreflect.eqtype.html#val"><span class="id" title="projection">val</span></a> (1 <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssreflect.html#4509b22bf26e3d6d771897e22bd8bc8f"><span class="id" title="notation">:</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.SubType.UnitRing.T'"><span class="id" title="variable">T'</span></a>) <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> 1.<br/>
+<span class="id" title="keyword">Hypothesis</span> <a name="GRing.SubType.UnitRing.valM"><span class="id" title="variable">valM</span></a> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#3014e73af2a90fd800d8681479d76336"><span class="id" title="notation">{</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#3014e73af2a90fd800d8681479d76336"><span class="id" title="notation">morph</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#3014e73af2a90fd800d8681479d76336"><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="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssreflect.html#4509b22bf26e3d6d771897e22bd8bc8f"><span class="id" title="notation">:</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.SubType.UnitRing.T'"><span class="id" title="variable">T'</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.SubType.UnitRing.R"><span class="id" title="variable">R</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#3014e73af2a90fd800d8681479d76336"><span class="id" title="notation">)</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#3014e73af2a90fd800d8681479d76336"><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/8.8.0/stdlib//Coq.ssr.ssrfun.html#3014e73af2a90fd800d8681479d76336"><span class="id" title="notation">/</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#ed99e7035d9a1f8a2c1515be81ac2e5f"><span class="id" title="notation">×</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#y"><span class="id" title="variable">y</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#3014e73af2a90fd800d8681479d76336"><span class="id" title="notation">}</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Fact</span> <a name="GRing.SubType.mulVr"><span class="id" title="lemma">mulVr</span></a> :<br/>
+&nbsp;&nbsp;<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#5c59b35a0b51db520cf1fba473ecf127"><span class="id" title="notation">{</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#5c59b35a0b51db520cf1fba473ecf127"><span class="id" title="notation">in</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#5c59b35a0b51db520cf1fba473ecf127"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#GRing.SubType.UnitRing.unitT"><span class="id" title="variable">unitT</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssreflect.html#4509b22bf26e3d6d771897e22bd8bc8f"><span class="id" title="notation">:</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#predPredType"><span class="id" title="definition">predPredType</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.SubType.UnitRing.T'"><span class="id" title="variable">T'</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#5c59b35a0b51db520cf1fba473ecf127"><span class="id" title="notation">),</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#left_inverse"><span class="id" title="definition">left_inverse</span></a> (1 <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssreflect.html#4509b22bf26e3d6d771897e22bd8bc8f"><span class="id" title="notation">:</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.SubType.UnitRing.T'"><span class="id" title="variable">T'</span></a>) <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.SubType.UnitRing.invT"><span class="id" title="variable">invT</span></a> (@<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.mul"><span class="id" title="definition">mul</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.SubType.UnitRing.T'"><span class="id" title="variable">T'</span></a>)<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#5c59b35a0b51db520cf1fba473ecf127"><span class="id" title="notation">}</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Fact</span> <a name="GRing.SubType.mulrV"><span class="id" title="lemma">mulrV</span></a> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#5c59b35a0b51db520cf1fba473ecf127"><span class="id" title="notation">{</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#5c59b35a0b51db520cf1fba473ecf127"><span class="id" title="notation">in</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.SubType.UnitRing.unitT"><span class="id" title="variable">unitT</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#5c59b35a0b51db520cf1fba473ecf127"><span class="id" title="notation">,</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#right_inverse"><span class="id" title="definition">right_inverse</span></a> (1 <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssreflect.html#4509b22bf26e3d6d771897e22bd8bc8f"><span class="id" title="notation">:</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.SubType.UnitRing.T'"><span class="id" title="variable">T'</span></a>) <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.SubType.UnitRing.invT"><span class="id" title="variable">invT</span></a> (@<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.mul"><span class="id" title="definition">mul</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.SubType.UnitRing.T'"><span class="id" title="variable">T'</span></a>)<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#5c59b35a0b51db520cf1fba473ecf127"><span class="id" title="notation">}</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Fact</span> <a name="GRing.SubType.unitP"><span class="id" title="lemma">unitP</span></a> (<span class="id" title="var">u</span> <span class="id" title="var">v</span> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.SubType.UnitRing.T'"><span class="id" title="variable">T'</span></a>) : <a class="idref" href="mathcomp.algebra.ssralg.html#v"><span class="id" title="variable">v</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#ed99e7035d9a1f8a2c1515be81ac2e5f"><span class="id" title="notation">×</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#u"><span class="id" title="variable">u</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> 1 <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d82a7d96d3659d805ffe732283716822"><span class="id" title="notation">∧</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#u"><span class="id" title="variable">u</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#ed99e7035d9a1f8a2c1515be81ac2e5f"><span class="id" title="notation">×</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#v"><span class="id" title="variable">v</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> 1 <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#u"><span class="id" title="variable">u</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">\</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">in</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.SubType.UnitRing.unitT"><span class="id" title="variable">unitT</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Fact</span> <a name="GRing.SubType.unit_id"><span class="id" title="lemma">unit_id</span></a> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#5c59b35a0b51db520cf1fba473ecf127"><span class="id" title="notation">{</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#5c59b35a0b51db520cf1fba473ecf127"><span class="id" title="notation">in</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#c2f58fba484177bda65c2ab1289a6fe6"><span class="id" title="notation">[</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#c2f58fba484177bda65c2ab1289a6fe6"><span class="id" title="notation">predC</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.SubType.UnitRing.unitT"><span class="id" title="variable">unitT</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#c2f58fba484177bda65c2ab1289a6fe6"><span class="id" title="notation">]</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#5c59b35a0b51db520cf1fba473ecf127"><span class="id" title="notation">,</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.SubType.UnitRing.invT"><span class="id" title="variable">invT</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#2500d48ed8e862ccfda98a44dff88963"><span class="id" title="notation">=1</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#id"><span class="id" title="abbreviation">id</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#5c59b35a0b51db520cf1fba473ecf127"><span class="id" title="notation">}</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.SubType.unitRingMixin"><span class="id" title="definition">unitRingMixin</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.UnitRing.Exports.UnitRingMixin"><span class="id" title="abbreviation">UnitRingMixin</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.SubType.mulVr"><span class="id" title="lemma">mulVr</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.SubType.mulrV"><span class="id" title="lemma">mulrV</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.SubType.unitP"><span class="id" title="lemma">unitP</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.SubType.unit_id"><span class="id" title="lemma">unit_id</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">End</span> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.SubType.UnitRing"><span class="id" title="section">UnitRing</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.SubType.idomainMixin"><span class="id" title="lemma">idomainMixin</span></a> (<span class="id" title="var">R</span> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.IntegralDomain.Exports.idomainType"><span class="id" title="abbreviation">idomainType</span></a>) (<span class="id" title="var">T</span> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Ring.Exports.ringType"><span class="id" title="abbreviation">ringType</span></a>) (<span class="id" title="var">f</span> : <a class="idref" href="mathcomp.algebra.ssralg.html#T"><span class="id" title="variable">T</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#R"><span class="id" title="variable">R</span></a>) :<br/>
+&nbsp;&nbsp;&nbsp;&nbsp;<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssreflect.html#phant"><span class="id" title="inductive">phant</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#T"><span class="id" title="variable">T</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#injective"><span class="id" title="definition">injective</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#f"><span class="id" title="variable">f</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#f"><span class="id" title="variable">f</span></a> 0 <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> 0 <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#3014e73af2a90fd800d8681479d76336"><span class="id" title="notation">{</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#3014e73af2a90fd800d8681479d76336"><span class="id" title="notation">morph</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#f"><span class="id" title="variable">f</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#3014e73af2a90fd800d8681479d76336"><span class="id" title="notation">:</span></a> <span class="id" title="var">u</span> <span class="id" title="var">v</span> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#3014e73af2a90fd800d8681479d76336"><span class="id" title="notation">/</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#u"><span class="id" title="variable">u</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#ed99e7035d9a1f8a2c1515be81ac2e5f"><span class="id" title="notation">×</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#v"><span class="id" title="variable">v</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#3014e73af2a90fd800d8681479d76336"><span class="id" title="notation">}</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a><br/>
+&nbsp;&nbsp;@<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.IntegralDomain.axiom"><span class="id" title="definition">IntegralDomain.axiom</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#T"><span class="id" title="variable">T</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="GRing.SubType.fieldMixin"><span class="id" title="lemma">fieldMixin</span></a> (<span class="id" title="var">F</span> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Field.Exports.fieldType"><span class="id" title="abbreviation">fieldType</span></a>) (<span class="id" title="var">K</span> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.UnitRing.Exports.unitRingType"><span class="id" title="abbreviation">unitRingType</span></a>) (<span class="id" title="var">f</span> : <a class="idref" href="mathcomp.algebra.ssralg.html#K"><span class="id" title="variable">K</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#F"><span class="id" title="variable">F</span></a>) : <br/>
+&nbsp;&nbsp;&nbsp;&nbsp;<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssreflect.html#phant"><span class="id" title="inductive">phant</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#K"><span class="id" title="variable">K</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#injective"><span class="id" title="definition">injective</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#f"><span class="id" title="variable">f</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#f"><span class="id" title="variable">f</span></a> 0 <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> 0 <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#69ee97879e4a4ae19a99125173c5741e"><span class="id" title="notation">{</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#69ee97879e4a4ae19a99125173c5741e"><span class="id" title="notation">mono</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#f"><span class="id" title="variable">f</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#69ee97879e4a4ae19a99125173c5741e"><span class="id" title="notation">:</span></a> <span class="id" title="var">u</span> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#69ee97879e4a4ae19a99125173c5741e"><span class="id" title="notation">/</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#u"><span class="id" title="variable">u</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">\</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">in</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.unit"><span class="id" title="definition">unit</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#69ee97879e4a4ae19a99125173c5741e"><span class="id" title="notation">}</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <br/>
+&nbsp;&nbsp;@<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Field.mixin_of"><span class="id" title="definition">Field.mixin_of</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#K"><span class="id" title="variable">K</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Module</span> <a name="GRing.SubType.Exports"><span class="id" title="module">Exports</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Notation</span> <a name="12c08185c491bc566a7da7b64605c9a3"><span class="id" title="notation">&quot;</span></a>[ 'zmodMixin' 'of' U 'by' &lt;: ]" := (<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.SubType.zmodMixin"><span class="id" title="definition">zmodMixin</span></a> (<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssreflect.html#Phant"><span class="id" title="constructor">Phant</span></a> <span class="id" title="var">U</span>))<br/>
+&nbsp;&nbsp;(<span class="id" title="tactic">at</span> <span class="id" title="keyword">level</span> 0, <span class="id" title="var">format</span> "[ 'zmodMixin' 'of' U 'by' &lt;: ]") : <span class="id" title="var">form_scope</span>.<br/>
+<span class="id" title="keyword">Notation</span> <a name="d95bbf22ba89f2c48e1ae4fe1338b7ee"><span class="id" title="notation">&quot;</span></a>[ 'ringMixin' 'of' R 'by' &lt;: ]" :=<br/>
+&nbsp;&nbsp;(@<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.SubType.ringMixin"><span class="id" title="definition">ringMixin</span></a> <span class="id" title="var">_</span> <span class="id" title="var">_</span> <span class="id" title="var">_</span> <span class="id" title="var">_</span> <span class="id" title="var">_</span> <span class="id" title="var">_</span> (@<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#erefl"><span class="id" title="abbreviation">erefl</span></a> <span class="id" title="keyword">Type</span> <span class="id" title="var">R</span>%<span class="id" title="keyword">type</span>) (<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#rrefl"><span class="id" title="lemma">rrefl</span></a> <span class="id" title="var">_</span>))<br/>
+&nbsp;&nbsp;(<span class="id" title="tactic">at</span> <span class="id" title="keyword">level</span> 0, <span class="id" title="var">format</span> "[ 'ringMixin' 'of' R 'by' &lt;: ]") : <span class="id" title="var">form_scope</span>.<br/>
+<span class="id" title="keyword">Notation</span> <a name="32c2078c0586b055b54305843b7f7e67"><span class="id" title="notation">&quot;</span></a>[ 'lmodMixin' 'of' U 'by' &lt;: ]" :=<br/>
+&nbsp;&nbsp;(@<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.SubType.lmodMixin"><span class="id" title="definition">lmodMixin</span></a> <span class="id" title="var">_</span> <span class="id" title="var">_</span> <span class="id" title="var">_</span> <span class="id" title="var">_</span> <span class="id" title="var">_</span> <span class="id" title="var">_</span> <span class="id" title="var">_</span> (@<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#erefl"><span class="id" title="abbreviation">erefl</span></a> <span class="id" title="keyword">Type</span> <span class="id" title="var">U</span>%<span class="id" title="keyword">type</span>) (<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#rrefl"><span class="id" title="lemma">rrefl</span></a> <span class="id" title="var">_</span>))<br/>
+&nbsp;&nbsp;(<span class="id" title="tactic">at</span> <span class="id" title="keyword">level</span> 0, <span class="id" title="var">format</span> "[ 'lmodMixin' 'of' U 'by' &lt;: ]") : <span class="id" title="var">form_scope</span>.<br/>
+<span class="id" title="keyword">Notation</span> <a name="6d8ba92320b5d921588d1709c8536d66"><span class="id" title="notation">&quot;</span></a>[ 'lalgMixin' 'of' A 'by' &lt;: ]" :=<br/>
+&nbsp;&nbsp;((<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.SubType.lalgMixin"><span class="id" title="lemma">lalgMixin</span></a> (<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssreflect.html#Phant"><span class="id" title="constructor">Phant</span></a> <span class="id" title="var">A</span>) <a class="idref" href="mathcomp.ssreflect.eqtype.html#val_inj"><span class="id" title="lemma">val_inj</span></a> (<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#rrefl"><span class="id" title="lemma">rrefl</span></a> <span class="id" title="var">_</span>)) <a class="idref" href="mathcomp.algebra.ssralg.html#6498e6e308d8a143464cf2d2ba603d36"><span class="id" title="notation">*%</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#6498e6e308d8a143464cf2d2ba603d36"><span class="id" title="notation">R</span></a> (<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#rrefl"><span class="id" title="lemma">rrefl</span></a> <span class="id" title="var">_</span>))<br/>
+&nbsp;&nbsp;(<span class="id" title="tactic">at</span> <span class="id" title="keyword">level</span> 0, <span class="id" title="var">format</span> "[ 'lalgMixin' 'of' A 'by' &lt;: ]") : <span class="id" title="var">form_scope</span>.<br/>
+<span class="id" title="keyword">Notation</span> <a name="644239693c924204bb2585490fe83da2"><span class="id" title="notation">&quot;</span></a>[ 'comRingMixin' 'of' R 'by' &lt;: ]" :=<br/>
+&nbsp;&nbsp;(<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.SubType.comRingMixin"><span class="id" title="lemma">comRingMixin</span></a> (<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssreflect.html#Phant"><span class="id" title="constructor">Phant</span></a> <span class="id" title="var">R</span>) <a class="idref" href="mathcomp.ssreflect.eqtype.html#val_inj"><span class="id" title="lemma">val_inj</span></a> (<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#rrefl"><span class="id" title="lemma">rrefl</span></a> <span class="id" title="var">_</span>))<br/>
+&nbsp;&nbsp;(<span class="id" title="tactic">at</span> <span class="id" title="keyword">level</span> 0, <span class="id" title="var">format</span> "[ 'comRingMixin' 'of' R 'by' &lt;: ]") : <span class="id" title="var">form_scope</span>.<br/>
+<span class="id" title="keyword">Notation</span> <a name="24cde06860b9c92e6c9c0397a62009c8"><span class="id" title="notation">&quot;</span></a>[ 'algMixin' 'of' A 'by' &lt;: ]" :=<br/>
+&nbsp;&nbsp;(<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.SubType.algMixin"><span class="id" title="lemma">algMixin</span></a> (<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssreflect.html#Phant"><span class="id" title="constructor">Phant</span></a> <span class="id" title="var">A</span>) <a class="idref" href="mathcomp.ssreflect.eqtype.html#val_inj"><span class="id" title="lemma">val_inj</span></a> (<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#rrefl"><span class="id" title="lemma">rrefl</span></a> <span class="id" title="var">_</span>) (<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#rrefl"><span class="id" title="lemma">rrefl</span></a> <span class="id" title="var">_</span>))<br/>
+&nbsp;&nbsp;(<span class="id" title="tactic">at</span> <span class="id" title="keyword">level</span> 0, <span class="id" title="var">format</span> "[ 'algMixin' 'of' A 'by' &lt;: ]") : <span class="id" title="var">form_scope</span>.<br/>
+<span class="id" title="keyword">Notation</span> <a name="4068b60b6efac062962fcea41c5f1fa3"><span class="id" title="notation">&quot;</span></a>[ 'unitRingMixin' 'of' R 'by' &lt;: ]" :=<br/>
+&nbsp;&nbsp;(@<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.SubType.unitRingMixin"><span class="id" title="definition">unitRingMixin</span></a> <span class="id" title="var">_</span> <span class="id" title="var">_</span> <span class="id" title="var">_</span> <span class="id" title="var">_</span> <span class="id" title="var">_</span> <span class="id" title="var">_</span> (@<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#erefl"><span class="id" title="abbreviation">erefl</span></a> <span class="id" title="keyword">Type</span> <span class="id" title="var">R</span>%<span class="id" title="keyword">type</span>) (<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#erefl"><span class="id" title="abbreviation">erefl</span></a> <span class="id" title="var">_</span>) (<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#rrefl"><span class="id" title="lemma">rrefl</span></a> <span class="id" title="var">_</span>))<br/>
+&nbsp;&nbsp;(<span class="id" title="tactic">at</span> <span class="id" title="keyword">level</span> 0, <span class="id" title="var">format</span> "[ 'unitRingMixin' 'of' R 'by' &lt;: ]") : <span class="id" title="var">form_scope</span>.<br/>
+<span class="id" title="keyword">Notation</span> <a name="b3ccc27c5dac0393365d2ae3ecbb2b01"><span class="id" title="notation">&quot;</span></a>[ 'idomainMixin' 'of' R 'by' &lt;: ]" :=<br/>
+&nbsp;&nbsp;(<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.SubType.idomainMixin"><span class="id" title="lemma">idomainMixin</span></a> (<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssreflect.html#Phant"><span class="id" title="constructor">Phant</span></a> <span class="id" title="var">R</span>) <a class="idref" href="mathcomp.ssreflect.eqtype.html#val_inj"><span class="id" title="lemma">val_inj</span></a> (<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#erefl"><span class="id" title="abbreviation">erefl</span></a> <span class="id" title="var">_</span>) (<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#rrefl"><span class="id" title="lemma">rrefl</span></a> <span class="id" title="var">_</span>))<br/>
+&nbsp;&nbsp;(<span class="id" title="tactic">at</span> <span class="id" title="keyword">level</span> 0, <span class="id" title="var">format</span> "[ 'idomainMixin' 'of' R 'by' &lt;: ]") : <span class="id" title="var">form_scope</span>.<br/>
+<span class="id" title="keyword">Notation</span> <a name="a44e69ea3e41fe55edbcaf554dca2dfa"><span class="id" title="notation">&quot;</span></a>[ 'fieldMixin' 'of' F 'by' &lt;: ]" :=<br/>
+&nbsp;&nbsp;(<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.SubType.fieldMixin"><span class="id" title="lemma">fieldMixin</span></a> (<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssreflect.html#Phant"><span class="id" title="constructor">Phant</span></a> <span class="id" title="var">F</span>) <a class="idref" href="mathcomp.ssreflect.eqtype.html#val_inj"><span class="id" title="lemma">val_inj</span></a> (<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#erefl"><span class="id" title="abbreviation">erefl</span></a> <span class="id" title="var">_</span>) (<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#frefl"><span class="id" title="lemma">frefl</span></a> <span class="id" title="var">_</span>))<br/>
+&nbsp;&nbsp;(<span class="id" title="tactic">at</span> <span class="id" title="keyword">level</span> 0, <span class="id" title="var">format</span> "[ 'fieldMixin' 'of' F 'by' &lt;: ]") : <span class="id" title="var">form_scope</span>.<br/>
+
+<br/>
+<span class="id" title="keyword">End</span> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.SubType.Exports"><span class="id" title="module">Exports</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">End</span> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.SubType"><span class="id" title="module">SubType</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Module</span> <a name="GRing.Theory"><span class="id" title="module">Theory</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Theory.addrA"><span class="id" title="definition">addrA</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.addrA"><span class="id" title="lemma">addrA</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Theory.addrC"><span class="id" title="definition">addrC</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.addrC"><span class="id" title="lemma">addrC</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Theory.add0r"><span class="id" title="definition">add0r</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.add0r"><span class="id" title="lemma">add0r</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Theory.addNr"><span class="id" title="definition">addNr</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.addNr"><span class="id" title="lemma">addNr</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Theory.addr0"><span class="id" title="definition">addr0</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.addr0"><span class="id" title="lemma">addr0</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Theory.addrN"><span class="id" title="definition">addrN</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.addrN"><span class="id" title="lemma">addrN</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Theory.subrr"><span class="id" title="definition">subrr</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.subrr"><span class="id" title="definition">subrr</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Theory.addrCA"><span class="id" title="definition">addrCA</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.addrCA"><span class="id" title="lemma">addrCA</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Theory.addrAC"><span class="id" title="definition">addrAC</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.addrAC"><span class="id" title="lemma">addrAC</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Theory.addrACA"><span class="id" title="definition">addrACA</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.addrACA"><span class="id" title="lemma">addrACA</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Theory.addKr"><span class="id" title="definition">addKr</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.addKr"><span class="id" title="lemma">addKr</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Theory.addNKr"><span class="id" title="definition">addNKr</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.addNKr"><span class="id" title="lemma">addNKr</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Theory.addrK"><span class="id" title="definition">addrK</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.addrK"><span class="id" title="lemma">addrK</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Theory.addrNK"><span class="id" title="definition">addrNK</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.addrNK"><span class="id" title="lemma">addrNK</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Theory.subrK"><span class="id" title="definition">subrK</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.subrK"><span class="id" title="definition">subrK</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Theory.subKr"><span class="id" title="definition">subKr</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.subKr"><span class="id" title="lemma">subKr</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Theory.addrI"><span class="id" title="definition">addrI</span></a> := @<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.addrI"><span class="id" title="lemma">addrI</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Theory.addIr"><span class="id" title="definition">addIr</span></a> := @<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.addIr"><span class="id" title="lemma">addIr</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Theory.subrI"><span class="id" title="definition">subrI</span></a> := @<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.subrI"><span class="id" title="lemma">subrI</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Theory.subIr"><span class="id" title="definition">subIr</span></a> := @<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.subIr"><span class="id" title="lemma">subIr</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Theory.opprK"><span class="id" title="definition">opprK</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.opprK"><span class="id" title="lemma">opprK</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Theory.oppr_inj"><span class="id" title="definition">oppr_inj</span></a> := @<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.oppr_inj"><span class="id" title="lemma">oppr_inj</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Theory.oppr0"><span class="id" title="definition">oppr0</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.oppr0"><span class="id" title="lemma">oppr0</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Theory.oppr_eq0"><span class="id" title="definition">oppr_eq0</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.oppr_eq0"><span class="id" title="lemma">oppr_eq0</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Theory.opprD"><span class="id" title="definition">opprD</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.opprD"><span class="id" title="lemma">opprD</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Theory.opprB"><span class="id" title="definition">opprB</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.opprB"><span class="id" title="lemma">opprB</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Theory.subr0"><span class="id" title="definition">subr0</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.subr0"><span class="id" title="lemma">subr0</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Theory.sub0r"><span class="id" title="definition">sub0r</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.sub0r"><span class="id" title="lemma">sub0r</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Theory.subr_eq"><span class="id" title="definition">subr_eq</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.subr_eq"><span class="id" title="lemma">subr_eq</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Theory.addr0_eq"><span class="id" title="definition">addr0_eq</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.addr0_eq"><span class="id" title="lemma">addr0_eq</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Theory.subr0_eq"><span class="id" title="definition">subr0_eq</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.subr0_eq"><span class="id" title="lemma">subr0_eq</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Theory.subr_eq0"><span class="id" title="definition">subr_eq0</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.subr_eq0"><span class="id" title="lemma">subr_eq0</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Theory.addr_eq0"><span class="id" title="definition">addr_eq0</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.addr_eq0"><span class="id" title="lemma">addr_eq0</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Theory.eqr_opp"><span class="id" title="definition">eqr_opp</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.eqr_opp"><span class="id" title="lemma">eqr_opp</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Theory.eqr_oppLR"><span class="id" title="definition">eqr_oppLR</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.eqr_oppLR"><span class="id" title="lemma">eqr_oppLR</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Theory.sumrN"><span class="id" title="definition">sumrN</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.sumrN"><span class="id" title="lemma">sumrN</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Theory.sumrB"><span class="id" title="definition">sumrB</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.sumrB"><span class="id" title="lemma">sumrB</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Theory.sumrMnl"><span class="id" title="definition">sumrMnl</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.sumrMnl"><span class="id" title="lemma">sumrMnl</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Theory.sumrMnr"><span class="id" title="definition">sumrMnr</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.sumrMnr"><span class="id" title="lemma">sumrMnr</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Theory.sumr_const"><span class="id" title="definition">sumr_const</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.sumr_const"><span class="id" title="lemma">sumr_const</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Theory.telescope_sumr"><span class="id" title="definition">telescope_sumr</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.telescope_sumr"><span class="id" title="lemma">telescope_sumr</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Theory.mulr0n"><span class="id" title="definition">mulr0n</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.mulr0n"><span class="id" title="lemma">mulr0n</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Theory.mulr1n"><span class="id" title="definition">mulr1n</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.mulr1n"><span class="id" title="lemma">mulr1n</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Theory.mulr2n"><span class="id" title="definition">mulr2n</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.mulr2n"><span class="id" title="lemma">mulr2n</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Theory.mulrS"><span class="id" title="definition">mulrS</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.mulrS"><span class="id" title="lemma">mulrS</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Theory.mulrSr"><span class="id" title="definition">mulrSr</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.mulrSr"><span class="id" title="lemma">mulrSr</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Theory.mulrb"><span class="id" title="definition">mulrb</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.mulrb"><span class="id" title="lemma">mulrb</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Theory.mul0rn"><span class="id" title="definition">mul0rn</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.mul0rn"><span class="id" title="lemma">mul0rn</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Theory.mulNrn"><span class="id" title="definition">mulNrn</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.mulNrn"><span class="id" title="lemma">mulNrn</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Theory.mulrnDl"><span class="id" title="definition">mulrnDl</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.mulrnDl"><span class="id" title="lemma">mulrnDl</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Theory.mulrnDr"><span class="id" title="definition">mulrnDr</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.mulrnDr"><span class="id" title="lemma">mulrnDr</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Theory.mulrnBl"><span class="id" title="definition">mulrnBl</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.mulrnBl"><span class="id" title="lemma">mulrnBl</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Theory.mulrnBr"><span class="id" title="definition">mulrnBr</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.mulrnBr"><span class="id" title="lemma">mulrnBr</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Theory.mulrnA"><span class="id" title="definition">mulrnA</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.mulrnA"><span class="id" title="lemma">mulrnA</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Theory.mulrnAC"><span class="id" title="definition">mulrnAC</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.mulrnAC"><span class="id" title="lemma">mulrnAC</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Theory.mulrA"><span class="id" title="definition">mulrA</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.mulrA"><span class="id" title="lemma">mulrA</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Theory.mul1r"><span class="id" title="definition">mul1r</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.mul1r"><span class="id" title="lemma">mul1r</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Theory.mulr1"><span class="id" title="definition">mulr1</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.mulr1"><span class="id" title="lemma">mulr1</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Theory.mulrDl"><span class="id" title="definition">mulrDl</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.mulrDl"><span class="id" title="lemma">mulrDl</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Theory.mulrDr"><span class="id" title="definition">mulrDr</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.mulrDr"><span class="id" title="lemma">mulrDr</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Theory.oner_neq0"><span class="id" title="definition">oner_neq0</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.oner_neq0"><span class="id" title="lemma">oner_neq0</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Theory.oner_eq0"><span class="id" title="definition">oner_eq0</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.oner_eq0"><span class="id" title="lemma">oner_eq0</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Theory.mul0r"><span class="id" title="definition">mul0r</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.mul0r"><span class="id" title="lemma">mul0r</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Theory.mulr0"><span class="id" title="definition">mulr0</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.mulr0"><span class="id" title="lemma">mulr0</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Theory.mulrN"><span class="id" title="definition">mulrN</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.mulrN"><span class="id" title="lemma">mulrN</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Theory.mulNr"><span class="id" title="definition">mulNr</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.mulNr"><span class="id" title="lemma">mulNr</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Theory.mulrNN"><span class="id" title="definition">mulrNN</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.mulrNN"><span class="id" title="lemma">mulrNN</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Theory.mulN1r"><span class="id" title="definition">mulN1r</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.mulN1r"><span class="id" title="lemma">mulN1r</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Theory.mulrN1"><span class="id" title="definition">mulrN1</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.mulrN1"><span class="id" title="lemma">mulrN1</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Theory.mulr_suml"><span class="id" title="definition">mulr_suml</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.mulr_suml"><span class="id" title="lemma">mulr_suml</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Theory.mulr_sumr"><span class="id" title="definition">mulr_sumr</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.mulr_sumr"><span class="id" title="lemma">mulr_sumr</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Theory.mulrBl"><span class="id" title="definition">mulrBl</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.mulrBl"><span class="id" title="lemma">mulrBl</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Theory.mulrBr"><span class="id" title="definition">mulrBr</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.mulrBr"><span class="id" title="lemma">mulrBr</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Theory.mulrnAl"><span class="id" title="definition">mulrnAl</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.mulrnAl"><span class="id" title="lemma">mulrnAl</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Theory.mulrnAr"><span class="id" title="definition">mulrnAr</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.mulrnAr"><span class="id" title="lemma">mulrnAr</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Theory.mulr_natl"><span class="id" title="definition">mulr_natl</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.mulr_natl"><span class="id" title="lemma">mulr_natl</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Theory.mulr_natr"><span class="id" title="definition">mulr_natr</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.mulr_natr"><span class="id" title="lemma">mulr_natr</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Theory.natrD"><span class="id" title="definition">natrD</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.natrD"><span class="id" title="lemma">natrD</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Theory.natrB"><span class="id" title="definition">natrB</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.natrB"><span class="id" title="lemma">natrB</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Theory.natr_sum"><span class="id" title="definition">natr_sum</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.natr_sum"><span class="id" title="definition">natr_sum</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Theory.natrM"><span class="id" title="definition">natrM</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.natrM"><span class="id" title="lemma">natrM</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Theory.natrX"><span class="id" title="definition">natrX</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.natrX"><span class="id" title="lemma">natrX</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Theory.expr0"><span class="id" title="definition">expr0</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.expr0"><span class="id" title="lemma">expr0</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Theory.exprS"><span class="id" title="definition">exprS</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.exprS"><span class="id" title="lemma">exprS</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Theory.expr1"><span class="id" title="definition">expr1</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.expr1"><span class="id" title="lemma">expr1</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Theory.expr2"><span class="id" title="definition">expr2</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.expr2"><span class="id" title="lemma">expr2</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Theory.expr0n"><span class="id" title="definition">expr0n</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.expr0n"><span class="id" title="lemma">expr0n</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Theory.expr1n"><span class="id" title="definition">expr1n</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.expr1n"><span class="id" title="lemma">expr1n</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Theory.exprD"><span class="id" title="definition">exprD</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.exprD"><span class="id" title="lemma">exprD</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Theory.exprSr"><span class="id" title="definition">exprSr</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.exprSr"><span class="id" title="lemma">exprSr</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Theory.commr_sym"><span class="id" title="definition">commr_sym</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.commr_sym"><span class="id" title="lemma">commr_sym</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Theory.commr_refl"><span class="id" title="definition">commr_refl</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.commr_refl"><span class="id" title="lemma">commr_refl</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Theory.commr0"><span class="id" title="definition">commr0</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.commr0"><span class="id" title="lemma">commr0</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Theory.commr1"><span class="id" title="definition">commr1</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.commr1"><span class="id" title="lemma">commr1</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Theory.commrN"><span class="id" title="definition">commrN</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.commrN"><span class="id" title="lemma">commrN</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Theory.commrN1"><span class="id" title="definition">commrN1</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.commrN1"><span class="id" title="lemma">commrN1</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Theory.commrD"><span class="id" title="definition">commrD</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.commrD"><span class="id" title="lemma">commrD</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Theory.commrMn"><span class="id" title="definition">commrMn</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.commrMn"><span class="id" title="lemma">commrMn</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Theory.commrM"><span class="id" title="definition">commrM</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.commrM"><span class="id" title="lemma">commrM</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Theory.commr_nat"><span class="id" title="definition">commr_nat</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.commr_nat"><span class="id" title="lemma">commr_nat</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Theory.commrX"><span class="id" title="definition">commrX</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.commrX"><span class="id" title="lemma">commrX</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Theory.exprMn_comm"><span class="id" title="definition">exprMn_comm</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.exprMn_comm"><span class="id" title="lemma">exprMn_comm</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Theory.commr_sign"><span class="id" title="definition">commr_sign</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.commr_sign"><span class="id" title="lemma">commr_sign</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Theory.exprMn_n"><span class="id" title="definition">exprMn_n</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.exprMn_n"><span class="id" title="lemma">exprMn_n</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Theory.exprM"><span class="id" title="definition">exprM</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.exprM"><span class="id" title="lemma">exprM</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Theory.exprAC"><span class="id" title="definition">exprAC</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.exprAC"><span class="id" title="lemma">exprAC</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Theory.expr_mod"><span class="id" title="definition">expr_mod</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.expr_mod"><span class="id" title="lemma">expr_mod</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Theory.expr_dvd"><span class="id" title="definition">expr_dvd</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.expr_dvd"><span class="id" title="lemma">expr_dvd</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Theory.signr_odd"><span class="id" title="definition">signr_odd</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.signr_odd"><span class="id" title="lemma">signr_odd</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Theory.signr_eq0"><span class="id" title="definition">signr_eq0</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.signr_eq0"><span class="id" title="lemma">signr_eq0</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Theory.mulr_sign"><span class="id" title="definition">mulr_sign</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.mulr_sign"><span class="id" title="lemma">mulr_sign</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Theory.signr_addb"><span class="id" title="definition">signr_addb</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.signr_addb"><span class="id" title="lemma">signr_addb</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Theory.signrN"><span class="id" title="definition">signrN</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.signrN"><span class="id" title="lemma">signrN</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Theory.signrE"><span class="id" title="definition">signrE</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.signrE"><span class="id" title="lemma">signrE</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Theory.mulr_signM"><span class="id" title="definition">mulr_signM</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.mulr_signM"><span class="id" title="lemma">mulr_signM</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Theory.exprNn"><span class="id" title="definition">exprNn</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.exprNn"><span class="id" title="lemma">exprNn</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Theory.sqrrN"><span class="id" title="definition">sqrrN</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.sqrrN"><span class="id" title="lemma">sqrrN</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Theory.sqrr_sign"><span class="id" title="definition">sqrr_sign</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.sqrr_sign"><span class="id" title="lemma">sqrr_sign</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Theory.signrMK"><span class="id" title="definition">signrMK</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.signrMK"><span class="id" title="lemma">signrMK</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Theory.mulrI_eq0"><span class="id" title="definition">mulrI_eq0</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.mulrI_eq0"><span class="id" title="lemma">mulrI_eq0</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Theory.lreg_neq0"><span class="id" title="definition">lreg_neq0</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.lreg_neq0"><span class="id" title="lemma">lreg_neq0</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Theory.mulrI0_lreg"><span class="id" title="definition">mulrI0_lreg</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.mulrI0_lreg"><span class="id" title="lemma">mulrI0_lreg</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Theory.lregN"><span class="id" title="definition">lregN</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.lregN"><span class="id" title="lemma">lregN</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Theory.lreg1"><span class="id" title="definition">lreg1</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.lreg1"><span class="id" title="lemma">lreg1</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Theory.lregM"><span class="id" title="definition">lregM</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.lregM"><span class="id" title="lemma">lregM</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Theory.lregX"><span class="id" title="definition">lregX</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.lregX"><span class="id" title="lemma">lregX</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Theory.lreg_sign"><span class="id" title="definition">lreg_sign</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.lreg_sign"><span class="id" title="lemma">lreg_sign</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Theory.lregP"><span class="id" title="definition">lregP</span></a> {<span class="id" title="var">R</span> <span class="id" title="var">x</span>} := @<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.lregP"><span class="id" title="lemma">lregP</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#R"><span class="id" title="variable">R</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Theory.mulIr_eq0"><span class="id" title="definition">mulIr_eq0</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.mulIr_eq0"><span class="id" title="lemma">mulIr_eq0</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Theory.mulIr0_rreg"><span class="id" title="definition">mulIr0_rreg</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.mulIr0_rreg"><span class="id" title="lemma">mulIr0_rreg</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Theory.rreg_neq0"><span class="id" title="definition">rreg_neq0</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.rreg_neq0"><span class="id" title="lemma">rreg_neq0</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Theory.rregN"><span class="id" title="definition">rregN</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.rregN"><span class="id" title="lemma">rregN</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Theory.rreg1"><span class="id" title="definition">rreg1</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.rreg1"><span class="id" title="lemma">rreg1</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Theory.rregM"><span class="id" title="definition">rregM</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.rregM"><span class="id" title="lemma">rregM</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Theory.revrX"><span class="id" title="definition">revrX</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.revrX"><span class="id" title="lemma">revrX</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Theory.rregX"><span class="id" title="definition">rregX</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.rregX"><span class="id" title="lemma">rregX</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Theory.rregP"><span class="id" title="definition">rregP</span></a> {<span class="id" title="var">R</span> <span class="id" title="var">x</span>} := @<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.rregP"><span class="id" title="lemma">rregP</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#R"><span class="id" title="variable">R</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Theory.exprDn_comm"><span class="id" title="definition">exprDn_comm</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.exprDn_comm"><span class="id" title="lemma">exprDn_comm</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Theory.exprBn_comm"><span class="id" title="definition">exprBn_comm</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.exprBn_comm"><span class="id" title="lemma">exprBn_comm</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Theory.subrXX_comm"><span class="id" title="definition">subrXX_comm</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.subrXX_comm"><span class="id" title="lemma">subrXX_comm</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Theory.exprD1n"><span class="id" title="definition">exprD1n</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.exprD1n"><span class="id" title="lemma">exprD1n</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Theory.subrX1"><span class="id" title="definition">subrX1</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.subrX1"><span class="id" title="lemma">subrX1</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Theory.sqrrD1"><span class="id" title="definition">sqrrD1</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.sqrrD1"><span class="id" title="lemma">sqrrD1</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Theory.sqrrB1"><span class="id" title="definition">sqrrB1</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.sqrrB1"><span class="id" title="lemma">sqrrB1</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Theory.subr_sqr_1"><span class="id" title="definition">subr_sqr_1</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.subr_sqr_1"><span class="id" title="lemma">subr_sqr_1</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Theory.charf0"><span class="id" title="definition">charf0</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.charf0"><span class="id" title="lemma">charf0</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Theory.charf_prime"><span class="id" title="definition">charf_prime</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.charf_prime"><span class="id" title="lemma">charf_prime</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Theory.mulrn_char"><span class="id" title="definition">mulrn_char</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.mulrn_char"><span class="id" title="lemma">mulrn_char</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Theory.dvdn_charf"><span class="id" title="definition">dvdn_charf</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.dvdn_charf"><span class="id" title="lemma">dvdn_charf</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Theory.charf_eq"><span class="id" title="definition">charf_eq</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.charf_eq"><span class="id" title="lemma">charf_eq</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Theory.bin_lt_charf_0"><span class="id" title="definition">bin_lt_charf_0</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.bin_lt_charf_0"><span class="id" title="lemma">bin_lt_charf_0</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Theory.Frobenius_autE"><span class="id" title="definition">Frobenius_autE</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Frobenius_autE"><span class="id" title="lemma">Frobenius_autE</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Theory.Frobenius_aut0"><span class="id" title="definition">Frobenius_aut0</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Frobenius_aut0"><span class="id" title="lemma">Frobenius_aut0</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Theory.Frobenius_aut1"><span class="id" title="definition">Frobenius_aut1</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Frobenius_aut1"><span class="id" title="lemma">Frobenius_aut1</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Theory.Frobenius_autD_comm"><span class="id" title="definition">Frobenius_autD_comm</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Frobenius_autD_comm"><span class="id" title="lemma">Frobenius_autD_comm</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Theory.Frobenius_autMn"><span class="id" title="definition">Frobenius_autMn</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Frobenius_autMn"><span class="id" title="lemma">Frobenius_autMn</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Theory.Frobenius_aut_nat"><span class="id" title="definition">Frobenius_aut_nat</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Frobenius_aut_nat"><span class="id" title="lemma">Frobenius_aut_nat</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Theory.Frobenius_autM_comm"><span class="id" title="definition">Frobenius_autM_comm</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Frobenius_autM_comm"><span class="id" title="lemma">Frobenius_autM_comm</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Theory.Frobenius_autX"><span class="id" title="definition">Frobenius_autX</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Frobenius_autX"><span class="id" title="lemma">Frobenius_autX</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Theory.Frobenius_autN"><span class="id" title="definition">Frobenius_autN</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Frobenius_autN"><span class="id" title="lemma">Frobenius_autN</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Theory.Frobenius_autB_comm"><span class="id" title="definition">Frobenius_autB_comm</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Frobenius_autB_comm"><span class="id" title="lemma">Frobenius_autB_comm</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Theory.exprNn_char"><span class="id" title="definition">exprNn_char</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.exprNn_char"><span class="id" title="lemma">exprNn_char</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Theory.addrr_char2"><span class="id" title="definition">addrr_char2</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.addrr_char2"><span class="id" title="lemma">addrr_char2</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Theory.oppr_char2"><span class="id" title="definition">oppr_char2</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.oppr_char2"><span class="id" title="lemma">oppr_char2</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Theory.addrK_char2"><span class="id" title="definition">addrK_char2</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.addrK_char2"><span class="id" title="lemma">addrK_char2</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Theory.addKr_char2"><span class="id" title="definition">addKr_char2</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.addKr_char2"><span class="id" title="lemma">addKr_char2</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Theory.prodr_const"><span class="id" title="definition">prodr_const</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.prodr_const"><span class="id" title="lemma">prodr_const</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Theory.mulrC"><span class="id" title="definition">mulrC</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.mulrC"><span class="id" title="lemma">mulrC</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Theory.mulrCA"><span class="id" title="definition">mulrCA</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.mulrCA"><span class="id" title="lemma">mulrCA</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Theory.mulrAC"><span class="id" title="definition">mulrAC</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.mulrAC"><span class="id" title="lemma">mulrAC</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Theory.mulrACA"><span class="id" title="definition">mulrACA</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.mulrACA"><span class="id" title="lemma">mulrACA</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Theory.exprMn"><span class="id" title="definition">exprMn</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.exprMn"><span class="id" title="lemma">exprMn</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Theory.prodrXl"><span class="id" title="definition">prodrXl</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.prodrXl"><span class="id" title="lemma">prodrXl</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Theory.prodrXr"><span class="id" title="definition">prodrXr</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.prodrXr"><span class="id" title="lemma">prodrXr</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Theory.prodrN"><span class="id" title="definition">prodrN</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.prodrN"><span class="id" title="lemma">prodrN</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Theory.prodrMn"><span class="id" title="definition">prodrMn</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.prodrMn"><span class="id" title="lemma">prodrMn</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Theory.natr_prod"><span class="id" title="definition">natr_prod</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.natr_prod"><span class="id" title="lemma">natr_prod</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Theory.prodr_undup_exp_count"><span class="id" title="definition">prodr_undup_exp_count</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.prodr_undup_exp_count"><span class="id" title="lemma">prodr_undup_exp_count</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Theory.exprDn"><span class="id" title="definition">exprDn</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.exprDn"><span class="id" title="lemma">exprDn</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Theory.exprBn"><span class="id" title="definition">exprBn</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.exprBn"><span class="id" title="lemma">exprBn</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Theory.subrXX"><span class="id" title="definition">subrXX</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.subrXX"><span class="id" title="lemma">subrXX</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Theory.sqrrD"><span class="id" title="definition">sqrrD</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.sqrrD"><span class="id" title="lemma">sqrrD</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Theory.sqrrB"><span class="id" title="definition">sqrrB</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.sqrrB"><span class="id" title="lemma">sqrrB</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Theory.subr_sqr"><span class="id" title="definition">subr_sqr</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.subr_sqr"><span class="id" title="lemma">subr_sqr</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Theory.subr_sqrDB"><span class="id" title="definition">subr_sqrDB</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.subr_sqrDB"><span class="id" title="lemma">subr_sqrDB</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Theory.exprDn_char"><span class="id" title="definition">exprDn_char</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.exprDn_char"><span class="id" title="lemma">exprDn_char</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Theory.mulrV"><span class="id" title="definition">mulrV</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.mulrV"><span class="id" title="definition">mulrV</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Theory.divrr"><span class="id" title="definition">divrr</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.divrr"><span class="id" title="lemma">divrr</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Theory.mulVr"><span class="id" title="definition">mulVr</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.mulVr"><span class="id" title="lemma">mulVr</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Theory.invr_out"><span class="id" title="definition">invr_out</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.invr_out"><span class="id" title="lemma">invr_out</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Theory.unitrP"><span class="id" title="definition">unitrP</span></a> {<span class="id" title="var">R</span> <span class="id" title="var">x</span>} := @<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.unitrP"><span class="id" title="lemma">unitrP</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#R"><span class="id" title="variable">R</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Theory.mulKr"><span class="id" title="definition">mulKr</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.mulKr"><span class="id" title="lemma">mulKr</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Theory.mulVKr"><span class="id" title="definition">mulVKr</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.mulVKr"><span class="id" title="lemma">mulVKr</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Theory.mulrK"><span class="id" title="definition">mulrK</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.mulrK"><span class="id" title="lemma">mulrK</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Theory.mulrVK"><span class="id" title="definition">mulrVK</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.mulrVK"><span class="id" title="lemma">mulrVK</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Theory.divrK"><span class="id" title="definition">divrK</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.divrK"><span class="id" title="definition">divrK</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Theory.mulrI"><span class="id" title="definition">mulrI</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.mulrI"><span class="id" title="lemma">mulrI</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Theory.mulIr"><span class="id" title="definition">mulIr</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.mulIr"><span class="id" title="lemma">mulIr</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Theory.divrI"><span class="id" title="definition">divrI</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.divrI"><span class="id" title="lemma">divrI</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Theory.divIr"><span class="id" title="definition">divIr</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.divIr"><span class="id" title="lemma">divIr</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Theory.telescope_prodr"><span class="id" title="definition">telescope_prodr</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.telescope_prodr"><span class="id" title="lemma">telescope_prodr</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Theory.commrV"><span class="id" title="definition">commrV</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.commrV"><span class="id" title="lemma">commrV</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Theory.unitrE"><span class="id" title="definition">unitrE</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.unitrE"><span class="id" title="lemma">unitrE</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Theory.invrK"><span class="id" title="definition">invrK</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.invrK"><span class="id" title="lemma">invrK</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Theory.invr_inj"><span class="id" title="definition">invr_inj</span></a> := @<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.invr_inj"><span class="id" title="lemma">invr_inj</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Theory.unitrV"><span class="id" title="definition">unitrV</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.unitrV"><span class="id" title="lemma">unitrV</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Theory.unitr1"><span class="id" title="definition">unitr1</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.unitr1"><span class="id" title="lemma">unitr1</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Theory.invr1"><span class="id" title="definition">invr1</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.invr1"><span class="id" title="lemma">invr1</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Theory.divr1"><span class="id" title="definition">divr1</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.divr1"><span class="id" title="lemma">divr1</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Theory.div1r"><span class="id" title="definition">div1r</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.div1r"><span class="id" title="lemma">div1r</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Theory.natr_div"><span class="id" title="definition">natr_div</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.natr_div"><span class="id" title="lemma">natr_div</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Theory.unitr0"><span class="id" title="definition">unitr0</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.unitr0"><span class="id" title="lemma">unitr0</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Theory.invr0"><span class="id" title="definition">invr0</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.invr0"><span class="id" title="lemma">invr0</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Theory.unitrN1"><span class="id" title="definition">unitrN1</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.unitrN1"><span class="id" title="lemma">unitrN1</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Theory.unitrN"><span class="id" title="definition">unitrN</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.unitrN"><span class="id" title="lemma">unitrN</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Theory.invrN1"><span class="id" title="definition">invrN1</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.invrN1"><span class="id" title="lemma">invrN1</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Theory.invrN"><span class="id" title="definition">invrN</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.invrN"><span class="id" title="lemma">invrN</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Theory.invr_sign"><span class="id" title="definition">invr_sign</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.invr_sign"><span class="id" title="lemma">invr_sign</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Theory.unitrMl"><span class="id" title="definition">unitrMl</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.unitrMl"><span class="id" title="lemma">unitrMl</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Theory.unitrMr"><span class="id" title="definition">unitrMr</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.unitrMr"><span class="id" title="lemma">unitrMr</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Theory.invrM"><span class="id" title="definition">invrM</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.invrM"><span class="id" title="lemma">invrM</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Theory.invr_eq0"><span class="id" title="definition">invr_eq0</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.invr_eq0"><span class="id" title="lemma">invr_eq0</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Theory.invr_eq1"><span class="id" title="definition">invr_eq1</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.invr_eq1"><span class="id" title="lemma">invr_eq1</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Theory.invr_neq0"><span class="id" title="definition">invr_neq0</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.invr_neq0"><span class="id" title="lemma">invr_neq0</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Theory.unitrM_comm"><span class="id" title="definition">unitrM_comm</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.unitrM_comm"><span class="id" title="lemma">unitrM_comm</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Theory.unitrX"><span class="id" title="definition">unitrX</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.unitrX"><span class="id" title="lemma">unitrX</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Theory.unitrX_pos"><span class="id" title="definition">unitrX_pos</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.unitrX_pos"><span class="id" title="lemma">unitrX_pos</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Theory.exprVn"><span class="id" title="definition">exprVn</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.exprVn"><span class="id" title="lemma">exprVn</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Theory.exprB"><span class="id" title="definition">exprB</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.exprB"><span class="id" title="lemma">exprB</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Theory.invr_signM"><span class="id" title="definition">invr_signM</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.invr_signM"><span class="id" title="lemma">invr_signM</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Theory.divr_signM"><span class="id" title="definition">divr_signM</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.divr_signM"><span class="id" title="lemma">divr_signM</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Theory.rpred0D"><span class="id" title="definition">rpred0D</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.rpred0D"><span class="id" title="lemma">rpred0D</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Theory.rpred0"><span class="id" title="definition">rpred0</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.rpred0"><span class="id" title="lemma">rpred0</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Theory.rpredD"><span class="id" title="definition">rpredD</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.rpredD"><span class="id" title="lemma">rpredD</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Theory.rpredNr"><span class="id" title="definition">rpredNr</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.rpredNr"><span class="id" title="lemma">rpredNr</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Theory.rpred_sum"><span class="id" title="definition">rpred_sum</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.rpred_sum"><span class="id" title="lemma">rpred_sum</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Theory.rpredMn"><span class="id" title="definition">rpredMn</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.rpredMn"><span class="id" title="lemma">rpredMn</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Theory.rpredN"><span class="id" title="definition">rpredN</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.rpredN"><span class="id" title="lemma">rpredN</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Theory.rpredB"><span class="id" title="definition">rpredB</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.rpredB"><span class="id" title="lemma">rpredB</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Theory.rpredMNn"><span class="id" title="definition">rpredMNn</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.rpredMNn"><span class="id" title="lemma">rpredMNn</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Theory.rpredDr"><span class="id" title="definition">rpredDr</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.rpredDr"><span class="id" title="lemma">rpredDr</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Theory.rpredDl"><span class="id" title="definition">rpredDl</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.rpredDl"><span class="id" title="lemma">rpredDl</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Theory.rpredBr"><span class="id" title="definition">rpredBr</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.rpredBr"><span class="id" title="lemma">rpredBr</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Theory.rpredBl"><span class="id" title="definition">rpredBl</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.rpredBl"><span class="id" title="lemma">rpredBl</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Theory.rpredMsign"><span class="id" title="definition">rpredMsign</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.rpredMsign"><span class="id" title="lemma">rpredMsign</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Theory.rpred1M"><span class="id" title="definition">rpred1M</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.rpred1M"><span class="id" title="lemma">rpred1M</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Theory.rpred1"><span class="id" title="definition">rpred1</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.rpred1"><span class="id" title="lemma">rpred1</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Theory.rpredM"><span class="id" title="definition">rpredM</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.rpredM"><span class="id" title="lemma">rpredM</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Theory.rpred_prod"><span class="id" title="definition">rpred_prod</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.rpred_prod"><span class="id" title="lemma">rpred_prod</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Theory.rpredX"><span class="id" title="definition">rpredX</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.rpredX"><span class="id" title="lemma">rpredX</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Theory.rpred_nat"><span class="id" title="definition">rpred_nat</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.rpred_nat"><span class="id" title="lemma">rpred_nat</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Theory.rpredN1"><span class="id" title="definition">rpredN1</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.rpredN1"><span class="id" title="lemma">rpredN1</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Theory.rpred_sign"><span class="id" title="definition">rpred_sign</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.rpred_sign"><span class="id" title="lemma">rpred_sign</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Theory.rpredZsign"><span class="id" title="definition">rpredZsign</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.rpredZsign"><span class="id" title="lemma">rpredZsign</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Theory.rpredZnat"><span class="id" title="definition">rpredZnat</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.rpredZnat"><span class="id" title="lemma">rpredZnat</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Theory.rpredZ"><span class="id" title="definition">rpredZ</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.rpredZ"><span class="id" title="lemma">rpredZ</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Theory.rpredVr"><span class="id" title="definition">rpredVr</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.rpredVr"><span class="id" title="lemma">rpredVr</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Theory.rpredV"><span class="id" title="definition">rpredV</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.rpredV"><span class="id" title="lemma">rpredV</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Theory.rpred_div"><span class="id" title="definition">rpred_div</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.rpred_div"><span class="id" title="lemma">rpred_div</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Theory.rpredXN"><span class="id" title="definition">rpredXN</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.rpredXN"><span class="id" title="lemma">rpredXN</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Theory.rpredZeq"><span class="id" title="definition">rpredZeq</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.rpredZeq"><span class="id" title="lemma">rpredZeq</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Theory.char_lalg"><span class="id" title="definition">char_lalg</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.char_lalg"><span class="id" title="lemma">char_lalg</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Theory.rpredMr"><span class="id" title="definition">rpredMr</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.rpredMr"><span class="id" title="lemma">rpredMr</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Theory.rpredMl"><span class="id" title="definition">rpredMl</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.rpredMl"><span class="id" title="lemma">rpredMl</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Theory.rpred_divr"><span class="id" title="definition">rpred_divr</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.rpred_divr"><span class="id" title="lemma">rpred_divr</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Theory.rpred_divl"><span class="id" title="definition">rpred_divl</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.rpred_divl"><span class="id" title="lemma">rpred_divl</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Theory.eq_eval"><span class="id" title="definition">eq_eval</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.eq_eval"><span class="id" title="lemma">eq_eval</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Theory.eval_tsubst"><span class="id" title="definition">eval_tsubst</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.eval_tsubst"><span class="id" title="lemma">eval_tsubst</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Theory.eq_holds"><span class="id" title="definition">eq_holds</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.eq_holds"><span class="id" title="lemma">eq_holds</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Theory.holds_fsubst"><span class="id" title="definition">holds_fsubst</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.holds_fsubst"><span class="id" title="lemma">holds_fsubst</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Theory.unitrM"><span class="id" title="definition">unitrM</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.unitrM"><span class="id" title="lemma">unitrM</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Theory.unitrPr"><span class="id" title="definition">unitrPr</span></a> {<span class="id" title="var">R</span> <span class="id" title="var">x</span>} := @<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.unitrPr"><span class="id" title="lemma">unitrPr</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#R"><span class="id" title="variable">R</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Theory.expr_div_n"><span class="id" title="definition">expr_div_n</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.expr_div_n"><span class="id" title="lemma">expr_div_n</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Theory.mulr1_eq"><span class="id" title="definition">mulr1_eq</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.mulr1_eq"><span class="id" title="lemma">mulr1_eq</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Theory.divr1_eq"><span class="id" title="definition">divr1_eq</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.divr1_eq"><span class="id" title="lemma">divr1_eq</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Theory.divKr"><span class="id" title="definition">divKr</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.divKr"><span class="id" title="lemma">divKr</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Theory.mulf_eq0"><span class="id" title="definition">mulf_eq0</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.mulf_eq0"><span class="id" title="lemma">mulf_eq0</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Theory.prodf_eq0"><span class="id" title="definition">prodf_eq0</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.prodf_eq0"><span class="id" title="lemma">prodf_eq0</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Theory.prodf_seq_eq0"><span class="id" title="definition">prodf_seq_eq0</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.prodf_seq_eq0"><span class="id" title="lemma">prodf_seq_eq0</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Theory.mulf_neq0"><span class="id" title="definition">mulf_neq0</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.mulf_neq0"><span class="id" title="lemma">mulf_neq0</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Theory.prodf_neq0"><span class="id" title="definition">prodf_neq0</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.prodf_neq0"><span class="id" title="lemma">prodf_neq0</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Theory.prodf_seq_neq0"><span class="id" title="definition">prodf_seq_neq0</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.prodf_seq_neq0"><span class="id" title="lemma">prodf_seq_neq0</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Theory.expf_eq0"><span class="id" title="definition">expf_eq0</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.expf_eq0"><span class="id" title="lemma">expf_eq0</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Theory.sqrf_eq0"><span class="id" title="definition">sqrf_eq0</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.sqrf_eq0"><span class="id" title="lemma">sqrf_eq0</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Theory.expf_neq0"><span class="id" title="definition">expf_neq0</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.expf_neq0"><span class="id" title="lemma">expf_neq0</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Theory.natf_neq0"><span class="id" title="definition">natf_neq0</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.natf_neq0"><span class="id" title="lemma">natf_neq0</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Theory.natf0_char"><span class="id" title="definition">natf0_char</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.natf0_char"><span class="id" title="lemma">natf0_char</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Theory.charf'_nat"><span class="id" title="definition">charf'_nat</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.charf'_nat"><span class="id" title="lemma">charf'_nat</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Theory.charf0P"><span class="id" title="definition">charf0P</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.charf0P"><span class="id" title="lemma">charf0P</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Theory.eqf_sqr"><span class="id" title="definition">eqf_sqr</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.eqf_sqr"><span class="id" title="lemma">eqf_sqr</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Theory.mulfI"><span class="id" title="definition">mulfI</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.mulfI"><span class="id" title="lemma">mulfI</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Theory.mulIf"><span class="id" title="definition">mulIf</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.mulIf"><span class="id" title="lemma">mulIf</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Theory.divfI"><span class="id" title="definition">divfI</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.divfI"><span class="id" title="lemma">divfI</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Theory.divIf"><span class="id" title="definition">divIf</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.divIf"><span class="id" title="lemma">divIf</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Theory.sqrf_eq1"><span class="id" title="definition">sqrf_eq1</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.sqrf_eq1"><span class="id" title="lemma">sqrf_eq1</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Theory.expfS_eq1"><span class="id" title="definition">expfS_eq1</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.expfS_eq1"><span class="id" title="lemma">expfS_eq1</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Theory.fieldP"><span class="id" title="definition">fieldP</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.fieldP"><span class="id" title="lemma">fieldP</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Theory.unitfE"><span class="id" title="definition">unitfE</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.unitfE"><span class="id" title="lemma">unitfE</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Theory.mulVf"><span class="id" title="definition">mulVf</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.mulVf"><span class="id" title="lemma">mulVf</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Theory.mulfV"><span class="id" title="definition">mulfV</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.mulfV"><span class="id" title="definition">mulfV</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Theory.divff"><span class="id" title="definition">divff</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.divff"><span class="id" title="lemma">divff</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Theory.mulKf"><span class="id" title="definition">mulKf</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.mulKf"><span class="id" title="lemma">mulKf</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Theory.mulVKf"><span class="id" title="definition">mulVKf</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.mulVKf"><span class="id" title="lemma">mulVKf</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Theory.mulfK"><span class="id" title="definition">mulfK</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.mulfK"><span class="id" title="lemma">mulfK</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Theory.mulfVK"><span class="id" title="definition">mulfVK</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.mulfVK"><span class="id" title="lemma">mulfVK</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Theory.divfK"><span class="id" title="definition">divfK</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.divfK"><span class="id" title="definition">divfK</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Theory.divKf"><span class="id" title="definition">divKf</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.divKf"><span class="id" title="lemma">divKf</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Theory.invfM"><span class="id" title="definition">invfM</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.invfM"><span class="id" title="lemma">invfM</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Theory.invf_div"><span class="id" title="definition">invf_div</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.invf_div"><span class="id" title="lemma">invf_div</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Theory.expfB_cond"><span class="id" title="definition">expfB_cond</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.expfB_cond"><span class="id" title="lemma">expfB_cond</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Theory.expfB"><span class="id" title="definition">expfB</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.expfB"><span class="id" title="lemma">expfB</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Theory.prodfV"><span class="id" title="definition">prodfV</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.prodfV"><span class="id" title="lemma">prodfV</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Theory.prodf_div"><span class="id" title="definition">prodf_div</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.prodf_div"><span class="id" title="lemma">prodf_div</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Theory.telescope_prodf"><span class="id" title="definition">telescope_prodf</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.telescope_prodf"><span class="id" title="lemma">telescope_prodf</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Theory.addf_div"><span class="id" title="definition">addf_div</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.addf_div"><span class="id" title="lemma">addf_div</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Theory.mulf_div"><span class="id" title="definition">mulf_div</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.mulf_div"><span class="id" title="lemma">mulf_div</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Theory.char0_natf_div"><span class="id" title="definition">char0_natf_div</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.char0_natf_div"><span class="id" title="lemma">char0_natf_div</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Theory.fpredMr"><span class="id" title="definition">fpredMr</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.fpredMr"><span class="id" title="lemma">fpredMr</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Theory.fpredMl"><span class="id" title="definition">fpredMl</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.fpredMl"><span class="id" title="lemma">fpredMl</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Theory.fpred_divr"><span class="id" title="definition">fpred_divr</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.fpred_divr"><span class="id" title="lemma">fpred_divr</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Theory.fpred_divl"><span class="id" title="definition">fpred_divl</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.fpred_divl"><span class="id" title="lemma">fpred_divl</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Theory.satP"><span class="id" title="definition">satP</span></a> {<span class="id" title="var">F</span> <span class="id" title="var">e</span> <span class="id" title="var">f</span>} := @<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.satP"><span class="id" title="lemma">satP</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#F"><span class="id" title="variable">F</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#e"><span class="id" title="variable">e</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#f"><span class="id" title="variable">f</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Theory.eq_sat"><span class="id" title="definition">eq_sat</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.eq_sat"><span class="id" title="lemma">eq_sat</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Theory.solP"><span class="id" title="definition">solP</span></a> {<span class="id" title="var">F</span> <span class="id" title="var">n</span> <span class="id" title="var">f</span>} := @<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.solP"><span class="id" title="lemma">solP</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#F"><span class="id" title="variable">F</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#n"><span class="id" title="variable">n</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#f"><span class="id" title="variable">f</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Theory.eq_sol"><span class="id" title="definition">eq_sol</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.eq_sol"><span class="id" title="lemma">eq_sol</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Theory.size_sol"><span class="id" title="definition">size_sol</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.size_sol"><span class="id" title="lemma">size_sol</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Theory.solve_monicpoly"><span class="id" title="definition">solve_monicpoly</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.solve_monicpoly"><span class="id" title="lemma">solve_monicpoly</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Theory.raddf0"><span class="id" title="definition">raddf0</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.raddf0"><span class="id" title="lemma">raddf0</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Theory.raddf_eq0"><span class="id" title="definition">raddf_eq0</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.raddf_eq0"><span class="id" title="lemma">raddf_eq0</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Theory.raddfN"><span class="id" title="definition">raddfN</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.raddfN"><span class="id" title="lemma">raddfN</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Theory.raddfD"><span class="id" title="definition">raddfD</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.raddfD"><span class="id" title="lemma">raddfD</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Theory.raddfB"><span class="id" title="definition">raddfB</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.raddfB"><span class="id" title="lemma">raddfB</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Theory.raddf_sum"><span class="id" title="definition">raddf_sum</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.raddf_sum"><span class="id" title="lemma">raddf_sum</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Theory.raddfMn"><span class="id" title="definition">raddfMn</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.raddfMn"><span class="id" title="lemma">raddfMn</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Theory.raddfMNn"><span class="id" title="definition">raddfMNn</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.raddfMNn"><span class="id" title="lemma">raddfMNn</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Theory.raddfMnat"><span class="id" title="definition">raddfMnat</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.raddfMnat"><span class="id" title="lemma">raddfMnat</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Theory.raddfMsign"><span class="id" title="definition">raddfMsign</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.raddfMsign"><span class="id" title="lemma">raddfMsign</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Theory.can2_additive"><span class="id" title="definition">can2_additive</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.can2_additive"><span class="id" title="lemma">can2_additive</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Theory.bij_additive"><span class="id" title="definition">bij_additive</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.bij_additive"><span class="id" title="lemma">bij_additive</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Theory.rmorph0"><span class="id" title="definition">rmorph0</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.rmorph0"><span class="id" title="lemma">rmorph0</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Theory.rmorphN"><span class="id" title="definition">rmorphN</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.rmorphN"><span class="id" title="lemma">rmorphN</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Theory.rmorphD"><span class="id" title="definition">rmorphD</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.rmorphD"><span class="id" title="lemma">rmorphD</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Theory.rmorphB"><span class="id" title="definition">rmorphB</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.rmorphB"><span class="id" title="lemma">rmorphB</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Theory.rmorph_sum"><span class="id" title="definition">rmorph_sum</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.rmorph_sum"><span class="id" title="lemma">rmorph_sum</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Theory.rmorphMn"><span class="id" title="definition">rmorphMn</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.rmorphMn"><span class="id" title="lemma">rmorphMn</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Theory.rmorphMNn"><span class="id" title="definition">rmorphMNn</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.rmorphMNn"><span class="id" title="lemma">rmorphMNn</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Theory.rmorphismP"><span class="id" title="definition">rmorphismP</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.rmorphismP"><span class="id" title="lemma">rmorphismP</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Theory.rmorphismMP"><span class="id" title="definition">rmorphismMP</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.rmorphismMP"><span class="id" title="lemma">rmorphismMP</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Theory.rmorph1"><span class="id" title="definition">rmorph1</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.rmorph1"><span class="id" title="lemma">rmorph1</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Theory.rmorph_eq1"><span class="id" title="definition">rmorph_eq1</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.rmorph_eq1"><span class="id" title="lemma">rmorph_eq1</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Theory.rmorphM"><span class="id" title="definition">rmorphM</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.rmorphM"><span class="id" title="lemma">rmorphM</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Theory.rmorphMsign"><span class="id" title="definition">rmorphMsign</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.rmorphMsign"><span class="id" title="lemma">rmorphMsign</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Theory.rmorph_nat"><span class="id" title="definition">rmorph_nat</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.rmorph_nat"><span class="id" title="lemma">rmorph_nat</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Theory.rmorph_eq_nat"><span class="id" title="definition">rmorph_eq_nat</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.rmorph_eq_nat"><span class="id" title="lemma">rmorph_eq_nat</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Theory.rmorph_prod"><span class="id" title="definition">rmorph_prod</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.rmorph_prod"><span class="id" title="lemma">rmorph_prod</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Theory.rmorphX"><span class="id" title="definition">rmorphX</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.rmorphX"><span class="id" title="lemma">rmorphX</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Theory.rmorphN1"><span class="id" title="definition">rmorphN1</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.rmorphN1"><span class="id" title="lemma">rmorphN1</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Theory.rmorph_sign"><span class="id" title="definition">rmorph_sign</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.rmorph_sign"><span class="id" title="lemma">rmorph_sign</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Theory.rmorph_char"><span class="id" title="definition">rmorph_char</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.rmorph_char"><span class="id" title="lemma">rmorph_char</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Theory.can2_rmorphism"><span class="id" title="definition">can2_rmorphism</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.can2_rmorphism"><span class="id" title="lemma">can2_rmorphism</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Theory.bij_rmorphism"><span class="id" title="definition">bij_rmorphism</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.bij_rmorphism"><span class="id" title="lemma">bij_rmorphism</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Theory.rmorph_comm"><span class="id" title="definition">rmorph_comm</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.rmorph_comm"><span class="id" title="lemma">rmorph_comm</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Theory.rmorph_unit"><span class="id" title="definition">rmorph_unit</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.rmorph_unit"><span class="id" title="lemma">rmorph_unit</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Theory.rmorphV"><span class="id" title="definition">rmorphV</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.rmorphV"><span class="id" title="lemma">rmorphV</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Theory.rmorph_div"><span class="id" title="definition">rmorph_div</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.rmorph_div"><span class="id" title="lemma">rmorph_div</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Theory.fmorph_eq0"><span class="id" title="definition">fmorph_eq0</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.fmorph_eq0"><span class="id" title="lemma">fmorph_eq0</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Theory.fmorph_inj"><span class="id" title="definition">fmorph_inj</span></a> := @<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.fmorph_inj"><span class="id" title="lemma">fmorph_inj</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Theory.fmorph_eq1"><span class="id" title="definition">fmorph_eq1</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.fmorph_eq1"><span class="id" title="lemma">fmorph_eq1</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Theory.fmorph_char"><span class="id" title="definition">fmorph_char</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.fmorph_char"><span class="id" title="lemma">fmorph_char</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Theory.fmorph_unit"><span class="id" title="definition">fmorph_unit</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.fmorph_unit"><span class="id" title="lemma">fmorph_unit</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Theory.fmorphV"><span class="id" title="definition">fmorphV</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.fmorphV"><span class="id" title="lemma">fmorphV</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Theory.fmorph_div"><span class="id" title="definition">fmorph_div</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.fmorph_div"><span class="id" title="lemma">fmorph_div</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Theory.scalerA"><span class="id" title="definition">scalerA</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.scalerA"><span class="id" title="lemma">scalerA</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Theory.scale1r"><span class="id" title="definition">scale1r</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.scale1r"><span class="id" title="lemma">scale1r</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Theory.scalerDr"><span class="id" title="definition">scalerDr</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.scalerDr"><span class="id" title="lemma">scalerDr</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Theory.scalerDl"><span class="id" title="definition">scalerDl</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.scalerDl"><span class="id" title="lemma">scalerDl</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Theory.scaler0"><span class="id" title="definition">scaler0</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.scaler0"><span class="id" title="lemma">scaler0</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Theory.scale0r"><span class="id" title="definition">scale0r</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.scale0r"><span class="id" title="lemma">scale0r</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Theory.scaleNr"><span class="id" title="definition">scaleNr</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.scaleNr"><span class="id" title="lemma">scaleNr</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Theory.scaleN1r"><span class="id" title="definition">scaleN1r</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.scaleN1r"><span class="id" title="lemma">scaleN1r</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Theory.scalerN"><span class="id" title="definition">scalerN</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.scalerN"><span class="id" title="lemma">scalerN</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Theory.scalerBl"><span class="id" title="definition">scalerBl</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.scalerBl"><span class="id" title="lemma">scalerBl</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Theory.scalerBr"><span class="id" title="definition">scalerBr</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.scalerBr"><span class="id" title="lemma">scalerBr</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Theory.scaler_nat"><span class="id" title="definition">scaler_nat</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.scaler_nat"><span class="id" title="lemma">scaler_nat</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Theory.scalerMnl"><span class="id" title="definition">scalerMnl</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.scalerMnl"><span class="id" title="lemma">scalerMnl</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Theory.scalerMnr"><span class="id" title="definition">scalerMnr</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.scalerMnr"><span class="id" title="lemma">scalerMnr</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Theory.scaler_suml"><span class="id" title="definition">scaler_suml</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.scaler_suml"><span class="id" title="lemma">scaler_suml</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Theory.scaler_sumr"><span class="id" title="definition">scaler_sumr</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.scaler_sumr"><span class="id" title="lemma">scaler_sumr</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Theory.scaler_eq0"><span class="id" title="definition">scaler_eq0</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.scaler_eq0"><span class="id" title="lemma">scaler_eq0</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Theory.scalerK"><span class="id" title="definition">scalerK</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.scalerK"><span class="id" title="lemma">scalerK</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Theory.scalerKV"><span class="id" title="definition">scalerKV</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.scalerKV"><span class="id" title="lemma">scalerKV</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Theory.scalerI"><span class="id" title="definition">scalerI</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.scalerI"><span class="id" title="lemma">scalerI</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Theory.scalerAl"><span class="id" title="definition">scalerAl</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.scalerAl"><span class="id" title="lemma">scalerAl</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Theory.mulr_algl"><span class="id" title="definition">mulr_algl</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.mulr_algl"><span class="id" title="lemma">mulr_algl</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Theory.scaler_sign"><span class="id" title="definition">scaler_sign</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.scaler_sign"><span class="id" title="lemma">scaler_sign</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Theory.signrZK"><span class="id" title="definition">signrZK</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.signrZK"><span class="id" title="lemma">signrZK</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Theory.scalerCA"><span class="id" title="definition">scalerCA</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.scalerCA"><span class="id" title="lemma">scalerCA</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Theory.scalerAr"><span class="id" title="definition">scalerAr</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.scalerAr"><span class="id" title="lemma">scalerAr</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Theory.mulr_algr"><span class="id" title="definition">mulr_algr</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.mulr_algr"><span class="id" title="lemma">mulr_algr</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Theory.exprZn"><span class="id" title="definition">exprZn</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.exprZn"><span class="id" title="lemma">exprZn</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Theory.scaler_prodl"><span class="id" title="definition">scaler_prodl</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.scaler_prodl"><span class="id" title="lemma">scaler_prodl</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Theory.scaler_prodr"><span class="id" title="definition">scaler_prodr</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.scaler_prodr"><span class="id" title="lemma">scaler_prodr</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Theory.scaler_prod"><span class="id" title="definition">scaler_prod</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.scaler_prod"><span class="id" title="lemma">scaler_prod</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Theory.scaler_injl"><span class="id" title="definition">scaler_injl</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.scaler_injl"><span class="id" title="lemma">scaler_injl</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Theory.scaler_unit"><span class="id" title="definition">scaler_unit</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.scaler_unit"><span class="id" title="lemma">scaler_unit</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Theory.invrZ"><span class="id" title="definition">invrZ</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.invrZ"><span class="id" title="lemma">invrZ</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Theory.raddfZnat"><span class="id" title="definition">raddfZnat</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.raddfZnat"><span class="id" title="lemma">raddfZnat</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Theory.raddfZsign"><span class="id" title="definition">raddfZsign</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.raddfZsign"><span class="id" title="lemma">raddfZsign</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Theory.in_algE"><span class="id" title="definition">in_algE</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.in_algE"><span class="id" title="lemma">in_algE</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Theory.linear0"><span class="id" title="definition">linear0</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.linear0"><span class="id" title="lemma">linear0</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Theory.linearN"><span class="id" title="definition">linearN</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.linearN"><span class="id" title="lemma">linearN</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Theory.linearD"><span class="id" title="definition">linearD</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.linearD"><span class="id" title="lemma">linearD</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Theory.linearB"><span class="id" title="definition">linearB</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.linearB"><span class="id" title="lemma">linearB</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Theory.linear_sum"><span class="id" title="definition">linear_sum</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.linear_sum"><span class="id" title="lemma">linear_sum</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Theory.linearMn"><span class="id" title="definition">linearMn</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.linearMn"><span class="id" title="lemma">linearMn</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Theory.linearMNn"><span class="id" title="definition">linearMNn</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.linearMNn"><span class="id" title="lemma">linearMNn</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Theory.linearP"><span class="id" title="definition">linearP</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.linearP"><span class="id" title="lemma">linearP</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Theory.linearZ_LR"><span class="id" title="definition">linearZ_LR</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.linearZ_LR"><span class="id" title="lemma">linearZ_LR</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Theory.linearZ"><span class="id" title="definition">linearZ</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.linearZ"><span class="id" title="lemma">linearZ</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Theory.linearPZ"><span class="id" title="definition">linearPZ</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.linearPZ"><span class="id" title="lemma">linearPZ</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Theory.linearZZ"><span class="id" title="definition">linearZZ</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.linearZZ"><span class="id" title="lemma">linearZZ</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Theory.scalarP"><span class="id" title="definition">scalarP</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.scalarP"><span class="id" title="lemma">scalarP</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Theory.scalarZ"><span class="id" title="definition">scalarZ</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.scalarZ"><span class="id" title="lemma">scalarZ</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Theory.can2_linear"><span class="id" title="definition">can2_linear</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.can2_linear"><span class="id" title="lemma">can2_linear</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Theory.bij_linear"><span class="id" title="definition">bij_linear</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.bij_linear"><span class="id" title="lemma">bij_linear</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Theory.rmorph_alg"><span class="id" title="definition">rmorph_alg</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.rmorph_alg"><span class="id" title="lemma">rmorph_alg</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Theory.lrmorphismP"><span class="id" title="definition">lrmorphismP</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.lrmorphismP"><span class="id" title="lemma">lrmorphismP</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Theory.can2_lrmorphism"><span class="id" title="definition">can2_lrmorphism</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.can2_lrmorphism"><span class="id" title="lemma">can2_lrmorphism</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Theory.bij_lrmorphism"><span class="id" title="definition">bij_lrmorphism</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.bij_lrmorphism"><span class="id" title="lemma">bij_lrmorphism</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="GRing.Theory.imaginary_exists"><span class="id" title="definition">imaginary_exists</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.imaginary_exists"><span class="id" title="lemma">imaginary_exists</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Notation</span> <a name="GRing.Theory.null_fun"><span class="id" title="abbreviation">null_fun</span></a> <span class="id" title="var">V</span> := (<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.null_fun"><span class="id" title="abbreviation">null_fun</span></a> <span class="id" title="var">V</span>) (<span class="id" title="var">only</span> <span class="id" title="var">parsing</span>).<br/>
+<span class="id" title="keyword">Notation</span> <a name="GRing.Theory.in_alg"><span class="id" title="abbreviation">in_alg</span></a> <span class="id" title="var">A</span> := (<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.in_alg_loc"><span class="id" title="abbreviation">in_alg_loc</span></a> <span class="id" title="var">A</span>).<br/>
+
+<br/>
+<span class="id" title="keyword">End</span> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Theory"><span class="id" title="module">Theory</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Notation</span> <a name="GRing.in_alg"><span class="id" title="abbreviation">in_alg</span></a> <span class="id" title="var">A</span> := (<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.in_alg_loc"><span class="id" title="abbreviation">in_alg_loc</span></a> <span class="id" title="var">A</span>).<br/>
+
+<br/>
+<span class="id" title="keyword">End</span> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing"><span class="id" title="module">GRing</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Export</span> <span class="id" title="var">Zmodule.Exports</span> <span class="id" title="var">Ring.Exports</span> <span class="id" title="var">Lmodule.Exports</span> <span class="id" title="var">Lalgebra.Exports</span>.<br/>
+<span class="id" title="keyword">Export</span> <span class="id" title="var">Additive.Exports</span> <span class="id" title="var">RMorphism.Exports</span> <span class="id" title="var">Linear.Exports</span> <span class="id" title="var">LRMorphism.Exports</span>.<br/>
+<span class="id" title="keyword">Export</span> <span class="id" title="var">ComRing.Exports</span> <span class="id" title="var">Algebra.Exports</span> <span class="id" title="var">UnitRing.Exports</span> <span class="id" title="var">UnitAlgebra.Exports</span>.<br/>
+<span class="id" title="keyword">Export</span> <span class="id" title="var">ComUnitRing.Exports</span> <span class="id" title="var">IntegralDomain.Exports</span> <span class="id" title="var">Field.Exports</span>.<br/>
+<span class="id" title="keyword">Export</span> <span class="id" title="var">DecidableField.Exports</span> <span class="id" title="var">ClosedField.Exports</span>.<br/>
+<span class="id" title="keyword">Export</span> <span class="id" title="var">Pred.Exports</span> <span class="id" title="var">SubType.Exports</span>.<br/>
+<span class="id" title="keyword">Notation</span> <a name="QEdecFieldMixin"><span class="id" title="abbreviation">QEdecFieldMixin</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#QEdecFieldMixin"><span class="id" title="definition">QEdecFieldMixin</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Notation</span> <a name="9112e1557d76651eb56109facdcb2f6a"><span class="id" title="notation">&quot;</span></a>0" := (<a class="idref" href="mathcomp.algebra.ssralg.html#zero"><span class="id" title="definition">zero</span></a> <span class="id" title="var">_</span>) : <span class="id" title="var">ring_scope</span>.<br/>
+<span class="id" title="keyword">Notation</span> <a name="9fdf1a446ceec36bc97cce801a3ef3f2"><span class="id" title="notation">&quot;</span></a>-%R" := (@<a class="idref" href="mathcomp.algebra.ssralg.html#opp"><span class="id" title="definition">opp</span></a> <span class="id" title="var">_</span>) : <span class="id" title="var">ring_scope</span>.<br/>
+<span class="id" title="keyword">Notation</span> <a name="941c6d086004545bd62614d0213e75e5"><span class="id" title="notation">&quot;</span></a>- x" := (<a class="idref" href="mathcomp.algebra.ssralg.html#opp"><span class="id" title="definition">opp</span></a> <span class="id" title="var">x</span>) : <span class="id" title="var">ring_scope</span>.<br/>
+<span class="id" title="keyword">Notation</span> <a name="327bb2f0da6fd7c01a004dedcfc2dee4"><span class="id" title="notation">&quot;</span></a>+%R" := (@<a class="idref" href="mathcomp.algebra.ssralg.html#add"><span class="id" title="definition">add</span></a> <span class="id" title="var">_</span>).<br/>
+<span class="id" title="keyword">Notation</span> <a name="ae4d81913e6239182a9ac7467ffde8cd"><span class="id" title="notation">&quot;</span></a>x + y" := (<a class="idref" href="mathcomp.algebra.ssralg.html#add"><span class="id" title="definition">add</span></a> <span class="id" title="var">x</span> <span class="id" title="var">y</span>) : <span class="id" title="var">ring_scope</span>.<br/>
+<span class="id" title="keyword">Notation</span> <a name="d70623330b2787db6b196e37db7d8f45"><span class="id" title="notation">&quot;</span></a>x - y" := (<a class="idref" href="mathcomp.algebra.ssralg.html#add"><span class="id" title="definition">add</span></a> <span class="id" title="var">x</span> (<a class="idref" href="mathcomp.algebra.ssralg.html#941c6d086004545bd62614d0213e75e5"><span class="id" title="notation">-</span></a> <span class="id" title="var">y</span>)) : <span class="id" title="var">ring_scope</span>.<br/>
+<span class="id" title="keyword">Notation</span> <a name="891e51846c7d1d63a9cb5458374cf308"><span class="id" title="notation">&quot;</span></a>x *+ n" := (<a class="idref" href="mathcomp.algebra.ssralg.html#natmul"><span class="id" title="definition">natmul</span></a> <span class="id" title="var">x</span> <span class="id" title="var">n</span>) : <span class="id" title="var">ring_scope</span>.<br/>
+<span class="id" title="keyword">Notation</span> <a name="3baee4193385688d2f1fcb170107cf5b"><span class="id" title="notation">&quot;</span></a>x *- n" := (<a class="idref" href="mathcomp.algebra.ssralg.html#opp"><span class="id" title="definition">opp</span></a> (<span class="id" title="var">x</span> <a class="idref" href="mathcomp.algebra.ssralg.html#891e51846c7d1d63a9cb5458374cf308"><span class="id" title="notation">*+</span></a> <span class="id" title="var">n</span>)) : <span class="id" title="var">ring_scope</span>.<br/>
+<span class="id" title="keyword">Notation</span> <a name="9625b440a0052f6dbfd015f5bb8b5125"><span class="id" title="notation">&quot;</span></a>s `_ i" := (<a class="idref" href="mathcomp.ssreflect.seq.html#nth"><span class="id" title="definition">seq.nth</span></a> 0%<span class="id" title="var">R</span> <span class="id" title="var">s</span>%<span class="id" title="var">R</span> <span class="id" title="var">i</span>) : <span class="id" title="var">ring_scope</span>.<br/>
+<span class="id" title="keyword">Notation</span> <a name="support"><span class="id" title="abbreviation">support</span></a> := 0<a class="idref" href="mathcomp.ssreflect.finfun.html#5be79ec294433194842565db57cbc361"><span class="id" title="notation">.-</span></a><a class="idref" href="mathcomp.ssreflect.finfun.html#5be79ec294433194842565db57cbc361"><span class="id" title="notation">support</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Notation</span> <a name="86dd5733714d08374288cefa064e21fa"><span class="id" title="notation">&quot;</span></a>1" := (<a class="idref" href="mathcomp.algebra.ssralg.html#one"><span class="id" title="definition">one</span></a> <span class="id" title="var">_</span>) : <span class="id" title="var">ring_scope</span>.<br/>
+<span class="id" title="keyword">Notation</span> <a name="504739f41ff5c1eb3dce20551e873fab"><span class="id" title="notation">&quot;</span></a>- 1" := (<a class="idref" href="mathcomp.algebra.ssralg.html#opp"><span class="id" title="definition">opp</span></a> 1) : <span class="id" title="var">ring_scope</span>.<br/>
+
+<br/>
+<span class="id" title="keyword">Notation</span> <a name="af5c1d7e13410a0a6c3dff5441ac8477"><span class="id" title="notation">&quot;</span></a>n %:R" := (<a class="idref" href="mathcomp.algebra.ssralg.html#natmul"><span class="id" title="definition">natmul</span></a> 1 <span class="id" title="var">n</span>) : <span class="id" title="var">ring_scope</span>.<br/>
+<span class="id" title="keyword">Notation</span> <a name="b8d1051ec5bf038cb2a33edc541359f8"><span class="id" title="notation">&quot;</span></a>[ 'char' R ]" := (<a class="idref" href="mathcomp.algebra.ssralg.html#char"><span class="id" title="definition">char</span></a> (<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssreflect.html#Phant"><span class="id" title="constructor">Phant</span></a> <span class="id" title="var">R</span>)) : <span class="id" title="var">ring_scope</span>.<br/>
+<span class="id" title="keyword">Notation</span> <a name="Frobenius_aut"><span class="id" title="abbreviation">Frobenius_aut</span></a> <span class="id" title="var">chRp</span> := (<a class="idref" href="mathcomp.algebra.ssralg.html#Frobenius_aut"><span class="id" title="definition">Frobenius_aut</span></a> <span class="id" title="var">chRp</span>).<br/>
+<span class="id" title="keyword">Notation</span> <a name="d5d4e2467843f67554f1a8a22d125de9"><span class="id" title="notation">&quot;</span></a>*%R" := (@<a class="idref" href="mathcomp.algebra.ssralg.html#mul"><span class="id" title="definition">mul</span></a> <span class="id" title="var">_</span>).<br/>
+<span class="id" title="keyword">Notation</span> <a name="22058a36a53dac65c94ca403bc62650a"><span class="id" title="notation">&quot;</span></a>x * y" := (<a class="idref" href="mathcomp.algebra.ssralg.html#mul"><span class="id" title="definition">mul</span></a> <span class="id" title="var">x</span> <span class="id" title="var">y</span>) : <span class="id" title="var">ring_scope</span>.<br/>
+<span class="id" title="keyword">Notation</span> <a name="fb22424322c3d7eb9b837dfca65ce21e"><span class="id" title="notation">&quot;</span></a>x ^+ n" := (<a class="idref" href="mathcomp.algebra.ssralg.html#exp"><span class="id" title="definition">exp</span></a> <span class="id" title="var">x</span> <span class="id" title="var">n</span>) : <span class="id" title="var">ring_scope</span>.<br/>
+<span class="id" title="keyword">Notation</span> <a name="f3016d4e55aa553d3e912592ec65e342"><span class="id" title="notation">&quot;</span></a>x ^-1" := (<a class="idref" href="mathcomp.algebra.ssralg.html#inv"><span class="id" title="definition">inv</span></a> <span class="id" title="var">x</span>) : <span class="id" title="var">ring_scope</span>.<br/>
+<span class="id" title="keyword">Notation</span> <a name="c3d3108f22e21916f6afd1f17c0f8125"><span class="id" title="notation">&quot;</span></a>x ^- n" := (<a class="idref" href="mathcomp.algebra.ssralg.html#inv"><span class="id" title="definition">inv</span></a> (<span class="id" title="var">x</span> <a class="idref" href="mathcomp.algebra.ssralg.html#fb22424322c3d7eb9b837dfca65ce21e"><span class="id" title="notation">^+</span></a> <span class="id" title="var">n</span>)) : <span class="id" title="var">ring_scope</span>.<br/>
+<span class="id" title="keyword">Notation</span> <a name="4fa85b0aa898c2a7e18c3b076438c2e7"><span class="id" title="notation">&quot;</span></a>x / y" := (<a class="idref" href="mathcomp.algebra.ssralg.html#mul"><span class="id" title="definition">mul</span></a> <span class="id" title="var">x</span> <span class="id" title="var">y</span><a class="idref" href="mathcomp.algebra.ssralg.html#f3016d4e55aa553d3e912592ec65e342"><span class="id" title="notation">^-1</span></a>) : <span class="id" title="var">ring_scope</span>.<br/>
+
+<br/>
+<span class="id" title="keyword">Notation</span> <a name="75c106c115e1ca6097cf58b45ce663bd"><span class="id" title="notation">&quot;</span></a>*:%R" := (@<a class="idref" href="mathcomp.algebra.ssralg.html#scale"><span class="id" title="definition">scale</span></a> <span class="id" title="var">_</span> <span class="id" title="var">_</span>).<br/>
+<span class="id" title="keyword">Notation</span> <a name="81f8078534dcbb7e13a32d292f766525"><span class="id" title="notation">&quot;</span></a>a *: m" := (<a class="idref" href="mathcomp.algebra.ssralg.html#scale"><span class="id" title="definition">scale</span></a> <span class="id" title="var">a</span> <span class="id" title="var">m</span>) : <span class="id" title="var">ring_scope</span>.<br/>
+<span class="id" title="keyword">Notation</span> <a name="d54beaee78833d410cb3b1b3603748cc"><span class="id" title="notation">&quot;</span></a>k %:A" := (<a class="idref" href="mathcomp.algebra.ssralg.html#scale"><span class="id" title="definition">scale</span></a> <span class="id" title="var">k</span> 1) : <span class="id" title="var">ring_scope</span>.<br/>
+<span class="id" title="keyword">Notation</span> <a name="bdc5ff84949fb09e2844ec63fb6a6940"><span class="id" title="notation">&quot;</span></a>\0" := (<a class="idref" href="mathcomp.algebra.ssralg.html#null_fun"><span class="id" title="abbreviation">null_fun</span></a> <span class="id" title="var">_</span>) : <span class="id" title="var">ring_scope</span>.<br/>
+<span class="id" title="keyword">Notation</span> <a name="92c2de7e7e93a10a858367cf5d49cf1a"><span class="id" title="notation">&quot;</span></a>f \+ g" := (<a class="idref" href="mathcomp.algebra.ssralg.html#add_fun_head"><span class="id" title="definition">add_fun_head</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#tt"><span class="id" title="constructor">tt</span></a> <span class="id" title="var">f</span> <span class="id" title="var">g</span>) : <span class="id" title="var">ring_scope</span>.<br/>
+<span class="id" title="keyword">Notation</span> <a name="35189e9513aa6c3f11385f2c0e19be6d"><span class="id" title="notation">&quot;</span></a>f \- g" := (<a class="idref" href="mathcomp.algebra.ssralg.html#sub_fun_head"><span class="id" title="definition">sub_fun_head</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#tt"><span class="id" title="constructor">tt</span></a> <span class="id" title="var">f</span> <span class="id" title="var">g</span>) : <span class="id" title="var">ring_scope</span>.<br/>
+<span class="id" title="keyword">Notation</span> <a name="2dc3300d5161dd2922dafd7c5ed2a5da"><span class="id" title="notation">&quot;</span></a>a \*: f" := (<a class="idref" href="mathcomp.algebra.ssralg.html#scale_fun_head"><span class="id" title="definition">scale_fun_head</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#tt"><span class="id" title="constructor">tt</span></a> <span class="id" title="var">a</span> <span class="id" title="var">f</span>) : <span class="id" title="var">ring_scope</span>.<br/>
+<span class="id" title="keyword">Notation</span> <a name="dbfd41b61868136f9bd14ed58d4b9f72"><span class="id" title="notation">&quot;</span></a>x \*o f" := (<a class="idref" href="mathcomp.algebra.ssralg.html#mull_fun_head"><span class="id" title="definition">mull_fun_head</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#tt"><span class="id" title="constructor">tt</span></a> <span class="id" title="var">x</span> <span class="id" title="var">f</span>) : <span class="id" title="var">ring_scope</span>.<br/>
+<span class="id" title="keyword">Notation</span> <a name="f4e113db25747a3a9a6f5e6409de165e"><span class="id" title="notation">&quot;</span></a>x \o* f" := (<a class="idref" href="mathcomp.algebra.ssralg.html#mulr_fun_head"><span class="id" title="definition">mulr_fun_head</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#tt"><span class="id" title="constructor">tt</span></a> <span class="id" title="var">x</span> <span class="id" title="var">f</span>) : <span class="id" title="var">ring_scope</span>.<br/>
+
+<br/>
+<span class="id" title="keyword">Notation</span> <a name="cbc2f2ab11c1c376b5c4511d28b14d74"><span class="id" title="notation">&quot;</span></a>\sum_ ( i &lt;- r | P ) F" :=<br/>
+&nbsp;&nbsp;(<a class="idref" href="mathcomp.ssreflect.bigop.html#52c4d552b36d01307b4a33177122d4d1"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.ssreflect.bigop.html#52c4d552b36d01307b4a33177122d4d1"><span class="id" title="notation">big</span></a><a class="idref" href="mathcomp.ssreflect.bigop.html#52c4d552b36d01307b4a33177122d4d1"><span class="id" title="notation">[</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#327bb2f0da6fd7c01a004dedcfc2dee4"><span class="id" title="notation">+%</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#327bb2f0da6fd7c01a004dedcfc2dee4"><span class="id" title="notation">R</span></a><a class="idref" href="mathcomp.ssreflect.bigop.html#52c4d552b36d01307b4a33177122d4d1"><span class="id" title="notation">/</span></a>0%<span class="id" title="var">R</span><a class="idref" href="mathcomp.ssreflect.bigop.html#52c4d552b36d01307b4a33177122d4d1"><span class="id" title="notation">]</span></a><a class="idref" href="mathcomp.ssreflect.bigop.html#52c4d552b36d01307b4a33177122d4d1"><span class="id" title="notation">_</span></a><a class="idref" href="mathcomp.ssreflect.bigop.html#52c4d552b36d01307b4a33177122d4d1"><span class="id" title="notation">(</span></a><span class="id" title="var">i</span> <a class="idref" href="mathcomp.ssreflect.bigop.html#52c4d552b36d01307b4a33177122d4d1"><span class="id" title="notation">&lt;-</span></a> <span class="id" title="var">r</span> <a class="idref" href="mathcomp.ssreflect.bigop.html#52c4d552b36d01307b4a33177122d4d1"><span class="id" title="notation">|</span></a> <span class="id" title="var">P</span>%<span class="id" title="var">B</span><a class="idref" href="mathcomp.ssreflect.bigop.html#52c4d552b36d01307b4a33177122d4d1"><span class="id" title="notation">)</span></a> <span class="id" title="var">F</span>%<span class="id" title="var">R</span>) : <span class="id" title="var">ring_scope</span>.<br/>
+<span class="id" title="keyword">Notation</span> <a name="c9afba1af653123a1dddfe925d2b3ab3"><span class="id" title="notation">&quot;</span></a>\sum_ ( i &lt;- r ) F" :=<br/>
+&nbsp;&nbsp;(<a class="idref" href="mathcomp.ssreflect.bigop.html#30705c25db0a97e8b1b08168f9199b27"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.ssreflect.bigop.html#30705c25db0a97e8b1b08168f9199b27"><span class="id" title="notation">big</span></a><a class="idref" href="mathcomp.ssreflect.bigop.html#30705c25db0a97e8b1b08168f9199b27"><span class="id" title="notation">[</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#327bb2f0da6fd7c01a004dedcfc2dee4"><span class="id" title="notation">+%</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#327bb2f0da6fd7c01a004dedcfc2dee4"><span class="id" title="notation">R</span></a><a class="idref" href="mathcomp.ssreflect.bigop.html#30705c25db0a97e8b1b08168f9199b27"><span class="id" title="notation">/</span></a>0%<span class="id" title="var">R</span><a class="idref" href="mathcomp.ssreflect.bigop.html#30705c25db0a97e8b1b08168f9199b27"><span class="id" title="notation">]</span></a><a class="idref" href="mathcomp.ssreflect.bigop.html#30705c25db0a97e8b1b08168f9199b27"><span class="id" title="notation">_</span></a><a class="idref" href="mathcomp.ssreflect.bigop.html#30705c25db0a97e8b1b08168f9199b27"><span class="id" title="notation">(</span></a><span class="id" title="var">i</span> <a class="idref" href="mathcomp.ssreflect.bigop.html#30705c25db0a97e8b1b08168f9199b27"><span class="id" title="notation">&lt;-</span></a> <span class="id" title="var">r</span><a class="idref" href="mathcomp.ssreflect.bigop.html#30705c25db0a97e8b1b08168f9199b27"><span class="id" title="notation">)</span></a> <span class="id" title="var">F</span>%<span class="id" title="var">R</span>) : <span class="id" title="var">ring_scope</span>.<br/>
+<span class="id" title="keyword">Notation</span> <a name="2c867945467f28d796e85a2abf6a164e"><span class="id" title="notation">&quot;</span></a>\sum_ ( m &lt;= i &lt; n | P ) F" :=<br/>
+&nbsp;&nbsp;(<a class="idref" href="mathcomp.ssreflect.bigop.html#f420cd67a470642ef8830577affa92e5"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.ssreflect.bigop.html#f420cd67a470642ef8830577affa92e5"><span class="id" title="notation">big</span></a><a class="idref" href="mathcomp.ssreflect.bigop.html#f420cd67a470642ef8830577affa92e5"><span class="id" title="notation">[</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#327bb2f0da6fd7c01a004dedcfc2dee4"><span class="id" title="notation">+%</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#327bb2f0da6fd7c01a004dedcfc2dee4"><span class="id" title="notation">R</span></a><a class="idref" href="mathcomp.ssreflect.bigop.html#f420cd67a470642ef8830577affa92e5"><span class="id" title="notation">/</span></a>0%<span class="id" title="var">R</span><a class="idref" href="mathcomp.ssreflect.bigop.html#f420cd67a470642ef8830577affa92e5"><span class="id" title="notation">]</span></a><a class="idref" href="mathcomp.ssreflect.bigop.html#f420cd67a470642ef8830577affa92e5"><span class="id" title="notation">_</span></a><a class="idref" href="mathcomp.ssreflect.bigop.html#f420cd67a470642ef8830577affa92e5"><span class="id" title="notation">(</span></a><span class="id" title="var">m</span> <a class="idref" href="mathcomp.ssreflect.bigop.html#f420cd67a470642ef8830577affa92e5"><span class="id" title="notation">≤</span></a> <span class="id" title="var">i</span> <a class="idref" href="mathcomp.ssreflect.bigop.html#f420cd67a470642ef8830577affa92e5"><span class="id" title="notation">&lt;</span></a> <span class="id" title="var">n</span> <a class="idref" href="mathcomp.ssreflect.bigop.html#f420cd67a470642ef8830577affa92e5"><span class="id" title="notation">|</span></a> <span class="id" title="var">P</span>%<span class="id" title="var">B</span><a class="idref" href="mathcomp.ssreflect.bigop.html#f420cd67a470642ef8830577affa92e5"><span class="id" title="notation">)</span></a> <span class="id" title="var">F</span>%<span class="id" title="var">R</span>) : <span class="id" title="var">ring_scope</span>.<br/>
+<span class="id" title="keyword">Notation</span> <a name="e0f109eaa065fc1ee93c01566389734a"><span class="id" title="notation">&quot;</span></a>\sum_ ( m &lt;= i &lt; n ) F" :=<br/>
+&nbsp;&nbsp;(<a class="idref" href="mathcomp.ssreflect.bigop.html#db346c83cc8192751cf56eb8b0029d40"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.ssreflect.bigop.html#db346c83cc8192751cf56eb8b0029d40"><span class="id" title="notation">big</span></a><a class="idref" href="mathcomp.ssreflect.bigop.html#db346c83cc8192751cf56eb8b0029d40"><span class="id" title="notation">[</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#327bb2f0da6fd7c01a004dedcfc2dee4"><span class="id" title="notation">+%</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#327bb2f0da6fd7c01a004dedcfc2dee4"><span class="id" title="notation">R</span></a><a class="idref" href="mathcomp.ssreflect.bigop.html#db346c83cc8192751cf56eb8b0029d40"><span class="id" title="notation">/</span></a>0%<span class="id" title="var">R</span><a class="idref" href="mathcomp.ssreflect.bigop.html#db346c83cc8192751cf56eb8b0029d40"><span class="id" title="notation">]</span></a><a class="idref" href="mathcomp.ssreflect.bigop.html#db346c83cc8192751cf56eb8b0029d40"><span class="id" title="notation">_</span></a><a class="idref" href="mathcomp.ssreflect.bigop.html#db346c83cc8192751cf56eb8b0029d40"><span class="id" title="notation">(</span></a><span class="id" title="var">m</span> <a class="idref" href="mathcomp.ssreflect.bigop.html#db346c83cc8192751cf56eb8b0029d40"><span class="id" title="notation">≤</span></a> <span class="id" title="var">i</span> <a class="idref" href="mathcomp.ssreflect.bigop.html#db346c83cc8192751cf56eb8b0029d40"><span class="id" title="notation">&lt;</span></a> <span class="id" title="var">n</span><a class="idref" href="mathcomp.ssreflect.bigop.html#db346c83cc8192751cf56eb8b0029d40"><span class="id" title="notation">)</span></a> <span class="id" title="var">F</span>%<span class="id" title="var">R</span>) : <span class="id" title="var">ring_scope</span>.<br/>
+<span class="id" title="keyword">Notation</span> <a name="622398b62523a74328f94700e42198d0"><span class="id" title="notation">&quot;</span></a>\sum_ ( i | P ) F" :=<br/>
+&nbsp;&nbsp;(<a class="idref" href="mathcomp.ssreflect.bigop.html#8850ee6edf9a388b1213678f3d3ee856"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.ssreflect.bigop.html#8850ee6edf9a388b1213678f3d3ee856"><span class="id" title="notation">big</span></a><a class="idref" href="mathcomp.ssreflect.bigop.html#8850ee6edf9a388b1213678f3d3ee856"><span class="id" title="notation">[</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#327bb2f0da6fd7c01a004dedcfc2dee4"><span class="id" title="notation">+%</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#327bb2f0da6fd7c01a004dedcfc2dee4"><span class="id" title="notation">R</span></a><a class="idref" href="mathcomp.ssreflect.bigop.html#8850ee6edf9a388b1213678f3d3ee856"><span class="id" title="notation">/</span></a>0%<span class="id" title="var">R</span><a class="idref" href="mathcomp.ssreflect.bigop.html#8850ee6edf9a388b1213678f3d3ee856"><span class="id" title="notation">]</span></a><a class="idref" href="mathcomp.ssreflect.bigop.html#8850ee6edf9a388b1213678f3d3ee856"><span class="id" title="notation">_</span></a><a class="idref" href="mathcomp.ssreflect.bigop.html#8850ee6edf9a388b1213678f3d3ee856"><span class="id" title="notation">(</span></a><span class="id" title="var">i</span> <a class="idref" href="mathcomp.ssreflect.bigop.html#8850ee6edf9a388b1213678f3d3ee856"><span class="id" title="notation">|</span></a> <span class="id" title="var">P</span>%<span class="id" title="var">B</span><a class="idref" href="mathcomp.ssreflect.bigop.html#8850ee6edf9a388b1213678f3d3ee856"><span class="id" title="notation">)</span></a> <span class="id" title="var">F</span>%<span class="id" title="var">R</span>) : <span class="id" title="var">ring_scope</span>.<br/>
+<span class="id" title="keyword">Notation</span> <a name="640778742e86daa97d31c9911c679af3"><span class="id" title="notation">&quot;</span></a>\sum_ i F" :=<br/>
+&nbsp;&nbsp;(<a class="idref" href="mathcomp.ssreflect.bigop.html#a0ddbff8fbef0617dd5dab072904e591"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.ssreflect.bigop.html#a0ddbff8fbef0617dd5dab072904e591"><span class="id" title="notation">big</span></a><a class="idref" href="mathcomp.ssreflect.bigop.html#a0ddbff8fbef0617dd5dab072904e591"><span class="id" title="notation">[</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#327bb2f0da6fd7c01a004dedcfc2dee4"><span class="id" title="notation">+%</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#327bb2f0da6fd7c01a004dedcfc2dee4"><span class="id" title="notation">R</span></a><a class="idref" href="mathcomp.ssreflect.bigop.html#a0ddbff8fbef0617dd5dab072904e591"><span class="id" title="notation">/</span></a>0%<span class="id" title="var">R</span><a class="idref" href="mathcomp.ssreflect.bigop.html#a0ddbff8fbef0617dd5dab072904e591"><span class="id" title="notation">]</span></a><a class="idref" href="mathcomp.ssreflect.bigop.html#a0ddbff8fbef0617dd5dab072904e591"><span class="id" title="notation">_i</span></a> <span class="id" title="var">F</span>%<span class="id" title="var">R</span>) : <span class="id" title="var">ring_scope</span>.<br/>
+<span class="id" title="keyword">Notation</span> <a name="82bcdd77f5db558bfca23caa38ed195a"><span class="id" title="notation">&quot;</span></a>\sum_ ( i : t | P ) F" :=<br/>
+&nbsp;&nbsp;(<a class="idref" href="mathcomp.ssreflect.bigop.html#ec673a52d55e56af63579baa68d352ee"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.ssreflect.bigop.html#ec673a52d55e56af63579baa68d352ee"><span class="id" title="notation">big</span></a><a class="idref" href="mathcomp.ssreflect.bigop.html#ec673a52d55e56af63579baa68d352ee"><span class="id" title="notation">[</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#327bb2f0da6fd7c01a004dedcfc2dee4"><span class="id" title="notation">+%</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#327bb2f0da6fd7c01a004dedcfc2dee4"><span class="id" title="notation">R</span></a><a class="idref" href="mathcomp.ssreflect.bigop.html#ec673a52d55e56af63579baa68d352ee"><span class="id" title="notation">/</span></a>0%<span class="id" title="var">R</span><a class="idref" href="mathcomp.ssreflect.bigop.html#ec673a52d55e56af63579baa68d352ee"><span class="id" title="notation">]</span></a><a class="idref" href="mathcomp.ssreflect.bigop.html#ec673a52d55e56af63579baa68d352ee"><span class="id" title="notation">_</span></a><a class="idref" href="mathcomp.ssreflect.bigop.html#ec673a52d55e56af63579baa68d352ee"><span class="id" title="notation">(</span></a><span class="id" title="var">i</span> <a class="idref" href="mathcomp.ssreflect.bigop.html#ec673a52d55e56af63579baa68d352ee"><span class="id" title="notation">:</span></a> <span class="id" title="var">t</span> <a class="idref" href="mathcomp.ssreflect.bigop.html#ec673a52d55e56af63579baa68d352ee"><span class="id" title="notation">|</span></a> <span class="id" title="var">P</span>%<span class="id" title="var">B</span><a class="idref" href="mathcomp.ssreflect.bigop.html#ec673a52d55e56af63579baa68d352ee"><span class="id" title="notation">)</span></a> <span class="id" title="var">F</span>%<span class="id" title="var">R</span>) (<span class="id" title="var">only</span> <span class="id" title="var">parsing</span>) : <span class="id" title="var">ring_scope</span>.<br/>
+<span class="id" title="keyword">Notation</span> <a name="7c248898732684ddfab856fc78d32a15"><span class="id" title="notation">&quot;</span></a>\sum_ ( i : t ) F" :=<br/>
+&nbsp;&nbsp;(<a class="idref" href="mathcomp.ssreflect.bigop.html#7c24ccda1da6510c0183e6d456463b39"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.ssreflect.bigop.html#7c24ccda1da6510c0183e6d456463b39"><span class="id" title="notation">big</span></a><a class="idref" href="mathcomp.ssreflect.bigop.html#7c24ccda1da6510c0183e6d456463b39"><span class="id" title="notation">[</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#327bb2f0da6fd7c01a004dedcfc2dee4"><span class="id" title="notation">+%</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#327bb2f0da6fd7c01a004dedcfc2dee4"><span class="id" title="notation">R</span></a><a class="idref" href="mathcomp.ssreflect.bigop.html#7c24ccda1da6510c0183e6d456463b39"><span class="id" title="notation">/</span></a>0%<span class="id" title="var">R</span><a class="idref" href="mathcomp.ssreflect.bigop.html#7c24ccda1da6510c0183e6d456463b39"><span class="id" title="notation">]</span></a><a class="idref" href="mathcomp.ssreflect.bigop.html#7c24ccda1da6510c0183e6d456463b39"><span class="id" title="notation">_</span></a><a class="idref" href="mathcomp.ssreflect.bigop.html#7c24ccda1da6510c0183e6d456463b39"><span class="id" title="notation">(</span></a><span class="id" title="var">i</span> <a class="idref" href="mathcomp.ssreflect.bigop.html#7c24ccda1da6510c0183e6d456463b39"><span class="id" title="notation">:</span></a> <span class="id" title="var">t</span><a class="idref" href="mathcomp.ssreflect.bigop.html#7c24ccda1da6510c0183e6d456463b39"><span class="id" title="notation">)</span></a> <span class="id" title="var">F</span>%<span class="id" title="var">R</span>) (<span class="id" title="var">only</span> <span class="id" title="var">parsing</span>) : <span class="id" title="var">ring_scope</span>.<br/>
+<span class="id" title="keyword">Notation</span> <a name="91d768e14b2f09ef24a42f502888909e"><span class="id" title="notation">&quot;</span></a>\sum_ ( i &lt; n | P ) F" :=<br/>
+&nbsp;&nbsp;(<a class="idref" href="mathcomp.ssreflect.bigop.html#dc42c7ad0ea9096c0f795649807315df"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.ssreflect.bigop.html#dc42c7ad0ea9096c0f795649807315df"><span class="id" title="notation">big</span></a><a class="idref" href="mathcomp.ssreflect.bigop.html#dc42c7ad0ea9096c0f795649807315df"><span class="id" title="notation">[</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#327bb2f0da6fd7c01a004dedcfc2dee4"><span class="id" title="notation">+%</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#327bb2f0da6fd7c01a004dedcfc2dee4"><span class="id" title="notation">R</span></a><a class="idref" href="mathcomp.ssreflect.bigop.html#dc42c7ad0ea9096c0f795649807315df"><span class="id" title="notation">/</span></a>0%<span class="id" title="var">R</span><a class="idref" href="mathcomp.ssreflect.bigop.html#dc42c7ad0ea9096c0f795649807315df"><span class="id" title="notation">]</span></a><a class="idref" href="mathcomp.ssreflect.bigop.html#dc42c7ad0ea9096c0f795649807315df"><span class="id" title="notation">_</span></a><a class="idref" href="mathcomp.ssreflect.bigop.html#dc42c7ad0ea9096c0f795649807315df"><span class="id" title="notation">(</span></a><span class="id" title="var">i</span> <a class="idref" href="mathcomp.ssreflect.bigop.html#dc42c7ad0ea9096c0f795649807315df"><span class="id" title="notation">&lt;</span></a> <span class="id" title="var">n</span> <a class="idref" href="mathcomp.ssreflect.bigop.html#dc42c7ad0ea9096c0f795649807315df"><span class="id" title="notation">|</span></a> <span class="id" title="var">P</span>%<span class="id" title="var">B</span><a class="idref" href="mathcomp.ssreflect.bigop.html#dc42c7ad0ea9096c0f795649807315df"><span class="id" title="notation">)</span></a> <span class="id" title="var">F</span>%<span class="id" title="var">R</span>) : <span class="id" title="var">ring_scope</span>.<br/>
+<span class="id" title="keyword">Notation</span> <a name="b2bfc5b99c28e2c89b336d5f86347706"><span class="id" title="notation">&quot;</span></a>\sum_ ( i &lt; n ) F" :=<br/>
+&nbsp;&nbsp;(<a class="idref" href="mathcomp.ssreflect.bigop.html#567079cee6eb2eba482323c7e8d08df5"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.ssreflect.bigop.html#567079cee6eb2eba482323c7e8d08df5"><span class="id" title="notation">big</span></a><a class="idref" href="mathcomp.ssreflect.bigop.html#567079cee6eb2eba482323c7e8d08df5"><span class="id" title="notation">[</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#327bb2f0da6fd7c01a004dedcfc2dee4"><span class="id" title="notation">+%</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#327bb2f0da6fd7c01a004dedcfc2dee4"><span class="id" title="notation">R</span></a><a class="idref" href="mathcomp.ssreflect.bigop.html#567079cee6eb2eba482323c7e8d08df5"><span class="id" title="notation">/</span></a>0%<span class="id" title="var">R</span><a class="idref" href="mathcomp.ssreflect.bigop.html#567079cee6eb2eba482323c7e8d08df5"><span class="id" title="notation">]</span></a><a class="idref" href="mathcomp.ssreflect.bigop.html#567079cee6eb2eba482323c7e8d08df5"><span class="id" title="notation">_</span></a><a class="idref" href="mathcomp.ssreflect.bigop.html#567079cee6eb2eba482323c7e8d08df5"><span class="id" title="notation">(</span></a><span class="id" title="var">i</span> <a class="idref" href="mathcomp.ssreflect.bigop.html#567079cee6eb2eba482323c7e8d08df5"><span class="id" title="notation">&lt;</span></a> <span class="id" title="var">n</span><a class="idref" href="mathcomp.ssreflect.bigop.html#567079cee6eb2eba482323c7e8d08df5"><span class="id" title="notation">)</span></a> <span class="id" title="var">F</span>%<span class="id" title="var">R</span>) : <span class="id" title="var">ring_scope</span>.<br/>
+<span class="id" title="keyword">Notation</span> <a name="810881dafc8eb122b2265a3a9064d13e"><span class="id" title="notation">&quot;</span></a>\sum_ ( i 'in' A | P ) F" :=<br/>
+&nbsp;&nbsp;(<a class="idref" href="mathcomp.ssreflect.bigop.html#a9a46078b76c2e36303d504b8fb5bbb3"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.ssreflect.bigop.html#a9a46078b76c2e36303d504b8fb5bbb3"><span class="id" title="notation">big</span></a><a class="idref" href="mathcomp.ssreflect.bigop.html#a9a46078b76c2e36303d504b8fb5bbb3"><span class="id" title="notation">[</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#327bb2f0da6fd7c01a004dedcfc2dee4"><span class="id" title="notation">+%</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#327bb2f0da6fd7c01a004dedcfc2dee4"><span class="id" title="notation">R</span></a><a class="idref" href="mathcomp.ssreflect.bigop.html#a9a46078b76c2e36303d504b8fb5bbb3"><span class="id" title="notation">/</span></a>0%<span class="id" title="var">R</span><a class="idref" href="mathcomp.ssreflect.bigop.html#a9a46078b76c2e36303d504b8fb5bbb3"><span class="id" title="notation">]</span></a><a class="idref" href="mathcomp.ssreflect.bigop.html#a9a46078b76c2e36303d504b8fb5bbb3"><span class="id" title="notation">_</span></a><a class="idref" href="mathcomp.ssreflect.bigop.html#a9a46078b76c2e36303d504b8fb5bbb3"><span class="id" title="notation">(</span></a><span class="id" title="var">i</span> <a class="idref" href="mathcomp.ssreflect.bigop.html#a9a46078b76c2e36303d504b8fb5bbb3"><span class="id" title="notation">in</span></a> <span class="id" title="var">A</span> <a class="idref" href="mathcomp.ssreflect.bigop.html#a9a46078b76c2e36303d504b8fb5bbb3"><span class="id" title="notation">|</span></a> <span class="id" title="var">P</span>%<span class="id" title="var">B</span><a class="idref" href="mathcomp.ssreflect.bigop.html#a9a46078b76c2e36303d504b8fb5bbb3"><span class="id" title="notation">)</span></a> <span class="id" title="var">F</span>%<span class="id" title="var">R</span>) : <span class="id" title="var">ring_scope</span>.<br/>
+<span class="id" title="keyword">Notation</span> <a name="0c791dbdc1655ae690f0a6c159a384c0"><span class="id" title="notation">&quot;</span></a>\sum_ ( i 'in' A ) F" :=<br/>
+&nbsp;&nbsp;(<a class="idref" href="mathcomp.ssreflect.bigop.html#9b4515ceb280b6b5a2638c4e28ba3f31"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.ssreflect.bigop.html#9b4515ceb280b6b5a2638c4e28ba3f31"><span class="id" title="notation">big</span></a><a class="idref" href="mathcomp.ssreflect.bigop.html#9b4515ceb280b6b5a2638c4e28ba3f31"><span class="id" title="notation">[</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#327bb2f0da6fd7c01a004dedcfc2dee4"><span class="id" title="notation">+%</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#327bb2f0da6fd7c01a004dedcfc2dee4"><span class="id" title="notation">R</span></a><a class="idref" href="mathcomp.ssreflect.bigop.html#9b4515ceb280b6b5a2638c4e28ba3f31"><span class="id" title="notation">/</span></a>0%<span class="id" title="var">R</span><a class="idref" href="mathcomp.ssreflect.bigop.html#9b4515ceb280b6b5a2638c4e28ba3f31"><span class="id" title="notation">]</span></a><a class="idref" href="mathcomp.ssreflect.bigop.html#9b4515ceb280b6b5a2638c4e28ba3f31"><span class="id" title="notation">_</span></a><a class="idref" href="mathcomp.ssreflect.bigop.html#9b4515ceb280b6b5a2638c4e28ba3f31"><span class="id" title="notation">(</span></a><span class="id" title="var">i</span> <a class="idref" href="mathcomp.ssreflect.bigop.html#9b4515ceb280b6b5a2638c4e28ba3f31"><span class="id" title="notation">in</span></a> <span class="id" title="var">A</span><a class="idref" href="mathcomp.ssreflect.bigop.html#9b4515ceb280b6b5a2638c4e28ba3f31"><span class="id" title="notation">)</span></a> <span class="id" title="var">F</span>%<span class="id" title="var">R</span>) : <span class="id" title="var">ring_scope</span>.<br/>
+
+<br/>
+<span class="id" title="keyword">Notation</span> <a name="358fca18835530a08faf9e0f246b584a"><span class="id" title="notation">&quot;</span></a>\prod_ ( i &lt;- r | P ) F" :=<br/>
+&nbsp;&nbsp;(<a class="idref" href="mathcomp.ssreflect.bigop.html#52c4d552b36d01307b4a33177122d4d1"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.ssreflect.bigop.html#52c4d552b36d01307b4a33177122d4d1"><span class="id" title="notation">big</span></a><a class="idref" href="mathcomp.ssreflect.bigop.html#52c4d552b36d01307b4a33177122d4d1"><span class="id" title="notation">[</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#d5d4e2467843f67554f1a8a22d125de9"><span class="id" title="notation">*%</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#d5d4e2467843f67554f1a8a22d125de9"><span class="id" title="notation">R</span></a><a class="idref" href="mathcomp.ssreflect.bigop.html#52c4d552b36d01307b4a33177122d4d1"><span class="id" title="notation">/</span></a>1%<span class="id" title="var">R</span><a class="idref" href="mathcomp.ssreflect.bigop.html#52c4d552b36d01307b4a33177122d4d1"><span class="id" title="notation">]</span></a><a class="idref" href="mathcomp.ssreflect.bigop.html#52c4d552b36d01307b4a33177122d4d1"><span class="id" title="notation">_</span></a><a class="idref" href="mathcomp.ssreflect.bigop.html#52c4d552b36d01307b4a33177122d4d1"><span class="id" title="notation">(</span></a><span class="id" title="var">i</span> <a class="idref" href="mathcomp.ssreflect.bigop.html#52c4d552b36d01307b4a33177122d4d1"><span class="id" title="notation">&lt;-</span></a> <span class="id" title="var">r</span> <a class="idref" href="mathcomp.ssreflect.bigop.html#52c4d552b36d01307b4a33177122d4d1"><span class="id" title="notation">|</span></a> <span class="id" title="var">P</span>%<span class="id" title="var">B</span><a class="idref" href="mathcomp.ssreflect.bigop.html#52c4d552b36d01307b4a33177122d4d1"><span class="id" title="notation">)</span></a> <span class="id" title="var">F</span>%<span class="id" title="var">R</span>) : <span class="id" title="var">ring_scope</span>.<br/>
+<span class="id" title="keyword">Notation</span> <a name="add995903469f3735748795c8f1b81bd"><span class="id" title="notation">&quot;</span></a>\prod_ ( i &lt;- r ) F" :=<br/>
+&nbsp;&nbsp;(<a class="idref" href="mathcomp.ssreflect.bigop.html#30705c25db0a97e8b1b08168f9199b27"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.ssreflect.bigop.html#30705c25db0a97e8b1b08168f9199b27"><span class="id" title="notation">big</span></a><a class="idref" href="mathcomp.ssreflect.bigop.html#30705c25db0a97e8b1b08168f9199b27"><span class="id" title="notation">[</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#d5d4e2467843f67554f1a8a22d125de9"><span class="id" title="notation">*%</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#d5d4e2467843f67554f1a8a22d125de9"><span class="id" title="notation">R</span></a><a class="idref" href="mathcomp.ssreflect.bigop.html#30705c25db0a97e8b1b08168f9199b27"><span class="id" title="notation">/</span></a>1%<span class="id" title="var">R</span><a class="idref" href="mathcomp.ssreflect.bigop.html#30705c25db0a97e8b1b08168f9199b27"><span class="id" title="notation">]</span></a><a class="idref" href="mathcomp.ssreflect.bigop.html#30705c25db0a97e8b1b08168f9199b27"><span class="id" title="notation">_</span></a><a class="idref" href="mathcomp.ssreflect.bigop.html#30705c25db0a97e8b1b08168f9199b27"><span class="id" title="notation">(</span></a><span class="id" title="var">i</span> <a class="idref" href="mathcomp.ssreflect.bigop.html#30705c25db0a97e8b1b08168f9199b27"><span class="id" title="notation">&lt;-</span></a> <span class="id" title="var">r</span><a class="idref" href="mathcomp.ssreflect.bigop.html#30705c25db0a97e8b1b08168f9199b27"><span class="id" title="notation">)</span></a> <span class="id" title="var">F</span>%<span class="id" title="var">R</span>) : <span class="id" title="var">ring_scope</span>.<br/>
+<span class="id" title="keyword">Notation</span> <a name="0a01046d011726313a4756b0a990da6f"><span class="id" title="notation">&quot;</span></a>\prod_ ( m &lt;= i &lt; n | P ) F" :=<br/>
+&nbsp;&nbsp;(<a class="idref" href="mathcomp.ssreflect.bigop.html#f420cd67a470642ef8830577affa92e5"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.ssreflect.bigop.html#f420cd67a470642ef8830577affa92e5"><span class="id" title="notation">big</span></a><a class="idref" href="mathcomp.ssreflect.bigop.html#f420cd67a470642ef8830577affa92e5"><span class="id" title="notation">[</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#d5d4e2467843f67554f1a8a22d125de9"><span class="id" title="notation">*%</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#d5d4e2467843f67554f1a8a22d125de9"><span class="id" title="notation">R</span></a><a class="idref" href="mathcomp.ssreflect.bigop.html#f420cd67a470642ef8830577affa92e5"><span class="id" title="notation">/</span></a>1%<span class="id" title="var">R</span><a class="idref" href="mathcomp.ssreflect.bigop.html#f420cd67a470642ef8830577affa92e5"><span class="id" title="notation">]</span></a><a class="idref" href="mathcomp.ssreflect.bigop.html#f420cd67a470642ef8830577affa92e5"><span class="id" title="notation">_</span></a><a class="idref" href="mathcomp.ssreflect.bigop.html#f420cd67a470642ef8830577affa92e5"><span class="id" title="notation">(</span></a><span class="id" title="var">m</span> <a class="idref" href="mathcomp.ssreflect.bigop.html#f420cd67a470642ef8830577affa92e5"><span class="id" title="notation">≤</span></a> <span class="id" title="var">i</span> <a class="idref" href="mathcomp.ssreflect.bigop.html#f420cd67a470642ef8830577affa92e5"><span class="id" title="notation">&lt;</span></a> <span class="id" title="var">n</span> <a class="idref" href="mathcomp.ssreflect.bigop.html#f420cd67a470642ef8830577affa92e5"><span class="id" title="notation">|</span></a> <span class="id" title="var">P</span>%<span class="id" title="var">B</span><a class="idref" href="mathcomp.ssreflect.bigop.html#f420cd67a470642ef8830577affa92e5"><span class="id" title="notation">)</span></a> <span class="id" title="var">F</span>%<span class="id" title="var">R</span>) : <span class="id" title="var">ring_scope</span>.<br/>
+<span class="id" title="keyword">Notation</span> <a name="792454e85a3eb4835c0ee22a75118f16"><span class="id" title="notation">&quot;</span></a>\prod_ ( m &lt;= i &lt; n ) F" :=<br/>
+&nbsp;&nbsp;(<a class="idref" href="mathcomp.ssreflect.bigop.html#db346c83cc8192751cf56eb8b0029d40"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.ssreflect.bigop.html#db346c83cc8192751cf56eb8b0029d40"><span class="id" title="notation">big</span></a><a class="idref" href="mathcomp.ssreflect.bigop.html#db346c83cc8192751cf56eb8b0029d40"><span class="id" title="notation">[</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#d5d4e2467843f67554f1a8a22d125de9"><span class="id" title="notation">*%</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#d5d4e2467843f67554f1a8a22d125de9"><span class="id" title="notation">R</span></a><a class="idref" href="mathcomp.ssreflect.bigop.html#db346c83cc8192751cf56eb8b0029d40"><span class="id" title="notation">/</span></a>1%<span class="id" title="var">R</span><a class="idref" href="mathcomp.ssreflect.bigop.html#db346c83cc8192751cf56eb8b0029d40"><span class="id" title="notation">]</span></a><a class="idref" href="mathcomp.ssreflect.bigop.html#db346c83cc8192751cf56eb8b0029d40"><span class="id" title="notation">_</span></a><a class="idref" href="mathcomp.ssreflect.bigop.html#db346c83cc8192751cf56eb8b0029d40"><span class="id" title="notation">(</span></a><span class="id" title="var">m</span> <a class="idref" href="mathcomp.ssreflect.bigop.html#db346c83cc8192751cf56eb8b0029d40"><span class="id" title="notation">≤</span></a> <span class="id" title="var">i</span> <a class="idref" href="mathcomp.ssreflect.bigop.html#db346c83cc8192751cf56eb8b0029d40"><span class="id" title="notation">&lt;</span></a> <span class="id" title="var">n</span><a class="idref" href="mathcomp.ssreflect.bigop.html#db346c83cc8192751cf56eb8b0029d40"><span class="id" title="notation">)</span></a> <span class="id" title="var">F</span>%<span class="id" title="var">R</span>) : <span class="id" title="var">ring_scope</span>.<br/>
+<span class="id" title="keyword">Notation</span> <a name="b29cd8e479370273da36336a1ca6eca7"><span class="id" title="notation">&quot;</span></a>\prod_ ( i | P ) F" :=<br/>
+&nbsp;&nbsp;(<a class="idref" href="mathcomp.ssreflect.bigop.html#8850ee6edf9a388b1213678f3d3ee856"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.ssreflect.bigop.html#8850ee6edf9a388b1213678f3d3ee856"><span class="id" title="notation">big</span></a><a class="idref" href="mathcomp.ssreflect.bigop.html#8850ee6edf9a388b1213678f3d3ee856"><span class="id" title="notation">[</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#d5d4e2467843f67554f1a8a22d125de9"><span class="id" title="notation">*%</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#d5d4e2467843f67554f1a8a22d125de9"><span class="id" title="notation">R</span></a><a class="idref" href="mathcomp.ssreflect.bigop.html#8850ee6edf9a388b1213678f3d3ee856"><span class="id" title="notation">/</span></a>1%<span class="id" title="var">R</span><a class="idref" href="mathcomp.ssreflect.bigop.html#8850ee6edf9a388b1213678f3d3ee856"><span class="id" title="notation">]</span></a><a class="idref" href="mathcomp.ssreflect.bigop.html#8850ee6edf9a388b1213678f3d3ee856"><span class="id" title="notation">_</span></a><a class="idref" href="mathcomp.ssreflect.bigop.html#8850ee6edf9a388b1213678f3d3ee856"><span class="id" title="notation">(</span></a><span class="id" title="var">i</span> <a class="idref" href="mathcomp.ssreflect.bigop.html#8850ee6edf9a388b1213678f3d3ee856"><span class="id" title="notation">|</span></a> <span class="id" title="var">P</span>%<span class="id" title="var">B</span><a class="idref" href="mathcomp.ssreflect.bigop.html#8850ee6edf9a388b1213678f3d3ee856"><span class="id" title="notation">)</span></a> <span class="id" title="var">F</span>%<span class="id" title="var">R</span>) : <span class="id" title="var">ring_scope</span>.<br/>
+<span class="id" title="keyword">Notation</span> <a name="24846b5795605f82696a43aa191874ea"><span class="id" title="notation">&quot;</span></a>\prod_ i F" :=<br/>
+&nbsp;&nbsp;(<a class="idref" href="mathcomp.ssreflect.bigop.html#a0ddbff8fbef0617dd5dab072904e591"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.ssreflect.bigop.html#a0ddbff8fbef0617dd5dab072904e591"><span class="id" title="notation">big</span></a><a class="idref" href="mathcomp.ssreflect.bigop.html#a0ddbff8fbef0617dd5dab072904e591"><span class="id" title="notation">[</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#d5d4e2467843f67554f1a8a22d125de9"><span class="id" title="notation">*%</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#d5d4e2467843f67554f1a8a22d125de9"><span class="id" title="notation">R</span></a><a class="idref" href="mathcomp.ssreflect.bigop.html#a0ddbff8fbef0617dd5dab072904e591"><span class="id" title="notation">/</span></a>1%<span class="id" title="var">R</span><a class="idref" href="mathcomp.ssreflect.bigop.html#a0ddbff8fbef0617dd5dab072904e591"><span class="id" title="notation">]</span></a><a class="idref" href="mathcomp.ssreflect.bigop.html#a0ddbff8fbef0617dd5dab072904e591"><span class="id" title="notation">_i</span></a> <span class="id" title="var">F</span>%<span class="id" title="var">R</span>) : <span class="id" title="var">ring_scope</span>.<br/>
+<span class="id" title="keyword">Notation</span> <a name="ecd6ffe05353cbf9784383118f5b8d82"><span class="id" title="notation">&quot;</span></a>\prod_ ( i : t | P ) F" :=<br/>
+&nbsp;&nbsp;(<a class="idref" href="mathcomp.ssreflect.bigop.html#ec673a52d55e56af63579baa68d352ee"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.ssreflect.bigop.html#ec673a52d55e56af63579baa68d352ee"><span class="id" title="notation">big</span></a><a class="idref" href="mathcomp.ssreflect.bigop.html#ec673a52d55e56af63579baa68d352ee"><span class="id" title="notation">[</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#d5d4e2467843f67554f1a8a22d125de9"><span class="id" title="notation">*%</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#d5d4e2467843f67554f1a8a22d125de9"><span class="id" title="notation">R</span></a><a class="idref" href="mathcomp.ssreflect.bigop.html#ec673a52d55e56af63579baa68d352ee"><span class="id" title="notation">/</span></a>1%<span class="id" title="var">R</span><a class="idref" href="mathcomp.ssreflect.bigop.html#ec673a52d55e56af63579baa68d352ee"><span class="id" title="notation">]</span></a><a class="idref" href="mathcomp.ssreflect.bigop.html#ec673a52d55e56af63579baa68d352ee"><span class="id" title="notation">_</span></a><a class="idref" href="mathcomp.ssreflect.bigop.html#ec673a52d55e56af63579baa68d352ee"><span class="id" title="notation">(</span></a><span class="id" title="var">i</span> <a class="idref" href="mathcomp.ssreflect.bigop.html#ec673a52d55e56af63579baa68d352ee"><span class="id" title="notation">:</span></a> <span class="id" title="var">t</span> <a class="idref" href="mathcomp.ssreflect.bigop.html#ec673a52d55e56af63579baa68d352ee"><span class="id" title="notation">|</span></a> <span class="id" title="var">P</span>%<span class="id" title="var">B</span><a class="idref" href="mathcomp.ssreflect.bigop.html#ec673a52d55e56af63579baa68d352ee"><span class="id" title="notation">)</span></a> <span class="id" title="var">F</span>%<span class="id" title="var">R</span>) (<span class="id" title="var">only</span> <span class="id" title="var">parsing</span>) : <span class="id" title="var">ring_scope</span>.<br/>
+<span class="id" title="keyword">Notation</span> <a name="d95d9e0e63ea130065d2c1c9a1502154"><span class="id" title="notation">&quot;</span></a>\prod_ ( i : t ) F" :=<br/>
+&nbsp;&nbsp;(<a class="idref" href="mathcomp.ssreflect.bigop.html#7c24ccda1da6510c0183e6d456463b39"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.ssreflect.bigop.html#7c24ccda1da6510c0183e6d456463b39"><span class="id" title="notation">big</span></a><a class="idref" href="mathcomp.ssreflect.bigop.html#7c24ccda1da6510c0183e6d456463b39"><span class="id" title="notation">[</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#d5d4e2467843f67554f1a8a22d125de9"><span class="id" title="notation">*%</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#d5d4e2467843f67554f1a8a22d125de9"><span class="id" title="notation">R</span></a><a class="idref" href="mathcomp.ssreflect.bigop.html#7c24ccda1da6510c0183e6d456463b39"><span class="id" title="notation">/</span></a>1%<span class="id" title="var">R</span><a class="idref" href="mathcomp.ssreflect.bigop.html#7c24ccda1da6510c0183e6d456463b39"><span class="id" title="notation">]</span></a><a class="idref" href="mathcomp.ssreflect.bigop.html#7c24ccda1da6510c0183e6d456463b39"><span class="id" title="notation">_</span></a><a class="idref" href="mathcomp.ssreflect.bigop.html#7c24ccda1da6510c0183e6d456463b39"><span class="id" title="notation">(</span></a><span class="id" title="var">i</span> <a class="idref" href="mathcomp.ssreflect.bigop.html#7c24ccda1da6510c0183e6d456463b39"><span class="id" title="notation">:</span></a> <span class="id" title="var">t</span><a class="idref" href="mathcomp.ssreflect.bigop.html#7c24ccda1da6510c0183e6d456463b39"><span class="id" title="notation">)</span></a> <span class="id" title="var">F</span>%<span class="id" title="var">R</span>) (<span class="id" title="var">only</span> <span class="id" title="var">parsing</span>) : <span class="id" title="var">ring_scope</span>.<br/>
+<span class="id" title="keyword">Notation</span> <a name="f2061c5b083fb574331c7bf65b44ceb4"><span class="id" title="notation">&quot;</span></a>\prod_ ( i &lt; n | P ) F" :=<br/>
+&nbsp;&nbsp;(<a class="idref" href="mathcomp.ssreflect.bigop.html#dc42c7ad0ea9096c0f795649807315df"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.ssreflect.bigop.html#dc42c7ad0ea9096c0f795649807315df"><span class="id" title="notation">big</span></a><a class="idref" href="mathcomp.ssreflect.bigop.html#dc42c7ad0ea9096c0f795649807315df"><span class="id" title="notation">[</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#d5d4e2467843f67554f1a8a22d125de9"><span class="id" title="notation">*%</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#d5d4e2467843f67554f1a8a22d125de9"><span class="id" title="notation">R</span></a><a class="idref" href="mathcomp.ssreflect.bigop.html#dc42c7ad0ea9096c0f795649807315df"><span class="id" title="notation">/</span></a>1%<span class="id" title="var">R</span><a class="idref" href="mathcomp.ssreflect.bigop.html#dc42c7ad0ea9096c0f795649807315df"><span class="id" title="notation">]</span></a><a class="idref" href="mathcomp.ssreflect.bigop.html#dc42c7ad0ea9096c0f795649807315df"><span class="id" title="notation">_</span></a><a class="idref" href="mathcomp.ssreflect.bigop.html#dc42c7ad0ea9096c0f795649807315df"><span class="id" title="notation">(</span></a><span class="id" title="var">i</span> <a class="idref" href="mathcomp.ssreflect.bigop.html#dc42c7ad0ea9096c0f795649807315df"><span class="id" title="notation">&lt;</span></a> <span class="id" title="var">n</span> <a class="idref" href="mathcomp.ssreflect.bigop.html#dc42c7ad0ea9096c0f795649807315df"><span class="id" title="notation">|</span></a> <span class="id" title="var">P</span>%<span class="id" title="var">B</span><a class="idref" href="mathcomp.ssreflect.bigop.html#dc42c7ad0ea9096c0f795649807315df"><span class="id" title="notation">)</span></a> <span class="id" title="var">F</span>%<span class="id" title="var">R</span>) : <span class="id" title="var">ring_scope</span>.<br/>
+<span class="id" title="keyword">Notation</span> <a name="77e01fd944628a6bc1f9215c13ba86b7"><span class="id" title="notation">&quot;</span></a>\prod_ ( i &lt; n ) F" :=<br/>
+&nbsp;&nbsp;(<a class="idref" href="mathcomp.ssreflect.bigop.html#567079cee6eb2eba482323c7e8d08df5"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.ssreflect.bigop.html#567079cee6eb2eba482323c7e8d08df5"><span class="id" title="notation">big</span></a><a class="idref" href="mathcomp.ssreflect.bigop.html#567079cee6eb2eba482323c7e8d08df5"><span class="id" title="notation">[</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#d5d4e2467843f67554f1a8a22d125de9"><span class="id" title="notation">*%</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#d5d4e2467843f67554f1a8a22d125de9"><span class="id" title="notation">R</span></a><a class="idref" href="mathcomp.ssreflect.bigop.html#567079cee6eb2eba482323c7e8d08df5"><span class="id" title="notation">/</span></a>1%<span class="id" title="var">R</span><a class="idref" href="mathcomp.ssreflect.bigop.html#567079cee6eb2eba482323c7e8d08df5"><span class="id" title="notation">]</span></a><a class="idref" href="mathcomp.ssreflect.bigop.html#567079cee6eb2eba482323c7e8d08df5"><span class="id" title="notation">_</span></a><a class="idref" href="mathcomp.ssreflect.bigop.html#567079cee6eb2eba482323c7e8d08df5"><span class="id" title="notation">(</span></a><span class="id" title="var">i</span> <a class="idref" href="mathcomp.ssreflect.bigop.html#567079cee6eb2eba482323c7e8d08df5"><span class="id" title="notation">&lt;</span></a> <span class="id" title="var">n</span><a class="idref" href="mathcomp.ssreflect.bigop.html#567079cee6eb2eba482323c7e8d08df5"><span class="id" title="notation">)</span></a> <span class="id" title="var">F</span>%<span class="id" title="var">R</span>) : <span class="id" title="var">ring_scope</span>.<br/>
+<span class="id" title="keyword">Notation</span> <a name="f9fc25f173bb82a186d31f0348920256"><span class="id" title="notation">&quot;</span></a>\prod_ ( i 'in' A | P ) F" :=<br/>
+&nbsp;&nbsp;(<a class="idref" href="mathcomp.ssreflect.bigop.html#a9a46078b76c2e36303d504b8fb5bbb3"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.ssreflect.bigop.html#a9a46078b76c2e36303d504b8fb5bbb3"><span class="id" title="notation">big</span></a><a class="idref" href="mathcomp.ssreflect.bigop.html#a9a46078b76c2e36303d504b8fb5bbb3"><span class="id" title="notation">[</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#d5d4e2467843f67554f1a8a22d125de9"><span class="id" title="notation">*%</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#d5d4e2467843f67554f1a8a22d125de9"><span class="id" title="notation">R</span></a><a class="idref" href="mathcomp.ssreflect.bigop.html#a9a46078b76c2e36303d504b8fb5bbb3"><span class="id" title="notation">/</span></a>1%<span class="id" title="var">R</span><a class="idref" href="mathcomp.ssreflect.bigop.html#a9a46078b76c2e36303d504b8fb5bbb3"><span class="id" title="notation">]</span></a><a class="idref" href="mathcomp.ssreflect.bigop.html#a9a46078b76c2e36303d504b8fb5bbb3"><span class="id" title="notation">_</span></a><a class="idref" href="mathcomp.ssreflect.bigop.html#a9a46078b76c2e36303d504b8fb5bbb3"><span class="id" title="notation">(</span></a><span class="id" title="var">i</span> <a class="idref" href="mathcomp.ssreflect.bigop.html#a9a46078b76c2e36303d504b8fb5bbb3"><span class="id" title="notation">in</span></a> <span class="id" title="var">A</span> <a class="idref" href="mathcomp.ssreflect.bigop.html#a9a46078b76c2e36303d504b8fb5bbb3"><span class="id" title="notation">|</span></a> <span class="id" title="var">P</span>%<span class="id" title="var">B</span><a class="idref" href="mathcomp.ssreflect.bigop.html#a9a46078b76c2e36303d504b8fb5bbb3"><span class="id" title="notation">)</span></a> <span class="id" title="var">F</span>%<span class="id" title="var">R</span>) : <span class="id" title="var">ring_scope</span>.<br/>
+<span class="id" title="keyword">Notation</span> <a name="50f6ed3c9dd83e0dda7460830646e9b1"><span class="id" title="notation">&quot;</span></a>\prod_ ( i 'in' A ) F" :=<br/>
+&nbsp;&nbsp;(<a class="idref" href="mathcomp.ssreflect.bigop.html#9b4515ceb280b6b5a2638c4e28ba3f31"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.ssreflect.bigop.html#9b4515ceb280b6b5a2638c4e28ba3f31"><span class="id" title="notation">big</span></a><a class="idref" href="mathcomp.ssreflect.bigop.html#9b4515ceb280b6b5a2638c4e28ba3f31"><span class="id" title="notation">[</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#d5d4e2467843f67554f1a8a22d125de9"><span class="id" title="notation">*%</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#d5d4e2467843f67554f1a8a22d125de9"><span class="id" title="notation">R</span></a><a class="idref" href="mathcomp.ssreflect.bigop.html#9b4515ceb280b6b5a2638c4e28ba3f31"><span class="id" title="notation">/</span></a>1%<span class="id" title="var">R</span><a class="idref" href="mathcomp.ssreflect.bigop.html#9b4515ceb280b6b5a2638c4e28ba3f31"><span class="id" title="notation">]</span></a><a class="idref" href="mathcomp.ssreflect.bigop.html#9b4515ceb280b6b5a2638c4e28ba3f31"><span class="id" title="notation">_</span></a><a class="idref" href="mathcomp.ssreflect.bigop.html#9b4515ceb280b6b5a2638c4e28ba3f31"><span class="id" title="notation">(</span></a><span class="id" title="var">i</span> <a class="idref" href="mathcomp.ssreflect.bigop.html#9b4515ceb280b6b5a2638c4e28ba3f31"><span class="id" title="notation">in</span></a> <span class="id" title="var">A</span><a class="idref" href="mathcomp.ssreflect.bigop.html#9b4515ceb280b6b5a2638c4e28ba3f31"><span class="id" title="notation">)</span></a> <span class="id" title="var">F</span>%<span class="id" title="var">R</span>) : <span class="id" title="var">ring_scope</span>.<br/>
+
+<br/>
+<span class="id" title="keyword">Canonical</span> <span class="id" title="var">add_monoid</span>.<br/>
+<span class="id" title="keyword">Canonical</span> <span class="id" title="var">add_comoid</span>.<br/>
+<span class="id" title="keyword">Canonical</span> <span class="id" title="var">mul_monoid</span>.<br/>
+<span class="id" title="keyword">Canonical</span> <span class="id" title="var">mul_comoid</span>.<br/>
+<span class="id" title="keyword">Canonical</span> <span class="id" title="var">muloid</span>.<br/>
+<span class="id" title="keyword">Canonical</span> <span class="id" title="var">addoid</span>.<br/>
+
+<br/>
+<span class="id" title="keyword">Canonical</span> <span class="id" title="var">locked_additive</span>.<br/>
+<span class="id" title="keyword">Canonical</span> <span class="id" title="var">locked_rmorphism</span>.<br/>
+<span class="id" title="keyword">Canonical</span> <span class="id" title="var">locked_linear</span>.<br/>
+<span class="id" title="keyword">Canonical</span> <span class="id" title="var">locked_lrmorphism</span>.<br/>
+<span class="id" title="keyword">Canonical</span> <span class="id" title="var">idfun_additive</span>.<br/>
+<span class="id" title="keyword">Canonical</span> <span class="id" title="var">idfun_rmorphism</span>.<br/>
+<span class="id" title="keyword">Canonical</span> <span class="id" title="var">idfun_linear</span>.<br/>
+<span class="id" title="keyword">Canonical</span> <span class="id" title="var">idfun_lrmorphism</span>.<br/>
+<span class="id" title="keyword">Canonical</span> <span class="id" title="var">comp_additive</span>.<br/>
+<span class="id" title="keyword">Canonical</span> <span class="id" title="var">comp_rmorphism</span>.<br/>
+<span class="id" title="keyword">Canonical</span> <span class="id" title="var">comp_linear</span>.<br/>
+<span class="id" title="keyword">Canonical</span> <span class="id" title="var">comp_lrmorphism</span>.<br/>
+<span class="id" title="keyword">Canonical</span> <span class="id" title="var">opp_additive</span>.<br/>
+<span class="id" title="keyword">Canonical</span> <span class="id" title="var">opp_linear</span>.<br/>
+<span class="id" title="keyword">Canonical</span> <span class="id" title="var">scale_additive</span>.<br/>
+<span class="id" title="keyword">Canonical</span> <span class="id" title="var">scale_linear</span>.<br/>
+<span class="id" title="keyword">Canonical</span> <span class="id" title="var">null_fun_additive</span>.<br/>
+<span class="id" title="keyword">Canonical</span> <span class="id" title="var">null_fun_linear</span>.<br/>
+<span class="id" title="keyword">Canonical</span> <span class="id" title="var">scale_fun_additive</span>.<br/>
+<span class="id" title="keyword">Canonical</span> <span class="id" title="var">scale_fun_linear</span>.<br/>
+<span class="id" title="keyword">Canonical</span> <span class="id" title="var">add_fun_additive</span>.<br/>
+<span class="id" title="keyword">Canonical</span> <span class="id" title="var">add_fun_linear</span>.<br/>
+<span class="id" title="keyword">Canonical</span> <span class="id" title="var">sub_fun_additive</span>.<br/>
+<span class="id" title="keyword">Canonical</span> <span class="id" title="var">sub_fun_linear</span>.<br/>
+<span class="id" title="keyword">Canonical</span> <span class="id" title="var">mull_fun_additive</span>.<br/>
+<span class="id" title="keyword">Canonical</span> <span class="id" title="var">mull_fun_linear</span>.<br/>
+<span class="id" title="keyword">Canonical</span> <span class="id" title="var">mulr_fun_additive</span>.<br/>
+<span class="id" title="keyword">Canonical</span> <span class="id" title="var">mulr_fun_linear</span>.<br/>
+<span class="id" title="keyword">Canonical</span> <span class="id" title="var">Frobenius_aut_additive</span>.<br/>
+<span class="id" title="keyword">Canonical</span> <span class="id" title="var">Frobenius_aut_rmorphism</span>.<br/>
+<span class="id" title="keyword">Canonical</span> <span class="id" title="var">in_alg_additive</span>.<br/>
+<span class="id" title="keyword">Canonical</span> <span class="id" title="var">in_alg_rmorphism</span>.<br/>
+
+<br/>
+<span class="id" title="keyword">Notation</span> <a name="abeaac58e2ece5987d9505e93275b38a"><span class="id" title="notation">&quot;</span></a>R ^c" := (<a class="idref" href="mathcomp.algebra.ssralg.html#converse"><span class="id" title="definition">converse</span></a> <span class="id" title="var">R</span>) (<span class="id" title="tactic">at</span> <span class="id" title="keyword">level</span> 2, <span class="id" title="var">format</span> "R ^c") : <span class="id" title="var">type_scope</span>.<br/>
+<span class="id" title="keyword">Canonical</span> <span class="id" title="var">converse_eqType</span>.<br/>
+<span class="id" title="keyword">Canonical</span> <span class="id" title="var">converse_choiceType</span>.<br/>
+<span class="id" title="keyword">Canonical</span> <span class="id" title="var">converse_zmodType</span>.<br/>
+<span class="id" title="keyword">Canonical</span> <span class="id" title="var">converse_ringType</span>.<br/>
+<span class="id" title="keyword">Canonical</span> <span class="id" title="var">converse_unitRingType</span>.<br/>
+
+<br/>
+<span class="id" title="keyword">Notation</span> <a name="c2b6ed6fbc6f0b41c6ad09005b7580b6"><span class="id" title="notation">&quot;</span></a>R ^o" := (<a class="idref" href="mathcomp.algebra.ssralg.html#regular"><span class="id" title="definition">regular</span></a> <span class="id" title="var">R</span>) (<span class="id" title="tactic">at</span> <span class="id" title="keyword">level</span> 2, <span class="id" title="var">format</span> "R ^o") : <span class="id" title="var">type_scope</span>.<br/>
+<span class="id" title="keyword">Canonical</span> <span class="id" title="var">regular_eqType</span>.<br/>
+<span class="id" title="keyword">Canonical</span> <span class="id" title="var">regular_choiceType</span>.<br/>
+<span class="id" title="keyword">Canonical</span> <span class="id" title="var">regular_zmodType</span>.<br/>
+<span class="id" title="keyword">Canonical</span> <span class="id" title="var">regular_ringType</span>.<br/>
+<span class="id" title="keyword">Canonical</span> <span class="id" title="var">regular_lmodType</span>.<br/>
+<span class="id" title="keyword">Canonical</span> <span class="id" title="var">regular_lalgType</span>.<br/>
+<span class="id" title="keyword">Canonical</span> <span class="id" title="var">regular_comRingType</span>.<br/>
+<span class="id" title="keyword">Canonical</span> <span class="id" title="var">regular_algType</span>.<br/>
+<span class="id" title="keyword">Canonical</span> <span class="id" title="var">regular_unitRingType</span>.<br/>
+<span class="id" title="keyword">Canonical</span> <span class="id" title="var">regular_comUnitRingType</span>.<br/>
+<span class="id" title="keyword">Canonical</span> <span class="id" title="var">regular_unitAlgType</span>.<br/>
+<span class="id" title="keyword">Canonical</span> <span class="id" title="var">regular_idomainType</span>.<br/>
+<span class="id" title="keyword">Canonical</span> <span class="id" title="var">regular_fieldType</span>.<br/>
+
+<br/>
+<span class="id" title="keyword">Canonical</span> <span class="id" title="var">unit_keyed</span>.<br/>
+<span class="id" title="keyword">Canonical</span> <span class="id" title="var">unit_opprPred</span>.<br/>
+<span class="id" title="keyword">Canonical</span> <span class="id" title="var">unit_mulrPred</span>.<br/>
+<span class="id" title="keyword">Canonical</span> <span class="id" title="var">unit_smulrPred</span>.<br/>
+<span class="id" title="keyword">Canonical</span> <span class="id" title="var">unit_divrPred</span>.<br/>
+<span class="id" title="keyword">Canonical</span> <span class="id" title="var">unit_sdivrPred</span>.<br/>
+
+<br/>
+
+<br/>
+<span class="id" title="keyword">Notation</span> <a name="17323b79d87a46c8afbe9d49f25575c2"><span class="id" title="notation">&quot;</span></a>''X_' i" := (<a class="idref" href="mathcomp.algebra.ssralg.html#Var"><span class="id" title="constructor">Var</span></a> <span class="id" title="var">_</span> <span class="id" title="var">i</span>) : <span class="id" title="var">term_scope</span>.<br/>
+<span class="id" title="keyword">Notation</span> <a name="195545709d5aae552b0abf942409ca94"><span class="id" title="notation">&quot;</span></a>n %:R" := (<a class="idref" href="mathcomp.algebra.ssralg.html#NatConst"><span class="id" title="constructor">NatConst</span></a> <span class="id" title="var">_</span> <span class="id" title="var">n</span>) : <span class="id" title="var">term_scope</span>.<br/>
+<span class="id" title="keyword">Notation</span> <a name="fd25c4ceaf666395b21eebacc1d7d8f5"><span class="id" title="notation">&quot;</span></a>0" := 0<a class="idref" href="mathcomp.algebra.ssralg.html#195545709d5aae552b0abf942409ca94"><span class="id" title="notation">%:</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#195545709d5aae552b0abf942409ca94"><span class="id" title="notation">R</span></a>%<span class="id" title="var">T</span> : <span class="id" title="var">term_scope</span>.<br/>
+<span class="id" title="keyword">Notation</span> <a name="69a4f6fa0f4c840df5f262a303e23e2a"><span class="id" title="notation">&quot;</span></a>1" := 1<a class="idref" href="mathcomp.algebra.ssralg.html#195545709d5aae552b0abf942409ca94"><span class="id" title="notation">%:</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#195545709d5aae552b0abf942409ca94"><span class="id" title="notation">R</span></a>%<span class="id" title="var">T</span> : <span class="id" title="var">term_scope</span>.<br/>
+<span class="id" title="keyword">Notation</span> <a name="1fdca15973cff7a8b815ed2990d73bc4"><span class="id" title="notation">&quot;</span></a>x %:T" := (<a class="idref" href="mathcomp.algebra.ssralg.html#Const"><span class="id" title="constructor">Const</span></a> <span class="id" title="var">x</span>) : <span class="id" title="var">term_scope</span>.<br/>
+<span class="id" title="keyword">Infix</span> <a name="07427e42f32066043366f5a0e6f91c69"><span class="id" title="notation">&quot;</span></a>+" := <a class="idref" href="mathcomp.algebra.ssralg.html#Add"><span class="id" title="constructor">Add</span></a> : <span class="id" title="var">term_scope</span>.<br/>
+<span class="id" title="keyword">Notation</span> <a name="74e776e67b9907da5a8bb8395abcbb3a"><span class="id" title="notation">&quot;</span></a>- t" := (<a class="idref" href="mathcomp.algebra.ssralg.html#Opp"><span class="id" title="constructor">Opp</span></a> <span class="id" title="var">t</span>) : <span class="id" title="var">term_scope</span>.<br/>
+<span class="id" title="keyword">Notation</span> <a name="4a62fcd6d8b92bd91e210969e6044405"><span class="id" title="notation">&quot;</span></a>t - u" := (<a class="idref" href="mathcomp.algebra.ssralg.html#Add"><span class="id" title="constructor">Add</span></a> <span class="id" title="var">t</span> (<a class="idref" href="mathcomp.algebra.ssralg.html#74e776e67b9907da5a8bb8395abcbb3a"><span class="id" title="notation">-</span></a> <span class="id" title="var">u</span>)) : <span class="id" title="var">term_scope</span>.<br/>
+<span class="id" title="keyword">Infix</span> <a name="9be2d223eee11d745162c85997d077aa"><span class="id" title="notation">&quot;</span></a>×" := <a class="idref" href="mathcomp.algebra.ssralg.html#Mul"><span class="id" title="constructor">Mul</span></a> : <span class="id" title="var">term_scope</span>.<br/>
+<span class="id" title="keyword">Infix</span> <a name="8e2e8a4eb864fa5c2791d432c56d15a6"><span class="id" title="notation">&quot;</span></a>*+" := <a class="idref" href="mathcomp.algebra.ssralg.html#NatMul"><span class="id" title="constructor">NatMul</span></a> : <span class="id" title="var">term_scope</span>.<br/>
+<span class="id" title="keyword">Notation</span> <a name="945cbc254830540ee68b2936209ea6c1"><span class="id" title="notation">&quot;</span></a>t ^-1" := (<a class="idref" href="mathcomp.algebra.ssralg.html#Inv"><span class="id" title="constructor">Inv</span></a> <span class="id" title="var">t</span>) : <span class="id" title="var">term_scope</span>.<br/>
+<span class="id" title="keyword">Notation</span> <a name="2bce51a4f3d8316b17c8ca1d95c657bb"><span class="id" title="notation">&quot;</span></a>t / u" := (<a class="idref" href="mathcomp.algebra.ssralg.html#Mul"><span class="id" title="constructor">Mul</span></a> <span class="id" title="var">t</span> <span class="id" title="var">u</span><a class="idref" href="mathcomp.algebra.ssralg.html#945cbc254830540ee68b2936209ea6c1"><span class="id" title="notation">^-1</span></a>) : <span class="id" title="var">term_scope</span>.<br/>
+<span class="id" title="keyword">Infix</span> <a name="3d77c0fa24e5cf0fab5a0c94d232f5c2"><span class="id" title="notation">&quot;</span></a>^+" := <a class="idref" href="mathcomp.algebra.ssralg.html#Exp"><span class="id" title="constructor">Exp</span></a> : <span class="id" title="var">term_scope</span>.<br/>
+<span class="id" title="keyword">Infix</span> <a name="9cd193463422c398e84dc63b7a4a91e1"><span class="id" title="notation">&quot;</span></a>==" := <a class="idref" href="mathcomp.algebra.ssralg.html#Equal"><span class="id" title="constructor">Equal</span></a> : <span class="id" title="var">term_scope</span>.<br/>
+<span class="id" title="keyword">Notation</span> <a name="e55bf22d80797140224ba2d3a71d012f"><span class="id" title="notation">&quot;</span></a>x != y" := (<a class="idref" href="mathcomp.algebra.ssralg.html#Not"><span class="id" title="constructor">GRing.Not</span></a> (<span class="id" title="var">x</span> <a class="idref" href="mathcomp.algebra.ssralg.html#9cd193463422c398e84dc63b7a4a91e1"><span class="id" title="notation">==</span></a> <span class="id" title="var">y</span>)) : <span class="id" title="var">term_scope</span>.<br/>
+<span class="id" title="keyword">Infix</span> <a name="34bfd1085795ea0dabf4707f6dcc9f24"><span class="id" title="notation">&quot;</span></a>∧" := <a class="idref" href="mathcomp.algebra.ssralg.html#And"><span class="id" title="constructor">And</span></a> : <span class="id" title="var">term_scope</span>.<br/>
+<span class="id" title="keyword">Infix</span> <a name="cedb2229ee03a356646d7d079363f569"><span class="id" title="notation">&quot;</span></a>∨" := <a class="idref" href="mathcomp.algebra.ssralg.html#Or"><span class="id" title="constructor">Or</span></a> : <span class="id" title="var">term_scope</span>.<br/>
+<span class="id" title="keyword">Infix</span> <a name="75d27ccd6bafab0712ff32ca70588f75"><span class="id" title="notation">&quot;</span></a>==&gt;" := <a class="idref" href="mathcomp.algebra.ssralg.html#Implies"><span class="id" title="constructor">Implies</span></a> : <span class="id" title="var">term_scope</span>.<br/>
+<span class="id" title="keyword">Notation</span> <a name="4fa42a7f6c286acb6f527202ebab0b57"><span class="id" title="notation">&quot;</span></a>~ f" := (<a class="idref" href="mathcomp.algebra.ssralg.html#Not"><span class="id" title="constructor">Not</span></a> <span class="id" title="var">f</span>) : <span class="id" title="var">term_scope</span>.<br/>
+<span class="id" title="keyword">Notation</span> <a name="fab74d9e9116665439f309d85c75cb19"><span class="id" title="notation">&quot;</span></a>''exists' ''X_' i , f" := (<a class="idref" href="mathcomp.algebra.ssralg.html#Exists"><span class="id" title="constructor">Exists</span></a> <span class="id" title="var">i</span> <span class="id" title="var">f</span>) : <span class="id" title="var">term_scope</span>.<br/>
+<span class="id" title="keyword">Notation</span> <a name="947870d152796aac71cef25a081c58e4"><span class="id" title="notation">&quot;</span></a>''forall' ''X_' i , f" := (<a class="idref" href="mathcomp.algebra.ssralg.html#Forall"><span class="id" title="constructor">Forall</span></a> <span class="id" title="var">i</span> <span class="id" title="var">f</span>) : <span class="id" title="var">term_scope</span>.<br/>
+
+<br/>
+</div>
+
+<div class="doc">
+ Lifting Structure from the codomain of finfuns.
+</div>
+<div class="code">
+<span class="id" title="keyword">Section</span> <a name="FinFunZmod"><span class="id" title="section">FinFunZmod</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Variable</span> (<a name="FinFunZmod.aT"><span class="id" title="variable">aT</span></a> : <a class="idref" href="mathcomp.ssreflect.fintype.html#Finite.Exports.finType"><span class="id" title="abbreviation">finType</span></a>) (<a name="FinFunZmod.rT"><span class="id" title="variable">rT</span></a> : <a class="idref" href="mathcomp.algebra.ssralg.html#zmodType"><span class="id" title="abbreviation">zmodType</span></a>).<br/>
+<span class="id" title="keyword">Implicit</span> <span class="id" title="keyword">Types</span> <span class="id" title="var">f</span> <span class="id" title="var">g</span> : <a class="idref" href="mathcomp.ssreflect.finfun.html#9f24a6f16bf73832c2d9aa4e2c16f692"><span class="id" title="notation">{</span></a><a class="idref" href="mathcomp.ssreflect.finfun.html#9f24a6f16bf73832c2d9aa4e2c16f692"><span class="id" title="notation">ffun</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#FinFunZmod.aT"><span class="id" title="variable">aT</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#FinFunZmod.rT"><span class="id" title="variable">rT</span></a><a class="idref" href="mathcomp.ssreflect.finfun.html#9f24a6f16bf73832c2d9aa4e2c16f692"><span class="id" title="notation">}</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Definition</span> <a name="ffun_zero"><span class="id" title="definition">ffun_zero</span></a> := <a class="idref" href="mathcomp.ssreflect.finfun.html#42aa76d2f66b49268bafac6d56a51249"><span class="id" title="notation">[</span></a><a class="idref" href="mathcomp.ssreflect.finfun.html#42aa76d2f66b49268bafac6d56a51249"><span class="id" title="notation">ffun</span></a> <span class="id" title="var">a</span> <a class="idref" href="mathcomp.ssreflect.finfun.html#42aa76d2f66b49268bafac6d56a51249"><span class="id" title="notation">:</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#FinFunZmod.aT"><span class="id" title="variable">aT</span></a> <a class="idref" href="mathcomp.ssreflect.finfun.html#42aa76d2f66b49268bafac6d56a51249"><span class="id" title="notation">⇒</span></a> <a class="idref" href="mathcomp.ssreflect.finfun.html#42aa76d2f66b49268bafac6d56a51249"><span class="id" title="notation">(</span></a>0 <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssreflect.html#4509b22bf26e3d6d771897e22bd8bc8f"><span class="id" title="notation">:</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#FinFunZmod.rT"><span class="id" title="variable">rT</span></a><a class="idref" href="mathcomp.ssreflect.finfun.html#42aa76d2f66b49268bafac6d56a51249"><span class="id" title="notation">)]</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="ffun_opp"><span class="id" title="definition">ffun_opp</span></a> <span class="id" title="var">f</span> := <a class="idref" href="mathcomp.ssreflect.finfun.html#71fbd02a8ba525d8dcd88d59800c905e"><span class="id" title="notation">[</span></a><a class="idref" href="mathcomp.ssreflect.finfun.html#71fbd02a8ba525d8dcd88d59800c905e"><span class="id" title="notation">ffun</span></a> <span class="id" title="var">a</span> <a class="idref" href="mathcomp.ssreflect.finfun.html#71fbd02a8ba525d8dcd88d59800c905e"><span class="id" title="notation">⇒</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#941c6d086004545bd62614d0213e75e5"><span class="id" title="notation">-</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#f"><span class="id" title="variable">f</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#a"><span class="id" title="variable">a</span></a><a class="idref" href="mathcomp.ssreflect.finfun.html#71fbd02a8ba525d8dcd88d59800c905e"><span class="id" title="notation">]</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="ffun_add"><span class="id" title="definition">ffun_add</span></a> <span class="id" title="var">f</span> <span class="id" title="var">g</span> := <a class="idref" href="mathcomp.ssreflect.finfun.html#71fbd02a8ba525d8dcd88d59800c905e"><span class="id" title="notation">[</span></a><a class="idref" href="mathcomp.ssreflect.finfun.html#71fbd02a8ba525d8dcd88d59800c905e"><span class="id" title="notation">ffun</span></a> <span class="id" title="var">a</span> <a class="idref" href="mathcomp.ssreflect.finfun.html#71fbd02a8ba525d8dcd88d59800c905e"><span class="id" title="notation">⇒</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#f"><span class="id" title="variable">f</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#a"><span class="id" title="variable">a</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#ae4d81913e6239182a9ac7467ffde8cd"><span class="id" title="notation">+</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#g"><span class="id" title="variable">g</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#a"><span class="id" title="variable">a</span></a><a class="idref" href="mathcomp.ssreflect.finfun.html#71fbd02a8ba525d8dcd88d59800c905e"><span class="id" title="notation">]</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Fact</span> <a name="ffun_addA"><span class="id" title="lemma">ffun_addA</span></a> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#associative"><span class="id" title="definition">associative</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#ffun_add"><span class="id" title="definition">ffun_add</span></a>.<br/>
+ <span class="id" title="keyword">Fact</span> <a name="ffun_addC"><span class="id" title="lemma">ffun_addC</span></a> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#commutative"><span class="id" title="definition">commutative</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#ffun_add"><span class="id" title="definition">ffun_add</span></a>.<br/>
+ <span class="id" title="keyword">Fact</span> <a name="ffun_add0"><span class="id" title="lemma">ffun_add0</span></a> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#left_id"><span class="id" title="definition">left_id</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#ffun_zero"><span class="id" title="definition">ffun_zero</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#ffun_add"><span class="id" title="definition">ffun_add</span></a>.<br/>
+ <span class="id" title="keyword">Fact</span> <a name="ffun_addN"><span class="id" title="lemma">ffun_addN</span></a> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#left_inverse"><span class="id" title="definition">left_inverse</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#ffun_zero"><span class="id" title="definition">ffun_zero</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#ffun_opp"><span class="id" title="definition">ffun_opp</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#ffun_add"><span class="id" title="definition">ffun_add</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Definition</span> <a name="ffun_zmodMixin"><span class="id" title="definition">ffun_zmodMixin</span></a> :=<br/>
+&nbsp;&nbsp;<a class="idref" href="mathcomp.algebra.ssralg.html#Mixin"><span class="id" title="constructor">Zmodule.Mixin</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#ffun_addA"><span class="id" title="lemma">ffun_addA</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#ffun_addC"><span class="id" title="lemma">ffun_addC</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#ffun_add0"><span class="id" title="lemma">ffun_add0</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#ffun_addN"><span class="id" title="lemma">ffun_addN</span></a>.<br/>
+<span class="id" title="keyword">Canonical</span> <span class="id" title="var">ffun_zmodType</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.algebra.ssralg.html#ZmodType"><span class="id" title="abbreviation">ZmodType</span></a> <span class="id" title="var">_</span> <a class="idref" href="mathcomp.algebra.ssralg.html#ffun_zmodMixin"><span class="id" title="definition">ffun_zmodMixin</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Section</span> <a name="FinFunZmod.Sum"><span class="id" title="section">Sum</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Variables</span> (<a name="FinFunZmod.Sum.I"><span class="id" title="variable">I</span></a> : <span class="id" title="keyword">Type</span>) (<a name="FinFunZmod.Sum.r"><span class="id" title="variable">r</span></a> : <a class="idref" href="mathcomp.ssreflect.seq.html#seq"><span class="id" title="abbreviation">seq</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#I"><span class="id" title="variable">I</span></a>) (<a name="FinFunZmod.Sum.P"><span class="id" title="variable">P</span></a> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#pred"><span class="id" title="definition">pred</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#I"><span class="id" title="variable">I</span></a>) (<a name="FinFunZmod.Sum.F"><span class="id" title="variable">F</span></a> : <a class="idref" href="mathcomp.algebra.ssralg.html#I"><span class="id" title="variable">I</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.ssreflect.finfun.html#9f24a6f16bf73832c2d9aa4e2c16f692"><span class="id" title="notation">{</span></a><a class="idref" href="mathcomp.ssreflect.finfun.html#9f24a6f16bf73832c2d9aa4e2c16f692"><span class="id" title="notation">ffun</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#FinFunZmod.aT"><span class="id" title="variable">aT</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#FinFunZmod.rT"><span class="id" title="variable">rT</span></a><a class="idref" href="mathcomp.ssreflect.finfun.html#9f24a6f16bf73832c2d9aa4e2c16f692"><span class="id" title="notation">}</span></a>).<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="sum_ffunE"><span class="id" title="lemma">sum_ffunE</span></a> <span class="id" title="var">x</span> : (<a class="idref" href="mathcomp.algebra.ssralg.html#cbc2f2ab11c1c376b5c4511d28b14d74"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#cbc2f2ab11c1c376b5c4511d28b14d74"><span class="id" title="notation">sum_</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#cbc2f2ab11c1c376b5c4511d28b14d74"><span class="id" title="notation">(</span></a><span class="id" title="var">i</span> <a class="idref" href="mathcomp.algebra.ssralg.html#cbc2f2ab11c1c376b5c4511d28b14d74"><span class="id" title="notation">&lt;-</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#FinFunZmod.Sum.r"><span class="id" title="variable">r</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#cbc2f2ab11c1c376b5c4511d28b14d74"><span class="id" title="notation">|</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#FinFunZmod.Sum.P"><span class="id" title="variable">P</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#i"><span class="id" title="variable">i</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#cbc2f2ab11c1c376b5c4511d28b14d74"><span class="id" title="notation">)</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#FinFunZmod.Sum.F"><span class="id" title="variable">F</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#i"><span class="id" title="variable">i</span></a>) <a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#cbc2f2ab11c1c376b5c4511d28b14d74"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#cbc2f2ab11c1c376b5c4511d28b14d74"><span class="id" title="notation">sum_</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#cbc2f2ab11c1c376b5c4511d28b14d74"><span class="id" title="notation">(</span></a><span class="id" title="var">i</span> <a class="idref" href="mathcomp.algebra.ssralg.html#cbc2f2ab11c1c376b5c4511d28b14d74"><span class="id" title="notation">&lt;-</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#FinFunZmod.Sum.r"><span class="id" title="variable">r</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#cbc2f2ab11c1c376b5c4511d28b14d74"><span class="id" title="notation">|</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#FinFunZmod.Sum.P"><span class="id" title="variable">P</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#i"><span class="id" title="variable">i</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#cbc2f2ab11c1c376b5c4511d28b14d74"><span class="id" title="notation">)</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#FinFunZmod.Sum.F"><span class="id" title="variable">F</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#i"><span class="id" title="variable">i</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="sum_ffun"><span class="id" title="lemma">sum_ffun</span></a> :<br/>
+&nbsp;&nbsp;<a class="idref" href="mathcomp.algebra.ssralg.html#cbc2f2ab11c1c376b5c4511d28b14d74"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#cbc2f2ab11c1c376b5c4511d28b14d74"><span class="id" title="notation">sum_</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#cbc2f2ab11c1c376b5c4511d28b14d74"><span class="id" title="notation">(</span></a><span class="id" title="var">i</span> <a class="idref" href="mathcomp.algebra.ssralg.html#cbc2f2ab11c1c376b5c4511d28b14d74"><span class="id" title="notation">&lt;-</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#FinFunZmod.Sum.r"><span class="id" title="variable">r</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#cbc2f2ab11c1c376b5c4511d28b14d74"><span class="id" title="notation">|</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#FinFunZmod.Sum.P"><span class="id" title="variable">P</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#i"><span class="id" title="variable">i</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#cbc2f2ab11c1c376b5c4511d28b14d74"><span class="id" title="notation">)</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#FinFunZmod.Sum.F"><span class="id" title="variable">F</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#i"><span class="id" title="variable">i</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.ssreflect.finfun.html#71fbd02a8ba525d8dcd88d59800c905e"><span class="id" title="notation">[</span></a><a class="idref" href="mathcomp.ssreflect.finfun.html#71fbd02a8ba525d8dcd88d59800c905e"><span class="id" title="notation">ffun</span></a> <span class="id" title="var">x</span> <a class="idref" href="mathcomp.ssreflect.finfun.html#71fbd02a8ba525d8dcd88d59800c905e"><span class="id" title="notation">⇒</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#cbc2f2ab11c1c376b5c4511d28b14d74"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#cbc2f2ab11c1c376b5c4511d28b14d74"><span class="id" title="notation">sum_</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#cbc2f2ab11c1c376b5c4511d28b14d74"><span class="id" title="notation">(</span></a><span class="id" title="var">i</span> <a class="idref" href="mathcomp.algebra.ssralg.html#cbc2f2ab11c1c376b5c4511d28b14d74"><span class="id" title="notation">&lt;-</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#FinFunZmod.Sum.r"><span class="id" title="variable">r</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#cbc2f2ab11c1c376b5c4511d28b14d74"><span class="id" title="notation">|</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#FinFunZmod.Sum.P"><span class="id" title="variable">P</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#i"><span class="id" title="variable">i</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#cbc2f2ab11c1c376b5c4511d28b14d74"><span class="id" title="notation">)</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#FinFunZmod.Sum.F"><span class="id" title="variable">F</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#i"><span class="id" title="variable">i</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a><a class="idref" href="mathcomp.ssreflect.finfun.html#71fbd02a8ba525d8dcd88d59800c905e"><span class="id" title="notation">]</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">End</span> <a class="idref" href="mathcomp.algebra.ssralg.html#FinFunZmod.Sum"><span class="id" title="section">Sum</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="ffunMnE"><span class="id" title="lemma">ffunMnE</span></a> <span class="id" title="var">f</span> <span class="id" title="var">n</span> <span class="id" title="var">x</span> : (<a class="idref" href="mathcomp.algebra.ssralg.html#f"><span class="id" title="variable">f</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#891e51846c7d1d63a9cb5458374cf308"><span class="id" title="notation">*+</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#n"><span class="id" title="variable">n</span></a>) <a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#f"><span class="id" title="variable">f</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#891e51846c7d1d63a9cb5458374cf308"><span class="id" title="notation">*+</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#n"><span class="id" title="variable">n</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">End</span> <a class="idref" href="mathcomp.algebra.ssralg.html#FinFunZmod"><span class="id" title="section">FinFunZmod</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Section</span> <a name="FinFunRing"><span class="id" title="section">FinFunRing</span></a>.<br/>
+
+<br/>
+</div>
+
+<div class="doc">
+ As rings require 1 != 0 in order to lift a ring structure over finfuns
+ we need evidence that the domain is non-empty.
+</div>
+<div class="code">
+
+<br/>
+<span class="id" title="keyword">Variable</span> (<a name="FinFunRing.aT"><span class="id" title="variable">aT</span></a> : <a class="idref" href="mathcomp.ssreflect.fintype.html#Finite.Exports.finType"><span class="id" title="abbreviation">finType</span></a>) (<a name="FinFunRing.R"><span class="id" title="variable">R</span></a> : <a class="idref" href="mathcomp.algebra.ssralg.html#ringType"><span class="id" title="abbreviation">ringType</span></a>) (<a name="FinFunRing.a"><span class="id" title="variable">a</span></a> : <a class="idref" href="mathcomp.algebra.ssralg.html#aT"><span class="id" title="variable">aT</span></a>).<br/>
+
+<br/>
+<span class="id" title="keyword">Definition</span> <a name="ffun_one"><span class="id" title="definition">ffun_one</span></a> : <a class="idref" href="mathcomp.ssreflect.finfun.html#9f24a6f16bf73832c2d9aa4e2c16f692"><span class="id" title="notation">{</span></a><a class="idref" href="mathcomp.ssreflect.finfun.html#9f24a6f16bf73832c2d9aa4e2c16f692"><span class="id" title="notation">ffun</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#FinFunRing.aT"><span class="id" title="variable">aT</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#FinFunRing.R"><span class="id" title="variable">R</span></a><a class="idref" href="mathcomp.ssreflect.finfun.html#9f24a6f16bf73832c2d9aa4e2c16f692"><span class="id" title="notation">}</span></a> := <a class="idref" href="mathcomp.ssreflect.finfun.html#ce31ffdcdad2ff7a7492eb6a19fd59e9"><span class="id" title="notation">[</span></a><a class="idref" href="mathcomp.ssreflect.finfun.html#ce31ffdcdad2ff7a7492eb6a19fd59e9"><span class="id" title="notation">ffun</span></a> <a class="idref" href="mathcomp.ssreflect.finfun.html#ce31ffdcdad2ff7a7492eb6a19fd59e9"><span class="id" title="notation">⇒</span></a> 1<a class="idref" href="mathcomp.ssreflect.finfun.html#ce31ffdcdad2ff7a7492eb6a19fd59e9"><span class="id" title="notation">]</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="ffun_mul"><span class="id" title="definition">ffun_mul</span></a> (<span class="id" title="var">f</span> <span class="id" title="var">g</span> : <a class="idref" href="mathcomp.ssreflect.finfun.html#9f24a6f16bf73832c2d9aa4e2c16f692"><span class="id" title="notation">{</span></a><a class="idref" href="mathcomp.ssreflect.finfun.html#9f24a6f16bf73832c2d9aa4e2c16f692"><span class="id" title="notation">ffun</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#FinFunRing.aT"><span class="id" title="variable">aT</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#FinFunRing.R"><span class="id" title="variable">R</span></a><a class="idref" href="mathcomp.ssreflect.finfun.html#9f24a6f16bf73832c2d9aa4e2c16f692"><span class="id" title="notation">}</span></a>) := <a class="idref" href="mathcomp.ssreflect.finfun.html#71fbd02a8ba525d8dcd88d59800c905e"><span class="id" title="notation">[</span></a><a class="idref" href="mathcomp.ssreflect.finfun.html#71fbd02a8ba525d8dcd88d59800c905e"><span class="id" title="notation">ffun</span></a> <span class="id" title="var">x</span> <a class="idref" href="mathcomp.ssreflect.finfun.html#71fbd02a8ba525d8dcd88d59800c905e"><span class="id" title="notation">⇒</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#f"><span class="id" title="variable">f</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#22058a36a53dac65c94ca403bc62650a"><span class="id" title="notation">×</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#g"><span class="id" title="variable">g</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a><a class="idref" href="mathcomp.ssreflect.finfun.html#71fbd02a8ba525d8dcd88d59800c905e"><span class="id" title="notation">]</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Fact</span> <a name="ffun_mulA"><span class="id" title="lemma">ffun_mulA</span></a> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#associative"><span class="id" title="definition">associative</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#ffun_mul"><span class="id" title="definition">ffun_mul</span></a>.<br/>
+ <span class="id" title="keyword">Fact</span> <a name="ffun_mul_1l"><span class="id" title="lemma">ffun_mul_1l</span></a> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#left_id"><span class="id" title="definition">left_id</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#ffun_one"><span class="id" title="definition">ffun_one</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#ffun_mul"><span class="id" title="definition">ffun_mul</span></a>.<br/>
+ <span class="id" title="keyword">Fact</span> <a name="ffun_mul_1r"><span class="id" title="lemma">ffun_mul_1r</span></a> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#right_id"><span class="id" title="definition">right_id</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#ffun_one"><span class="id" title="definition">ffun_one</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#ffun_mul"><span class="id" title="definition">ffun_mul</span></a>.<br/>
+ <span class="id" title="keyword">Fact</span> <a name="ffun_mul_addl"><span class="id" title="lemma">ffun_mul_addl</span></a> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#left_distributive"><span class="id" title="definition">left_distributive</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#ffun_mul"><span class="id" title="definition">ffun_mul</span></a> (@<a class="idref" href="mathcomp.algebra.ssralg.html#ffun_add"><span class="id" title="definition">ffun_add</span></a> <span class="id" title="var">_</span> <span class="id" title="var">_</span>).<br/>
+ <span class="id" title="keyword">Fact</span> <a name="ffun_mul_addr"><span class="id" title="lemma">ffun_mul_addr</span></a> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#right_distributive"><span class="id" title="definition">right_distributive</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#ffun_mul"><span class="id" title="definition">ffun_mul</span></a> (@<a class="idref" href="mathcomp.algebra.ssralg.html#ffun_add"><span class="id" title="definition">ffun_add</span></a> <span class="id" title="var">_</span> <span class="id" title="var">_</span>).<br/>
+ <span class="id" title="keyword">Fact</span> <a name="ffun1_nonzero"><span class="id" title="lemma">ffun1_nonzero</span></a> : <a class="idref" href="mathcomp.algebra.ssralg.html#ffun_one"><span class="id" title="definition">ffun_one</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#b1eeadc2feabc7422252baa895418c7b"><span class="id" title="notation">!=</span></a> 0.<br/>
+
+<br/>
+<span class="id" title="keyword">Definition</span> <a name="ffun_ringMixin"><span class="id" title="definition">ffun_ringMixin</span></a> :=<br/>
+&nbsp;&nbsp;<a class="idref" href="mathcomp.algebra.ssralg.html#RingMixin"><span class="id" title="abbreviation">RingMixin</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#ffun_mulA"><span class="id" title="lemma">ffun_mulA</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#ffun_mul_1l"><span class="id" title="lemma">ffun_mul_1l</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#ffun_mul_1r"><span class="id" title="lemma">ffun_mul_1r</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#ffun_mul_addl"><span class="id" title="lemma">ffun_mul_addl</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#ffun_mul_addr"><span class="id" title="lemma">ffun_mul_addr</span></a><br/>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a class="idref" href="mathcomp.algebra.ssralg.html#ffun1_nonzero"><span class="id" title="lemma">ffun1_nonzero</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="ffun_ringType"><span class="id" title="definition">ffun_ringType</span></a> :=<br/>
+&nbsp;&nbsp;<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.algebra.ssralg.html#RingType"><span class="id" title="abbreviation">RingType</span></a> <a class="idref" href="mathcomp.ssreflect.finfun.html#9f24a6f16bf73832c2d9aa4e2c16f692"><span class="id" title="notation">{</span></a><a class="idref" href="mathcomp.ssreflect.finfun.html#9f24a6f16bf73832c2d9aa4e2c16f692"><span class="id" title="notation">ffun</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#FinFunRing.aT"><span class="id" title="variable">aT</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#FinFunRing.R"><span class="id" title="variable">R</span></a><a class="idref" href="mathcomp.ssreflect.finfun.html#9f24a6f16bf73832c2d9aa4e2c16f692"><span class="id" title="notation">}</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#ffun_ringMixin"><span class="id" title="definition">ffun_ringMixin</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">End</span> <a class="idref" href="mathcomp.algebra.ssralg.html#FinFunRing"><span class="id" title="section">FinFunRing</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Section</span> <a name="FinFunComRing"><span class="id" title="section">FinFunComRing</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Variable</span> (<a name="FinFunComRing.aT"><span class="id" title="variable">aT</span></a> : <a class="idref" href="mathcomp.ssreflect.fintype.html#Finite.Exports.finType"><span class="id" title="abbreviation">finType</span></a>) (<a name="FinFunComRing.R"><span class="id" title="variable">R</span></a> : <a class="idref" href="mathcomp.algebra.ssralg.html#comRingType"><span class="id" title="abbreviation">comRingType</span></a>) (<a name="FinFunComRing.a"><span class="id" title="variable">a</span></a> : <a class="idref" href="mathcomp.algebra.ssralg.html#aT"><span class="id" title="variable">aT</span></a>).<br/>
+
+<br/>
+<span class="id" title="keyword">Fact</span> <a name="ffun_mulC"><span class="id" title="lemma">ffun_mulC</span></a> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#commutative"><span class="id" title="definition">commutative</span></a> (@<a class="idref" href="mathcomp.algebra.ssralg.html#ffun_mul"><span class="id" title="definition">ffun_mul</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#FinFunComRing.aT"><span class="id" title="variable">aT</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#FinFunComRing.R"><span class="id" title="variable">R</span></a>).<br/>
+
+<br/>
+<span class="id" title="keyword">Definition</span> <a name="ffun_comRingType"><span class="id" title="definition">ffun_comRingType</span></a> :=<br/>
+&nbsp;&nbsp;<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.algebra.ssralg.html#ComRingType"><span class="id" title="abbreviation">ComRingType</span></a> (<a class="idref" href="mathcomp.algebra.ssralg.html#ffun_ringType"><span class="id" title="definition">ffun_ringType</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#FinFunComRing.R"><span class="id" title="variable">R</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#FinFunComRing.a"><span class="id" title="variable">a</span></a>) <a class="idref" href="mathcomp.algebra.ssralg.html#ffun_mulC"><span class="id" title="lemma">ffun_mulC</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">End</span> <a class="idref" href="mathcomp.algebra.ssralg.html#FinFunComRing"><span class="id" title="section">FinFunComRing</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Section</span> <a name="FinFunLmod"><span class="id" title="section">FinFunLmod</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Variable</span> (<a name="FinFunLmod.R"><span class="id" title="variable">R</span></a> : <a class="idref" href="mathcomp.algebra.ssralg.html#ringType"><span class="id" title="abbreviation">ringType</span></a>) (<a name="FinFunLmod.aT"><span class="id" title="variable">aT</span></a> : <a class="idref" href="mathcomp.ssreflect.fintype.html#Finite.Exports.finType"><span class="id" title="abbreviation">finType</span></a>) (<a name="FinFunLmod.rT"><span class="id" title="variable">rT</span></a> : <a class="idref" href="mathcomp.algebra.ssralg.html#lmodType"><span class="id" title="abbreviation">lmodType</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#R"><span class="id" title="variable">R</span></a>).<br/>
+
+<br/>
+<span class="id" title="keyword">Implicit</span> <span class="id" title="keyword">Types</span> <span class="id" title="var">f</span> <span class="id" title="var">g</span> : <a class="idref" href="mathcomp.ssreflect.finfun.html#9f24a6f16bf73832c2d9aa4e2c16f692"><span class="id" title="notation">{</span></a><a class="idref" href="mathcomp.ssreflect.finfun.html#9f24a6f16bf73832c2d9aa4e2c16f692"><span class="id" title="notation">ffun</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#FinFunLmod.aT"><span class="id" title="variable">aT</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#FinFunLmod.rT"><span class="id" title="variable">rT</span></a><a class="idref" href="mathcomp.ssreflect.finfun.html#9f24a6f16bf73832c2d9aa4e2c16f692"><span class="id" title="notation">}</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Definition</span> <a name="ffun_scale"><span class="id" title="definition">ffun_scale</span></a> <span class="id" title="var">k</span> <span class="id" title="var">f</span> := <a class="idref" href="mathcomp.ssreflect.finfun.html#71fbd02a8ba525d8dcd88d59800c905e"><span class="id" title="notation">[</span></a><a class="idref" href="mathcomp.ssreflect.finfun.html#71fbd02a8ba525d8dcd88d59800c905e"><span class="id" title="notation">ffun</span></a> <span class="id" title="var">a</span> <a class="idref" href="mathcomp.ssreflect.finfun.html#71fbd02a8ba525d8dcd88d59800c905e"><span class="id" title="notation">⇒</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#k"><span class="id" title="variable">k</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#81f8078534dcbb7e13a32d292f766525"><span class="id" title="notation">*:</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#f"><span class="id" title="variable">f</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#a"><span class="id" title="variable">a</span></a><a class="idref" href="mathcomp.ssreflect.finfun.html#71fbd02a8ba525d8dcd88d59800c905e"><span class="id" title="notation">]</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Fact</span> <a name="ffun_scaleA"><span class="id" title="lemma">ffun_scaleA</span></a> <span class="id" title="var">k1</span> <span class="id" title="var">k2</span> <span class="id" title="var">f</span> : <br/>
+&nbsp;&nbsp;<a class="idref" href="mathcomp.algebra.ssralg.html#ffun_scale"><span class="id" title="definition">ffun_scale</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#k1"><span class="id" title="variable">k1</span></a> (<a class="idref" href="mathcomp.algebra.ssralg.html#ffun_scale"><span class="id" title="definition">ffun_scale</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#k2"><span class="id" title="variable">k2</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#f"><span class="id" title="variable">f</span></a>) <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#ffun_scale"><span class="id" title="definition">ffun_scale</span></a> (<a class="idref" href="mathcomp.algebra.ssralg.html#k1"><span class="id" title="variable">k1</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#22058a36a53dac65c94ca403bc62650a"><span class="id" title="notation">×</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#k2"><span class="id" title="variable">k2</span></a>) <a class="idref" href="mathcomp.algebra.ssralg.html#f"><span class="id" title="variable">f</span></a>.<br/>
+ <span class="id" title="keyword">Fact</span> <a name="ffun_scale1"><span class="id" title="lemma">ffun_scale1</span></a> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#left_id"><span class="id" title="definition">left_id</span></a> 1 <a class="idref" href="mathcomp.algebra.ssralg.html#ffun_scale"><span class="id" title="definition">ffun_scale</span></a>.<br/>
+ <span class="id" title="keyword">Fact</span> <a name="ffun_scale_addr"><span class="id" title="lemma">ffun_scale_addr</span></a> <span class="id" title="var">k</span> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#3014e73af2a90fd800d8681479d76336"><span class="id" title="notation">{</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#3014e73af2a90fd800d8681479d76336"><span class="id" title="notation">morph</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#3014e73af2a90fd800d8681479d76336"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#ffun_scale"><span class="id" title="definition">ffun_scale</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#k"><span class="id" title="variable">k</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#3014e73af2a90fd800d8681479d76336"><span class="id" title="notation">)</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#3014e73af2a90fd800d8681479d76336"><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/8.8.0/stdlib//Coq.ssr.ssrfun.html#3014e73af2a90fd800d8681479d76336"><span class="id" title="notation">/</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#ae4d81913e6239182a9ac7467ffde8cd"><span class="id" title="notation">+</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#y"><span class="id" title="variable">y</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#3014e73af2a90fd800d8681479d76336"><span class="id" title="notation">}</span></a>.<br/>
+ <span class="id" title="keyword">Fact</span> <a name="ffun_scale_addl"><span class="id" title="lemma">ffun_scale_addl</span></a> <span class="id" title="var">u</span> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#3014e73af2a90fd800d8681479d76336"><span class="id" title="notation">{</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#3014e73af2a90fd800d8681479d76336"><span class="id" title="notation">morph</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#8f28bbd804547edd8de802d63ef85617"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#ffun_scale"><span class="id" title="definition">ffun_scale</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#8f28bbd804547edd8de802d63ef85617"><span class="id" title="notation">)^~</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#u"><span class="id" title="variable">u</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#3014e73af2a90fd800d8681479d76336"><span class="id" title="notation">:</span></a> <span class="id" title="var">k1</span> <span class="id" title="var">k2</span> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#3014e73af2a90fd800d8681479d76336"><span class="id" title="notation">/</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#k1"><span class="id" title="variable">k1</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#ae4d81913e6239182a9ac7467ffde8cd"><span class="id" title="notation">+</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#k2"><span class="id" title="variable">k2</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#3014e73af2a90fd800d8681479d76336"><span class="id" title="notation">}</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Definition</span> <a name="ffun_lmodMixin"><span class="id" title="definition">ffun_lmodMixin</span></a> := <br/>
+&nbsp;&nbsp;<a class="idref" href="mathcomp.algebra.ssralg.html#LmodMixin"><span class="id" title="abbreviation">LmodMixin</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#ffun_scaleA"><span class="id" title="lemma">ffun_scaleA</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#ffun_scale1"><span class="id" title="lemma">ffun_scale1</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#ffun_scale_addr"><span class="id" title="lemma">ffun_scale_addr</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#ffun_scale_addl"><span class="id" title="lemma">ffun_scale_addl</span></a>.<br/>
+<span class="id" title="keyword">Canonical</span> <span class="id" title="var">ffun_lmodType</span> :=<br/>
+&nbsp;&nbsp;<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.algebra.ssralg.html#LmodType"><span class="id" title="abbreviation">LmodType</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#FinFunLmod.R"><span class="id" title="variable">R</span></a> <a class="idref" href="mathcomp.ssreflect.finfun.html#9f24a6f16bf73832c2d9aa4e2c16f692"><span class="id" title="notation">{</span></a><a class="idref" href="mathcomp.ssreflect.finfun.html#9f24a6f16bf73832c2d9aa4e2c16f692"><span class="id" title="notation">ffun</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#FinFunLmod.aT"><span class="id" title="variable">aT</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#FinFunLmod.rT"><span class="id" title="variable">rT</span></a><a class="idref" href="mathcomp.ssreflect.finfun.html#9f24a6f16bf73832c2d9aa4e2c16f692"><span class="id" title="notation">}</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#ffun_lmodMixin"><span class="id" title="definition">ffun_lmodMixin</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">End</span> <a class="idref" href="mathcomp.algebra.ssralg.html#FinFunLmod"><span class="id" title="section">FinFunLmod</span></a>.<br/>
+
+<br/>
+</div>
+
+<div class="doc">
+ External direct product.
+</div>
+<div class="code">
+<span class="id" title="keyword">Section</span> <a name="PairZmod"><span class="id" title="section">PairZmod</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Variables</span> <a name="PairZmod.M1"><span class="id" title="variable">M1</span></a> <a name="PairZmod.M2"><span class="id" title="variable">M2</span></a> : <a class="idref" href="mathcomp.algebra.ssralg.html#zmodType"><span class="id" title="abbreviation">zmodType</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Definition</span> <a name="opp_pair"><span class="id" title="definition">opp_pair</span></a> (<span class="id" title="var">x</span> : <a class="idref" href="mathcomp.algebra.ssralg.html#PairZmod.M1"><span class="id" title="variable">M1</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#d19c7eafd0e2d195d10df94b392087b5"><span class="id" title="notation">×</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#PairZmod.M2"><span class="id" title="variable">M2</span></a>) := <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#44400027531d4bc3f586a1997dc874c0"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#941c6d086004545bd62614d0213e75e5"><span class="id" title="notation">-</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#c4877bbfe60d8f22b47ac99ace86216a"><span class="id" title="notation">.1</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#44400027531d4bc3f586a1997dc874c0"><span class="id" title="notation">,</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#941c6d086004545bd62614d0213e75e5"><span class="id" title="notation">-</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#f4827404159513e7fd691b60b7877737"><span class="id" title="notation">.2</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#44400027531d4bc3f586a1997dc874c0"><span class="id" title="notation">)</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="add_pair"><span class="id" title="definition">add_pair</span></a> (<span class="id" title="var">x</span> <span class="id" title="var">y</span> : <a class="idref" href="mathcomp.algebra.ssralg.html#PairZmod.M1"><span class="id" title="variable">M1</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#d19c7eafd0e2d195d10df94b392087b5"><span class="id" title="notation">×</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#PairZmod.M2"><span class="id" title="variable">M2</span></a>) := <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#44400027531d4bc3f586a1997dc874c0"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#c4877bbfe60d8f22b47ac99ace86216a"><span class="id" title="notation">.1</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#ae4d81913e6239182a9ac7467ffde8cd"><span class="id" title="notation">+</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#y"><span class="id" title="variable">y</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#c4877bbfe60d8f22b47ac99ace86216a"><span class="id" title="notation">.1</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#44400027531d4bc3f586a1997dc874c0"><span class="id" title="notation">,</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#f4827404159513e7fd691b60b7877737"><span class="id" title="notation">.2</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#ae4d81913e6239182a9ac7467ffde8cd"><span class="id" title="notation">+</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#y"><span class="id" title="variable">y</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#f4827404159513e7fd691b60b7877737"><span class="id" title="notation">.2</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#44400027531d4bc3f586a1997dc874c0"><span class="id" title="notation">)</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Fact</span> <a name="pair_addA"><span class="id" title="lemma">pair_addA</span></a> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#associative"><span class="id" title="definition">associative</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#add_pair"><span class="id" title="definition">add_pair</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Fact</span> <a name="pair_addC"><span class="id" title="lemma">pair_addC</span></a> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#commutative"><span class="id" title="definition">commutative</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#add_pair"><span class="id" title="definition">add_pair</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Fact</span> <a name="pair_add0"><span class="id" title="lemma">pair_add0</span></a> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#left_id"><span class="id" title="definition">left_id</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#44400027531d4bc3f586a1997dc874c0"><span class="id" title="notation">(</span></a>0<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#44400027531d4bc3f586a1997dc874c0"><span class="id" title="notation">,</span></a> 0<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#44400027531d4bc3f586a1997dc874c0"><span class="id" title="notation">)</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#add_pair"><span class="id" title="definition">add_pair</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Fact</span> <a name="pair_addN"><span class="id" title="lemma">pair_addN</span></a> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#left_inverse"><span class="id" title="definition">left_inverse</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#44400027531d4bc3f586a1997dc874c0"><span class="id" title="notation">(</span></a>0<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#44400027531d4bc3f586a1997dc874c0"><span class="id" title="notation">,</span></a> 0<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#44400027531d4bc3f586a1997dc874c0"><span class="id" title="notation">)</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#opp_pair"><span class="id" title="definition">opp_pair</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#add_pair"><span class="id" title="definition">add_pair</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Definition</span> <a name="pair_zmodMixin"><span class="id" title="definition">pair_zmodMixin</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#ZmodMixin"><span class="id" title="abbreviation">ZmodMixin</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#pair_addA"><span class="id" title="lemma">pair_addA</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#pair_addC"><span class="id" title="lemma">pair_addC</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#pair_add0"><span class="id" title="lemma">pair_add0</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#pair_addN"><span class="id" title="lemma">pair_addN</span></a>.<br/>
+<span class="id" title="keyword">Canonical</span> <span class="id" title="var">pair_zmodType</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.algebra.ssralg.html#ZmodType"><span class="id" title="abbreviation">ZmodType</span></a> (<a class="idref" href="mathcomp.algebra.ssralg.html#PairZmod.M1"><span class="id" title="variable">M1</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#d19c7eafd0e2d195d10df94b392087b5"><span class="id" title="notation">×</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#PairZmod.M2"><span class="id" title="variable">M2</span></a>) <a class="idref" href="mathcomp.algebra.ssralg.html#pair_zmodMixin"><span class="id" title="definition">pair_zmodMixin</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">End</span> <a class="idref" href="mathcomp.algebra.ssralg.html#PairZmod"><span class="id" title="section">PairZmod</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Section</span> <a name="PairRing"><span class="id" title="section">PairRing</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Variables</span> <a name="PairRing.R1"><span class="id" title="variable">R1</span></a> <a name="PairRing.R2"><span class="id" title="variable">R2</span></a> : <a class="idref" href="mathcomp.algebra.ssralg.html#ringType"><span class="id" title="abbreviation">ringType</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Definition</span> <a name="mul_pair"><span class="id" title="definition">mul_pair</span></a> (<span class="id" title="var">x</span> <span class="id" title="var">y</span> : <a class="idref" href="mathcomp.algebra.ssralg.html#PairRing.R1"><span class="id" title="variable">R1</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#d19c7eafd0e2d195d10df94b392087b5"><span class="id" title="notation">×</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#PairRing.R2"><span class="id" title="variable">R2</span></a>) := <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#44400027531d4bc3f586a1997dc874c0"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#c4877bbfe60d8f22b47ac99ace86216a"><span class="id" title="notation">.1</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#22058a36a53dac65c94ca403bc62650a"><span class="id" title="notation">×</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#y"><span class="id" title="variable">y</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#c4877bbfe60d8f22b47ac99ace86216a"><span class="id" title="notation">.1</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#44400027531d4bc3f586a1997dc874c0"><span class="id" title="notation">,</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#f4827404159513e7fd691b60b7877737"><span class="id" title="notation">.2</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#22058a36a53dac65c94ca403bc62650a"><span class="id" title="notation">×</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#y"><span class="id" title="variable">y</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#f4827404159513e7fd691b60b7877737"><span class="id" title="notation">.2</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#44400027531d4bc3f586a1997dc874c0"><span class="id" title="notation">)</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Fact</span> <a name="pair_mulA"><span class="id" title="lemma">pair_mulA</span></a> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#associative"><span class="id" title="definition">associative</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#mul_pair"><span class="id" title="definition">mul_pair</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Fact</span> <a name="pair_mul1l"><span class="id" title="lemma">pair_mul1l</span></a> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#left_id"><span class="id" title="definition">left_id</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#44400027531d4bc3f586a1997dc874c0"><span class="id" title="notation">(</span></a>1<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#44400027531d4bc3f586a1997dc874c0"><span class="id" title="notation">,</span></a> 1<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#44400027531d4bc3f586a1997dc874c0"><span class="id" title="notation">)</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#mul_pair"><span class="id" title="definition">mul_pair</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Fact</span> <a name="pair_mul1r"><span class="id" title="lemma">pair_mul1r</span></a> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#right_id"><span class="id" title="definition">right_id</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#44400027531d4bc3f586a1997dc874c0"><span class="id" title="notation">(</span></a>1<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#44400027531d4bc3f586a1997dc874c0"><span class="id" title="notation">,</span></a> 1<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#44400027531d4bc3f586a1997dc874c0"><span class="id" title="notation">)</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#mul_pair"><span class="id" title="definition">mul_pair</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Fact</span> <a name="pair_mulDl"><span class="id" title="lemma">pair_mulDl</span></a> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#left_distributive"><span class="id" title="definition">left_distributive</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#mul_pair"><span class="id" title="definition">mul_pair</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#327bb2f0da6fd7c01a004dedcfc2dee4"><span class="id" title="notation">+%</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#327bb2f0da6fd7c01a004dedcfc2dee4"><span class="id" title="notation">R</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Fact</span> <a name="pair_mulDr"><span class="id" title="lemma">pair_mulDr</span></a> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#right_distributive"><span class="id" title="definition">right_distributive</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#mul_pair"><span class="id" title="definition">mul_pair</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#327bb2f0da6fd7c01a004dedcfc2dee4"><span class="id" title="notation">+%</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#327bb2f0da6fd7c01a004dedcfc2dee4"><span class="id" title="notation">R</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Fact</span> <a name="pair_one_neq0"><span class="id" title="lemma">pair_one_neq0</span></a> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#44400027531d4bc3f586a1997dc874c0"><span class="id" title="notation">(</span></a>1<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#44400027531d4bc3f586a1997dc874c0"><span class="id" title="notation">,</span></a> 1<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#44400027531d4bc3f586a1997dc874c0"><span class="id" title="notation">)</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#9e45f909d1732d6d9e153b650829bccf"><span class="id" title="notation">!=</span></a> 0 <a class="idref" href="mathcomp.ssreflect.eqtype.html#9e45f909d1732d6d9e153b650829bccf"><span class="id" title="notation">:&gt;</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#PairRing.R1"><span class="id" title="variable">R1</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#d19c7eafd0e2d195d10df94b392087b5"><span class="id" title="notation">×</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#PairRing.R2"><span class="id" title="variable">R2</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Definition</span> <a name="pair_ringMixin"><span class="id" title="definition">pair_ringMixin</span></a> :=<br/>
+&nbsp;&nbsp;<a class="idref" href="mathcomp.algebra.ssralg.html#RingMixin"><span class="id" title="abbreviation">RingMixin</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#pair_mulA"><span class="id" title="lemma">pair_mulA</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#pair_mul1l"><span class="id" title="lemma">pair_mul1l</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#pair_mul1r"><span class="id" title="lemma">pair_mul1r</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#pair_mulDl"><span class="id" title="lemma">pair_mulDl</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#pair_mulDr"><span class="id" title="lemma">pair_mulDr</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#pair_one_neq0"><span class="id" title="lemma">pair_one_neq0</span></a>.<br/>
+<span class="id" title="keyword">Canonical</span> <span class="id" title="var">pair_ringType</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.algebra.ssralg.html#RingType"><span class="id" title="abbreviation">RingType</span></a> (<a class="idref" href="mathcomp.algebra.ssralg.html#PairRing.R1"><span class="id" title="variable">R1</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#d19c7eafd0e2d195d10df94b392087b5"><span class="id" title="notation">×</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#PairRing.R2"><span class="id" title="variable">R2</span></a>) <a class="idref" href="mathcomp.algebra.ssralg.html#pair_ringMixin"><span class="id" title="definition">pair_ringMixin</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">End</span> <a class="idref" href="mathcomp.algebra.ssralg.html#PairRing"><span class="id" title="section">PairRing</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Section</span> <a name="PairComRing"><span class="id" title="section">PairComRing</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Variables</span> <a name="PairComRing.R1"><span class="id" title="variable">R1</span></a> <a name="PairComRing.R2"><span class="id" title="variable">R2</span></a> : <a class="idref" href="mathcomp.algebra.ssralg.html#comRingType"><span class="id" title="abbreviation">comRingType</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Fact</span> <a name="pair_mulC"><span class="id" title="lemma">pair_mulC</span></a> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#commutative"><span class="id" title="definition">commutative</span></a> (@<a class="idref" href="mathcomp.algebra.ssralg.html#mul_pair"><span class="id" title="definition">mul_pair</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#PairComRing.R1"><span class="id" title="variable">R1</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#PairComRing.R2"><span class="id" title="variable">R2</span></a>).<br/>
+
+<br/>
+<span class="id" title="keyword">Canonical</span> <span class="id" title="var">pair_comRingType</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.algebra.ssralg.html#ComRingType"><span class="id" title="abbreviation">ComRingType</span></a> (<a class="idref" href="mathcomp.algebra.ssralg.html#PairComRing.R1"><span class="id" title="variable">R1</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#d19c7eafd0e2d195d10df94b392087b5"><span class="id" title="notation">×</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#PairComRing.R2"><span class="id" title="variable">R2</span></a>) <a class="idref" href="mathcomp.algebra.ssralg.html#pair_mulC"><span class="id" title="lemma">pair_mulC</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">End</span> <a class="idref" href="mathcomp.algebra.ssralg.html#PairComRing"><span class="id" title="section">PairComRing</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Section</span> <a name="PairLmod"><span class="id" title="section">PairLmod</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Variables</span> (<a name="PairLmod.R"><span class="id" title="variable">R</span></a> : <a class="idref" href="mathcomp.algebra.ssralg.html#ringType"><span class="id" title="abbreviation">ringType</span></a>) (<a name="PairLmod.V1"><span class="id" title="variable">V1</span></a> <a name="PairLmod.V2"><span class="id" title="variable">V2</span></a> : <a class="idref" href="mathcomp.algebra.ssralg.html#lmodType"><span class="id" title="abbreviation">lmodType</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#R"><span class="id" title="variable">R</span></a>).<br/>
+
+<br/>
+<span class="id" title="keyword">Definition</span> <a name="scale_pair"><span class="id" title="definition">scale_pair</span></a> <span class="id" title="var">a</span> (<span class="id" title="var">v</span> : <a class="idref" href="mathcomp.algebra.ssralg.html#PairLmod.V1"><span class="id" title="variable">V1</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#d19c7eafd0e2d195d10df94b392087b5"><span class="id" title="notation">×</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#PairLmod.V2"><span class="id" title="variable">V2</span></a>) : <a class="idref" href="mathcomp.algebra.ssralg.html#PairLmod.V1"><span class="id" title="variable">V1</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#d19c7eafd0e2d195d10df94b392087b5"><span class="id" title="notation">×</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#PairLmod.V2"><span class="id" title="variable">V2</span></a> := <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#44400027531d4bc3f586a1997dc874c0"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#a"><span class="id" title="variable">a</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#81f8078534dcbb7e13a32d292f766525"><span class="id" title="notation">*:</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#v"><span class="id" title="variable">v</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#c4877bbfe60d8f22b47ac99ace86216a"><span class="id" title="notation">.1</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#44400027531d4bc3f586a1997dc874c0"><span class="id" title="notation">,</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#a"><span class="id" title="variable">a</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#81f8078534dcbb7e13a32d292f766525"><span class="id" title="notation">*:</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#v"><span class="id" title="variable">v</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#f4827404159513e7fd691b60b7877737"><span class="id" title="notation">.2</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#44400027531d4bc3f586a1997dc874c0"><span class="id" title="notation">)</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Fact</span> <a name="pair_scaleA"><span class="id" title="lemma">pair_scaleA</span></a> <span class="id" title="var">a</span> <span class="id" title="var">b</span> <span class="id" title="var">u</span> : <a class="idref" href="mathcomp.algebra.ssralg.html#scale_pair"><span class="id" title="definition">scale_pair</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#a"><span class="id" title="variable">a</span></a> (<a class="idref" href="mathcomp.algebra.ssralg.html#scale_pair"><span class="id" title="definition">scale_pair</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#b"><span class="id" title="variable">b</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#u"><span class="id" title="variable">u</span></a>) <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#scale_pair"><span class="id" title="definition">scale_pair</span></a> (<a class="idref" href="mathcomp.algebra.ssralg.html#a"><span class="id" title="variable">a</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#22058a36a53dac65c94ca403bc62650a"><span class="id" title="notation">×</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#b"><span class="id" title="variable">b</span></a>) <a class="idref" href="mathcomp.algebra.ssralg.html#u"><span class="id" title="variable">u</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Fact</span> <a name="pair_scale1"><span class="id" title="lemma">pair_scale1</span></a> <span class="id" title="var">u</span> : <a class="idref" href="mathcomp.algebra.ssralg.html#scale_pair"><span class="id" title="definition">scale_pair</span></a> 1 <a class="idref" href="mathcomp.algebra.ssralg.html#u"><span class="id" title="variable">u</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#u"><span class="id" title="variable">u</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Fact</span> <a name="pair_scaleDr"><span class="id" title="lemma">pair_scaleDr</span></a> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#right_distributive"><span class="id" title="definition">right_distributive</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#scale_pair"><span class="id" title="definition">scale_pair</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#327bb2f0da6fd7c01a004dedcfc2dee4"><span class="id" title="notation">+%</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#327bb2f0da6fd7c01a004dedcfc2dee4"><span class="id" title="notation">R</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Fact</span> <a name="pair_scaleDl"><span class="id" title="lemma">pair_scaleDl</span></a> <span class="id" title="var">u</span> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#3014e73af2a90fd800d8681479d76336"><span class="id" title="notation">{</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#3014e73af2a90fd800d8681479d76336"><span class="id" title="notation">morph</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#scale_pair"><span class="id" title="definition">scale_pair</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#8f28bbd804547edd8de802d63ef85617"><span class="id" title="notation">^~</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#u"><span class="id" title="variable">u</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#3014e73af2a90fd800d8681479d76336"><span class="id" title="notation">:</span></a> <span class="id" title="var">a</span> <span class="id" title="var">b</span> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#3014e73af2a90fd800d8681479d76336"><span class="id" title="notation">/</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#a"><span class="id" title="variable">a</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#ae4d81913e6239182a9ac7467ffde8cd"><span class="id" title="notation">+</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#b"><span class="id" title="variable">b</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#3014e73af2a90fd800d8681479d76336"><span class="id" title="notation">}</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Definition</span> <a name="pair_lmodMixin"><span class="id" title="definition">pair_lmodMixin</span></a> :=<br/>
+&nbsp;&nbsp;<a class="idref" href="mathcomp.algebra.ssralg.html#LmodMixin"><span class="id" title="abbreviation">LmodMixin</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#pair_scaleA"><span class="id" title="lemma">pair_scaleA</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#pair_scale1"><span class="id" title="lemma">pair_scale1</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#pair_scaleDr"><span class="id" title="lemma">pair_scaleDr</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#pair_scaleDl"><span class="id" title="lemma">pair_scaleDl</span></a>.<br/>
+<span class="id" title="keyword">Canonical</span> <span class="id" title="var">pair_lmodType</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.algebra.ssralg.html#LmodType"><span class="id" title="abbreviation">LmodType</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#PairLmod.R"><span class="id" title="variable">R</span></a> (<a class="idref" href="mathcomp.algebra.ssralg.html#PairLmod.V1"><span class="id" title="variable">V1</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#d19c7eafd0e2d195d10df94b392087b5"><span class="id" title="notation">×</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#PairLmod.V2"><span class="id" title="variable">V2</span></a>) <a class="idref" href="mathcomp.algebra.ssralg.html#pair_lmodMixin"><span class="id" title="definition">pair_lmodMixin</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">End</span> <a class="idref" href="mathcomp.algebra.ssralg.html#PairLmod"><span class="id" title="section">PairLmod</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Section</span> <a name="PairLalg"><span class="id" title="section">PairLalg</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Variables</span> (<a name="PairLalg.R"><span class="id" title="variable">R</span></a> : <a class="idref" href="mathcomp.algebra.ssralg.html#ringType"><span class="id" title="abbreviation">ringType</span></a>) (<a name="PairLalg.A1"><span class="id" title="variable">A1</span></a> <a name="PairLalg.A2"><span class="id" title="variable">A2</span></a> : <a class="idref" href="mathcomp.algebra.ssralg.html#lalgType"><span class="id" title="abbreviation">lalgType</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#R"><span class="id" title="variable">R</span></a>).<br/>
+
+<br/>
+<span class="id" title="keyword">Fact</span> <a name="pair_scaleAl"><span class="id" title="lemma">pair_scaleAl</span></a> <span class="id" title="var">a</span> (<span class="id" title="var">u</span> <span class="id" title="var">v</span> : <a class="idref" href="mathcomp.algebra.ssralg.html#PairLalg.A1"><span class="id" title="variable">A1</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#d19c7eafd0e2d195d10df94b392087b5"><span class="id" title="notation">×</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#PairLalg.A2"><span class="id" title="variable">A2</span></a>) : <a class="idref" href="mathcomp.algebra.ssralg.html#a"><span class="id" title="variable">a</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#81f8078534dcbb7e13a32d292f766525"><span class="id" title="notation">*:</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#81f8078534dcbb7e13a32d292f766525"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#u"><span class="id" title="variable">u</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#22058a36a53dac65c94ca403bc62650a"><span class="id" title="notation">×</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#v"><span class="id" title="variable">v</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#81f8078534dcbb7e13a32d292f766525"><span class="id" title="notation">)</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#22058a36a53dac65c94ca403bc62650a"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#a"><span class="id" title="variable">a</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#81f8078534dcbb7e13a32d292f766525"><span class="id" title="notation">*:</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#u"><span class="id" title="variable">u</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#22058a36a53dac65c94ca403bc62650a"><span class="id" title="notation">)</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#22058a36a53dac65c94ca403bc62650a"><span class="id" title="notation">×</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#v"><span class="id" title="variable">v</span></a>.<br/>
+ <span class="id" title="keyword">Canonical</span> <span class="id" title="var">pair_lalgType</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.algebra.ssralg.html#LalgType"><span class="id" title="abbreviation">LalgType</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#PairLalg.R"><span class="id" title="variable">R</span></a> (<a class="idref" href="mathcomp.algebra.ssralg.html#PairLalg.A1"><span class="id" title="variable">A1</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#d19c7eafd0e2d195d10df94b392087b5"><span class="id" title="notation">×</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#PairLalg.A2"><span class="id" title="variable">A2</span></a>) <a class="idref" href="mathcomp.algebra.ssralg.html#pair_scaleAl"><span class="id" title="lemma">pair_scaleAl</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">End</span> <a class="idref" href="mathcomp.algebra.ssralg.html#PairLalg"><span class="id" title="section">PairLalg</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Section</span> <a name="PairAlg"><span class="id" title="section">PairAlg</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Variables</span> (<a name="PairAlg.R"><span class="id" title="variable">R</span></a> : <a class="idref" href="mathcomp.algebra.ssralg.html#comRingType"><span class="id" title="abbreviation">comRingType</span></a>) (<a name="PairAlg.A1"><span class="id" title="variable">A1</span></a> <a name="PairAlg.A2"><span class="id" title="variable">A2</span></a> : <a class="idref" href="mathcomp.algebra.ssralg.html#algType"><span class="id" title="abbreviation">algType</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#R"><span class="id" title="variable">R</span></a>).<br/>
+
+<br/>
+<span class="id" title="keyword">Fact</span> <a name="pair_scaleAr"><span class="id" title="lemma">pair_scaleAr</span></a> <span class="id" title="var">a</span> (<span class="id" title="var">u</span> <span class="id" title="var">v</span> : <a class="idref" href="mathcomp.algebra.ssralg.html#PairAlg.A1"><span class="id" title="variable">A1</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#d19c7eafd0e2d195d10df94b392087b5"><span class="id" title="notation">×</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#PairAlg.A2"><span class="id" title="variable">A2</span></a>) : <a class="idref" href="mathcomp.algebra.ssralg.html#a"><span class="id" title="variable">a</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#81f8078534dcbb7e13a32d292f766525"><span class="id" title="notation">*:</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#81f8078534dcbb7e13a32d292f766525"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#u"><span class="id" title="variable">u</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#22058a36a53dac65c94ca403bc62650a"><span class="id" title="notation">×</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#v"><span class="id" title="variable">v</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#81f8078534dcbb7e13a32d292f766525"><span class="id" title="notation">)</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#u"><span class="id" title="variable">u</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#22058a36a53dac65c94ca403bc62650a"><span class="id" title="notation">×</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#22058a36a53dac65c94ca403bc62650a"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#a"><span class="id" title="variable">a</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#81f8078534dcbb7e13a32d292f766525"><span class="id" title="notation">*:</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#v"><span class="id" title="variable">v</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#22058a36a53dac65c94ca403bc62650a"><span class="id" title="notation">)</span></a>.<br/>
+ <span class="id" title="keyword">Canonical</span> <span class="id" title="var">pair_algType</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.algebra.ssralg.html#AlgType"><span class="id" title="abbreviation">AlgType</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#PairAlg.R"><span class="id" title="variable">R</span></a> (<a class="idref" href="mathcomp.algebra.ssralg.html#PairAlg.A1"><span class="id" title="variable">A1</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#d19c7eafd0e2d195d10df94b392087b5"><span class="id" title="notation">×</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#PairAlg.A2"><span class="id" title="variable">A2</span></a>) <a class="idref" href="mathcomp.algebra.ssralg.html#pair_scaleAr"><span class="id" title="lemma">pair_scaleAr</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">End</span> <a class="idref" href="mathcomp.algebra.ssralg.html#PairAlg"><span class="id" title="section">PairAlg</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Section</span> <a name="PairUnitRing"><span class="id" title="section">PairUnitRing</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Variables</span> <a name="PairUnitRing.R1"><span class="id" title="variable">R1</span></a> <a name="PairUnitRing.R2"><span class="id" title="variable">R2</span></a> : <a class="idref" href="mathcomp.algebra.ssralg.html#unitRingType"><span class="id" title="abbreviation">unitRingType</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Definition</span> <a name="pair_unitr"><span class="id" title="definition">pair_unitr</span></a> :=<br/>
+&nbsp;&nbsp;<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#3838d61fb3e8125493e649946f677b04"><span class="id" title="notation">[</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#3838d61fb3e8125493e649946f677b04"><span class="id" title="notation">qualify</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#3838d61fb3e8125493e649946f677b04"><span class="id" title="notation">a</span></a> <span class="id" title="var">x</span> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#3838d61fb3e8125493e649946f677b04"><span class="id" title="notation">:</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#PairUnitRing.R1"><span class="id" title="variable">R1</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#d19c7eafd0e2d195d10df94b392087b5"><span class="id" title="notation">×</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#PairUnitRing.R2"><span class="id" title="variable">R2</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#3838d61fb3e8125493e649946f677b04"><span class="id" title="notation">|</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#49ac24efa716d8b0ee8943bc1d1769a9"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#c4877bbfe60d8f22b47ac99ace86216a"><span class="id" title="notation">.1</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#1e40fee506a85b20590ef299005b003d"><span class="id" title="notation">\</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#1e40fee506a85b20590ef299005b003d"><span class="id" title="notation">is</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#1e40fee506a85b20590ef299005b003d"><span class="id" title="notation">a</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#unit"><span class="id" title="definition">GRing.unit</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#49ac24efa716d8b0ee8943bc1d1769a9"><span class="id" title="notation">)</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#49ac24efa716d8b0ee8943bc1d1769a9"><span class="id" title="notation">&amp;&amp;</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#49ac24efa716d8b0ee8943bc1d1769a9"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#f4827404159513e7fd691b60b7877737"><span class="id" title="notation">.2</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#1e40fee506a85b20590ef299005b003d"><span class="id" title="notation">\</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#1e40fee506a85b20590ef299005b003d"><span class="id" title="notation">is</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#1e40fee506a85b20590ef299005b003d"><span class="id" title="notation">a</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#unit"><span class="id" title="definition">GRing.unit</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#49ac24efa716d8b0ee8943bc1d1769a9"><span class="id" title="notation">)</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#3838d61fb3e8125493e649946f677b04"><span class="id" title="notation">]</span></a>.<br/>
+<span class="id" title="keyword">Definition</span> <a name="pair_invr"><span class="id" title="definition">pair_invr</span></a> <span class="id" title="var">x</span> :=<br/>
+&nbsp;&nbsp;<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssreflect.html#0348819abaa88c2cd747e8fa60dde7ae"><span class="id" title="notation">if</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#1e40fee506a85b20590ef299005b003d"><span class="id" title="notation">\</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#1e40fee506a85b20590ef299005b003d"><span class="id" title="notation">is</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#1e40fee506a85b20590ef299005b003d"><span class="id" title="notation">a</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#pair_unitr"><span class="id" title="definition">pair_unitr</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssreflect.html#0348819abaa88c2cd747e8fa60dde7ae"><span class="id" title="notation">then</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#44400027531d4bc3f586a1997dc874c0"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#c4877bbfe60d8f22b47ac99ace86216a"><span class="id" title="notation">.1</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#f3016d4e55aa553d3e912592ec65e342"><span class="id" title="notation">^-1</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#44400027531d4bc3f586a1997dc874c0"><span class="id" title="notation">,</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#f4827404159513e7fd691b60b7877737"><span class="id" title="notation">.2</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#f3016d4e55aa553d3e912592ec65e342"><span class="id" title="notation">^-1</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#44400027531d4bc3f586a1997dc874c0"><span class="id" title="notation">)</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssreflect.html#0348819abaa88c2cd747e8fa60dde7ae"><span class="id" title="notation">else</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="pair_mulVl"><span class="id" title="lemma">pair_mulVl</span></a> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#5c59b35a0b51db520cf1fba473ecf127"><span class="id" title="notation">{</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#5c59b35a0b51db520cf1fba473ecf127"><span class="id" title="notation">in</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#pair_unitr"><span class="id" title="definition">pair_unitr</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#5c59b35a0b51db520cf1fba473ecf127"><span class="id" title="notation">,</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#left_inverse"><span class="id" title="definition">left_inverse</span></a> 1 <a class="idref" href="mathcomp.algebra.ssralg.html#pair_invr"><span class="id" title="definition">pair_invr</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#d5d4e2467843f67554f1a8a22d125de9"><span class="id" title="notation">*%</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#d5d4e2467843f67554f1a8a22d125de9"><span class="id" title="notation">R</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#5c59b35a0b51db520cf1fba473ecf127"><span class="id" title="notation">}</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="pair_mulVr"><span class="id" title="lemma">pair_mulVr</span></a> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#5c59b35a0b51db520cf1fba473ecf127"><span class="id" title="notation">{</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#5c59b35a0b51db520cf1fba473ecf127"><span class="id" title="notation">in</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#pair_unitr"><span class="id" title="definition">pair_unitr</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#5c59b35a0b51db520cf1fba473ecf127"><span class="id" title="notation">,</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#right_inverse"><span class="id" title="definition">right_inverse</span></a> 1 <a class="idref" href="mathcomp.algebra.ssralg.html#pair_invr"><span class="id" title="definition">pair_invr</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#d5d4e2467843f67554f1a8a22d125de9"><span class="id" title="notation">*%</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#d5d4e2467843f67554f1a8a22d125de9"><span class="id" title="notation">R</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#5c59b35a0b51db520cf1fba473ecf127"><span class="id" title="notation">}</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="pair_unitP"><span class="id" title="lemma">pair_unitP</span></a> <span class="id" title="var">x</span> <span class="id" title="var">y</span> : <a class="idref" href="mathcomp.algebra.ssralg.html#y"><span class="id" title="variable">y</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#22058a36a53dac65c94ca403bc62650a"><span class="id" title="notation">×</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> 1 <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d82a7d96d3659d805ffe732283716822"><span class="id" title="notation">∧</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#22058a36a53dac65c94ca403bc62650a"><span class="id" title="notation">×</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#y"><span class="id" title="variable">y</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> 1 <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#1e40fee506a85b20590ef299005b003d"><span class="id" title="notation">\</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#1e40fee506a85b20590ef299005b003d"><span class="id" title="notation">is</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#1e40fee506a85b20590ef299005b003d"><span class="id" title="notation">a</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#pair_unitr"><span class="id" title="definition">pair_unitr</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Lemma</span> <a name="pair_invr_out"><span class="id" title="lemma">pair_invr_out</span></a> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#5c59b35a0b51db520cf1fba473ecf127"><span class="id" title="notation">{</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#5c59b35a0b51db520cf1fba473ecf127"><span class="id" title="notation">in</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#c2f58fba484177bda65c2ab1289a6fe6"><span class="id" title="notation">[</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#c2f58fba484177bda65c2ab1289a6fe6"><span class="id" title="notation">predC</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#pair_unitr"><span class="id" title="definition">pair_unitr</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#c2f58fba484177bda65c2ab1289a6fe6"><span class="id" title="notation">]</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#5c59b35a0b51db520cf1fba473ecf127"><span class="id" title="notation">,</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#pair_invr"><span class="id" title="definition">pair_invr</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#2500d48ed8e862ccfda98a44dff88963"><span class="id" title="notation">=1</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#id"><span class="id" title="abbreviation">id</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#5c59b35a0b51db520cf1fba473ecf127"><span class="id" title="notation">}</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Definition</span> <a name="pair_unitRingMixin"><span class="id" title="definition">pair_unitRingMixin</span></a> :=<br/>
+&nbsp;&nbsp;<a class="idref" href="mathcomp.algebra.ssralg.html#UnitRingMixin"><span class="id" title="abbreviation">UnitRingMixin</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#pair_mulVl"><span class="id" title="lemma">pair_mulVl</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#pair_mulVr"><span class="id" title="lemma">pair_mulVr</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#pair_unitP"><span class="id" title="lemma">pair_unitP</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#pair_invr_out"><span class="id" title="lemma">pair_invr_out</span></a>.<br/>
+<span class="id" title="keyword">Canonical</span> <span class="id" title="var">pair_unitRingType</span> :=<br/>
+&nbsp;&nbsp;<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.algebra.ssralg.html#UnitRingType"><span class="id" title="abbreviation">UnitRingType</span></a> (<a class="idref" href="mathcomp.algebra.ssralg.html#PairUnitRing.R1"><span class="id" title="variable">R1</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#d19c7eafd0e2d195d10df94b392087b5"><span class="id" title="notation">×</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#PairUnitRing.R2"><span class="id" title="variable">R2</span></a>) <a class="idref" href="mathcomp.algebra.ssralg.html#pair_unitRingMixin"><span class="id" title="definition">pair_unitRingMixin</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">End</span> <a class="idref" href="mathcomp.algebra.ssralg.html#PairUnitRing"><span class="id" title="section">PairUnitRing</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Canonical</span> <span class="id" title="var">pair_comUnitRingType</span> (<span class="id" title="var">R1</span> <span class="id" title="var">R2</span> : <a class="idref" href="mathcomp.algebra.ssralg.html#comUnitRingType"><span class="id" title="abbreviation">comUnitRingType</span></a>) :=<br/>
+&nbsp;&nbsp;<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.algebra.ssralg.html#e3ee791c903b0283e51d52d0692558ec"><span class="id" title="notation">[</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#e3ee791c903b0283e51d52d0692558ec"><span class="id" title="notation">comUnitRingType</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#e3ee791c903b0283e51d52d0692558ec"><span class="id" title="notation">of</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#R1"><span class="id" title="variable">R1</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#d19c7eafd0e2d195d10df94b392087b5"><span class="id" title="notation">×</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#R2"><span class="id" title="variable">R2</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#e3ee791c903b0283e51d52d0692558ec"><span class="id" title="notation">]</span></a>.<br/>
+
+<br/>
+<span class="id" title="keyword">Canonical</span> <span class="id" title="var">pair_unitAlgType</span> (<span class="id" title="var">R</span> : <a class="idref" href="mathcomp.algebra.ssralg.html#comUnitRingType"><span class="id" title="abbreviation">comUnitRingType</span></a>) (<span class="id" title="var">A1</span> <span class="id" title="var">A2</span> : <a class="idref" href="mathcomp.algebra.ssralg.html#unitAlgType"><span class="id" title="abbreviation">unitAlgType</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#R"><span class="id" title="variable">R</span></a>) :=<br/>
+&nbsp;&nbsp;<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.algebra.ssralg.html#bdb1eed686184a9a4099efa772be7bc7"><span class="id" title="notation">[</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#bdb1eed686184a9a4099efa772be7bc7"><span class="id" title="notation">unitAlgType</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#R"><span class="id" title="variable">R</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#bdb1eed686184a9a4099efa772be7bc7"><span class="id" title="notation">of</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#A1"><span class="id" title="variable">A1</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#d19c7eafd0e2d195d10df94b392087b5"><span class="id" title="notation">×</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#A2"><span class="id" title="variable">A2</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#bdb1eed686184a9a4099efa772be7bc7"><span class="id" title="notation">]</span></a>.<br/>
+
+<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