diff options
Diffstat (limited to 'docs/htmldoc/mathcomp.algebra.mxpoly.html')
| -rw-r--r-- | docs/htmldoc/mathcomp.algebra.mxpoly.html | 736 |
1 files changed, 0 insertions, 736 deletions
diff --git a/docs/htmldoc/mathcomp.algebra.mxpoly.html b/docs/htmldoc/mathcomp.algebra.mxpoly.html deleted file mode 100644 index 81cbeb0..0000000 --- a/docs/htmldoc/mathcomp.algebra.mxpoly.html +++ /dev/null @@ -1,736 +0,0 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" -"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> -<html xmlns="http://www.w3.org/1999/xhtml"> -<head> -<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> -<link href="coqdoc.css" rel="stylesheet" type="text/css" /> -<title>mathcomp.algebra.mxpoly</title> -</head> - -<body> - -<div id="page"> - -<div id="header"> -</div> - -<div id="main"> - -<h1 class="libtitle">Library mathcomp.algebra.mxpoly</h1> - -<div class="code"> -<span class="comment">(* (c) Copyright 2006-2016 Microsoft Corporation and Inria. <br/> - Distributed under the terms of CeCILL-B. *)</span><br/> - -<br/> -</div> - -<div class="doc"> - This file provides basic support for formal computation with matrices, - mainly results combining matrices and univariate polynomials, such as the - Cayley-Hamilton theorem; it also contains an extension of the first order - representation of algebra introduced in ssralg (GRing.term/formula). - rVpoly v == the little-endian decoding of the row vector v as a - polynomial p = \sum_i (v 0 i)%:P * 'X^i. - poly_rV p == the partial inverse to rVpoly, for polynomials of degree - less than d to 'rV_d (d is inferred from the context). - Sylvester_mx p q == the Sylvester matrix of p and q. - resultant p q == the resultant of p and q, i.e., \det (Sylvester_mx p q). - horner_mx A == the morphism from {poly R} to 'M_n (n of the form n'.+1) - mapping a (scalar) polynomial p to the value of its - scalar matrix interpretation at A (this is an instance of - the generic horner_morph construct defined in poly). - powers_mx A d == the d x (n ^ 2) matrix whose rows are the mxvec encodings - of the first d powers of A (n of the form n'.+1). Thus, - vec_mx (v *m powers_mx A d) = horner_mx A (rVpoly v). - char_poly A == the characteristic polynomial of A. - char_poly_mx A == a matrix whose determinant is char_poly A. - companionmx p == a matrix whose char_poly is p - mxminpoly A == the minimal polynomial of A, i.e., the smallest monic - polynomial that annihilates A (A must be nontrivial). - degree_mxminpoly A == the (positive) degree of mxminpoly A. - mx_inv_horner A == the inverse of horner_mx A for polynomials of degree - smaller than degree_mxminpoly A. - integralOver RtoK u <-> u is in the integral closure of the image of R - under RtoK : R -> K, i.e. u is a root of the image of a - monic polynomial in R. - algebraicOver FtoE u <-> u : E is algebraic over E; it is a root of the - image of a nonzero polynomial under FtoE; as F must be a - fieldType, this is equivalent to integralOver FtoE u. - integralRange RtoK <-> the integral closure of the image of R contains - all of K (:= forall u, integralOver RtoK u). - This toolkit for building formal matrix expressions is packaged in the - MatrixFormula submodule, and comprises the following: - eval_mx e == GRing.eval lifted to matrices (:= map_mx (GRing.eval e)). - mx_term A == GRing.Const lifted to matrices. - mulmx_term A B == the formal product of two matrices of terms. - mxrank_form m A == a GRing.formula asserting that the interpretation of - the term matrix A has rank m. - submx_form A B == a GRing.formula asserting that the row space of the - interpretation of the term matrix A is included in the - row space of the interpretation of B. - seq_of_rV v == the seq corresponding to a row vector. - row_env e == the flattening of a tensored environment e : seq 'rV_d. - row_var F d k == the term vector of width d such that for e : seq 'rV[F]_d - we have eval e 'X_k = eval_mx (row_env e) (row_var d k). -</div> -<div class="code"> - -<br/> -<span class="id" title="keyword">Set Implicit Arguments</span>.<br/> - -<br/> -<span class="id" title="keyword">Import</span> <span class="id" title="var">GRing.Theory</span>.<br/> -<span class="id" title="keyword">Import</span> <span class="id" title="var">Monoid.Theory</span>.<br/> - -<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">Import</span> <span class="id" title="var">Pdiv.Idomain</span>.<br/> -</div> - -<div class="doc"> - Row vector <-> bounded degree polynomial bijection -</div> -<div class="code"> -<span class="id" title="keyword">Section</span> <a name="RowPoly"><span class="id" title="section">RowPoly</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Variables</span> (<a name="RowPoly.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="RowPoly.d"><span class="id" title="variable">d</span></a> : <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Datatypes.html#nat"><span class="id" title="inductive">nat</span></a>).<br/> -<span class="id" title="keyword">Implicit</span> <span class="id" title="keyword">Types</span> <span class="id" title="var">u</span> <span class="id" title="var">v</span> : <a class="idref" href="mathcomp.algebra.matrix.html#928a892a0c1438777aeb17535aec0378"><span class="id" title="notation">'</span></a><a class="idref" href="mathcomp.algebra.matrix.html#928a892a0c1438777aeb17535aec0378"><span class="id" title="notation">rV</span></a><a class="idref" href="mathcomp.algebra.matrix.html#928a892a0c1438777aeb17535aec0378"><span class="id" title="notation">[</span></a><a class="idref" href="mathcomp.algebra.mxpoly.html#RowPoly.R"><span class="id" title="variable">R</span></a><a class="idref" href="mathcomp.algebra.matrix.html#928a892a0c1438777aeb17535aec0378"><span class="id" title="notation">]</span></a><a class="idref" href="mathcomp.algebra.matrix.html#928a892a0c1438777aeb17535aec0378"><span class="id" title="notation">_d</span></a>.<br/> -<span class="id" title="keyword">Implicit</span> <span class="id" title="keyword">Types</span> <span class="id" title="var">p</span> <span class="id" title="var">q</span> : <a class="idref" href="mathcomp.algebra.poly.html#c2ef4fdf7ae62c36654f85f0d2a6c874"><span class="id" title="notation">{</span></a><a class="idref" href="mathcomp.algebra.poly.html#c2ef4fdf7ae62c36654f85f0d2a6c874"><span class="id" title="notation">poly</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#RowPoly.R"><span class="id" title="variable">R</span></a><a class="idref" href="mathcomp.algebra.poly.html#c2ef4fdf7ae62c36654f85f0d2a6c874"><span class="id" title="notation">}</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Definition</span> <a name="rVpoly"><span class="id" title="definition">rVpoly</span></a> <span class="id" title="var">v</span> := <a class="idref" href="mathcomp.algebra.poly.html#e7c928d7996da3748fbd8a7e6d560557"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.algebra.poly.html#e7c928d7996da3748fbd8a7e6d560557"><span class="id" title="notation">poly_</span></a><a class="idref" href="mathcomp.algebra.poly.html#e7c928d7996da3748fbd8a7e6d560557"><span class="id" title="notation">(</span></a><span class="id" title="var">k</span> <a class="idref" href="mathcomp.algebra.poly.html#e7c928d7996da3748fbd8a7e6d560557"><span class="id" title="notation"><</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#RowPoly.d"><span class="id" title="variable">d</span></a><a class="idref" href="mathcomp.algebra.poly.html#e7c928d7996da3748fbd8a7e6d560557"><span class="id" title="notation">)</span></a> <a class="idref" href="mathcomp.algebra.poly.html#e7c928d7996da3748fbd8a7e6d560557"><span class="id" title="notation">(</span></a><span class="id" title="keyword">if</span> <a class="idref" href="mathcomp.ssreflect.eqtype.html#insub"><span class="id" title="definition">insub</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#k"><span class="id" title="variable">k</span></a> <span class="id" title="keyword">is</span> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Datatypes.html#Some"><span class="id" title="constructor">Some</span></a> <span class="id" title="var">i</span> <span class="id" title="keyword">then</span> <a class="idref" href="mathcomp.algebra.mxpoly.html#v"><span class="id" title="variable">v</span></a> 0 <span class="id" title="var">i</span> <span class="id" title="keyword">else</span> 0<a class="idref" href="mathcomp.algebra.poly.html#e7c928d7996da3748fbd8a7e6d560557"><span class="id" title="notation">)</span></a>.<br/> -<span class="id" title="keyword">Definition</span> <a name="poly_rV"><span class="id" title="definition">poly_rV</span></a> <span class="id" title="var">p</span> := <a class="idref" href="mathcomp.algebra.matrix.html#e008ec0beb9d729fd1ef8df8b1024615"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.algebra.matrix.html#e008ec0beb9d729fd1ef8df8b1024615"><span class="id" title="notation">row_</span></a><a class="idref" href="mathcomp.algebra.matrix.html#e008ec0beb9d729fd1ef8df8b1024615"><span class="id" title="notation">(</span></a><span class="id" title="var">i</span> <a class="idref" href="mathcomp.algebra.matrix.html#e008ec0beb9d729fd1ef8df8b1024615"><span class="id" title="notation"><</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#RowPoly.d"><span class="id" title="variable">d</span></a><a class="idref" href="mathcomp.algebra.matrix.html#e008ec0beb9d729fd1ef8df8b1024615"><span class="id" title="notation">)</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#p"><span class="id" title="variable">p</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#82d810f9f90b79e8fe98d90a63070c32"><span class="id" title="notation">`</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#82d810f9f90b79e8fe98d90a63070c32"><span class="id" title="notation">_i</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="coef_rVpoly"><span class="id" title="lemma">coef_rVpoly</span></a> <span class="id" title="var">v</span> <span class="id" title="var">k</span> : <a class="idref" href="mathcomp.algebra.ssralg.html#82d810f9f90b79e8fe98d90a63070c32"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.mxpoly.html#rVpoly"><span class="id" title="definition">rVpoly</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#v"><span class="id" title="variable">v</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#82d810f9f90b79e8fe98d90a63070c32"><span class="id" title="notation">)`</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#82d810f9f90b79e8fe98d90a63070c32"><span class="id" title="notation">_k</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#6cd0f7b28b6092304087c7049437bb1a"><span class="id" title="notation">=</span></a> <span class="id" title="keyword">if</span> <a class="idref" href="mathcomp.ssreflect.eqtype.html#insub"><span class="id" title="definition">insub</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#k"><span class="id" title="variable">k</span></a> <span class="id" title="keyword">is</span> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Datatypes.html#Some"><span class="id" title="constructor">Some</span></a> <span class="id" title="var">i</span> <span class="id" title="keyword">then</span> <a class="idref" href="mathcomp.algebra.mxpoly.html#v"><span class="id" title="variable">v</span></a> 0 <span class="id" title="var">i</span> <span class="id" title="keyword">else</span> 0.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="coef_rVpoly_ord"><span class="id" title="lemma">coef_rVpoly_ord</span></a> <span class="id" title="var">v</span> (<span class="id" title="var">i</span> : <a class="idref" href="mathcomp.ssreflect.fintype.html#545d9d6249a673300f950a2a8b8a930b"><span class="id" title="notation">'</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#545d9d6249a673300f950a2a8b8a930b"><span class="id" title="notation">I_d</span></a>) : <a class="idref" href="mathcomp.algebra.ssralg.html#82d810f9f90b79e8fe98d90a63070c32"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.mxpoly.html#rVpoly"><span class="id" title="definition">rVpoly</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#v"><span class="id" title="variable">v</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#82d810f9f90b79e8fe98d90a63070c32"><span class="id" title="notation">)`</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#82d810f9f90b79e8fe98d90a63070c32"><span class="id" title="notation">_i</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#6cd0f7b28b6092304087c7049437bb1a"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#v"><span class="id" title="variable">v</span></a> 0 <a class="idref" href="mathcomp.algebra.mxpoly.html#i"><span class="id" title="variable">i</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="rVpoly_delta"><span class="id" title="lemma">rVpoly_delta</span></a> <span class="id" title="var">i</span> : <a class="idref" href="mathcomp.algebra.mxpoly.html#rVpoly"><span class="id" title="definition">rVpoly</span></a> (<a class="idref" href="mathcomp.algebra.matrix.html#delta_mx"><span class="id" title="definition">delta_mx</span></a> 0 <a class="idref" href="mathcomp.algebra.mxpoly.html#i"><span class="id" title="variable">i</span></a>) <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#6cd0f7b28b6092304087c7049437bb1a"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.poly.html#e809881bcf0cc80f806c17b9ef433187"><span class="id" title="notation">'</span></a><a class="idref" href="mathcomp.algebra.poly.html#e809881bcf0cc80f806c17b9ef433187"><span class="id" title="notation">X</span></a><a class="idref" href="mathcomp.algebra.poly.html#e809881bcf0cc80f806c17b9ef433187"><span class="id" title="notation">^</span></a><a class="idref" href="mathcomp.algebra.mxpoly.html#i"><span class="id" title="variable">i</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="rVpolyK"><span class="id" title="lemma">rVpolyK</span></a> : <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#cancel"><span class="id" title="definition">cancel</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#rVpoly"><span class="id" title="definition">rVpoly</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#poly_rV"><span class="id" title="definition">poly_rV</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="poly_rV_K"><span class="id" title="lemma">poly_rV_K</span></a> <span class="id" title="var">p</span> : <a class="idref" href="mathcomp.ssreflect.seq.html#size"><span class="id" title="definition">size</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#p"><span class="id" title="variable">p</span></a> <a class="idref" href="mathcomp.ssreflect.ssrnat.html#cb53cf0ee22c036a03b4a9281c68b5a3"><span class="id" title="notation">≤</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#RowPoly.d"><span class="id" title="variable">d</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#1c93e43e07fbeaeb6a625cb6614beb5d"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#rVpoly"><span class="id" title="definition">rVpoly</span></a> (<a class="idref" href="mathcomp.algebra.mxpoly.html#poly_rV"><span class="id" title="definition">poly_rV</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#p"><span class="id" title="variable">p</span></a>) <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#6cd0f7b28b6092304087c7049437bb1a"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#p"><span class="id" title="variable">p</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="poly_rV_is_linear"><span class="id" title="lemma">poly_rV_is_linear</span></a> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Linear.Exports.linear"><span class="id" title="abbreviation">linear</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#poly_rV"><span class="id" title="definition">poly_rV</span></a>.<br/> - <span class="id" title="keyword">Canonical</span> <span class="id" title="var">poly_rV_additive</span> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Additive.Exports.Additive"><span class="id" title="abbreviation">Additive</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#poly_rV_is_linear"><span class="id" title="lemma">poly_rV_is_linear</span></a>.<br/> -<span class="id" title="keyword">Canonical</span> <span class="id" title="var">poly_rV_linear</span> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Linear.Exports.Linear"><span class="id" title="abbreviation">Linear</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#poly_rV_is_linear"><span class="id" title="lemma">poly_rV_is_linear</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="rVpoly_is_linear"><span class="id" title="lemma">rVpoly_is_linear</span></a> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Linear.Exports.linear"><span class="id" title="abbreviation">linear</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#rVpoly"><span class="id" title="definition">rVpoly</span></a>.<br/> -<span class="id" title="keyword">Canonical</span> <span class="id" title="var">rVpoly_additive</span> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Additive.Exports.Additive"><span class="id" title="abbreviation">Additive</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#rVpoly_is_linear"><span class="id" title="lemma">rVpoly_is_linear</span></a>.<br/> -<span class="id" title="keyword">Canonical</span> <span class="id" title="var">rVpoly_linear</span> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Linear.Exports.Linear"><span class="id" title="abbreviation">Linear</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#rVpoly_is_linear"><span class="id" title="lemma">rVpoly_is_linear</span></a>.<br/> - -<br/> -<span class="id" title="keyword">End</span> <a class="idref" href="mathcomp.algebra.mxpoly.html#RowPoly"><span class="id" title="section">RowPoly</span></a>.<br/> - -<br/> - -<br/> -<span class="id" title="keyword">Section</span> <a name="Resultant"><span class="id" title="section">Resultant</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Variables</span> (<a name="Resultant.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="Resultant.p"><span class="id" title="variable">p</span></a> <a name="Resultant.q"><span class="id" title="variable">q</span></a> : <a class="idref" href="mathcomp.algebra.poly.html#c2ef4fdf7ae62c36654f85f0d2a6c874"><span class="id" title="notation">{</span></a><a class="idref" href="mathcomp.algebra.poly.html#c2ef4fdf7ae62c36654f85f0d2a6c874"><span class="id" title="notation">poly</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#R"><span class="id" title="variable">R</span></a><a class="idref" href="mathcomp.algebra.poly.html#c2ef4fdf7ae62c36654f85f0d2a6c874"><span class="id" title="notation">}</span></a>).<br/> - -<br/> -<span class="id" title="keyword">Let</span> <a name="Resultant.dS"><span class="id" title="variable">dS</span></a> := (<a class="idref" href="mathcomp.ssreflect.ssrnat.html#f953bf7095e0da1cb644443fd0e17d6d"><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.mxpoly.html#Resultant.q"><span class="id" title="variable">q</span></a><a class="idref" href="mathcomp.ssreflect.ssrnat.html#f953bf7095e0da1cb644443fd0e17d6d"><span class="id" title="notation">).-1</span></a> <a class="idref" href="mathcomp.ssreflect.ssrnat.html#0dacc1786c5ba797d47dd85006231633"><span class="id" title="notation">+</span></a> <a class="idref" href="mathcomp.ssreflect.ssrnat.html#f953bf7095e0da1cb644443fd0e17d6d"><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.mxpoly.html#Resultant.p"><span class="id" title="variable">p</span></a><a class="idref" href="mathcomp.ssreflect.ssrnat.html#f953bf7095e0da1cb644443fd0e17d6d"><span class="id" title="notation">).-1</span></a>)%<span class="id" title="var">N</span>.<br/> - -<br/> -<span class="id" title="keyword">Definition</span> <a name="Sylvester_mx"><span class="id" title="definition">Sylvester_mx</span></a> : <a class="idref" href="mathcomp.algebra.matrix.html#60bd2bc9fb9187afe5d7f780c1576e3c"><span class="id" title="notation">'</span></a><a class="idref" href="mathcomp.algebra.matrix.html#60bd2bc9fb9187afe5d7f780c1576e3c"><span class="id" title="notation">M</span></a><a class="idref" href="mathcomp.algebra.matrix.html#60bd2bc9fb9187afe5d7f780c1576e3c"><span class="id" title="notation">[</span></a><a class="idref" href="mathcomp.algebra.mxpoly.html#Resultant.R"><span class="id" title="variable">R</span></a><a class="idref" href="mathcomp.algebra.matrix.html#60bd2bc9fb9187afe5d7f780c1576e3c"><span class="id" title="notation">]</span></a><a class="idref" href="mathcomp.algebra.matrix.html#60bd2bc9fb9187afe5d7f780c1576e3c"><span class="id" title="notation">_dS</span></a> := <a class="idref" href="mathcomp.algebra.matrix.html#col_mx"><span class="id" title="definition">col_mx</span></a> (<a class="idref" href="mathcomp.algebra.mxpoly.html#band"><span class="id" title="abbreviation">band</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#Resultant.p"><span class="id" title="variable">p</span></a>) (<a class="idref" href="mathcomp.algebra.mxpoly.html#band"><span class="id" title="abbreviation">band</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#Resultant.q"><span class="id" title="variable">q</span></a>).<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="Sylvester_mxE"><span class="id" title="lemma">Sylvester_mxE</span></a> (<span class="id" title="var">i</span> <span class="id" title="var">j</span> : <a class="idref" href="mathcomp.ssreflect.fintype.html#545d9d6249a673300f950a2a8b8a930b"><span class="id" title="notation">'</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#545d9d6249a673300f950a2a8b8a930b"><span class="id" title="notation">I_dS</span></a>) :<br/> - <span class="id" title="keyword">let</span> <span class="id" title="var">S_</span> <span class="id" title="var">r</span> <span class="id" title="var">k</span> := <a class="idref" href="mathcomp.algebra.mxpoly.html#r"><span class="id" title="variable">r</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#82d810f9f90b79e8fe98d90a63070c32"><span class="id" title="notation">`</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#82d810f9f90b79e8fe98d90a63070c32"><span class="id" title="notation">_</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#82d810f9f90b79e8fe98d90a63070c32"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.mxpoly.html#j"><span class="id" title="variable">j</span></a> <a class="idref" href="mathcomp.ssreflect.ssrnat.html#7825ccc99f23b0d30c9d40c317ba7af0"><span class="id" title="notation">-</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#k"><span class="id" title="variable">k</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#82d810f9f90b79e8fe98d90a63070c32"><span class="id" title="notation">)</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#e9001f602764f7896bb1eb34bf606a23"><span class="id" title="notation">*+</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#e9001f602764f7896bb1eb34bf606a23"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.mxpoly.html#k"><span class="id" title="variable">k</span></a> <a class="idref" href="mathcomp.ssreflect.ssrnat.html#cb53cf0ee22c036a03b4a9281c68b5a3"><span class="id" title="notation">≤</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#j"><span class="id" title="variable">j</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#e9001f602764f7896bb1eb34bf606a23"><span class="id" title="notation">)</span></a> <span class="id" title="tactic">in</span><br/> - <a class="idref" href="mathcomp.algebra.mxpoly.html#Sylvester_mx"><span class="id" title="definition">Sylvester_mx</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#i"><span class="id" title="variable">i</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#j"><span class="id" title="variable">j</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#6cd0f7b28b6092304087c7049437bb1a"><span class="id" title="notation">=</span></a> <span class="id" title="keyword">match</span> <a class="idref" href="mathcomp.ssreflect.fintype.html#split"><span class="id" title="definition">split</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#i"><span class="id" title="variable">i</span></a> <span class="id" title="keyword">with</span> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Datatypes.html#inl"><span class="id" title="constructor">inl</span></a> <span class="id" title="var">k</span> ⇒ <a class="idref" href="mathcomp.algebra.mxpoly.html#S_"><span class="id" title="variable">S_</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#Resultant.p"><span class="id" title="variable">p</span></a> <span class="id" title="var">k</span> | <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Datatypes.html#inr"><span class="id" title="constructor">inr</span></a> <span class="id" title="var">k</span> ⇒ <a class="idref" href="mathcomp.algebra.mxpoly.html#S_"><span class="id" title="variable">S_</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#Resultant.q"><span class="id" title="variable">q</span></a> <span class="id" title="var">k</span> <span class="id" title="keyword">end</span>.<br/> - -<br/> -<span class="id" title="keyword">Definition</span> <a name="resultant"><span class="id" title="definition">resultant</span></a> := <a class="idref" href="mathcomp.algebra.matrix.html#6b0b476e80941db501b42be981d1cdf0"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.algebra.matrix.html#6b0b476e80941db501b42be981d1cdf0"><span class="id" title="notation">det</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#Sylvester_mx"><span class="id" title="definition">Sylvester_mx</span></a>.<br/> - -<br/> -<span class="id" title="keyword">End</span> <a class="idref" href="mathcomp.algebra.mxpoly.html#Resultant"><span class="id" title="section">Resultant</span></a>.<br/> - -<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="resultant_in_ideal"><span class="id" title="lemma">resultant_in_ideal</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">p</span> <span class="id" title="var">q</span> : <a class="idref" href="mathcomp.algebra.poly.html#c2ef4fdf7ae62c36654f85f0d2a6c874"><span class="id" title="notation">{</span></a><a class="idref" href="mathcomp.algebra.poly.html#c2ef4fdf7ae62c36654f85f0d2a6c874"><span class="id" title="notation">poly</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#R"><span class="id" title="variable">R</span></a><a class="idref" href="mathcomp.algebra.poly.html#c2ef4fdf7ae62c36654f85f0d2a6c874"><span class="id" title="notation">}</span></a>) :<br/> - <a class="idref" href="mathcomp.ssreflect.seq.html#size"><span class="id" title="definition">size</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#p"><span class="id" title="variable">p</span></a> <a class="idref" href="mathcomp.ssreflect.ssrnat.html#7f2a7ef2c63af7359b22787a9daf336e"><span class="id" title="notation">></span></a> 1 <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#1c93e43e07fbeaeb6a625cb6614beb5d"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#size"><span class="id" title="definition">size</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#q"><span class="id" title="variable">q</span></a> <a class="idref" href="mathcomp.ssreflect.ssrnat.html#7f2a7ef2c63af7359b22787a9daf336e"><span class="id" title="notation">></span></a> 1 <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#1c93e43e07fbeaeb6a625cb6614beb5d"><span class="id" title="notation">→</span></a><br/> - <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Specif.html#f92718946b2f68c8f7100be4d6b45f82"><span class="id" title="notation">{</span></a><span class="id" title="var">uv</span> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Specif.html#f92718946b2f68c8f7100be4d6b45f82"><span class="id" title="notation">:</span></a> <a class="idref" href="mathcomp.algebra.poly.html#c2ef4fdf7ae62c36654f85f0d2a6c874"><span class="id" title="notation">{</span></a><a class="idref" href="mathcomp.algebra.poly.html#c2ef4fdf7ae62c36654f85f0d2a6c874"><span class="id" title="notation">poly</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#R"><span class="id" title="variable">R</span></a><a class="idref" href="mathcomp.algebra.poly.html#c2ef4fdf7ae62c36654f85f0d2a6c874"><span class="id" title="notation">}</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Datatypes.html#11c698c8685bb8ab1cf725545c085ac4"><span class="id" title="notation">×</span></a> <a class="idref" href="mathcomp.algebra.poly.html#c2ef4fdf7ae62c36654f85f0d2a6c874"><span class="id" title="notation">{</span></a><a class="idref" href="mathcomp.algebra.poly.html#c2ef4fdf7ae62c36654f85f0d2a6c874"><span class="id" title="notation">poly</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#R"><span class="id" title="variable">R</span></a><a class="idref" href="mathcomp.algebra.poly.html#c2ef4fdf7ae62c36654f85f0d2a6c874"><span class="id" title="notation">}</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Specif.html#f92718946b2f68c8f7100be4d6b45f82"><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.mxpoly.html#uv"><span class="id" title="variable">uv</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#e0817251e7d67ad994b4d9b1aa82a412"><span class="id" title="notation">.1</span></a> <a class="idref" href="mathcomp.ssreflect.ssrnat.html#00fe0eaf5e6949f0a31725357afa4bba"><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.mxpoly.html#q"><span class="id" title="variable">q</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#ba2b0e492d2b4675a0acf3ea92aabadd"><span class="id" title="notation">∧</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#size"><span class="id" title="definition">size</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#uv"><span class="id" title="variable">uv</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#675082cc4d4538da052b547bdc6ea4c9"><span class="id" title="notation">.2</span></a> <a class="idref" href="mathcomp.ssreflect.ssrnat.html#00fe0eaf5e6949f0a31725357afa4bba"><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.mxpoly.html#p"><span class="id" title="variable">p</span></a><br/> - <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Specif.html#f92718946b2f68c8f7100be4d6b45f82"><span class="id" title="notation">&</span></a> <a class="idref" href="mathcomp.algebra.poly.html#8b14e41ab5fcce2460b8672da1456d67"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.mxpoly.html#resultant"><span class="id" title="definition">resultant</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#p"><span class="id" title="variable">p</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#q"><span class="id" title="variable">q</span></a><a class="idref" href="mathcomp.algebra.poly.html#8b14e41ab5fcce2460b8672da1456d67"><span class="id" title="notation">)%:</span></a><a class="idref" href="mathcomp.algebra.poly.html#8b14e41ab5fcce2460b8672da1456d67"><span class="id" title="notation">P</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#6cd0f7b28b6092304087c7049437bb1a"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#uv"><span class="id" title="variable">uv</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#e0817251e7d67ad994b4d9b1aa82a412"><span class="id" title="notation">.1</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#2d0cfb150261028f4ebd2ba355623dcc"><span class="id" title="notation">×</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#p"><span class="id" title="variable">p</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#c7f78cf1f6a5e4f664654f7d671ca752"><span class="id" title="notation">+</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#uv"><span class="id" title="variable">uv</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#675082cc4d4538da052b547bdc6ea4c9"><span class="id" title="notation">.2</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#2d0cfb150261028f4ebd2ba355623dcc"><span class="id" title="notation">×</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#q"><span class="id" title="variable">q</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Specif.html#f92718946b2f68c8f7100be4d6b45f82"><span class="id" title="notation">}</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="resultant_eq0"><span class="id" title="lemma">resultant_eq0</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">p</span> <span class="id" title="var">q</span> : <a class="idref" href="mathcomp.algebra.poly.html#c2ef4fdf7ae62c36654f85f0d2a6c874"><span class="id" title="notation">{</span></a><a class="idref" href="mathcomp.algebra.poly.html#c2ef4fdf7ae62c36654f85f0d2a6c874"><span class="id" title="notation">poly</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#R"><span class="id" title="variable">R</span></a><a class="idref" href="mathcomp.algebra.poly.html#c2ef4fdf7ae62c36654f85f0d2a6c874"><span class="id" title="notation">}</span></a>) :<br/> - <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#6cd0f7b28b6092304087c7049437bb1a"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.mxpoly.html#resultant"><span class="id" title="definition">resultant</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#p"><span class="id" title="variable">p</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#q"><span class="id" title="variable">q</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#df45e8c2e8370fd4f0f7c4fdaf208180"><span class="id" title="notation">==</span></a> 0<a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#6cd0f7b28b6092304087c7049437bb1a"><span class="id" title="notation">)</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#6cd0f7b28b6092304087c7049437bb1a"><span class="id" title="notation">=</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#6cd0f7b28b6092304087c7049437bb1a"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.ssreflect.seq.html#size"><span class="id" title="definition">size</span></a> (<a class="idref" href="mathcomp.algebra.polydiv.html#Pdiv.Idomain.gcdp"><span class="id" title="definition">gcdp</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#p"><span class="id" title="variable">p</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#q"><span class="id" title="variable">q</span></a>) <a class="idref" href="mathcomp.ssreflect.ssrnat.html#7f2a7ef2c63af7359b22787a9daf336e"><span class="id" title="notation">></span></a> 1<a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#6cd0f7b28b6092304087c7049437bb1a"><span class="id" title="notation">)</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Section</span> <a name="HornerMx"><span class="id" title="section">HornerMx</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Variables</span> (<a name="HornerMx.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="HornerMx.n'"><span class="id" title="variable">n'</span></a> : <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Datatypes.html#nat"><span class="id" title="inductive">nat</span></a>).<br/> -<span class="id" title="keyword">Variable</span> <a name="HornerMx.A"><span class="id" title="variable">A</span></a> : <a class="idref" href="mathcomp.algebra.matrix.html#60bd2bc9fb9187afe5d7f780c1576e3c"><span class="id" title="notation">'</span></a><a class="idref" href="mathcomp.algebra.matrix.html#60bd2bc9fb9187afe5d7f780c1576e3c"><span class="id" title="notation">M</span></a><a class="idref" href="mathcomp.algebra.matrix.html#60bd2bc9fb9187afe5d7f780c1576e3c"><span class="id" title="notation">[</span></a><a class="idref" href="mathcomp.algebra.mxpoly.html#HornerMx.R"><span class="id" title="variable">R</span></a><a class="idref" href="mathcomp.algebra.matrix.html#60bd2bc9fb9187afe5d7f780c1576e3c"><span class="id" title="notation">]</span></a><a class="idref" href="mathcomp.algebra.matrix.html#60bd2bc9fb9187afe5d7f780c1576e3c"><span class="id" title="notation">_n</span></a>.<br/> -<span class="id" title="keyword">Implicit</span> <span class="id" title="keyword">Types</span> <span class="id" title="var">p</span> <span class="id" title="var">q</span> : <a class="idref" href="mathcomp.algebra.poly.html#c2ef4fdf7ae62c36654f85f0d2a6c874"><span class="id" title="notation">{</span></a><a class="idref" href="mathcomp.algebra.poly.html#c2ef4fdf7ae62c36654f85f0d2a6c874"><span class="id" title="notation">poly</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#HornerMx.R"><span class="id" title="variable">R</span></a><a class="idref" href="mathcomp.algebra.poly.html#c2ef4fdf7ae62c36654f85f0d2a6c874"><span class="id" title="notation">}</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Definition</span> <a name="horner_mx"><span class="id" title="definition">horner_mx</span></a> := <a class="idref" href="mathcomp.algebra.poly.html#horner_morph"><span class="id" title="definition">horner_morph</span></a> (<span class="id" title="keyword">fun</span> <span class="id" title="var">a</span> ⇒ <a class="idref" href="mathcomp.algebra.matrix.html#scalar_mx_comm"><span class="id" title="lemma">scalar_mx_comm</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#a"><span class="id" title="variable">a</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#HornerMx.A"><span class="id" title="variable">A</span></a>).<br/> -<span class="id" title="keyword">Canonical</span> <span class="id" title="var">horner_mx_additive</span> := <a class="idref" href="mathcomp.algebra.ssralg.html#1f39c3338430de1e4f0dd19d42cfade9"><span class="id" title="notation">[</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#1f39c3338430de1e4f0dd19d42cfade9"><span class="id" title="notation">additive</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#1f39c3338430de1e4f0dd19d42cfade9"><span class="id" title="notation">of</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#horner_mx"><span class="id" title="definition">horner_mx</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#1f39c3338430de1e4f0dd19d42cfade9"><span class="id" title="notation">]</span></a>.<br/> -<span class="id" title="keyword">Canonical</span> <span class="id" title="var">horner_mx_rmorphism</span> := <a class="idref" href="mathcomp.algebra.ssralg.html#f59994a9f1c6ff43f3de0a3cea89bb6b"><span class="id" title="notation">[</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#f59994a9f1c6ff43f3de0a3cea89bb6b"><span class="id" title="notation">rmorphism</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#f59994a9f1c6ff43f3de0a3cea89bb6b"><span class="id" title="notation">of</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#horner_mx"><span class="id" title="definition">horner_mx</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#f59994a9f1c6ff43f3de0a3cea89bb6b"><span class="id" title="notation">]</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="horner_mx_C"><span class="id" title="lemma">horner_mx_C</span></a> <span class="id" title="var">a</span> : <a class="idref" href="mathcomp.algebra.mxpoly.html#horner_mx"><span class="id" title="definition">horner_mx</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#a"><span class="id" title="variable">a</span></a><a class="idref" href="mathcomp.algebra.poly.html#8b14e41ab5fcce2460b8672da1456d67"><span class="id" title="notation">%:</span></a><a class="idref" href="mathcomp.algebra.poly.html#8b14e41ab5fcce2460b8672da1456d67"><span class="id" title="notation">P</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#6cd0f7b28b6092304087c7049437bb1a"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#a"><span class="id" title="variable">a</span></a><a class="idref" href="mathcomp.algebra.matrix.html#850c060d75891e97ece38bfec139b8ea"><span class="id" title="notation">%:</span></a><a class="idref" href="mathcomp.algebra.matrix.html#850c060d75891e97ece38bfec139b8ea"><span class="id" title="notation">M</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="horner_mx_X"><span class="id" title="lemma">horner_mx_X</span></a> : <a class="idref" href="mathcomp.algebra.mxpoly.html#horner_mx"><span class="id" title="definition">horner_mx</span></a> <a class="idref" href="mathcomp.algebra.poly.html#dc2ed3a32abac1baa27cfc93ddc4e844"><span class="id" title="notation">'</span></a><a class="idref" href="mathcomp.algebra.poly.html#dc2ed3a32abac1baa27cfc93ddc4e844"><span class="id" title="notation">X</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#6cd0f7b28b6092304087c7049437bb1a"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#HornerMx.A"><span class="id" title="variable">A</span></a>. <br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="horner_mxZ"><span class="id" title="lemma">horner_mxZ</span></a> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Linear.Exports.scalable"><span class="id" title="abbreviation">scalable</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#horner_mx"><span class="id" title="definition">horner_mx</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Canonical</span> <span class="id" title="var">horner_mx_linear</span> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Linear.Exports.AddLinear"><span class="id" title="abbreviation">AddLinear</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#horner_mxZ"><span class="id" title="lemma">horner_mxZ</span></a>.<br/> -<span class="id" title="keyword">Canonical</span> <span class="id" title="var">horner_mx_lrmorphism</span> := <a class="idref" href="mathcomp.algebra.ssralg.html#d17433407f88fd9a1e0740e2eddd6566"><span class="id" title="notation">[</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#d17433407f88fd9a1e0740e2eddd6566"><span class="id" title="notation">lrmorphism</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#d17433407f88fd9a1e0740e2eddd6566"><span class="id" title="notation">of</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#horner_mx"><span class="id" title="definition">horner_mx</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#d17433407f88fd9a1e0740e2eddd6566"><span class="id" title="notation">]</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Definition</span> <a name="powers_mx"><span class="id" title="definition">powers_mx</span></a> <span class="id" title="var">d</span> := <a class="idref" href="mathcomp.algebra.matrix.html#8741a4b06f31c1d83a8c7654b1254f7b"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.algebra.matrix.html#8741a4b06f31c1d83a8c7654b1254f7b"><span class="id" title="notation">matrix_</span></a><a class="idref" href="mathcomp.algebra.matrix.html#8741a4b06f31c1d83a8c7654b1254f7b"><span class="id" title="notation">(</span></a><span class="id" title="var">i</span> <a class="idref" href="mathcomp.algebra.matrix.html#8741a4b06f31c1d83a8c7654b1254f7b"><span class="id" title="notation"><</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#d"><span class="id" title="variable">d</span></a><a class="idref" href="mathcomp.algebra.matrix.html#8741a4b06f31c1d83a8c7654b1254f7b"><span class="id" title="notation">)</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#mxvec"><span class="id" title="definition">mxvec</span></a> (<a class="idref" href="mathcomp.algebra.mxpoly.html#HornerMx.A"><span class="id" title="variable">A</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#663140372ac3b275aae871b74b140513"><span class="id" title="notation">^+</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#i"><span class="id" title="variable">i</span></a>).<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="horner_rVpoly"><span class="id" title="lemma">horner_rVpoly</span></a> <span class="id" title="var">m</span> (<span class="id" title="var">u</span> : <a class="idref" href="mathcomp.algebra.matrix.html#2f65cfd766dcf020894d753750ad1a23"><span class="id" title="notation">'</span></a><a class="idref" href="mathcomp.algebra.matrix.html#2f65cfd766dcf020894d753750ad1a23"><span class="id" title="notation">rV_m</span></a>) :<br/> - <a class="idref" href="mathcomp.algebra.mxpoly.html#horner_mx"><span class="id" title="definition">horner_mx</span></a> (<a class="idref" href="mathcomp.algebra.mxpoly.html#rVpoly"><span class="id" title="definition">rVpoly</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#u"><span class="id" title="variable">u</span></a>) <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#6cd0f7b28b6092304087c7049437bb1a"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#vec_mx"><span class="id" title="definition">vec_mx</span></a> (<a class="idref" href="mathcomp.algebra.mxpoly.html#u"><span class="id" title="variable">u</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#b2b431de65e6c1e23c1ae3a60262ea15"><span class="id" title="notation">×</span></a><a class="idref" href="mathcomp.algebra.matrix.html#b2b431de65e6c1e23c1ae3a60262ea15"><span class="id" title="notation">m</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#powers_mx"><span class="id" title="definition">powers_mx</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#m"><span class="id" title="variable">m</span></a>).<br/> - -<br/> -<span class="id" title="keyword">End</span> <a class="idref" href="mathcomp.algebra.mxpoly.html#HornerMx"><span class="id" title="section">HornerMx</span></a>.<br/> - -<br/> - -<br/> -<span class="id" title="keyword">Section</span> <a name="CharPoly"><span class="id" title="section">CharPoly</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Variables</span> (<a name="CharPoly.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="CharPoly.n"><span class="id" title="variable">n</span></a> : <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Datatypes.html#nat"><span class="id" title="inductive">nat</span></a>) (<a name="CharPoly.A"><span class="id" title="variable">A</span></a> : <a class="idref" href="mathcomp.algebra.matrix.html#60bd2bc9fb9187afe5d7f780c1576e3c"><span class="id" title="notation">'</span></a><a class="idref" href="mathcomp.algebra.matrix.html#60bd2bc9fb9187afe5d7f780c1576e3c"><span class="id" title="notation">M</span></a><a class="idref" href="mathcomp.algebra.matrix.html#60bd2bc9fb9187afe5d7f780c1576e3c"><span class="id" title="notation">[</span></a><a class="idref" href="mathcomp.algebra.mxpoly.html#R"><span class="id" title="variable">R</span></a><a class="idref" href="mathcomp.algebra.matrix.html#60bd2bc9fb9187afe5d7f780c1576e3c"><span class="id" title="notation">]</span></a><a class="idref" href="mathcomp.algebra.matrix.html#60bd2bc9fb9187afe5d7f780c1576e3c"><span class="id" title="notation">_n</span></a>).<br/> -<span class="id" title="keyword">Implicit</span> <span class="id" title="keyword">Types</span> <span class="id" title="var">p</span> <span class="id" title="var">q</span> : <a class="idref" href="mathcomp.algebra.poly.html#c2ef4fdf7ae62c36654f85f0d2a6c874"><span class="id" title="notation">{</span></a><a class="idref" href="mathcomp.algebra.poly.html#c2ef4fdf7ae62c36654f85f0d2a6c874"><span class="id" title="notation">poly</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#CharPoly.R"><span class="id" title="variable">R</span></a><a class="idref" href="mathcomp.algebra.poly.html#c2ef4fdf7ae62c36654f85f0d2a6c874"><span class="id" title="notation">}</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Definition</span> <a name="char_poly_mx"><span class="id" title="definition">char_poly_mx</span></a> := <a class="idref" href="mathcomp.algebra.poly.html#dc2ed3a32abac1baa27cfc93ddc4e844"><span class="id" title="notation">'</span></a><a class="idref" href="mathcomp.algebra.poly.html#dc2ed3a32abac1baa27cfc93ddc4e844"><span class="id" title="notation">X</span></a><a class="idref" href="mathcomp.algebra.matrix.html#850c060d75891e97ece38bfec139b8ea"><span class="id" title="notation">%:</span></a><a class="idref" href="mathcomp.algebra.matrix.html#850c060d75891e97ece38bfec139b8ea"><span class="id" title="notation">M</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#51dc792c356ca1a71a3094b50d6bb2fb"><span class="id" title="notation">-</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#map_mx"><span class="id" title="definition">map_mx</span></a> (@<a class="idref" href="mathcomp.algebra.poly.html#polyC"><span class="id" title="definition">polyC</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#CharPoly.R"><span class="id" title="variable">R</span></a>) <a class="idref" href="mathcomp.algebra.mxpoly.html#CharPoly.A"><span class="id" title="variable">A</span></a>.<br/> -<span class="id" title="keyword">Definition</span> <a name="char_poly"><span class="id" title="definition">char_poly</span></a> := <a class="idref" href="mathcomp.algebra.matrix.html#6b0b476e80941db501b42be981d1cdf0"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.algebra.matrix.html#6b0b476e80941db501b42be981d1cdf0"><span class="id" title="notation">det</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#char_poly_mx"><span class="id" title="definition">char_poly_mx</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Let</span> <a name="CharPoly.diagA"><span class="id" title="variable">diagA</span></a> := <a class="idref" href="mathcomp.ssreflect.fintype.html#2ea807d068496425ebd93f2c454c8460"><span class="id" title="notation">[</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#2ea807d068496425ebd93f2c454c8460"><span class="id" title="notation">seq</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#CharPoly.A"><span class="id" title="variable">A</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#i"><span class="id" title="variable">i</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#i"><span class="id" title="variable">i</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#2ea807d068496425ebd93f2c454c8460"><span class="id" title="notation">|</span></a> <span class="id" title="var">i</span> <a class="idref" href="mathcomp.ssreflect.fintype.html#2ea807d068496425ebd93f2c454c8460"><span class="id" title="notation">:</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#545d9d6249a673300f950a2a8b8a930b"><span class="id" title="notation">'</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#545d9d6249a673300f950a2a8b8a930b"><span class="id" title="notation">I_n</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#2ea807d068496425ebd93f2c454c8460"><span class="id" title="notation">]</span></a>.<br/> -<span class="id" title="keyword">Let</span> <a name="CharPoly.size_diagA"><span class="id" title="variable">size_diagA</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.mxpoly.html#CharPoly.diagA"><span class="id" title="variable">diagA</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#6cd0f7b28b6092304087c7049437bb1a"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#CharPoly.n"><span class="id" title="variable">n</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Let</span> <a name="CharPoly.split_diagA"><span class="id" title="variable">split_diagA</span></a> :<br/> - <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#3df228c109f14f0423b4fccc967ee1ac"><span class="id" title="notation">exists2</span></a> <span class="id" title="var">q</span><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#3df228c109f14f0423b4fccc967ee1ac"><span class="id" title="notation">,</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#20f16c1d55d1e4ca9bb0e0513dd4b06a"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#20f16c1d55d1e4ca9bb0e0513dd4b06a"><span class="id" title="notation">prod_</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#20f16c1d55d1e4ca9bb0e0513dd4b06a"><span class="id" title="notation">(</span></a><span class="id" title="var">x</span> <a class="idref" href="mathcomp.algebra.ssralg.html#20f16c1d55d1e4ca9bb0e0513dd4b06a"><span class="id" title="notation"><-</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#CharPoly.diagA"><span class="id" title="variable">diagA</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#20f16c1d55d1e4ca9bb0e0513dd4b06a"><span class="id" title="notation">)</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#20f16c1d55d1e4ca9bb0e0513dd4b06a"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.poly.html#dc2ed3a32abac1baa27cfc93ddc4e844"><span class="id" title="notation">'</span></a><a class="idref" href="mathcomp.algebra.poly.html#dc2ed3a32abac1baa27cfc93ddc4e844"><span class="id" title="notation">X</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#51dc792c356ca1a71a3094b50d6bb2fb"><span class="id" title="notation">-</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#x"><span class="id" title="variable">x</span></a><a class="idref" href="mathcomp.algebra.poly.html#8b14e41ab5fcce2460b8672da1456d67"><span class="id" title="notation">%:</span></a><a class="idref" href="mathcomp.algebra.poly.html#8b14e41ab5fcce2460b8672da1456d67"><span class="id" title="notation">P</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#20f16c1d55d1e4ca9bb0e0513dd4b06a"><span class="id" title="notation">)</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#c7f78cf1f6a5e4f664654f7d671ca752"><span class="id" title="notation">+</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#q"><span class="id" title="variable">q</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#6cd0f7b28b6092304087c7049437bb1a"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#char_poly"><span class="id" title="definition">char_poly</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#3df228c109f14f0423b4fccc967ee1ac"><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.mxpoly.html#q"><span class="id" title="variable">q</span></a> <a class="idref" href="mathcomp.ssreflect.ssrnat.html#cb53cf0ee22c036a03b4a9281c68b5a3"><span class="id" title="notation">≤</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#CharPoly.n"><span class="id" title="variable">n</span></a><a class="idref" href="mathcomp.ssreflect.ssrnat.html#f953bf7095e0da1cb644443fd0e17d6d"><span class="id" title="notation">.-1</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="size_char_poly"><span class="id" title="lemma">size_char_poly</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.mxpoly.html#char_poly"><span class="id" title="definition">char_poly</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#6cd0f7b28b6092304087c7049437bb1a"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#CharPoly.n"><span class="id" title="variable">n</span></a><a class="idref" href="mathcomp.ssreflect.ssrnat.html#bda89d73ec4a8f23ae92b565ffb5aaa6"><span class="id" title="notation">.+1</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="char_poly_monic"><span class="id" title="lemma">char_poly_monic</span></a> : <a class="idref" href="mathcomp.algebra.mxpoly.html#char_poly"><span class="id" title="definition">char_poly</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#c94c2df86ca03f22f8f8b739cd7e1e88"><span class="id" title="notation">\</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#c94c2df86ca03f22f8f8b739cd7e1e88"><span class="id" title="notation">is</span></a> <a class="idref" href="mathcomp.algebra.poly.html#monic"><span class="id" title="definition">monic</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="char_poly_trace"><span class="id" title="lemma">char_poly_trace</span></a> : <a class="idref" href="mathcomp.algebra.mxpoly.html#CharPoly.n"><span class="id" title="variable">n</span></a> <a class="idref" href="mathcomp.ssreflect.ssrnat.html#7f2a7ef2c63af7359b22787a9daf336e"><span class="id" title="notation">></span></a> 0 <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#1c93e43e07fbeaeb6a625cb6614beb5d"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#char_poly"><span class="id" title="definition">char_poly</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#82d810f9f90b79e8fe98d90a63070c32"><span class="id" title="notation">`</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#82d810f9f90b79e8fe98d90a63070c32"><span class="id" title="notation">_n</span></a><a class="idref" href="mathcomp.ssreflect.ssrnat.html#f953bf7095e0da1cb644443fd0e17d6d"><span class="id" title="notation">.-1</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#6cd0f7b28b6092304087c7049437bb1a"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#8d0566c961139ec21811f52ef0c317db"><span class="id" title="notation">-</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#055f111b06ebab166375c628a8e0315f"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.algebra.matrix.html#055f111b06ebab166375c628a8e0315f"><span class="id" title="notation">tr</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#CharPoly.A"><span class="id" title="variable">A</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="char_poly_det"><span class="id" title="lemma">char_poly_det</span></a> : <a class="idref" href="mathcomp.algebra.mxpoly.html#char_poly"><span class="id" title="definition">char_poly</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#82d810f9f90b79e8fe98d90a63070c32"><span class="id" title="notation">`</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#82d810f9f90b79e8fe98d90a63070c32"><span class="id" title="notation">_0</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#6cd0f7b28b6092304087c7049437bb1a"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#663140372ac3b275aae871b74b140513"><span class="id" title="notation">(</span></a>- 1<a class="idref" href="mathcomp.algebra.ssralg.html#663140372ac3b275aae871b74b140513"><span class="id" title="notation">)</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#663140372ac3b275aae871b74b140513"><span class="id" title="notation">^+</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#CharPoly.n"><span class="id" title="variable">n</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#2d0cfb150261028f4ebd2ba355623dcc"><span class="id" title="notation">×</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#6b0b476e80941db501b42be981d1cdf0"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.algebra.matrix.html#6b0b476e80941db501b42be981d1cdf0"><span class="id" title="notation">det</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#CharPoly.A"><span class="id" title="variable">A</span></a>.<br/> - -<br/> -<span class="id" title="keyword">End</span> <a class="idref" href="mathcomp.algebra.mxpoly.html#CharPoly"><span class="id" title="section">CharPoly</span></a>.<br/> - -<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="mx_poly_ring_isom"><span class="id" title="lemma">mx_poly_ring_isom</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">n'</span> (<span class="id" title="var">n</span> := <a class="idref" href="mathcomp.algebra.mxpoly.html#n'"><span class="id" title="variable">n'</span></a><a class="idref" href="mathcomp.ssreflect.ssrnat.html#bda89d73ec4a8f23ae92b565ffb5aaa6"><span class="id" title="notation">.+1</span></a>) :<br/> - <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#a883bdd010993579f99d60b3775bcf54"><span class="id" title="notation">∃</span></a> <span class="id" title="var">phi</span> : <a class="idref" href="mathcomp.algebra.ssralg.html#d531732ed602c7af62b88c7cfce824e5"><span class="id" title="notation">{</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#d531732ed602c7af62b88c7cfce824e5"><span class="id" title="notation">rmorphism</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#60bd2bc9fb9187afe5d7f780c1576e3c"><span class="id" title="notation">'</span></a><a class="idref" href="mathcomp.algebra.matrix.html#60bd2bc9fb9187afe5d7f780c1576e3c"><span class="id" title="notation">M</span></a><a class="idref" href="mathcomp.algebra.matrix.html#60bd2bc9fb9187afe5d7f780c1576e3c"><span class="id" title="notation">[</span></a><a class="idref" href="mathcomp.algebra.poly.html#c2ef4fdf7ae62c36654f85f0d2a6c874"><span class="id" title="notation">{</span></a><a class="idref" href="mathcomp.algebra.poly.html#c2ef4fdf7ae62c36654f85f0d2a6c874"><span class="id" title="notation">poly</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#R"><span class="id" title="variable">R</span></a><a class="idref" href="mathcomp.algebra.poly.html#c2ef4fdf7ae62c36654f85f0d2a6c874"><span class="id" title="notation">}</span></a><a class="idref" href="mathcomp.algebra.matrix.html#60bd2bc9fb9187afe5d7f780c1576e3c"><span class="id" title="notation">]</span></a><a class="idref" href="mathcomp.algebra.matrix.html#60bd2bc9fb9187afe5d7f780c1576e3c"><span class="id" title="notation">_n</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#1c93e43e07fbeaeb6a625cb6614beb5d"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.poly.html#c2ef4fdf7ae62c36654f85f0d2a6c874"><span class="id" title="notation">{</span></a><a class="idref" href="mathcomp.algebra.poly.html#c2ef4fdf7ae62c36654f85f0d2a6c874"><span class="id" title="notation">poly</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#60bd2bc9fb9187afe5d7f780c1576e3c"><span class="id" title="notation">'</span></a><a class="idref" href="mathcomp.algebra.matrix.html#60bd2bc9fb9187afe5d7f780c1576e3c"><span class="id" title="notation">M</span></a><a class="idref" href="mathcomp.algebra.matrix.html#60bd2bc9fb9187afe5d7f780c1576e3c"><span class="id" title="notation">[</span></a><a class="idref" href="mathcomp.algebra.mxpoly.html#R"><span class="id" title="variable">R</span></a><a class="idref" href="mathcomp.algebra.matrix.html#60bd2bc9fb9187afe5d7f780c1576e3c"><span class="id" title="notation">]</span></a><a class="idref" href="mathcomp.algebra.matrix.html#60bd2bc9fb9187afe5d7f780c1576e3c"><span class="id" title="notation">_n</span></a><a class="idref" href="mathcomp.algebra.poly.html#c2ef4fdf7ae62c36654f85f0d2a6c874"><span class="id" title="notation">}</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#d531732ed602c7af62b88c7cfce824e5"><span class="id" title="notation">}</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#a883bdd010993579f99d60b3775bcf54"><span class="id" title="notation">,</span></a><br/> - <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#554fc3f3cf0a27fe0863b7741d119014"><span class="id" title="notation">[/\</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#bijective"><span class="id" title="inductive">bijective</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#phi"><span class="id" title="variable">phi</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#554fc3f3cf0a27fe0863b7741d119014"><span class="id" title="notation">,</span></a><br/> - <span class="id" title="keyword">∀</span> <span class="id" title="var">p</span>, <a class="idref" href="mathcomp.algebra.mxpoly.html#phi"><span class="id" title="variable">phi</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#p"><span class="id" title="variable">p</span></a><a class="idref" href="mathcomp.algebra.matrix.html#850c060d75891e97ece38bfec139b8ea"><span class="id" title="notation">%:</span></a><a class="idref" href="mathcomp.algebra.matrix.html#850c060d75891e97ece38bfec139b8ea"><span class="id" title="notation">M</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#6cd0f7b28b6092304087c7049437bb1a"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.poly.html#map_poly"><span class="id" title="definition">map_poly</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#scalar_mx"><span class="id" title="definition">scalar_mx</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#p"><span class="id" title="variable">p</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#554fc3f3cf0a27fe0863b7741d119014"><span class="id" title="notation">,</span></a><br/> - <span class="id" title="keyword">∀</span> <span class="id" title="var">A</span>, <a class="idref" href="mathcomp.algebra.mxpoly.html#phi"><span class="id" title="variable">phi</span></a> (<a class="idref" href="mathcomp.algebra.matrix.html#map_mx"><span class="id" title="definition">map_mx</span></a> <a class="idref" href="mathcomp.algebra.poly.html#polyC"><span class="id" title="definition">polyC</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#A"><span class="id" title="variable">A</span></a>) <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#6cd0f7b28b6092304087c7049437bb1a"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#A"><span class="id" title="variable">A</span></a><a class="idref" href="mathcomp.algebra.poly.html#8b14e41ab5fcce2460b8672da1456d67"><span class="id" title="notation">%:</span></a><a class="idref" href="mathcomp.algebra.poly.html#8b14e41ab5fcce2460b8672da1456d67"><span class="id" title="notation">P</span></a><br/> - <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#554fc3f3cf0a27fe0863b7741d119014"><span class="id" title="notation">&</span></a> <span class="id" title="keyword">∀</span> <span class="id" title="var">A</span> <span class="id" title="var">i</span> <span class="id" title="var">j</span> <span class="id" title="var">k</span>, <a class="idref" href="mathcomp.algebra.ssralg.html#82d810f9f90b79e8fe98d90a63070c32"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.mxpoly.html#phi"><span class="id" title="variable">phi</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#A"><span class="id" title="variable">A</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#82d810f9f90b79e8fe98d90a63070c32"><span class="id" title="notation">)`</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#82d810f9f90b79e8fe98d90a63070c32"><span class="id" title="notation">_k</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#i"><span class="id" title="variable">i</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#j"><span class="id" title="variable">j</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#6cd0f7b28b6092304087c7049437bb1a"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#82d810f9f90b79e8fe98d90a63070c32"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.mxpoly.html#A"><span class="id" title="variable">A</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#i"><span class="id" title="variable">i</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#j"><span class="id" title="variable">j</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#82d810f9f90b79e8fe98d90a63070c32"><span class="id" title="notation">)`</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#82d810f9f90b79e8fe98d90a63070c32"><span class="id" title="notation">_k</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#554fc3f3cf0a27fe0863b7741d119014"><span class="id" title="notation">]</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Theorem</span> <a name="Cayley_Hamilton"><span class="id" title="lemma">Cayley_Hamilton</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">n'</span> (<span class="id" title="var">A</span> : <a class="idref" href="mathcomp.algebra.matrix.html#60bd2bc9fb9187afe5d7f780c1576e3c"><span class="id" title="notation">'</span></a><a class="idref" href="mathcomp.algebra.matrix.html#60bd2bc9fb9187afe5d7f780c1576e3c"><span class="id" title="notation">M</span></a><a class="idref" href="mathcomp.algebra.matrix.html#60bd2bc9fb9187afe5d7f780c1576e3c"><span class="id" title="notation">[</span></a><a class="idref" href="mathcomp.algebra.mxpoly.html#R"><span class="id" title="variable">R</span></a><a class="idref" href="mathcomp.algebra.matrix.html#60bd2bc9fb9187afe5d7f780c1576e3c"><span class="id" title="notation">]</span></a><a class="idref" href="mathcomp.algebra.matrix.html#60bd2bc9fb9187afe5d7f780c1576e3c"><span class="id" title="notation">_n'</span></a><a class="idref" href="mathcomp.ssreflect.ssrnat.html#bda89d73ec4a8f23ae92b565ffb5aaa6"><span class="id" title="notation">.+1</span></a>) :<br/> - <a class="idref" href="mathcomp.algebra.mxpoly.html#horner_mx"><span class="id" title="definition">horner_mx</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#A"><span class="id" title="variable">A</span></a> (<a class="idref" href="mathcomp.algebra.mxpoly.html#char_poly"><span class="id" title="definition">char_poly</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#A"><span class="id" title="variable">A</span></a>) <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#6cd0f7b28b6092304087c7049437bb1a"><span class="id" title="notation">=</span></a> 0.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="eigenvalue_root_char"><span class="id" title="lemma">eigenvalue_root_char</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">n</span> (<span class="id" title="var">A</span> : <a class="idref" href="mathcomp.algebra.matrix.html#60bd2bc9fb9187afe5d7f780c1576e3c"><span class="id" title="notation">'</span></a><a class="idref" href="mathcomp.algebra.matrix.html#60bd2bc9fb9187afe5d7f780c1576e3c"><span class="id" title="notation">M</span></a><a class="idref" href="mathcomp.algebra.matrix.html#60bd2bc9fb9187afe5d7f780c1576e3c"><span class="id" title="notation">[</span></a><a class="idref" href="mathcomp.algebra.mxpoly.html#F"><span class="id" title="variable">F</span></a><a class="idref" href="mathcomp.algebra.matrix.html#60bd2bc9fb9187afe5d7f780c1576e3c"><span class="id" title="notation">]</span></a><a class="idref" href="mathcomp.algebra.matrix.html#60bd2bc9fb9187afe5d7f780c1576e3c"><span class="id" title="notation">_n</span></a>) <span class="id" title="var">a</span> :<br/> - <a class="idref" href="mathcomp.algebra.mxalgebra.html#eigenvalue"><span class="id" title="definition">eigenvalue</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#A"><span class="id" title="variable">A</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#a"><span class="id" title="variable">a</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#6cd0f7b28b6092304087c7049437bb1a"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.poly.html#root"><span class="id" title="definition">root</span></a> (<a class="idref" href="mathcomp.algebra.mxpoly.html#char_poly"><span class="id" title="definition">char_poly</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#A"><span class="id" title="variable">A</span></a>) <a class="idref" href="mathcomp.algebra.mxpoly.html#a"><span class="id" title="variable">a</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Definition</span> <a name="companionmx"><span class="id" title="definition">companionmx</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">p</span> : <a class="idref" href="mathcomp.ssreflect.seq.html#seq"><span class="id" title="abbreviation">seq</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#R"><span class="id" title="variable">R</span></a>) (<span class="id" title="var">d</span> := <a class="idref" href="mathcomp.ssreflect.ssrnat.html#f953bf7095e0da1cb644443fd0e17d6d"><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.mxpoly.html#p"><span class="id" title="variable">p</span></a><a class="idref" href="mathcomp.ssreflect.ssrnat.html#f953bf7095e0da1cb644443fd0e17d6d"><span class="id" title="notation">).-1</span></a>) :=<br/> - <a class="idref" href="mathcomp.algebra.matrix.html#54af16cfdb12c4fc43c97a572906d8b3"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.algebra.matrix.html#54af16cfdb12c4fc43c97a572906d8b3"><span class="id" title="notation">matrix_</span></a><a class="idref" href="mathcomp.algebra.matrix.html#54af16cfdb12c4fc43c97a572906d8b3"><span class="id" title="notation">(</span></a><span class="id" title="var">i</span> <a class="idref" href="mathcomp.algebra.matrix.html#54af16cfdb12c4fc43c97a572906d8b3"><span class="id" title="notation"><</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#d"><span class="id" title="variable">d</span></a><a class="idref" href="mathcomp.algebra.matrix.html#54af16cfdb12c4fc43c97a572906d8b3"><span class="id" title="notation">,</span></a> <span class="id" title="var">j</span> <a class="idref" href="mathcomp.algebra.matrix.html#54af16cfdb12c4fc43c97a572906d8b3"><span class="id" title="notation"><</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#d"><span class="id" title="variable">d</span></a><a class="idref" href="mathcomp.algebra.matrix.html#54af16cfdb12c4fc43c97a572906d8b3"><span class="id" title="notation">)</span></a><br/> - <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssreflect.html#00a1a5b58aac8f1e3f1abff064a39f9d"><span class="id" title="notation">if</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssreflect.html#00a1a5b58aac8f1e3f1abff064a39f9d"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.mxpoly.html#i"><span class="id" title="variable">i</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#28a3089bb29d95d7bdc98c2c73b31552"><span class="id" title="notation">==</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#d"><span class="id" title="variable">d</span></a><a class="idref" href="mathcomp.ssreflect.ssrnat.html#f953bf7095e0da1cb644443fd0e17d6d"><span class="id" title="notation">.-1</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#28a3089bb29d95d7bdc98c2c73b31552"><span class="id" title="notation">:></span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Datatypes.html#nat"><span class="id" title="inductive">nat</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssreflect.html#00a1a5b58aac8f1e3f1abff064a39f9d"><span class="id" title="notation">)</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssreflect.html#00a1a5b58aac8f1e3f1abff064a39f9d"><span class="id" title="notation">then</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#8d0566c961139ec21811f52ef0c317db"><span class="id" title="notation">-</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#p"><span class="id" title="variable">p</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#82d810f9f90b79e8fe98d90a63070c32"><span class="id" title="notation">`</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#82d810f9f90b79e8fe98d90a63070c32"><span class="id" title="notation">_j</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssreflect.html#00a1a5b58aac8f1e3f1abff064a39f9d"><span class="id" title="notation">else</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#6411ed08724033ae48d2865f0380d533"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.mxpoly.html#i"><span class="id" title="variable">i</span></a><a class="idref" href="mathcomp.ssreflect.ssrnat.html#bda89d73ec4a8f23ae92b565ffb5aaa6"><span class="id" title="notation">.+1</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#28a3089bb29d95d7bdc98c2c73b31552"><span class="id" title="notation">==</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#j"><span class="id" title="variable">j</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#28a3089bb29d95d7bdc98c2c73b31552"><span class="id" title="notation">:></span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Datatypes.html#nat"><span class="id" title="inductive">nat</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#6411ed08724033ae48d2865f0380d533"><span class="id" title="notation">)%:</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#6411ed08724033ae48d2865f0380d533"><span class="id" title="notation">R</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="companionmxK"><span class="id" title="lemma">companionmxK</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">p</span> : <a class="idref" href="mathcomp.algebra.poly.html#c2ef4fdf7ae62c36654f85f0d2a6c874"><span class="id" title="notation">{</span></a><a class="idref" href="mathcomp.algebra.poly.html#c2ef4fdf7ae62c36654f85f0d2a6c874"><span class="id" title="notation">poly</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#R"><span class="id" title="variable">R</span></a><a class="idref" href="mathcomp.algebra.poly.html#c2ef4fdf7ae62c36654f85f0d2a6c874"><span class="id" title="notation">}</span></a>) :<br/> - <a class="idref" href="mathcomp.algebra.mxpoly.html#p"><span class="id" title="variable">p</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#c94c2df86ca03f22f8f8b739cd7e1e88"><span class="id" title="notation">\</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#c94c2df86ca03f22f8f8b739cd7e1e88"><span class="id" title="notation">is</span></a> <a class="idref" href="mathcomp.algebra.poly.html#monic"><span class="id" title="definition">monic</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#1c93e43e07fbeaeb6a625cb6614beb5d"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#char_poly"><span class="id" title="definition">char_poly</span></a> (<a class="idref" href="mathcomp.algebra.mxpoly.html#companionmx"><span class="id" title="definition">companionmx</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#p"><span class="id" title="variable">p</span></a>) <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#6cd0f7b28b6092304087c7049437bb1a"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#p"><span class="id" title="variable">p</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="mulmx_delta_companion"><span class="id" title="lemma">mulmx_delta_companion</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">p</span> : <a class="idref" href="mathcomp.ssreflect.seq.html#seq"><span class="id" title="abbreviation">seq</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#R"><span class="id" title="variable">R</span></a>)<br/> - (<span class="id" title="var">i</span>: <a class="idref" href="mathcomp.ssreflect.fintype.html#545d9d6249a673300f950a2a8b8a930b"><span class="id" title="notation">'</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#545d9d6249a673300f950a2a8b8a930b"><span class="id" title="notation">I_</span></a><a class="idref" href="mathcomp.ssreflect.ssrnat.html#f953bf7095e0da1cb644443fd0e17d6d"><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.mxpoly.html#p"><span class="id" title="variable">p</span></a><a class="idref" href="mathcomp.ssreflect.ssrnat.html#f953bf7095e0da1cb644443fd0e17d6d"><span class="id" title="notation">).-1</span></a>) (<span class="id" title="var">i_small</span> : <a class="idref" href="mathcomp.algebra.mxpoly.html#i"><span class="id" title="variable">i</span></a><a class="idref" href="mathcomp.ssreflect.ssrnat.html#bda89d73ec4a8f23ae92b565ffb5aaa6"><span class="id" title="notation">.+1</span></a> <a class="idref" href="mathcomp.ssreflect.ssrnat.html#00fe0eaf5e6949f0a31725357afa4bba"><span class="id" title="notation"><</span></a> <a class="idref" href="mathcomp.ssreflect.ssrnat.html#f953bf7095e0da1cb644443fd0e17d6d"><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.mxpoly.html#p"><span class="id" title="variable">p</span></a><a class="idref" href="mathcomp.ssreflect.ssrnat.html#f953bf7095e0da1cb644443fd0e17d6d"><span class="id" title="notation">).-1</span></a>):<br/> - <a class="idref" href="mathcomp.algebra.matrix.html#delta_mx"><span class="id" title="definition">delta_mx</span></a> 0 <a class="idref" href="mathcomp.algebra.mxpoly.html#i"><span class="id" title="variable">i</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#b2b431de65e6c1e23c1ae3a60262ea15"><span class="id" title="notation">×</span></a><a class="idref" href="mathcomp.algebra.matrix.html#b2b431de65e6c1e23c1ae3a60262ea15"><span class="id" title="notation">m</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#companionmx"><span class="id" title="definition">companionmx</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#p"><span class="id" title="variable">p</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#b8b2ebc8e1a8b9aa935c0702efb5dccf"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#delta_mx"><span class="id" title="definition">delta_mx</span></a> 0 (<a class="idref" href="mathcomp.ssreflect.fintype.html#Ordinal"><span class="id" title="constructor">Ordinal</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#i_small"><span class="id" title="variable">i_small</span></a>) <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#b8b2ebc8e1a8b9aa935c0702efb5dccf"><span class="id" title="notation">:></span></a> <a class="idref" href="mathcomp.algebra.matrix.html#2f65cfd766dcf020894d753750ad1a23"><span class="id" title="notation">'</span></a><a class="idref" href="mathcomp.algebra.matrix.html#2f65cfd766dcf020894d753750ad1a23"><span class="id" title="notation">rV__</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Section</span> <a name="MinPoly"><span class="id" title="section">MinPoly</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Variables</span> (<a name="MinPoly.F"><span class="id" title="variable">F</span></a> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Field.Exports.fieldType"><span class="id" title="abbreviation">fieldType</span></a>) (<a name="MinPoly.n'"><span class="id" title="variable">n'</span></a> : <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Datatypes.html#nat"><span class="id" title="inductive">nat</span></a>).<br/> -<span class="id" title="keyword">Variable</span> <a name="MinPoly.A"><span class="id" title="variable">A</span></a> : <a class="idref" href="mathcomp.algebra.matrix.html#60bd2bc9fb9187afe5d7f780c1576e3c"><span class="id" title="notation">'</span></a><a class="idref" href="mathcomp.algebra.matrix.html#60bd2bc9fb9187afe5d7f780c1576e3c"><span class="id" title="notation">M</span></a><a class="idref" href="mathcomp.algebra.matrix.html#60bd2bc9fb9187afe5d7f780c1576e3c"><span class="id" title="notation">[</span></a><a class="idref" href="mathcomp.algebra.mxpoly.html#MinPoly.F"><span class="id" title="variable">F</span></a><a class="idref" href="mathcomp.algebra.matrix.html#60bd2bc9fb9187afe5d7f780c1576e3c"><span class="id" title="notation">]</span></a><a class="idref" href="mathcomp.algebra.matrix.html#60bd2bc9fb9187afe5d7f780c1576e3c"><span class="id" title="notation">_n</span></a>.<br/> -<span class="id" title="keyword">Implicit</span> <span class="id" title="keyword">Types</span> <span class="id" title="var">p</span> <span class="id" title="var">q</span> : <a class="idref" href="mathcomp.algebra.poly.html#c2ef4fdf7ae62c36654f85f0d2a6c874"><span class="id" title="notation">{</span></a><a class="idref" href="mathcomp.algebra.poly.html#c2ef4fdf7ae62c36654f85f0d2a6c874"><span class="id" title="notation">poly</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#MinPoly.F"><span class="id" title="variable">F</span></a><a class="idref" href="mathcomp.algebra.poly.html#c2ef4fdf7ae62c36654f85f0d2a6c874"><span class="id" title="notation">}</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Fact</span> <a name="degree_mxminpoly_proof"><span class="id" title="lemma">degree_mxminpoly_proof</span></a> : <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#a883bdd010993579f99d60b3775bcf54"><span class="id" title="notation">∃</span></a> <span class="id" title="var">d</span><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#a883bdd010993579f99d60b3775bcf54"><span class="id" title="notation">,</span></a> <a class="idref" href="mathcomp.algebra.mxalgebra.html#b8af73c258a533909a2acba13114d67c"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.algebra.mxalgebra.html#b8af73c258a533909a2acba13114d67c"><span class="id" title="notation">rank</span></a> <a class="idref" href="mathcomp.algebra.mxalgebra.html#b8af73c258a533909a2acba13114d67c"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.mxpoly.html#powers_mx"><span class="id" title="definition">powers_mx</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#MinPoly.A"><span class="id" title="variable">A</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#d"><span class="id" title="variable">d</span></a><a class="idref" href="mathcomp.ssreflect.ssrnat.html#bda89d73ec4a8f23ae92b565ffb5aaa6"><span class="id" title="notation">.+1</span></a><a class="idref" href="mathcomp.algebra.mxalgebra.html#b8af73c258a533909a2acba13114d67c"><span class="id" title="notation">)</span></a> <a class="idref" href="mathcomp.ssreflect.ssrnat.html#cb53cf0ee22c036a03b4a9281c68b5a3"><span class="id" title="notation">≤</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#d"><span class="id" title="variable">d</span></a>.<br/> - <span class="id" title="keyword">Definition</span> <a name="degree_mxminpoly"><span class="id" title="definition">degree_mxminpoly</span></a> := <a class="idref" href="mathcomp.ssreflect.ssrnat.html#ex_minn"><span class="id" title="definition">ex_minn</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#degree_mxminpoly_proof"><span class="id" title="lemma">degree_mxminpoly_proof</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="mxminpoly_nonconstant"><span class="id" title="lemma">mxminpoly_nonconstant</span></a> : <a class="idref" href="mathcomp.algebra.mxpoly.html#d"><span class="id" title="abbreviation">d</span></a> <a class="idref" href="mathcomp.ssreflect.ssrnat.html#7f2a7ef2c63af7359b22787a9daf336e"><span class="id" title="notation">></span></a> 0.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="minpoly_mx1"><span class="id" title="lemma">minpoly_mx1</span></a> : (1<a class="idref" href="mathcomp.algebra.matrix.html#850c060d75891e97ece38bfec139b8ea"><span class="id" title="notation">%:</span></a><a class="idref" href="mathcomp.algebra.matrix.html#850c060d75891e97ece38bfec139b8ea"><span class="id" title="notation">M</span></a> <a class="idref" href="mathcomp.algebra.mxalgebra.html#b07e6617bc8db0b83b350e09f8851b51"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.algebra.mxalgebra.html#b07e6617bc8db0b83b350e09f8851b51"><span class="id" title="notation">in</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#Ad"><span class="id" title="abbreviation">Ad</span></a>)%<span class="id" title="var">MS</span>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="minpoly_mx_free"><span class="id" title="lemma">minpoly_mx_free</span></a> : <a class="idref" href="mathcomp.algebra.mxalgebra.html#row_free"><span class="id" title="definition">row_free</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#Ad"><span class="id" title="abbreviation">Ad</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="horner_mx_mem"><span class="id" title="lemma">horner_mx_mem</span></a> <span class="id" title="var">p</span> : (<a class="idref" href="mathcomp.algebra.mxpoly.html#horner_mx"><span class="id" title="definition">horner_mx</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#MinPoly.A"><span class="id" title="variable">A</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#p"><span class="id" title="variable">p</span></a> <a class="idref" href="mathcomp.algebra.mxalgebra.html#b07e6617bc8db0b83b350e09f8851b51"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.algebra.mxalgebra.html#b07e6617bc8db0b83b350e09f8851b51"><span class="id" title="notation">in</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#Ad"><span class="id" title="abbreviation">Ad</span></a>)%<span class="id" title="var">MS</span>.<br/> - -<br/> -<span class="id" title="keyword">Definition</span> <a name="mx_inv_horner"><span class="id" title="definition">mx_inv_horner</span></a> <span class="id" title="var">B</span> := <a class="idref" href="mathcomp.algebra.mxpoly.html#rVpoly"><span class="id" title="definition">rVpoly</span></a> (<a class="idref" href="mathcomp.algebra.matrix.html#mxvec"><span class="id" title="definition">mxvec</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#B"><span class="id" title="variable">B</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#b2b431de65e6c1e23c1ae3a60262ea15"><span class="id" title="notation">×</span></a><a class="idref" href="mathcomp.algebra.matrix.html#b2b431de65e6c1e23c1ae3a60262ea15"><span class="id" title="notation">m</span></a> <a class="idref" href="mathcomp.algebra.mxalgebra.html#pinvmx"><span class="id" title="definition">pinvmx</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#Ad"><span class="id" title="abbreviation">Ad</span></a>).<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="mx_inv_horner0"><span class="id" title="lemma">mx_inv_horner0</span></a> : <a class="idref" href="mathcomp.algebra.mxpoly.html#mx_inv_horner"><span class="id" title="definition">mx_inv_horner</span></a> 0 <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#6cd0f7b28b6092304087c7049437bb1a"><span class="id" title="notation">=</span></a> 0.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="mx_inv_hornerK"><span class="id" title="lemma">mx_inv_hornerK</span></a> <span class="id" title="var">B</span> : (<a class="idref" href="mathcomp.algebra.mxpoly.html#B"><span class="id" title="variable">B</span></a> <a class="idref" href="mathcomp.algebra.mxalgebra.html#b07e6617bc8db0b83b350e09f8851b51"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.algebra.mxalgebra.html#b07e6617bc8db0b83b350e09f8851b51"><span class="id" title="notation">in</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#Ad"><span class="id" title="abbreviation">Ad</span></a>)%<span class="id" title="var">MS</span> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#1c93e43e07fbeaeb6a625cb6614beb5d"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#horner_mx"><span class="id" title="definition">horner_mx</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#MinPoly.A"><span class="id" title="variable">A</span></a> (<a class="idref" href="mathcomp.algebra.mxpoly.html#mx_inv_horner"><span class="id" title="definition">mx_inv_horner</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#B"><span class="id" title="variable">B</span></a>) <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#6cd0f7b28b6092304087c7049437bb1a"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#B"><span class="id" title="variable">B</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="minpoly_mxM"><span class="id" title="lemma">minpoly_mxM</span></a> <span class="id" title="var">B</span> <span class="id" title="var">C</span> : (<a class="idref" href="mathcomp.algebra.mxpoly.html#B"><span class="id" title="variable">B</span></a> <a class="idref" href="mathcomp.algebra.mxalgebra.html#b07e6617bc8db0b83b350e09f8851b51"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.algebra.mxalgebra.html#b07e6617bc8db0b83b350e09f8851b51"><span class="id" title="notation">in</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#Ad"><span class="id" title="abbreviation">Ad</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#1c93e43e07fbeaeb6a625cb6614beb5d"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#C"><span class="id" title="variable">C</span></a> <a class="idref" href="mathcomp.algebra.mxalgebra.html#b07e6617bc8db0b83b350e09f8851b51"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.algebra.mxalgebra.html#b07e6617bc8db0b83b350e09f8851b51"><span class="id" title="notation">in</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#Ad"><span class="id" title="abbreviation">Ad</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#1c93e43e07fbeaeb6a625cb6614beb5d"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#B"><span class="id" title="variable">B</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#2d0cfb150261028f4ebd2ba355623dcc"><span class="id" title="notation">×</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#C"><span class="id" title="variable">C</span></a> <a class="idref" href="mathcomp.algebra.mxalgebra.html#b07e6617bc8db0b83b350e09f8851b51"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.algebra.mxalgebra.html#b07e6617bc8db0b83b350e09f8851b51"><span class="id" title="notation">in</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#Ad"><span class="id" title="abbreviation">Ad</span></a>)%<span class="id" title="var">MS</span>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="minpoly_mx_ring"><span class="id" title="lemma">minpoly_mx_ring</span></a> : <a class="idref" href="mathcomp.algebra.mxalgebra.html#mxring"><span class="id" title="definition">mxring</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#Ad"><span class="id" title="abbreviation">Ad</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Definition</span> <a name="mxminpoly"><span class="id" title="definition">mxminpoly</span></a> := <a class="idref" href="mathcomp.algebra.poly.html#e809881bcf0cc80f806c17b9ef433187"><span class="id" title="notation">'</span></a><a class="idref" href="mathcomp.algebra.poly.html#e809881bcf0cc80f806c17b9ef433187"><span class="id" title="notation">X</span></a><a class="idref" href="mathcomp.algebra.poly.html#e809881bcf0cc80f806c17b9ef433187"><span class="id" title="notation">^</span></a><a class="idref" href="mathcomp.algebra.mxpoly.html#d"><span class="id" title="abbreviation">d</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#51dc792c356ca1a71a3094b50d6bb2fb"><span class="id" title="notation">-</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#mx_inv_horner"><span class="id" title="definition">mx_inv_horner</span></a> (<a class="idref" href="mathcomp.algebra.mxpoly.html#MinPoly.A"><span class="id" title="variable">A</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#663140372ac3b275aae871b74b140513"><span class="id" title="notation">^+</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#d"><span class="id" title="abbreviation">d</span></a>).<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="size_mxminpoly"><span class="id" title="lemma">size_mxminpoly</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.mxpoly.html#p_A"><span class="id" title="abbreviation">p_A</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#6cd0f7b28b6092304087c7049437bb1a"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#d"><span class="id" title="abbreviation">d</span></a><a class="idref" href="mathcomp.ssreflect.ssrnat.html#bda89d73ec4a8f23ae92b565ffb5aaa6"><span class="id" title="notation">.+1</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="mxminpoly_monic"><span class="id" title="lemma">mxminpoly_monic</span></a> : <a class="idref" href="mathcomp.algebra.mxpoly.html#p_A"><span class="id" title="abbreviation">p_A</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#c94c2df86ca03f22f8f8b739cd7e1e88"><span class="id" title="notation">\</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#c94c2df86ca03f22f8f8b739cd7e1e88"><span class="id" title="notation">is</span></a> <a class="idref" href="mathcomp.algebra.poly.html#monic"><span class="id" title="definition">monic</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="size_mod_mxminpoly"><span class="id" title="lemma">size_mod_mxminpoly</span></a> <span class="id" title="var">p</span> : <a class="idref" href="mathcomp.ssreflect.seq.html#size"><span class="id" title="definition">size</span></a> (<a class="idref" href="mathcomp.algebra.mxpoly.html#p"><span class="id" title="variable">p</span></a> <a class="idref" href="mathcomp.algebra.polydiv.html#d8832071e7663562cc14f17c6edf99dc"><span class="id" title="notation">%%</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#p_A"><span class="id" title="abbreviation">p_A</span></a>) <a class="idref" href="mathcomp.ssreflect.ssrnat.html#cb53cf0ee22c036a03b4a9281c68b5a3"><span class="id" title="notation">≤</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#d"><span class="id" title="abbreviation">d</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="mx_root_minpoly"><span class="id" title="lemma">mx_root_minpoly</span></a> : <a class="idref" href="mathcomp.algebra.mxpoly.html#horner_mx"><span class="id" title="definition">horner_mx</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#MinPoly.A"><span class="id" title="variable">A</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#p_A"><span class="id" title="abbreviation">p_A</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#6cd0f7b28b6092304087c7049437bb1a"><span class="id" title="notation">=</span></a> 0.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="horner_rVpolyK"><span class="id" title="lemma">horner_rVpolyK</span></a> (<span class="id" title="var">u</span> : <a class="idref" href="mathcomp.algebra.matrix.html#2f65cfd766dcf020894d753750ad1a23"><span class="id" title="notation">'</span></a><a class="idref" href="mathcomp.algebra.matrix.html#2f65cfd766dcf020894d753750ad1a23"><span class="id" title="notation">rV_d</span></a>) :<br/> - <a class="idref" href="mathcomp.algebra.mxpoly.html#mx_inv_horner"><span class="id" title="definition">mx_inv_horner</span></a> (<a class="idref" href="mathcomp.algebra.mxpoly.html#horner_mx"><span class="id" title="definition">horner_mx</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#MinPoly.A"><span class="id" title="variable">A</span></a> (<a class="idref" href="mathcomp.algebra.mxpoly.html#rVpoly"><span class="id" title="definition">rVpoly</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#u"><span class="id" title="variable">u</span></a>)) <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#6cd0f7b28b6092304087c7049437bb1a"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#rVpoly"><span class="id" title="definition">rVpoly</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#u"><span class="id" title="variable">u</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="horner_mxK"><span class="id" title="lemma">horner_mxK</span></a> <span class="id" title="var">p</span> : <a class="idref" href="mathcomp.algebra.mxpoly.html#mx_inv_horner"><span class="id" title="definition">mx_inv_horner</span></a> (<a class="idref" href="mathcomp.algebra.mxpoly.html#horner_mx"><span class="id" title="definition">horner_mx</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#MinPoly.A"><span class="id" title="variable">A</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#p"><span class="id" title="variable">p</span></a>) <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#6cd0f7b28b6092304087c7049437bb1a"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#p"><span class="id" title="variable">p</span></a> <a class="idref" href="mathcomp.algebra.polydiv.html#d8832071e7663562cc14f17c6edf99dc"><span class="id" title="notation">%%</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#p_A"><span class="id" title="abbreviation">p_A</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="mxminpoly_min"><span class="id" title="lemma">mxminpoly_min</span></a> <span class="id" title="var">p</span> : <a class="idref" href="mathcomp.algebra.mxpoly.html#horner_mx"><span class="id" title="definition">horner_mx</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#MinPoly.A"><span class="id" title="variable">A</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#p"><span class="id" title="variable">p</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#6cd0f7b28b6092304087c7049437bb1a"><span class="id" title="notation">=</span></a> 0 <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#1c93e43e07fbeaeb6a625cb6614beb5d"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#p_A"><span class="id" title="abbreviation">p_A</span></a> <a class="idref" href="mathcomp.algebra.polydiv.html#64fc6df2b95b79b2107dd5d7f2014b97"><span class="id" title="notation">%|</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#p"><span class="id" title="variable">p</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="horner_rVpoly_inj"><span class="id" title="lemma">horner_rVpoly_inj</span></a> : <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#injective"><span class="id" title="definition">injective</span></a> (<a class="idref" href="mathcomp.algebra.mxpoly.html#horner_mx"><span class="id" title="definition">horner_mx</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#MinPoly.A"><span class="id" title="variable">A</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#8b4742e3f67816503ce4ab2f3b81c27e"><span class="id" title="notation">\</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#8b4742e3f67816503ce4ab2f3b81c27e"><span class="id" title="notation">o</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#rVpoly"><span class="id" title="definition">rVpoly</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssreflect.html#aed478b27f23b4f753c27c8ac393febc"><span class="id" title="notation">:</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#2f65cfd766dcf020894d753750ad1a23"><span class="id" title="notation">'</span></a><a class="idref" href="mathcomp.algebra.matrix.html#2f65cfd766dcf020894d753750ad1a23"><span class="id" title="notation">rV_d</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#1c93e43e07fbeaeb6a625cb6614beb5d"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#2a5412586d59ba16d2c60c55e120c7ee"><span class="id" title="notation">'</span></a><a class="idref" href="mathcomp.algebra.matrix.html#2a5412586d59ba16d2c60c55e120c7ee"><span class="id" title="notation">M_n</span></a>).<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="mxminpoly_linear_is_scalar"><span class="id" title="lemma">mxminpoly_linear_is_scalar</span></a> : <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#6cd0f7b28b6092304087c7049437bb1a"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.mxpoly.html#d"><span class="id" title="abbreviation">d</span></a> <a class="idref" href="mathcomp.ssreflect.ssrnat.html#cb53cf0ee22c036a03b4a9281c68b5a3"><span class="id" title="notation">≤</span></a> 1<a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#6cd0f7b28b6092304087c7049437bb1a"><span class="id" title="notation">)</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#6cd0f7b28b6092304087c7049437bb1a"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#is_scalar_mx"><span class="id" title="definition">is_scalar_mx</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#MinPoly.A"><span class="id" title="variable">A</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="mxminpoly_dvd_char"><span class="id" title="lemma">mxminpoly_dvd_char</span></a> : <a class="idref" href="mathcomp.algebra.mxpoly.html#p_A"><span class="id" title="abbreviation">p_A</span></a> <a class="idref" href="mathcomp.algebra.polydiv.html#64fc6df2b95b79b2107dd5d7f2014b97"><span class="id" title="notation">%|</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#char_poly"><span class="id" title="definition">char_poly</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#MinPoly.A"><span class="id" title="variable">A</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="eigenvalue_root_min"><span class="id" title="lemma">eigenvalue_root_min</span></a> <span class="id" title="var">a</span> : <a class="idref" href="mathcomp.algebra.mxalgebra.html#eigenvalue"><span class="id" title="definition">eigenvalue</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#MinPoly.A"><span class="id" title="variable">A</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#a"><span class="id" title="variable">a</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#6cd0f7b28b6092304087c7049437bb1a"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.poly.html#root"><span class="id" title="definition">root</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#p_A"><span class="id" title="abbreviation">p_A</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#a"><span class="id" title="variable">a</span></a>.<br/> - -<br/> -<span class="id" title="keyword">End</span> <a class="idref" href="mathcomp.algebra.mxpoly.html#MinPoly"><span class="id" title="section">MinPoly</span></a>.<br/> - -<br/> - -<br/> - -<br/> -</div> - -<div class="doc"> - Parametricity. -</div> -<div class="code"> -<span class="id" title="keyword">Section</span> <a name="MapRingMatrix"><span class="id" title="section">MapRingMatrix</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Variables</span> (<a name="MapRingMatrix.aR"><span class="id" title="variable">aR</span></a> <a name="MapRingMatrix.rR"><span class="id" title="variable">rR</span></a> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Ring.Exports.ringType"><span class="id" title="abbreviation">ringType</span></a>) (<a name="MapRingMatrix.f"><span class="id" title="variable">f</span></a> : <a class="idref" href="mathcomp.algebra.ssralg.html#d531732ed602c7af62b88c7cfce824e5"><span class="id" title="notation">{</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#d531732ed602c7af62b88c7cfce824e5"><span class="id" title="notation">rmorphism</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#aR"><span class="id" title="variable">aR</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#1c93e43e07fbeaeb6a625cb6614beb5d"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#rR"><span class="id" title="variable">rR</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#d531732ed602c7af62b88c7cfce824e5"><span class="id" title="notation">}</span></a>).<br/> -<span class="id" title="keyword">Variables</span> (<a name="MapRingMatrix.d"><span class="id" title="variable">d</span></a> <a name="MapRingMatrix.n"><span class="id" title="variable">n</span></a> : <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Datatypes.html#nat"><span class="id" title="inductive">nat</span></a>) (<a name="MapRingMatrix.A"><span class="id" title="variable">A</span></a> : <a class="idref" href="mathcomp.algebra.matrix.html#60bd2bc9fb9187afe5d7f780c1576e3c"><span class="id" title="notation">'</span></a><a class="idref" href="mathcomp.algebra.matrix.html#60bd2bc9fb9187afe5d7f780c1576e3c"><span class="id" title="notation">M</span></a><a class="idref" href="mathcomp.algebra.matrix.html#60bd2bc9fb9187afe5d7f780c1576e3c"><span class="id" title="notation">[</span></a><a class="idref" href="mathcomp.algebra.mxpoly.html#MapRingMatrix.aR"><span class="id" title="variable">aR</span></a><a class="idref" href="mathcomp.algebra.matrix.html#60bd2bc9fb9187afe5d7f780c1576e3c"><span class="id" title="notation">]</span></a><a class="idref" href="mathcomp.algebra.matrix.html#60bd2bc9fb9187afe5d7f780c1576e3c"><span class="id" title="notation">_n</span></a>).<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="map_rVpoly"><span class="id" title="lemma">map_rVpoly</span></a> (<span class="id" title="var">u</span> : <a class="idref" href="mathcomp.algebra.matrix.html#2f65cfd766dcf020894d753750ad1a23"><span class="id" title="notation">'</span></a><a class="idref" href="mathcomp.algebra.matrix.html#2f65cfd766dcf020894d753750ad1a23"><span class="id" title="notation">rV_d</span></a>) : <a class="idref" href="mathcomp.algebra.mxpoly.html#fp"><span class="id" title="abbreviation">fp</span></a> (<a class="idref" href="mathcomp.algebra.mxpoly.html#rVpoly"><span class="id" title="definition">rVpoly</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#u"><span class="id" title="variable">u</span></a>) <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#6cd0f7b28b6092304087c7049437bb1a"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#rVpoly"><span class="id" title="definition">rVpoly</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#u"><span class="id" title="variable">u</span></a><a class="idref" href="mathcomp.algebra.mxpoly.html#9ade10a0869c3a521d87ab9890c112dd"><span class="id" title="notation">^</span></a><a class="idref" href="mathcomp.algebra.mxpoly.html#9ade10a0869c3a521d87ab9890c112dd"><span class="id" title="notation">f</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="map_poly_rV"><span class="id" title="lemma">map_poly_rV</span></a> <span class="id" title="var">p</span> : <a class="idref" href="mathcomp.algebra.mxpoly.html#9ade10a0869c3a521d87ab9890c112dd"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.mxpoly.html#poly_rV"><span class="id" title="definition">poly_rV</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#p"><span class="id" title="variable">p</span></a><a class="idref" href="mathcomp.algebra.mxpoly.html#9ade10a0869c3a521d87ab9890c112dd"><span class="id" title="notation">)^</span></a><a class="idref" href="mathcomp.algebra.mxpoly.html#9ade10a0869c3a521d87ab9890c112dd"><span class="id" title="notation">f</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#b8b2ebc8e1a8b9aa935c0702efb5dccf"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#poly_rV"><span class="id" title="definition">poly_rV</span></a> (<a class="idref" href="mathcomp.algebra.mxpoly.html#fp"><span class="id" title="abbreviation">fp</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#p"><span class="id" title="variable">p</span></a>) <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#b8b2ebc8e1a8b9aa935c0702efb5dccf"><span class="id" title="notation">:></span></a> <a class="idref" href="mathcomp.algebra.matrix.html#2f65cfd766dcf020894d753750ad1a23"><span class="id" title="notation">'</span></a><a class="idref" href="mathcomp.algebra.matrix.html#2f65cfd766dcf020894d753750ad1a23"><span class="id" title="notation">rV_d</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="map_char_poly_mx"><span class="id" title="lemma">map_char_poly_mx</span></a> : <a class="idref" href="mathcomp.algebra.matrix.html#map_mx"><span class="id" title="definition">map_mx</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#fp"><span class="id" title="abbreviation">fp</span></a> (<a class="idref" href="mathcomp.algebra.mxpoly.html#char_poly_mx"><span class="id" title="definition">char_poly_mx</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#MapRingMatrix.A"><span class="id" title="variable">A</span></a>) <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#6cd0f7b28b6092304087c7049437bb1a"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#char_poly_mx"><span class="id" title="definition">char_poly_mx</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#MapRingMatrix.A"><span class="id" title="variable">A</span></a><a class="idref" href="mathcomp.algebra.mxpoly.html#9ade10a0869c3a521d87ab9890c112dd"><span class="id" title="notation">^</span></a><a class="idref" href="mathcomp.algebra.mxpoly.html#9ade10a0869c3a521d87ab9890c112dd"><span class="id" title="notation">f</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="map_char_poly"><span class="id" title="lemma">map_char_poly</span></a> : <a class="idref" href="mathcomp.algebra.mxpoly.html#fp"><span class="id" title="abbreviation">fp</span></a> (<a class="idref" href="mathcomp.algebra.mxpoly.html#char_poly"><span class="id" title="definition">char_poly</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#MapRingMatrix.A"><span class="id" title="variable">A</span></a>) <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#6cd0f7b28b6092304087c7049437bb1a"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#char_poly"><span class="id" title="definition">char_poly</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#MapRingMatrix.A"><span class="id" title="variable">A</span></a><a class="idref" href="mathcomp.algebra.mxpoly.html#9ade10a0869c3a521d87ab9890c112dd"><span class="id" title="notation">^</span></a><a class="idref" href="mathcomp.algebra.mxpoly.html#9ade10a0869c3a521d87ab9890c112dd"><span class="id" title="notation">f</span></a>.<br/> - -<br/> -<span class="id" title="keyword">End</span> <a class="idref" href="mathcomp.algebra.mxpoly.html#MapRingMatrix"><span class="id" title="section">MapRingMatrix</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Section</span> <a name="MapResultant"><span class="id" title="section">MapResultant</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="map_resultant"><span class="id" title="lemma">map_resultant</span></a> (<span class="id" title="var">aR</span> <span class="id" title="var">rR</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#d531732ed602c7af62b88c7cfce824e5"><span class="id" title="notation">{</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#d531732ed602c7af62b88c7cfce824e5"><span class="id" title="notation">rmorphism</span></a> <a class="idref" href="mathcomp.algebra.poly.html#c2ef4fdf7ae62c36654f85f0d2a6c874"><span class="id" title="notation">{</span></a><a class="idref" href="mathcomp.algebra.poly.html#c2ef4fdf7ae62c36654f85f0d2a6c874"><span class="id" title="notation">poly</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#aR"><span class="id" title="variable">aR</span></a><a class="idref" href="mathcomp.algebra.poly.html#c2ef4fdf7ae62c36654f85f0d2a6c874"><span class="id" title="notation">}</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#1c93e43e07fbeaeb6a625cb6614beb5d"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#rR"><span class="id" title="variable">rR</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#d531732ed602c7af62b88c7cfce824e5"><span class="id" title="notation">}</span></a>) <span class="id" title="var">p</span> <span class="id" title="var">q</span> :<br/> - <a class="idref" href="mathcomp.algebra.mxpoly.html#f"><span class="id" title="variable">f</span></a> (<a class="idref" href="mathcomp.algebra.poly.html#lead_coef"><span class="id" title="definition">lead_coef</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#p"><span class="id" title="variable">p</span></a>) <a class="idref" href="mathcomp.ssreflect.eqtype.html#c385a484ee9d1b4e0615924561a9b75e"><span class="id" title="notation">!=</span></a> 0 <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#1c93e43e07fbeaeb6a625cb6614beb5d"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#f"><span class="id" title="variable">f</span></a> (<a class="idref" href="mathcomp.algebra.poly.html#lead_coef"><span class="id" title="definition">lead_coef</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#q"><span class="id" title="variable">q</span></a>) <a class="idref" href="mathcomp.ssreflect.eqtype.html#c385a484ee9d1b4e0615924561a9b75e"><span class="id" title="notation">!=</span></a> 0 <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#1c93e43e07fbeaeb6a625cb6614beb5d"><span class="id" title="notation">→</span></a><br/> - <a class="idref" href="mathcomp.algebra.mxpoly.html#f"><span class="id" title="variable">f</span></a> (<a class="idref" href="mathcomp.algebra.mxpoly.html#resultant"><span class="id" title="definition">resultant</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#p"><span class="id" title="variable">p</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#q"><span class="id" title="variable">q</span></a>)<a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#6cd0f7b28b6092304087c7049437bb1a"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#resultant"><span class="id" title="definition">resultant</span></a> (<a class="idref" href="mathcomp.algebra.poly.html#map_poly"><span class="id" title="definition">map_poly</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#f"><span class="id" title="variable">f</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#p"><span class="id" title="variable">p</span></a>) (<a class="idref" href="mathcomp.algebra.poly.html#map_poly"><span class="id" title="definition">map_poly</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#f"><span class="id" title="variable">f</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#q"><span class="id" title="variable">q</span></a>).<br/> - -<br/> -<span class="id" title="keyword">End</span> <a class="idref" href="mathcomp.algebra.mxpoly.html#MapResultant"><span class="id" title="section">MapResultant</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Section</span> <a name="MapComRing"><span class="id" title="section">MapComRing</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Variables</span> (<a name="MapComRing.aR"><span class="id" title="variable">aR</span></a> <a name="MapComRing.rR"><span class="id" title="variable">rR</span></a> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ComRing.Exports.comRingType"><span class="id" title="abbreviation">comRingType</span></a>) (<a name="MapComRing.f"><span class="id" title="variable">f</span></a> : <a class="idref" href="mathcomp.algebra.ssralg.html#d531732ed602c7af62b88c7cfce824e5"><span class="id" title="notation">{</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#d531732ed602c7af62b88c7cfce824e5"><span class="id" title="notation">rmorphism</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#aR"><span class="id" title="variable">aR</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#1c93e43e07fbeaeb6a625cb6614beb5d"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#rR"><span class="id" title="variable">rR</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#d531732ed602c7af62b88c7cfce824e5"><span class="id" title="notation">}</span></a>).<br/> -<span class="id" title="keyword">Variables</span> (<a name="MapComRing.n'"><span class="id" title="variable">n'</span></a> : <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Datatypes.html#nat"><span class="id" title="inductive">nat</span></a>) (<a name="MapComRing.A"><span class="id" title="variable">A</span></a> : <a class="idref" href="mathcomp.algebra.matrix.html#60bd2bc9fb9187afe5d7f780c1576e3c"><span class="id" title="notation">'</span></a><a class="idref" href="mathcomp.algebra.matrix.html#60bd2bc9fb9187afe5d7f780c1576e3c"><span class="id" title="notation">M</span></a><a class="idref" href="mathcomp.algebra.matrix.html#60bd2bc9fb9187afe5d7f780c1576e3c"><span class="id" title="notation">[</span></a><a class="idref" href="mathcomp.algebra.mxpoly.html#MapComRing.aR"><span class="id" title="variable">aR</span></a><a class="idref" href="mathcomp.algebra.matrix.html#60bd2bc9fb9187afe5d7f780c1576e3c"><span class="id" title="notation">]</span></a><a class="idref" href="mathcomp.algebra.matrix.html#60bd2bc9fb9187afe5d7f780c1576e3c"><span class="id" title="notation">_n'</span></a><a class="idref" href="mathcomp.ssreflect.ssrnat.html#bda89d73ec4a8f23ae92b565ffb5aaa6"><span class="id" title="notation">.+1</span></a>).<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="map_powers_mx"><span class="id" title="lemma">map_powers_mx</span></a> <span class="id" title="var">e</span> : <a class="idref" href="mathcomp.algebra.mxpoly.html#e4e440bd0e6055cffe6740e4a836968e"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.mxpoly.html#powers_mx"><span class="id" title="definition">powers_mx</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#MapComRing.A"><span class="id" title="variable">A</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#e"><span class="id" title="variable">e</span></a><a class="idref" href="mathcomp.algebra.mxpoly.html#e4e440bd0e6055cffe6740e4a836968e"><span class="id" title="notation">)^</span></a><a class="idref" href="mathcomp.algebra.mxpoly.html#e4e440bd0e6055cffe6740e4a836968e"><span class="id" title="notation">f</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#6cd0f7b28b6092304087c7049437bb1a"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#powers_mx"><span class="id" title="definition">powers_mx</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#MapComRing.A"><span class="id" title="variable">A</span></a><a class="idref" href="mathcomp.algebra.mxpoly.html#e4e440bd0e6055cffe6740e4a836968e"><span class="id" title="notation">^</span></a><a class="idref" href="mathcomp.algebra.mxpoly.html#e4e440bd0e6055cffe6740e4a836968e"><span class="id" title="notation">f</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#e"><span class="id" title="variable">e</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="map_horner_mx"><span class="id" title="lemma">map_horner_mx</span></a> <span class="id" title="var">p</span> : <a class="idref" href="mathcomp.algebra.mxpoly.html#e4e440bd0e6055cffe6740e4a836968e"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.mxpoly.html#horner_mx"><span class="id" title="definition">horner_mx</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#MapComRing.A"><span class="id" title="variable">A</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#p"><span class="id" title="variable">p</span></a><a class="idref" href="mathcomp.algebra.mxpoly.html#e4e440bd0e6055cffe6740e4a836968e"><span class="id" title="notation">)^</span></a><a class="idref" href="mathcomp.algebra.mxpoly.html#e4e440bd0e6055cffe6740e4a836968e"><span class="id" title="notation">f</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#6cd0f7b28b6092304087c7049437bb1a"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#horner_mx"><span class="id" title="definition">horner_mx</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#MapComRing.A"><span class="id" title="variable">A</span></a><a class="idref" href="mathcomp.algebra.mxpoly.html#e4e440bd0e6055cffe6740e4a836968e"><span class="id" title="notation">^</span></a><a class="idref" href="mathcomp.algebra.mxpoly.html#e4e440bd0e6055cffe6740e4a836968e"><span class="id" title="notation">f</span></a> (<a class="idref" href="mathcomp.algebra.mxpoly.html#fp"><span class="id" title="abbreviation">fp</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#p"><span class="id" title="variable">p</span></a>).<br/> - -<br/> -<span class="id" title="keyword">End</span> <a class="idref" href="mathcomp.algebra.mxpoly.html#MapComRing"><span class="id" title="section">MapComRing</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Section</span> <a name="MapField"><span class="id" title="section">MapField</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Variables</span> (<a name="MapField.aF"><span class="id" title="variable">aF</span></a> <a name="MapField.rF"><span class="id" title="variable">rF</span></a> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Field.Exports.fieldType"><span class="id" title="abbreviation">fieldType</span></a>) (<a name="MapField.f"><span class="id" title="variable">f</span></a> : <a class="idref" href="mathcomp.algebra.ssralg.html#d531732ed602c7af62b88c7cfce824e5"><span class="id" title="notation">{</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#d531732ed602c7af62b88c7cfce824e5"><span class="id" title="notation">rmorphism</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#aF"><span class="id" title="variable">aF</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#1c93e43e07fbeaeb6a625cb6614beb5d"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#rF"><span class="id" title="variable">rF</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#d531732ed602c7af62b88c7cfce824e5"><span class="id" title="notation">}</span></a>).<br/> -<span class="id" title="keyword">Variables</span> (<a name="MapField.n'"><span class="id" title="variable">n'</span></a> : <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Datatypes.html#nat"><span class="id" title="inductive">nat</span></a>) (<a name="MapField.A"><span class="id" title="variable">A</span></a> : <a class="idref" href="mathcomp.algebra.matrix.html#60bd2bc9fb9187afe5d7f780c1576e3c"><span class="id" title="notation">'</span></a><a class="idref" href="mathcomp.algebra.matrix.html#60bd2bc9fb9187afe5d7f780c1576e3c"><span class="id" title="notation">M</span></a><a class="idref" href="mathcomp.algebra.matrix.html#60bd2bc9fb9187afe5d7f780c1576e3c"><span class="id" title="notation">[</span></a><a class="idref" href="mathcomp.algebra.mxpoly.html#MapField.aF"><span class="id" title="variable">aF</span></a><a class="idref" href="mathcomp.algebra.matrix.html#60bd2bc9fb9187afe5d7f780c1576e3c"><span class="id" title="notation">]</span></a><a class="idref" href="mathcomp.algebra.matrix.html#60bd2bc9fb9187afe5d7f780c1576e3c"><span class="id" title="notation">_n'</span></a><a class="idref" href="mathcomp.ssreflect.ssrnat.html#bda89d73ec4a8f23ae92b565ffb5aaa6"><span class="id" title="notation">.+1</span></a>) (<a name="MapField.p"><span class="id" title="variable">p</span></a> : <a class="idref" href="mathcomp.algebra.poly.html#c2ef4fdf7ae62c36654f85f0d2a6c874"><span class="id" title="notation">{</span></a><a class="idref" href="mathcomp.algebra.poly.html#c2ef4fdf7ae62c36654f85f0d2a6c874"><span class="id" title="notation">poly</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#MapField.aF"><span class="id" title="variable">aF</span></a><a class="idref" href="mathcomp.algebra.poly.html#c2ef4fdf7ae62c36654f85f0d2a6c874"><span class="id" title="notation">}</span></a>).<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="map_mx_companion"><span class="id" title="lemma">map_mx_companion</span></a> (<span class="id" title="var">e</span> := <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#congr1"><span class="id" title="definition">congr1</span></a> <a class="idref" href="mathcomp.ssreflect.ssrnat.html#predn"><span class="id" title="abbreviation">predn</span></a> (<a class="idref" href="mathcomp.algebra.poly.html#size_map_poly"><span class="id" title="lemma">size_map_poly</span></a> <span class="id" title="var">_</span> <span class="id" title="var">_</span>)) :<br/> - <a class="idref" href="mathcomp.algebra.mxpoly.html#5f1925a9c24ff4e03a5528db5ad9eddc"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.mxpoly.html#companionmx"><span class="id" title="definition">companionmx</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#MapField.p"><span class="id" title="variable">p</span></a><a class="idref" href="mathcomp.algebra.mxpoly.html#5f1925a9c24ff4e03a5528db5ad9eddc"><span class="id" title="notation">)^</span></a><a class="idref" href="mathcomp.algebra.mxpoly.html#5f1925a9c24ff4e03a5528db5ad9eddc"><span class="id" title="notation">f</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#6cd0f7b28b6092304087c7049437bb1a"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#castmx"><span class="id" title="definition">castmx</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Datatypes.html#e6756e10c36f149b18b4a8741ed83079"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.mxpoly.html#e"><span class="id" title="variable">e</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Datatypes.html#e6756e10c36f149b18b4a8741ed83079"><span class="id" title="notation">,</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#e"><span class="id" title="variable">e</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Datatypes.html#e6756e10c36f149b18b4a8741ed83079"><span class="id" title="notation">)</span></a> (<a class="idref" href="mathcomp.algebra.mxpoly.html#companionmx"><span class="id" title="definition">companionmx</span></a> (<a class="idref" href="mathcomp.algebra.mxpoly.html#fp"><span class="id" title="abbreviation">fp</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#MapField.p"><span class="id" title="variable">p</span></a>)).<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="companion_map_poly"><span class="id" title="lemma">companion_map_poly</span></a> (<span class="id" title="var">e</span> := <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#esym"><span class="id" title="definition">esym</span></a> (<a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#congr1"><span class="id" title="definition">congr1</span></a> <a class="idref" href="mathcomp.ssreflect.ssrnat.html#predn"><span class="id" title="abbreviation">predn</span></a> (<a class="idref" href="mathcomp.algebra.poly.html#size_map_poly"><span class="id" title="lemma">size_map_poly</span></a> <span class="id" title="var">_</span> <span class="id" title="var">_</span>))) :<br/> - <a class="idref" href="mathcomp.algebra.mxpoly.html#companionmx"><span class="id" title="definition">companionmx</span></a> (<a class="idref" href="mathcomp.algebra.mxpoly.html#fp"><span class="id" title="abbreviation">fp</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#MapField.p"><span class="id" title="variable">p</span></a>) <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#6cd0f7b28b6092304087c7049437bb1a"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#castmx"><span class="id" title="definition">castmx</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Datatypes.html#e6756e10c36f149b18b4a8741ed83079"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.mxpoly.html#e"><span class="id" title="variable">e</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Datatypes.html#e6756e10c36f149b18b4a8741ed83079"><span class="id" title="notation">,</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#e"><span class="id" title="variable">e</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Datatypes.html#e6756e10c36f149b18b4a8741ed83079"><span class="id" title="notation">)</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#5f1925a9c24ff4e03a5528db5ad9eddc"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.mxpoly.html#companionmx"><span class="id" title="definition">companionmx</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#MapField.p"><span class="id" title="variable">p</span></a><a class="idref" href="mathcomp.algebra.mxpoly.html#5f1925a9c24ff4e03a5528db5ad9eddc"><span class="id" title="notation">)^</span></a><a class="idref" href="mathcomp.algebra.mxpoly.html#5f1925a9c24ff4e03a5528db5ad9eddc"><span class="id" title="notation">f</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="degree_mxminpoly_map"><span class="id" title="lemma">degree_mxminpoly_map</span></a> : <a class="idref" href="mathcomp.algebra.mxpoly.html#degree_mxminpoly"><span class="id" title="definition">degree_mxminpoly</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#MapField.A"><span class="id" title="variable">A</span></a><a class="idref" href="mathcomp.algebra.mxpoly.html#5f1925a9c24ff4e03a5528db5ad9eddc"><span class="id" title="notation">^</span></a><a class="idref" href="mathcomp.algebra.mxpoly.html#5f1925a9c24ff4e03a5528db5ad9eddc"><span class="id" title="notation">f</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#6cd0f7b28b6092304087c7049437bb1a"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#degree_mxminpoly"><span class="id" title="definition">degree_mxminpoly</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#MapField.A"><span class="id" title="variable">A</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="mxminpoly_map"><span class="id" title="lemma">mxminpoly_map</span></a> : <a class="idref" href="mathcomp.algebra.mxpoly.html#mxminpoly"><span class="id" title="definition">mxminpoly</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#MapField.A"><span class="id" title="variable">A</span></a><a class="idref" href="mathcomp.algebra.mxpoly.html#5f1925a9c24ff4e03a5528db5ad9eddc"><span class="id" title="notation">^</span></a><a class="idref" href="mathcomp.algebra.mxpoly.html#5f1925a9c24ff4e03a5528db5ad9eddc"><span class="id" title="notation">f</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#6cd0f7b28b6092304087c7049437bb1a"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#fp"><span class="id" title="abbreviation">fp</span></a> (<a class="idref" href="mathcomp.algebra.mxpoly.html#mxminpoly"><span class="id" title="definition">mxminpoly</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#MapField.A"><span class="id" title="variable">A</span></a>).<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="map_mx_inv_horner"><span class="id" title="lemma">map_mx_inv_horner</span></a> <span class="id" title="var">u</span> : <a class="idref" href="mathcomp.algebra.mxpoly.html#fp"><span class="id" title="abbreviation">fp</span></a> (<a class="idref" href="mathcomp.algebra.mxpoly.html#mx_inv_horner"><span class="id" title="definition">mx_inv_horner</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#MapField.A"><span class="id" title="variable">A</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#u"><span class="id" title="variable">u</span></a>) <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#6cd0f7b28b6092304087c7049437bb1a"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#mx_inv_horner"><span class="id" title="definition">mx_inv_horner</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#MapField.A"><span class="id" title="variable">A</span></a><a class="idref" href="mathcomp.algebra.mxpoly.html#5f1925a9c24ff4e03a5528db5ad9eddc"><span class="id" title="notation">^</span></a><a class="idref" href="mathcomp.algebra.mxpoly.html#5f1925a9c24ff4e03a5528db5ad9eddc"><span class="id" title="notation">f</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#u"><span class="id" title="variable">u</span></a><a class="idref" href="mathcomp.algebra.mxpoly.html#5f1925a9c24ff4e03a5528db5ad9eddc"><span class="id" title="notation">^</span></a><a class="idref" href="mathcomp.algebra.mxpoly.html#5f1925a9c24ff4e03a5528db5ad9eddc"><span class="id" title="notation">f</span></a>.<br/> - -<br/> -<span class="id" title="keyword">End</span> <a class="idref" href="mathcomp.algebra.mxpoly.html#MapField"><span class="id" title="section">MapField</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Section</span> <a name="IntegralOverRing"><span class="id" title="section">IntegralOverRing</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Definition</span> <a name="integralOver"><span class="id" title="definition">integralOver</span></a> (<span class="id" title="var">R</span> <span class="id" title="var">K</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">RtoK</span> : <a class="idref" href="mathcomp.algebra.mxpoly.html#R"><span class="id" title="variable">R</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#1c93e43e07fbeaeb6a625cb6614beb5d"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#K"><span class="id" title="variable">K</span></a>) (<span class="id" title="var">z</span> : <a class="idref" href="mathcomp.algebra.mxpoly.html#K"><span class="id" title="variable">K</span></a>) :=<br/> - <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#3df228c109f14f0423b4fccc967ee1ac"><span class="id" title="notation">exists2</span></a> <span class="id" title="var">p</span><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#3df228c109f14f0423b4fccc967ee1ac"><span class="id" title="notation">,</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#p"><span class="id" title="variable">p</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#c94c2df86ca03f22f8f8b739cd7e1e88"><span class="id" title="notation">\</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#c94c2df86ca03f22f8f8b739cd7e1e88"><span class="id" title="notation">is</span></a> <a class="idref" href="mathcomp.algebra.poly.html#monic"><span class="id" title="definition">monic</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#3df228c109f14f0423b4fccc967ee1ac"><span class="id" title="notation">&</span></a> <a class="idref" href="mathcomp.algebra.poly.html#root"><span class="id" title="definition">root</span></a> (<a class="idref" href="mathcomp.algebra.poly.html#map_poly"><span class="id" title="definition">map_poly</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#RtoK"><span class="id" title="variable">RtoK</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#p"><span class="id" title="variable">p</span></a>) <a class="idref" href="mathcomp.algebra.mxpoly.html#z"><span class="id" title="variable">z</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Definition</span> <a name="integralRange"><span class="id" title="definition">integralRange</span></a> <span class="id" title="var">R</span> <span class="id" title="var">K</span> <span class="id" title="var">RtoK</span> := <span class="id" title="keyword">∀</span> <span class="id" title="var">z</span>, @<a class="idref" href="mathcomp.algebra.mxpoly.html#integralOver"><span class="id" title="definition">integralOver</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#R"><span class="id" title="variable">R</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#K"><span class="id" title="variable">K</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#RtoK"><span class="id" title="variable">RtoK</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#z"><span class="id" title="variable">z</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Variables</span> (<a name="IntegralOverRing.B"><span class="id" title="variable">B</span></a> <a name="IntegralOverRing.R"><span class="id" title="variable">R</span></a> <a name="IntegralOverRing.K"><span class="id" title="variable">K</span></a> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Ring.Exports.ringType"><span class="id" title="abbreviation">ringType</span></a>) (<a name="IntegralOverRing.BtoR"><span class="id" title="variable">BtoR</span></a> : <a class="idref" href="mathcomp.algebra.mxpoly.html#B"><span class="id" title="variable">B</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#1c93e43e07fbeaeb6a625cb6614beb5d"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#R"><span class="id" title="variable">R</span></a>) (<a name="IntegralOverRing.RtoK"><span class="id" title="variable">RtoK</span></a> : <a class="idref" href="mathcomp.algebra.ssralg.html#d531732ed602c7af62b88c7cfce824e5"><span class="id" title="notation">{</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#d531732ed602c7af62b88c7cfce824e5"><span class="id" title="notation">rmorphism</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#R"><span class="id" title="variable">R</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#1c93e43e07fbeaeb6a625cb6614beb5d"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#K"><span class="id" title="variable">K</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#d531732ed602c7af62b88c7cfce824e5"><span class="id" title="notation">}</span></a>).<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="integral_rmorph"><span class="id" title="lemma">integral_rmorph</span></a> <span class="id" title="var">x</span> :<br/> - <a class="idref" href="mathcomp.algebra.mxpoly.html#integralOver"><span class="id" title="definition">integralOver</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#IntegralOverRing.BtoR"><span class="id" title="variable">BtoR</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#1c93e43e07fbeaeb6a625cb6614beb5d"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#integralOver"><span class="id" title="definition">integralOver</span></a> (<a class="idref" href="mathcomp.algebra.mxpoly.html#IntegralOverRing.RtoK"><span class="id" title="variable">RtoK</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#8b4742e3f67816503ce4ab2f3b81c27e"><span class="id" title="notation">\</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#8b4742e3f67816503ce4ab2f3b81c27e"><span class="id" title="notation">o</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#IntegralOverRing.BtoR"><span class="id" title="variable">BtoR</span></a>) (<a class="idref" href="mathcomp.algebra.mxpoly.html#IntegralOverRing.RtoK"><span class="id" title="variable">RtoK</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#x"><span class="id" title="variable">x</span></a>).<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="integral_id"><span class="id" title="lemma">integral_id</span></a> <span class="id" title="var">x</span> : <a class="idref" href="mathcomp.algebra.mxpoly.html#integralOver"><span class="id" title="definition">integralOver</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#IntegralOverRing.RtoK"><span class="id" title="variable">RtoK</span></a> (<a class="idref" href="mathcomp.algebra.mxpoly.html#IntegralOverRing.RtoK"><span class="id" title="variable">RtoK</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#x"><span class="id" title="variable">x</span></a>).<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="integral_nat"><span class="id" title="lemma">integral_nat</span></a> <span class="id" title="var">n</span> : <a class="idref" href="mathcomp.algebra.mxpoly.html#integralOver"><span class="id" title="definition">integralOver</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#IntegralOverRing.RtoK"><span class="id" title="variable">RtoK</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#n"><span class="id" title="variable">n</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#6411ed08724033ae48d2865f0380d533"><span class="id" title="notation">%:</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#6411ed08724033ae48d2865f0380d533"><span class="id" title="notation">R</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="integral0"><span class="id" title="lemma">integral0</span></a> : <a class="idref" href="mathcomp.algebra.mxpoly.html#integralOver"><span class="id" title="definition">integralOver</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#IntegralOverRing.RtoK"><span class="id" title="variable">RtoK</span></a> 0. <br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="integral1"><span class="id" title="lemma">integral1</span></a> : <a class="idref" href="mathcomp.algebra.mxpoly.html#integralOver"><span class="id" title="definition">integralOver</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#IntegralOverRing.RtoK"><span class="id" title="variable">RtoK</span></a> 1. <br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="integral_poly"><span class="id" title="lemma">integral_poly</span></a> (<span class="id" title="var">p</span> : <a class="idref" href="mathcomp.algebra.poly.html#c2ef4fdf7ae62c36654f85f0d2a6c874"><span class="id" title="notation">{</span></a><a class="idref" href="mathcomp.algebra.poly.html#c2ef4fdf7ae62c36654f85f0d2a6c874"><span class="id" title="notation">poly</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#IntegralOverRing.K"><span class="id" title="variable">K</span></a><a class="idref" href="mathcomp.algebra.poly.html#c2ef4fdf7ae62c36654f85f0d2a6c874"><span class="id" title="notation">}</span></a>) :<br/> - <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#4bfb4f2d0721ba668e3a802ab1b745a1"><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.mxpoly.html#integralOver"><span class="id" title="definition">integralOver</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#IntegralOverRing.RtoK"><span class="id" title="variable">RtoK</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#p"><span class="id" title="variable">p</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#82d810f9f90b79e8fe98d90a63070c32"><span class="id" title="notation">`</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#82d810f9f90b79e8fe98d90a63070c32"><span class="id" title="notation">_i</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#4bfb4f2d0721ba668e3a802ab1b745a1"><span class="id" title="notation">)</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#4bfb4f2d0721ba668e3a802ab1b745a1"><span class="id" title="notation">↔</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#8c08d4203604dbed63e7afa9b689d858"><span class="id" title="notation">{</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#8c08d4203604dbed63e7afa9b689d858"><span class="id" title="notation">in</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#p"><span class="id" title="variable">p</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssreflect.html#aed478b27f23b4f753c27c8ac393febc"><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.mxpoly.html#IntegralOverRing.K"><span class="id" title="variable">K</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#8c08d4203604dbed63e7afa9b689d858"><span class="id" title="notation">,</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#integralRange"><span class="id" title="definition">integralRange</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#IntegralOverRing.RtoK"><span class="id" title="variable">RtoK</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#8c08d4203604dbed63e7afa9b689d858"><span class="id" title="notation">}</span></a>.<br/> - -<br/> -<span class="id" title="keyword">End</span> <a class="idref" href="mathcomp.algebra.mxpoly.html#IntegralOverRing"><span class="id" title="section">IntegralOverRing</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Section</span> <a name="IntegralOverComRing"><span class="id" title="section">IntegralOverComRing</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Variables</span> (<a name="IntegralOverComRing.R"><span class="id" title="variable">R</span></a> <a name="IntegralOverComRing.K"><span class="id" title="variable">K</span></a> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ComRing.Exports.comRingType"><span class="id" title="abbreviation">comRingType</span></a>) (<a name="IntegralOverComRing.RtoK"><span class="id" title="variable">RtoK</span></a> : <a class="idref" href="mathcomp.algebra.ssralg.html#d531732ed602c7af62b88c7cfce824e5"><span class="id" title="notation">{</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#d531732ed602c7af62b88c7cfce824e5"><span class="id" title="notation">rmorphism</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#R"><span class="id" title="variable">R</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#1c93e43e07fbeaeb6a625cb6614beb5d"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#K"><span class="id" title="variable">K</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#d531732ed602c7af62b88c7cfce824e5"><span class="id" title="notation">}</span></a>).<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="integral_horner_root"><span class="id" title="lemma">integral_horner_root</span></a> <span class="id" title="var">w</span> (<span class="id" title="var">p</span> <span class="id" title="var">q</span> : <a class="idref" href="mathcomp.algebra.poly.html#c2ef4fdf7ae62c36654f85f0d2a6c874"><span class="id" title="notation">{</span></a><a class="idref" href="mathcomp.algebra.poly.html#c2ef4fdf7ae62c36654f85f0d2a6c874"><span class="id" title="notation">poly</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#IntegralOverComRing.K"><span class="id" title="variable">K</span></a><a class="idref" href="mathcomp.algebra.poly.html#c2ef4fdf7ae62c36654f85f0d2a6c874"><span class="id" title="notation">}</span></a>) :<br/> - <a class="idref" href="mathcomp.algebra.mxpoly.html#p"><span class="id" title="variable">p</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#c94c2df86ca03f22f8f8b739cd7e1e88"><span class="id" title="notation">\</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#c94c2df86ca03f22f8f8b739cd7e1e88"><span class="id" title="notation">is</span></a> <a class="idref" href="mathcomp.algebra.poly.html#monic"><span class="id" title="definition">monic</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#1c93e43e07fbeaeb6a625cb6614beb5d"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.poly.html#root"><span class="id" title="definition">root</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#p"><span class="id" title="variable">p</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#w"><span class="id" title="variable">w</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#1c93e43e07fbeaeb6a625cb6614beb5d"><span class="id" title="notation">→</span></a><br/> - <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#8c08d4203604dbed63e7afa9b689d858"><span class="id" title="notation">{</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#8c08d4203604dbed63e7afa9b689d858"><span class="id" title="notation">in</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#p"><span class="id" title="variable">p</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssreflect.html#aed478b27f23b4f753c27c8ac393febc"><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.mxpoly.html#IntegralOverComRing.K"><span class="id" title="variable">K</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#8c08d4203604dbed63e7afa9b689d858"><span class="id" title="notation">,</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#integralRange"><span class="id" title="definition">integralRange</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#IntegralOverComRing.RtoK"><span class="id" title="variable">RtoK</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#8c08d4203604dbed63e7afa9b689d858"><span class="id" title="notation">}</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#1c93e43e07fbeaeb6a625cb6614beb5d"><span class="id" title="notation">→</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#8c08d4203604dbed63e7afa9b689d858"><span class="id" title="notation">{</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#8c08d4203604dbed63e7afa9b689d858"><span class="id" title="notation">in</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#q"><span class="id" title="variable">q</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssreflect.html#aed478b27f23b4f753c27c8ac393febc"><span class="id" title="notation">:</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#seq"><span class="id" title="abbreviation">seq</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#IntegralOverComRing.K"><span class="id" title="variable">K</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#8c08d4203604dbed63e7afa9b689d858"><span class="id" title="notation">,</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#integralRange"><span class="id" title="definition">integralRange</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#IntegralOverComRing.RtoK"><span class="id" title="variable">RtoK</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#8c08d4203604dbed63e7afa9b689d858"><span class="id" title="notation">}</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#1c93e43e07fbeaeb6a625cb6614beb5d"><span class="id" title="notation">→</span></a><br/> - <a class="idref" href="mathcomp.algebra.mxpoly.html#integralOver"><span class="id" title="definition">integralOver</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#IntegralOverComRing.RtoK"><span class="id" title="variable">RtoK</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#q"><span class="id" title="variable">q</span></a><a class="idref" href="mathcomp.algebra.poly.html#e4361ce58e4de0a4b9786d0011b61316"><span class="id" title="notation">.[</span></a><a class="idref" href="mathcomp.algebra.mxpoly.html#w"><span class="id" title="variable">w</span></a><a class="idref" href="mathcomp.algebra.poly.html#e4361ce58e4de0a4b9786d0011b61316"><span class="id" title="notation">]</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="integral_root_monic"><span class="id" title="lemma">integral_root_monic</span></a> <span class="id" title="var">u</span> <span class="id" title="var">p</span> :<br/> - <a class="idref" href="mathcomp.algebra.mxpoly.html#p"><span class="id" title="variable">p</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#c94c2df86ca03f22f8f8b739cd7e1e88"><span class="id" title="notation">\</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#c94c2df86ca03f22f8f8b739cd7e1e88"><span class="id" title="notation">is</span></a> <a class="idref" href="mathcomp.algebra.poly.html#monic"><span class="id" title="definition">monic</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#1c93e43e07fbeaeb6a625cb6614beb5d"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.poly.html#root"><span class="id" title="definition">root</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#p"><span class="id" title="variable">p</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#u"><span class="id" title="variable">u</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#1c93e43e07fbeaeb6a625cb6614beb5d"><span class="id" title="notation">→</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#8c08d4203604dbed63e7afa9b689d858"><span class="id" title="notation">{</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#8c08d4203604dbed63e7afa9b689d858"><span class="id" title="notation">in</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#p"><span class="id" title="variable">p</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssreflect.html#aed478b27f23b4f753c27c8ac393febc"><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.mxpoly.html#IntegralOverComRing.K"><span class="id" title="variable">K</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#8c08d4203604dbed63e7afa9b689d858"><span class="id" title="notation">,</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#integralRange"><span class="id" title="definition">integralRange</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#IntegralOverComRing.RtoK"><span class="id" title="variable">RtoK</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#8c08d4203604dbed63e7afa9b689d858"><span class="id" title="notation">}</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#1c93e43e07fbeaeb6a625cb6614beb5d"><span class="id" title="notation">→</span></a><br/> - <a class="idref" href="mathcomp.algebra.mxpoly.html#integralOver"><span class="id" title="definition">integralOver</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#IntegralOverComRing.RtoK"><span class="id" title="variable">RtoK</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#u"><span class="id" title="variable">u</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Hint Resolve</span> (<a class="idref" href="mathcomp.algebra.mxpoly.html#integral0"><span class="id" title="lemma">integral0</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#IntegralOverComRing.RtoK"><span class="id" title="variable">RtoK</span></a>) (<a class="idref" href="mathcomp.algebra.mxpoly.html#integral1"><span class="id" title="lemma">integral1</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#IntegralOverComRing.RtoK"><span class="id" title="variable">RtoK</span></a>) (@<a class="idref" href="mathcomp.algebra.poly.html#monicXsubC"><span class="id" title="lemma">monicXsubC</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#IntegralOverComRing.K"><span class="id" title="variable">K</span></a>) : <span class="id" title="var">core</span>.<br/> - -<br/> -<span class="id" title="keyword">Let</span> <a name="IntegralOverComRing.XsubC0"><span class="id" title="variable">XsubC0</span></a> (<span class="id" title="var">u</span> : <a class="idref" href="mathcomp.algebra.mxpoly.html#IntegralOverComRing.K"><span class="id" title="variable">K</span></a>) : <a class="idref" href="mathcomp.algebra.poly.html#root"><span class="id" title="definition">root</span></a> (<a class="idref" href="mathcomp.algebra.poly.html#dc2ed3a32abac1baa27cfc93ddc4e844"><span class="id" title="notation">'</span></a><a class="idref" href="mathcomp.algebra.poly.html#dc2ed3a32abac1baa27cfc93ddc4e844"><span class="id" title="notation">X</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#51dc792c356ca1a71a3094b50d6bb2fb"><span class="id" title="notation">-</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#u"><span class="id" title="variable">u</span></a><a class="idref" href="mathcomp.algebra.poly.html#8b14e41ab5fcce2460b8672da1456d67"><span class="id" title="notation">%:</span></a><a class="idref" href="mathcomp.algebra.poly.html#8b14e41ab5fcce2460b8672da1456d67"><span class="id" title="notation">P</span></a>) <a class="idref" href="mathcomp.algebra.mxpoly.html#u"><span class="id" title="variable">u</span></a>. <br/> -<span class="id" title="keyword">Let</span> <a name="IntegralOverComRing.intR_XsubC"><span class="id" title="variable">intR_XsubC</span></a> <span class="id" title="var">u</span> :<br/> - <a class="idref" href="mathcomp.algebra.mxpoly.html#integralOver"><span class="id" title="definition">integralOver</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#IntegralOverComRing.RtoK"><span class="id" title="variable">RtoK</span></a> (<a class="idref" href="mathcomp.algebra.ssralg.html#8d0566c961139ec21811f52ef0c317db"><span class="id" title="notation">-</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#u"><span class="id" title="variable">u</span></a>) <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#1c93e43e07fbeaeb6a625cb6614beb5d"><span class="id" title="notation">→</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#8c08d4203604dbed63e7afa9b689d858"><span class="id" title="notation">{</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#8c08d4203604dbed63e7afa9b689d858"><span class="id" title="notation">in</span></a> <a class="idref" href="mathcomp.algebra.poly.html#dc2ed3a32abac1baa27cfc93ddc4e844"><span class="id" title="notation">'</span></a><a class="idref" href="mathcomp.algebra.poly.html#dc2ed3a32abac1baa27cfc93ddc4e844"><span class="id" title="notation">X</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#51dc792c356ca1a71a3094b50d6bb2fb"><span class="id" title="notation">-</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#u"><span class="id" title="variable">u</span></a><a class="idref" href="mathcomp.algebra.poly.html#8b14e41ab5fcce2460b8672da1456d67"><span class="id" title="notation">%:</span></a><a class="idref" href="mathcomp.algebra.poly.html#8b14e41ab5fcce2460b8672da1456d67"><span class="id" title="notation">P</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssreflect.html#aed478b27f23b4f753c27c8ac393febc"><span class="id" title="notation">:</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#seq"><span class="id" title="abbreviation">seq</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#IntegralOverComRing.K"><span class="id" title="variable">K</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#8c08d4203604dbed63e7afa9b689d858"><span class="id" title="notation">,</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#integralRange"><span class="id" title="definition">integralRange</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#IntegralOverComRing.RtoK"><span class="id" title="variable">RtoK</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#8c08d4203604dbed63e7afa9b689d858"><span class="id" title="notation">}</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="integral_opp"><span class="id" title="lemma">integral_opp</span></a> <span class="id" title="var">u</span> : <a class="idref" href="mathcomp.algebra.mxpoly.html#integralOver"><span class="id" title="definition">integralOver</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#IntegralOverComRing.RtoK"><span class="id" title="variable">RtoK</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#u"><span class="id" title="variable">u</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#1c93e43e07fbeaeb6a625cb6614beb5d"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#integralOver"><span class="id" title="definition">integralOver</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#IntegralOverComRing.RtoK"><span class="id" title="variable">RtoK</span></a> (<a class="idref" href="mathcomp.algebra.ssralg.html#8d0566c961139ec21811f52ef0c317db"><span class="id" title="notation">-</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#u"><span class="id" title="variable">u</span></a>).<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="integral_horner"><span class="id" title="lemma">integral_horner</span></a> (<span class="id" title="var">p</span> : <a class="idref" href="mathcomp.algebra.poly.html#c2ef4fdf7ae62c36654f85f0d2a6c874"><span class="id" title="notation">{</span></a><a class="idref" href="mathcomp.algebra.poly.html#c2ef4fdf7ae62c36654f85f0d2a6c874"><span class="id" title="notation">poly</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#IntegralOverComRing.K"><span class="id" title="variable">K</span></a><a class="idref" href="mathcomp.algebra.poly.html#c2ef4fdf7ae62c36654f85f0d2a6c874"><span class="id" title="notation">}</span></a>) <span class="id" title="var">u</span> :<br/> - <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#8c08d4203604dbed63e7afa9b689d858"><span class="id" title="notation">{</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#8c08d4203604dbed63e7afa9b689d858"><span class="id" title="notation">in</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#p"><span class="id" title="variable">p</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssreflect.html#aed478b27f23b4f753c27c8ac393febc"><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.mxpoly.html#IntegralOverComRing.K"><span class="id" title="variable">K</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#8c08d4203604dbed63e7afa9b689d858"><span class="id" title="notation">,</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#integralRange"><span class="id" title="definition">integralRange</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#IntegralOverComRing.RtoK"><span class="id" title="variable">RtoK</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#8c08d4203604dbed63e7afa9b689d858"><span class="id" title="notation">}</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#1c93e43e07fbeaeb6a625cb6614beb5d"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#integralOver"><span class="id" title="definition">integralOver</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#IntegralOverComRing.RtoK"><span class="id" title="variable">RtoK</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#u"><span class="id" title="variable">u</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#1c93e43e07fbeaeb6a625cb6614beb5d"><span class="id" title="notation">→</span></a><br/> - <a class="idref" href="mathcomp.algebra.mxpoly.html#integralOver"><span class="id" title="definition">integralOver</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#IntegralOverComRing.RtoK"><span class="id" title="variable">RtoK</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#p"><span class="id" title="variable">p</span></a><a class="idref" href="mathcomp.algebra.poly.html#e4361ce58e4de0a4b9786d0011b61316"><span class="id" title="notation">.[</span></a><a class="idref" href="mathcomp.algebra.mxpoly.html#u"><span class="id" title="variable">u</span></a><a class="idref" href="mathcomp.algebra.poly.html#e4361ce58e4de0a4b9786d0011b61316"><span class="id" title="notation">]</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="integral_sub"><span class="id" title="lemma">integral_sub</span></a> <span class="id" title="var">u</span> <span class="id" title="var">v</span> :<br/> - <a class="idref" href="mathcomp.algebra.mxpoly.html#integralOver"><span class="id" title="definition">integralOver</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#IntegralOverComRing.RtoK"><span class="id" title="variable">RtoK</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#u"><span class="id" title="variable">u</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#1c93e43e07fbeaeb6a625cb6614beb5d"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#integralOver"><span class="id" title="definition">integralOver</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#IntegralOverComRing.RtoK"><span class="id" title="variable">RtoK</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#v"><span class="id" title="variable">v</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#1c93e43e07fbeaeb6a625cb6614beb5d"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#integralOver"><span class="id" title="definition">integralOver</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#IntegralOverComRing.RtoK"><span class="id" title="variable">RtoK</span></a> (<a class="idref" href="mathcomp.algebra.mxpoly.html#u"><span class="id" title="variable">u</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#51dc792c356ca1a71a3094b50d6bb2fb"><span class="id" title="notation">-</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#v"><span class="id" title="variable">v</span></a>).<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="integral_add"><span class="id" title="lemma">integral_add</span></a> <span class="id" title="var">u</span> <span class="id" title="var">v</span> :<br/> - <a class="idref" href="mathcomp.algebra.mxpoly.html#integralOver"><span class="id" title="definition">integralOver</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#IntegralOverComRing.RtoK"><span class="id" title="variable">RtoK</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#u"><span class="id" title="variable">u</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#1c93e43e07fbeaeb6a625cb6614beb5d"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#integralOver"><span class="id" title="definition">integralOver</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#IntegralOverComRing.RtoK"><span class="id" title="variable">RtoK</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#v"><span class="id" title="variable">v</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#1c93e43e07fbeaeb6a625cb6614beb5d"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#integralOver"><span class="id" title="definition">integralOver</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#IntegralOverComRing.RtoK"><span class="id" title="variable">RtoK</span></a> (<a class="idref" href="mathcomp.algebra.mxpoly.html#u"><span class="id" title="variable">u</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#c7f78cf1f6a5e4f664654f7d671ca752"><span class="id" title="notation">+</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#v"><span class="id" title="variable">v</span></a>).<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="integral_mul"><span class="id" title="lemma">integral_mul</span></a> <span class="id" title="var">u</span> <span class="id" title="var">v</span> :<br/> - <a class="idref" href="mathcomp.algebra.mxpoly.html#integralOver"><span class="id" title="definition">integralOver</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#IntegralOverComRing.RtoK"><span class="id" title="variable">RtoK</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#u"><span class="id" title="variable">u</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#1c93e43e07fbeaeb6a625cb6614beb5d"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#integralOver"><span class="id" title="definition">integralOver</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#IntegralOverComRing.RtoK"><span class="id" title="variable">RtoK</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#v"><span class="id" title="variable">v</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#1c93e43e07fbeaeb6a625cb6614beb5d"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#integralOver"><span class="id" title="definition">integralOver</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#IntegralOverComRing.RtoK"><span class="id" title="variable">RtoK</span></a> (<a class="idref" href="mathcomp.algebra.mxpoly.html#u"><span class="id" title="variable">u</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#2d0cfb150261028f4ebd2ba355623dcc"><span class="id" title="notation">×</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#v"><span class="id" title="variable">v</span></a>).<br/> - -<br/> -<span class="id" title="keyword">End</span> <a class="idref" href="mathcomp.algebra.mxpoly.html#IntegralOverComRing"><span class="id" title="section">IntegralOverComRing</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Section</span> <a name="IntegralOverField"><span class="id" title="section">IntegralOverField</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Variables</span> (<a name="IntegralOverField.F"><span class="id" title="variable">F</span></a> <a name="IntegralOverField.E"><span class="id" title="variable">E</span></a> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Field.Exports.fieldType"><span class="id" title="abbreviation">fieldType</span></a>) (<a name="IntegralOverField.FtoE"><span class="id" title="variable">FtoE</span></a> : <a class="idref" href="mathcomp.algebra.ssralg.html#d531732ed602c7af62b88c7cfce824e5"><span class="id" title="notation">{</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#d531732ed602c7af62b88c7cfce824e5"><span class="id" title="notation">rmorphism</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#F"><span class="id" title="variable">F</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#1c93e43e07fbeaeb6a625cb6614beb5d"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#E"><span class="id" title="variable">E</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#d531732ed602c7af62b88c7cfce824e5"><span class="id" title="notation">}</span></a>).<br/> - -<br/> -<span class="id" title="keyword">Definition</span> <a name="algebraicOver"><span class="id" title="definition">algebraicOver</span></a> (<span class="id" title="var">fFtoE</span> : <a class="idref" href="mathcomp.algebra.mxpoly.html#IntegralOverField.F"><span class="id" title="variable">F</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#1c93e43e07fbeaeb6a625cb6614beb5d"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#IntegralOverField.E"><span class="id" title="variable">E</span></a>) <span class="id" title="var">u</span> :=<br/> - <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#3df228c109f14f0423b4fccc967ee1ac"><span class="id" title="notation">exists2</span></a> <span class="id" title="var">p</span><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#3df228c109f14f0423b4fccc967ee1ac"><span class="id" title="notation">,</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#p"><span class="id" title="variable">p</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#c385a484ee9d1b4e0615924561a9b75e"><span class="id" title="notation">!=</span></a> 0 <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#3df228c109f14f0423b4fccc967ee1ac"><span class="id" title="notation">&</span></a> <a class="idref" href="mathcomp.algebra.poly.html#root"><span class="id" title="definition">root</span></a> (<a class="idref" href="mathcomp.algebra.poly.html#map_poly"><span class="id" title="definition">map_poly</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#fFtoE"><span class="id" title="variable">fFtoE</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#p"><span class="id" title="variable">p</span></a>) <a class="idref" href="mathcomp.algebra.mxpoly.html#u"><span class="id" title="variable">u</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Notation</span> <a name="mk_mon"><span class="id" title="abbreviation">mk_mon</span></a> <span class="id" title="var">p</span> := (<a class="idref" href="mathcomp.algebra.ssralg.html#4e5a4c91ec0aa12de06dfe1cc07ea126"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.poly.html#lead_coef"><span class="id" title="definition">lead_coef</span></a> <span class="id" title="var">p</span><a class="idref" href="mathcomp.algebra.ssralg.html#4e5a4c91ec0aa12de06dfe1cc07ea126"><span class="id" title="notation">)^-1</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#3b05480e39db306e67fadbc79d394529"><span class="id" title="notation">*:</span></a> <span class="id" title="var">p</span>).<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="integral_algebraic"><span class="id" title="lemma">integral_algebraic</span></a> <span class="id" title="var">u</span> : <a class="idref" href="mathcomp.algebra.mxpoly.html#algebraicOver"><span class="id" title="definition">algebraicOver</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#IntegralOverField.FtoE"><span class="id" title="variable">FtoE</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#u"><span class="id" title="variable">u</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#4bfb4f2d0721ba668e3a802ab1b745a1"><span class="id" title="notation">↔</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#integralOver"><span class="id" title="definition">integralOver</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#IntegralOverField.FtoE"><span class="id" title="variable">FtoE</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#u"><span class="id" title="variable">u</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="algebraic_id"><span class="id" title="lemma">algebraic_id</span></a> <span class="id" title="var">a</span> : <a class="idref" href="mathcomp.algebra.mxpoly.html#algebraicOver"><span class="id" title="definition">algebraicOver</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#IntegralOverField.FtoE"><span class="id" title="variable">FtoE</span></a> (<a class="idref" href="mathcomp.algebra.mxpoly.html#IntegralOverField.FtoE"><span class="id" title="variable">FtoE</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#a"><span class="id" title="variable">a</span></a>).<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="algebraic0"><span class="id" title="lemma">algebraic0</span></a> : <a class="idref" href="mathcomp.algebra.mxpoly.html#algebraicOver"><span class="id" title="definition">algebraicOver</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#IntegralOverField.FtoE"><span class="id" title="variable">FtoE</span></a> 0.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="algebraic1"><span class="id" title="lemma">algebraic1</span></a> : <a class="idref" href="mathcomp.algebra.mxpoly.html#algebraicOver"><span class="id" title="definition">algebraicOver</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#IntegralOverField.FtoE"><span class="id" title="variable">FtoE</span></a> 1.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="algebraic_opp"><span class="id" title="lemma">algebraic_opp</span></a> <span class="id" title="var">x</span> : <a class="idref" href="mathcomp.algebra.mxpoly.html#algebraicOver"><span class="id" title="definition">algebraicOver</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#IntegralOverField.FtoE"><span class="id" title="variable">FtoE</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#1c93e43e07fbeaeb6a625cb6614beb5d"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#algebraicOver"><span class="id" title="definition">algebraicOver</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#IntegralOverField.FtoE"><span class="id" title="variable">FtoE</span></a> (<a class="idref" href="mathcomp.algebra.ssralg.html#8d0566c961139ec21811f52ef0c317db"><span class="id" title="notation">-</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#x"><span class="id" title="variable">x</span></a>).<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="algebraic_add"><span class="id" title="lemma">algebraic_add</span></a> <span class="id" title="var">x</span> <span class="id" title="var">y</span> :<br/> - <a class="idref" href="mathcomp.algebra.mxpoly.html#algebraicOver"><span class="id" title="definition">algebraicOver</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#IntegralOverField.FtoE"><span class="id" title="variable">FtoE</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#1c93e43e07fbeaeb6a625cb6614beb5d"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#algebraicOver"><span class="id" title="definition">algebraicOver</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#IntegralOverField.FtoE"><span class="id" title="variable">FtoE</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#y"><span class="id" title="variable">y</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#1c93e43e07fbeaeb6a625cb6614beb5d"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#algebraicOver"><span class="id" title="definition">algebraicOver</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#IntegralOverField.FtoE"><span class="id" title="variable">FtoE</span></a> (<a class="idref" href="mathcomp.algebra.mxpoly.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#c7f78cf1f6a5e4f664654f7d671ca752"><span class="id" title="notation">+</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#y"><span class="id" title="variable">y</span></a>).<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="algebraic_sub"><span class="id" title="lemma">algebraic_sub</span></a> <span class="id" title="var">x</span> <span class="id" title="var">y</span> :<br/> - <a class="idref" href="mathcomp.algebra.mxpoly.html#algebraicOver"><span class="id" title="definition">algebraicOver</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#IntegralOverField.FtoE"><span class="id" title="variable">FtoE</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#1c93e43e07fbeaeb6a625cb6614beb5d"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#algebraicOver"><span class="id" title="definition">algebraicOver</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#IntegralOverField.FtoE"><span class="id" title="variable">FtoE</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#y"><span class="id" title="variable">y</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#1c93e43e07fbeaeb6a625cb6614beb5d"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#algebraicOver"><span class="id" title="definition">algebraicOver</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#IntegralOverField.FtoE"><span class="id" title="variable">FtoE</span></a> (<a class="idref" href="mathcomp.algebra.mxpoly.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#51dc792c356ca1a71a3094b50d6bb2fb"><span class="id" title="notation">-</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#y"><span class="id" title="variable">y</span></a>).<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="algebraic_mul"><span class="id" title="lemma">algebraic_mul</span></a> <span class="id" title="var">x</span> <span class="id" title="var">y</span> :<br/> - <a class="idref" href="mathcomp.algebra.mxpoly.html#algebraicOver"><span class="id" title="definition">algebraicOver</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#IntegralOverField.FtoE"><span class="id" title="variable">FtoE</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#1c93e43e07fbeaeb6a625cb6614beb5d"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#algebraicOver"><span class="id" title="definition">algebraicOver</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#IntegralOverField.FtoE"><span class="id" title="variable">FtoE</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#y"><span class="id" title="variable">y</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#1c93e43e07fbeaeb6a625cb6614beb5d"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#algebraicOver"><span class="id" title="definition">algebraicOver</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#IntegralOverField.FtoE"><span class="id" title="variable">FtoE</span></a> (<a class="idref" href="mathcomp.algebra.mxpoly.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#2d0cfb150261028f4ebd2ba355623dcc"><span class="id" title="notation">×</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#y"><span class="id" title="variable">y</span></a>).<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="algebraic_inv"><span class="id" title="lemma">algebraic_inv</span></a> <span class="id" title="var">u</span> : <a class="idref" href="mathcomp.algebra.mxpoly.html#algebraicOver"><span class="id" title="definition">algebraicOver</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#IntegralOverField.FtoE"><span class="id" title="variable">FtoE</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#u"><span class="id" title="variable">u</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#1c93e43e07fbeaeb6a625cb6614beb5d"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#algebraicOver"><span class="id" title="definition">algebraicOver</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#IntegralOverField.FtoE"><span class="id" title="variable">FtoE</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#u"><span class="id" title="variable">u</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#4e5a4c91ec0aa12de06dfe1cc07ea126"><span class="id" title="notation">^-1</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="algebraic_div"><span class="id" title="lemma">algebraic_div</span></a> <span class="id" title="var">x</span> <span class="id" title="var">y</span> :<br/> - <a class="idref" href="mathcomp.algebra.mxpoly.html#algebraicOver"><span class="id" title="definition">algebraicOver</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#IntegralOverField.FtoE"><span class="id" title="variable">FtoE</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#1c93e43e07fbeaeb6a625cb6614beb5d"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#algebraicOver"><span class="id" title="definition">algebraicOver</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#IntegralOverField.FtoE"><span class="id" title="variable">FtoE</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#y"><span class="id" title="variable">y</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#1c93e43e07fbeaeb6a625cb6614beb5d"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#algebraicOver"><span class="id" title="definition">algebraicOver</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#IntegralOverField.FtoE"><span class="id" title="variable">FtoE</span></a> (<a class="idref" href="mathcomp.algebra.mxpoly.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#69c431a9c94f6f30a655bd7ddb59037b"><span class="id" title="notation">/</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#y"><span class="id" title="variable">y</span></a>).<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="integral_inv"><span class="id" title="lemma">integral_inv</span></a> <span class="id" title="var">x</span> : <a class="idref" href="mathcomp.algebra.mxpoly.html#integralOver"><span class="id" title="definition">integralOver</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#IntegralOverField.FtoE"><span class="id" title="variable">FtoE</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#1c93e43e07fbeaeb6a625cb6614beb5d"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#integralOver"><span class="id" title="definition">integralOver</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#IntegralOverField.FtoE"><span class="id" title="variable">FtoE</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#x"><span class="id" title="variable">x</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#4e5a4c91ec0aa12de06dfe1cc07ea126"><span class="id" title="notation">^-1</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="integral_div"><span class="id" title="lemma">integral_div</span></a> <span class="id" title="var">x</span> <span class="id" title="var">y</span> :<br/> - <a class="idref" href="mathcomp.algebra.mxpoly.html#integralOver"><span class="id" title="definition">integralOver</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#IntegralOverField.FtoE"><span class="id" title="variable">FtoE</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#1c93e43e07fbeaeb6a625cb6614beb5d"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#integralOver"><span class="id" title="definition">integralOver</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#IntegralOverField.FtoE"><span class="id" title="variable">FtoE</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#y"><span class="id" title="variable">y</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#1c93e43e07fbeaeb6a625cb6614beb5d"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#integralOver"><span class="id" title="definition">integralOver</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#IntegralOverField.FtoE"><span class="id" title="variable">FtoE</span></a> (<a class="idref" href="mathcomp.algebra.mxpoly.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#69c431a9c94f6f30a655bd7ddb59037b"><span class="id" title="notation">/</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#y"><span class="id" title="variable">y</span></a>).<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="integral_root"><span class="id" title="lemma">integral_root</span></a> <span class="id" title="var">p</span> <span class="id" title="var">u</span> :<br/> - <a class="idref" href="mathcomp.algebra.mxpoly.html#p"><span class="id" title="variable">p</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#c385a484ee9d1b4e0615924561a9b75e"><span class="id" title="notation">!=</span></a> 0 <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#1c93e43e07fbeaeb6a625cb6614beb5d"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.poly.html#root"><span class="id" title="definition">root</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#p"><span class="id" title="variable">p</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#u"><span class="id" title="variable">u</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#1c93e43e07fbeaeb6a625cb6614beb5d"><span class="id" title="notation">→</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#8c08d4203604dbed63e7afa9b689d858"><span class="id" title="notation">{</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#8c08d4203604dbed63e7afa9b689d858"><span class="id" title="notation">in</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#p"><span class="id" title="variable">p</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssreflect.html#aed478b27f23b4f753c27c8ac393febc"><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.mxpoly.html#IntegralOverField.E"><span class="id" title="variable">E</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#8c08d4203604dbed63e7afa9b689d858"><span class="id" title="notation">,</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#integralRange"><span class="id" title="definition">integralRange</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#IntegralOverField.FtoE"><span class="id" title="variable">FtoE</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#8c08d4203604dbed63e7afa9b689d858"><span class="id" title="notation">}</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#1c93e43e07fbeaeb6a625cb6614beb5d"><span class="id" title="notation">→</span></a><br/> - <a class="idref" href="mathcomp.algebra.mxpoly.html#integralOver"><span class="id" title="definition">integralOver</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#IntegralOverField.FtoE"><span class="id" title="variable">FtoE</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.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.mxpoly.html#IntegralOverField"><span class="id" title="section">IntegralOverField</span></a>.<br/> - -<br/> -</div> - -<div class="doc"> - Lifting term, formula, envs and eval to matrices. Wlog, and for the sake - of simplicity, we only lift (tensor) envs to row vectors; we can always - use mxvec/vec_mx to store and retrieve matrices. - We don't provide definitions for addition, subtraction, scaling, etc, - because they have simple matrix expressions. -</div> -<div class="code"> -<span class="id" title="keyword">Module</span> <a name="MatrixFormula"><span class="id" title="module">MatrixFormula</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Section</span> <a name="MatrixFormula.MatrixFormula"><span class="id" title="section">MatrixFormula</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Variable</span> <a name="MatrixFormula.MatrixFormula.F"><span class="id" title="variable">F</span></a> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Field.Exports.fieldType"><span class="id" title="abbreviation">fieldType</span></a>.<br/> - -<br/> - -<br/> -<span class="id" title="keyword">Definition</span> <a name="MatrixFormula.eval_mx"><span class="id" title="definition">eval_mx</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.mxpoly.html#MatrixFormula.MatrixFormula.F"><span class="id" title="variable">F</span></a>) := @<a class="idref" href="mathcomp.algebra.matrix.html#map_mx"><span class="id" title="definition">map_mx</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#MatrixFormula.term"><span class="id" title="abbreviation">term</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#MatrixFormula.MatrixFormula.F"><span class="id" title="variable">F</span></a> (<a class="idref" href="mathcomp.algebra.mxpoly.html#MatrixFormula.eval"><span class="id" title="abbreviation">eval</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#e"><span class="id" title="variable">e</span></a>).<br/> - -<br/> -<span class="id" title="keyword">Definition</span> <a name="MatrixFormula.mx_term"><span class="id" title="definition">mx_term</span></a> := @<a class="idref" href="mathcomp.algebra.matrix.html#map_mx"><span class="id" title="definition">map_mx</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#MatrixFormula.MatrixFormula.F"><span class="id" title="variable">F</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#MatrixFormula.term"><span class="id" title="abbreviation">term</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Const"><span class="id" title="constructor">GRing.Const</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="MatrixFormula.eval_mx_term"><span class="id" title="lemma">eval_mx_term</span></a> <span class="id" title="var">e</span> <span class="id" title="var">m</span> <span class="id" title="var">n</span> (<span class="id" title="var">A</span> : <a class="idref" href="mathcomp.algebra.matrix.html#5402b0dfe2a7ea661b91256aeeaf93da"><span class="id" title="notation">'</span></a><a class="idref" href="mathcomp.algebra.matrix.html#5402b0dfe2a7ea661b91256aeeaf93da"><span class="id" title="notation">M_</span></a><a class="idref" href="mathcomp.algebra.matrix.html#5402b0dfe2a7ea661b91256aeeaf93da"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.mxpoly.html#m"><span class="id" title="variable">m</span></a><a class="idref" href="mathcomp.algebra.matrix.html#5402b0dfe2a7ea661b91256aeeaf93da"><span class="id" title="notation">,</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#n"><span class="id" title="variable">n</span></a><a class="idref" href="mathcomp.algebra.matrix.html#5402b0dfe2a7ea661b91256aeeaf93da"><span class="id" title="notation">)</span></a>) : <a class="idref" href="mathcomp.algebra.mxpoly.html#MatrixFormula.eval_mx"><span class="id" title="definition">eval_mx</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#e"><span class="id" title="variable">e</span></a> (<a class="idref" href="mathcomp.algebra.mxpoly.html#MatrixFormula.mx_term"><span class="id" title="definition">mx_term</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#A"><span class="id" title="variable">A</span></a>) <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#6cd0f7b28b6092304087c7049437bb1a"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#A"><span class="id" title="variable">A</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Definition</span> <a name="MatrixFormula.mulmx_term"><span class="id" title="definition">mulmx_term</span></a> <span class="id" title="var">m</span> <span class="id" title="var">n</span> <span class="id" title="var">p</span> (<span class="id" title="var">A</span> : <a class="idref" href="mathcomp.algebra.matrix.html#9c0a062cce31174bb4a1f05fb9cee844"><span class="id" title="notation">'</span></a><a class="idref" href="mathcomp.algebra.matrix.html#9c0a062cce31174bb4a1f05fb9cee844"><span class="id" title="notation">M</span></a><a class="idref" href="mathcomp.algebra.matrix.html#9c0a062cce31174bb4a1f05fb9cee844"><span class="id" title="notation">[</span></a><a class="idref" href="mathcomp.algebra.mxpoly.html#MatrixFormula.term"><span class="id" title="abbreviation">term</span></a><a class="idref" href="mathcomp.algebra.matrix.html#9c0a062cce31174bb4a1f05fb9cee844"><span class="id" title="notation">]</span></a><a class="idref" href="mathcomp.algebra.matrix.html#9c0a062cce31174bb4a1f05fb9cee844"><span class="id" title="notation">_</span></a><a class="idref" href="mathcomp.algebra.matrix.html#9c0a062cce31174bb4a1f05fb9cee844"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.mxpoly.html#m"><span class="id" title="variable">m</span></a><a class="idref" href="mathcomp.algebra.matrix.html#9c0a062cce31174bb4a1f05fb9cee844"><span class="id" title="notation">,</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#n"><span class="id" title="variable">n</span></a><a class="idref" href="mathcomp.algebra.matrix.html#9c0a062cce31174bb4a1f05fb9cee844"><span class="id" title="notation">)</span></a>) (<span class="id" title="var">B</span> : <a class="idref" href="mathcomp.algebra.matrix.html#5402b0dfe2a7ea661b91256aeeaf93da"><span class="id" title="notation">'</span></a><a class="idref" href="mathcomp.algebra.matrix.html#5402b0dfe2a7ea661b91256aeeaf93da"><span class="id" title="notation">M_</span></a><a class="idref" href="mathcomp.algebra.matrix.html#5402b0dfe2a7ea661b91256aeeaf93da"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.mxpoly.html#n"><span class="id" title="variable">n</span></a><a class="idref" href="mathcomp.algebra.matrix.html#5402b0dfe2a7ea661b91256aeeaf93da"><span class="id" title="notation">,</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#p"><span class="id" title="variable">p</span></a><a class="idref" href="mathcomp.algebra.matrix.html#5402b0dfe2a7ea661b91256aeeaf93da"><span class="id" title="notation">)</span></a>) :=<br/> - <a class="idref" href="mathcomp.algebra.matrix.html#9b7ac910045fe3e3a8253dae2e2bc494"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.algebra.matrix.html#9b7ac910045fe3e3a8253dae2e2bc494"><span class="id" title="notation">matrix_</span></a><a class="idref" href="mathcomp.algebra.matrix.html#9b7ac910045fe3e3a8253dae2e2bc494"><span class="id" title="notation">(</span></a><span class="id" title="var">i</span><a class="idref" href="mathcomp.algebra.matrix.html#9b7ac910045fe3e3a8253dae2e2bc494"><span class="id" title="notation">,</span></a> <span class="id" title="var">k</span><a class="idref" href="mathcomp.algebra.matrix.html#9b7ac910045fe3e3a8253dae2e2bc494"><span class="id" title="notation">)</span></a> (<a class="idref" href="mathcomp.ssreflect.bigop.html#379a79a86133b2d1cd9cb43efa183ecb"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.ssreflect.bigop.html#379a79a86133b2d1cd9cb43efa183ecb"><span class="id" title="notation">big</span></a><a class="idref" href="mathcomp.ssreflect.bigop.html#379a79a86133b2d1cd9cb43efa183ecb"><span class="id" title="notation">[</span></a><a class="idref" href="mathcomp.algebra.mxpoly.html#MatrixFormula.Add"><span class="id" title="abbreviation">Add</span></a><a class="idref" href="mathcomp.ssreflect.bigop.html#379a79a86133b2d1cd9cb43efa183ecb"><span class="id" title="notation">/</span></a>0<a class="idref" href="mathcomp.ssreflect.bigop.html#379a79a86133b2d1cd9cb43efa183ecb"><span class="id" title="notation">]</span></a><a class="idref" href="mathcomp.ssreflect.bigop.html#379a79a86133b2d1cd9cb43efa183ecb"><span class="id" title="notation">_j</span></a> <a class="idref" href="mathcomp.ssreflect.bigop.html#379a79a86133b2d1cd9cb43efa183ecb"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.mxpoly.html#A"><span class="id" title="variable">A</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#i"><span class="id" title="variable">i</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#j"><span class="id" title="variable">j</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#0f66e0377386facac088dbe9d64fe464"><span class="id" title="notation">×</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#B"><span class="id" title="variable">B</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#j"><span class="id" title="variable">j</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#k"><span class="id" title="variable">k</span></a><a class="idref" href="mathcomp.ssreflect.bigop.html#379a79a86133b2d1cd9cb43efa183ecb"><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="MatrixFormula.eval_mulmx"><span class="id" title="lemma">eval_mulmx</span></a> <span class="id" title="var">e</span> <span class="id" title="var">m</span> <span class="id" title="var">n</span> <span class="id" title="var">p</span> (<span class="id" title="var">A</span> : <a class="idref" href="mathcomp.algebra.matrix.html#9c0a062cce31174bb4a1f05fb9cee844"><span class="id" title="notation">'</span></a><a class="idref" href="mathcomp.algebra.matrix.html#9c0a062cce31174bb4a1f05fb9cee844"><span class="id" title="notation">M</span></a><a class="idref" href="mathcomp.algebra.matrix.html#9c0a062cce31174bb4a1f05fb9cee844"><span class="id" title="notation">[</span></a><a class="idref" href="mathcomp.algebra.mxpoly.html#MatrixFormula.term"><span class="id" title="abbreviation">term</span></a><a class="idref" href="mathcomp.algebra.matrix.html#9c0a062cce31174bb4a1f05fb9cee844"><span class="id" title="notation">]</span></a><a class="idref" href="mathcomp.algebra.matrix.html#9c0a062cce31174bb4a1f05fb9cee844"><span class="id" title="notation">_</span></a><a class="idref" href="mathcomp.algebra.matrix.html#9c0a062cce31174bb4a1f05fb9cee844"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.mxpoly.html#m"><span class="id" title="variable">m</span></a><a class="idref" href="mathcomp.algebra.matrix.html#9c0a062cce31174bb4a1f05fb9cee844"><span class="id" title="notation">,</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#n"><span class="id" title="variable">n</span></a><a class="idref" href="mathcomp.algebra.matrix.html#9c0a062cce31174bb4a1f05fb9cee844"><span class="id" title="notation">)</span></a>) (<span class="id" title="var">B</span> : <a class="idref" href="mathcomp.algebra.matrix.html#5402b0dfe2a7ea661b91256aeeaf93da"><span class="id" title="notation">'</span></a><a class="idref" href="mathcomp.algebra.matrix.html#5402b0dfe2a7ea661b91256aeeaf93da"><span class="id" title="notation">M_</span></a><a class="idref" href="mathcomp.algebra.matrix.html#5402b0dfe2a7ea661b91256aeeaf93da"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.mxpoly.html#n"><span class="id" title="variable">n</span></a><a class="idref" href="mathcomp.algebra.matrix.html#5402b0dfe2a7ea661b91256aeeaf93da"><span class="id" title="notation">,</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#p"><span class="id" title="variable">p</span></a><a class="idref" href="mathcomp.algebra.matrix.html#5402b0dfe2a7ea661b91256aeeaf93da"><span class="id" title="notation">)</span></a>) :<br/> - <a class="idref" href="mathcomp.algebra.mxpoly.html#MatrixFormula.eval_mx"><span class="id" title="definition">eval_mx</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#e"><span class="id" title="variable">e</span></a> (<a class="idref" href="mathcomp.algebra.mxpoly.html#MatrixFormula.mulmx_term"><span class="id" title="definition">mulmx_term</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#A"><span class="id" title="variable">A</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#B"><span class="id" title="variable">B</span></a>) <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#6cd0f7b28b6092304087c7049437bb1a"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#MatrixFormula.eval_mx"><span class="id" title="definition">eval_mx</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#e"><span class="id" title="variable">e</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#A"><span class="id" title="variable">A</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#b2b431de65e6c1e23c1ae3a60262ea15"><span class="id" title="notation">×</span></a><a class="idref" href="mathcomp.algebra.matrix.html#b2b431de65e6c1e23c1ae3a60262ea15"><span class="id" title="notation">m</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#MatrixFormula.eval_mx"><span class="id" title="definition">eval_mx</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#e"><span class="id" title="variable">e</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#B"><span class="id" title="variable">B</span></a>.<br/> - -<br/> - -<br/> -<span class="id" title="keyword">Let</span> <a name="MatrixFormula.MatrixFormula.Schur"><span class="id" title="variable">Schur</span></a> <span class="id" title="var">m</span> <span class="id" title="var">n</span> (<span class="id" title="var">A</span> : <a class="idref" href="mathcomp.algebra.matrix.html#9c0a062cce31174bb4a1f05fb9cee844"><span class="id" title="notation">'</span></a><a class="idref" href="mathcomp.algebra.matrix.html#9c0a062cce31174bb4a1f05fb9cee844"><span class="id" title="notation">M</span></a><a class="idref" href="mathcomp.algebra.matrix.html#9c0a062cce31174bb4a1f05fb9cee844"><span class="id" title="notation">[</span></a><a class="idref" href="mathcomp.algebra.mxpoly.html#MatrixFormula.term"><span class="id" title="abbreviation">term</span></a><a class="idref" href="mathcomp.algebra.matrix.html#9c0a062cce31174bb4a1f05fb9cee844"><span class="id" title="notation">]</span></a><a class="idref" href="mathcomp.algebra.matrix.html#9c0a062cce31174bb4a1f05fb9cee844"><span class="id" title="notation">_</span></a><a class="idref" href="mathcomp.algebra.matrix.html#9c0a062cce31174bb4a1f05fb9cee844"><span class="id" title="notation">(</span></a>1 <a class="idref" href="mathcomp.ssreflect.ssrnat.html#0dacc1786c5ba797d47dd85006231633"><span class="id" title="notation">+</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#m"><span class="id" title="variable">m</span></a><a class="idref" href="mathcomp.algebra.matrix.html#9c0a062cce31174bb4a1f05fb9cee844"><span class="id" title="notation">,</span></a> 1 <a class="idref" href="mathcomp.ssreflect.ssrnat.html#0dacc1786c5ba797d47dd85006231633"><span class="id" title="notation">+</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#n"><span class="id" title="variable">n</span></a><a class="idref" href="mathcomp.algebra.matrix.html#9c0a062cce31174bb4a1f05fb9cee844"><span class="id" title="notation">)</span></a>) (<span class="id" title="var">a</span> := <a class="idref" href="mathcomp.algebra.mxpoly.html#A"><span class="id" title="variable">A</span></a> 0 0) :=<br/> - <a class="idref" href="mathcomp.algebra.matrix.html#9b7ac910045fe3e3a8253dae2e2bc494"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.algebra.matrix.html#9b7ac910045fe3e3a8253dae2e2bc494"><span class="id" title="notation">matrix_</span></a><a class="idref" href="mathcomp.algebra.matrix.html#9b7ac910045fe3e3a8253dae2e2bc494"><span class="id" title="notation">(</span></a><span class="id" title="var">i</span><a class="idref" href="mathcomp.algebra.matrix.html#9b7ac910045fe3e3a8253dae2e2bc494"><span class="id" title="notation">,</span></a> <span class="id" title="var">j</span><a class="idref" href="mathcomp.algebra.matrix.html#9b7ac910045fe3e3a8253dae2e2bc494"><span class="id" title="notation">)</span></a> (<a class="idref" href="mathcomp.algebra.matrix.html#drsubmx"><span class="id" title="definition">drsubmx</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#A"><span class="id" title="variable">A</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#i"><span class="id" title="variable">i</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#j"><span class="id" title="variable">j</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#5cb99c63f36860400b899961ab21258a"><span class="id" title="notation">-</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#a"><span class="id" title="variable">a</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#43ec4b364d04e6bb82d286dda6431508"><span class="id" title="notation">^-1</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#0f66e0377386facac088dbe9d64fe464"><span class="id" title="notation">×</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#dlsubmx"><span class="id" title="definition">dlsubmx</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#A"><span class="id" title="variable">A</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#i"><span class="id" title="variable">i</span></a> 0%<span class="id" title="var">R</span> <a class="idref" href="mathcomp.algebra.ssralg.html#0f66e0377386facac088dbe9d64fe464"><span class="id" title="notation">×</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#ursubmx"><span class="id" title="definition">ursubmx</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#A"><span class="id" title="variable">A</span></a> 0%<span class="id" title="var">R</span> <a class="idref" href="mathcomp.algebra.mxpoly.html#j"><span class="id" title="variable">j</span></a>)%<span class="id" title="var">T</span>.<br/> - -<br/> -<span class="id" title="keyword">Fixpoint</span> <a name="MatrixFormula.mxrank_form"><span class="id" title="definition">mxrank_form</span></a> (<span class="id" title="var">r</span> <span class="id" title="var">m</span> <span class="id" title="var">n</span> : <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Datatypes.html#nat"><span class="id" title="inductive">nat</span></a>) : <a class="idref" href="mathcomp.algebra.matrix.html#5402b0dfe2a7ea661b91256aeeaf93da"><span class="id" title="notation">'</span></a><a class="idref" href="mathcomp.algebra.matrix.html#5402b0dfe2a7ea661b91256aeeaf93da"><span class="id" title="notation">M_</span></a><a class="idref" href="mathcomp.algebra.matrix.html#5402b0dfe2a7ea661b91256aeeaf93da"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.mxpoly.html#m"><span class="id" title="variable">m</span></a><a class="idref" href="mathcomp.algebra.matrix.html#5402b0dfe2a7ea661b91256aeeaf93da"><span class="id" title="notation">,</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#n"><span class="id" title="variable">n</span></a><a class="idref" href="mathcomp.algebra.matrix.html#5402b0dfe2a7ea661b91256aeeaf93da"><span class="id" title="notation">)</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#1c93e43e07fbeaeb6a625cb6614beb5d"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#MatrixFormula.form"><span class="id" title="abbreviation">form</span></a> :=<br/> - <span class="id" title="keyword">match</span> <a class="idref" href="mathcomp.algebra.mxpoly.html#m"><span class="id" title="variable">m</span></a>, <a class="idref" href="mathcomp.algebra.mxpoly.html#n"><span class="id" title="variable">n</span></a> <span class="id" title="keyword">return</span> <a class="idref" href="mathcomp.algebra.matrix.html#5402b0dfe2a7ea661b91256aeeaf93da"><span class="id" title="notation">'</span></a><a class="idref" href="mathcomp.algebra.matrix.html#5402b0dfe2a7ea661b91256aeeaf93da"><span class="id" title="notation">M_</span></a><a class="idref" href="mathcomp.algebra.matrix.html#5402b0dfe2a7ea661b91256aeeaf93da"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.mxpoly.html#m"><span class="id" title="variable">m</span></a><a class="idref" href="mathcomp.algebra.matrix.html#5402b0dfe2a7ea661b91256aeeaf93da"><span class="id" title="notation">,</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#n"><span class="id" title="variable">n</span></a><a class="idref" href="mathcomp.algebra.matrix.html#5402b0dfe2a7ea661b91256aeeaf93da"><span class="id" title="notation">)</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#1c93e43e07fbeaeb6a625cb6614beb5d"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#MatrixFormula.form"><span class="id" title="abbreviation">form</span></a> <span class="id" title="keyword">with</span><br/> - | <span class="id" title="var">m'</span><a class="idref" href="mathcomp.ssreflect.ssrnat.html#bda89d73ec4a8f23ae92b565ffb5aaa6"><span class="id" title="notation">.+1</span></a>, <span class="id" title="var">n'</span><a class="idref" href="mathcomp.ssreflect.ssrnat.html#bda89d73ec4a8f23ae92b565ffb5aaa6"><span class="id" title="notation">.+1</span></a> ⇒ <span class="id" title="keyword">fun</span> <span class="id" title="var">A</span> : <a class="idref" href="mathcomp.algebra.matrix.html#5402b0dfe2a7ea661b91256aeeaf93da"><span class="id" title="notation">'</span></a><a class="idref" href="mathcomp.algebra.matrix.html#5402b0dfe2a7ea661b91256aeeaf93da"><span class="id" title="notation">M_</span></a><a class="idref" href="mathcomp.algebra.matrix.html#5402b0dfe2a7ea661b91256aeeaf93da"><span class="id" title="notation">(</span></a>1 <a class="idref" href="mathcomp.ssreflect.ssrnat.html#0dacc1786c5ba797d47dd85006231633"><span class="id" title="notation">+</span></a> <span class="id" title="var">m'</span><a class="idref" href="mathcomp.algebra.matrix.html#5402b0dfe2a7ea661b91256aeeaf93da"><span class="id" title="notation">,</span></a> 1 <a class="idref" href="mathcomp.ssreflect.ssrnat.html#0dacc1786c5ba797d47dd85006231633"><span class="id" title="notation">+</span></a> <span class="id" title="var">n'</span><a class="idref" href="mathcomp.algebra.matrix.html#5402b0dfe2a7ea661b91256aeeaf93da"><span class="id" title="notation">)</span></a> ⇒<br/> - <span class="id" title="keyword">let</span> <span class="id" title="var">nzA</span> <span class="id" title="var">k</span> := <a class="idref" href="mathcomp.algebra.mxpoly.html#A"><span class="id" title="variable">A</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#k"><span class="id" title="variable">k</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#e0817251e7d67ad994b4d9b1aa82a412"><span class="id" title="notation">.1</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#k"><span class="id" title="variable">k</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#675082cc4d4538da052b547bdc6ea4c9"><span class="id" title="notation">.2</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#ce954c803c52ae7afaee301d1d68e733"><span class="id" title="notation">!=</span></a> 0 <span class="id" title="tactic">in</span><br/> - <span class="id" title="keyword">let</span> <span class="id" title="var">xSchur</span> <span class="id" title="var">k</span> := <a class="idref" href="mathcomp.algebra.mxpoly.html#MatrixFormula.MatrixFormula.Schur"><span class="id" title="variable">Schur</span></a> (<a class="idref" href="mathcomp.algebra.matrix.html#xrow"><span class="id" title="definition">xrow</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#k"><span class="id" title="variable">k</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#e0817251e7d67ad994b4d9b1aa82a412"><span class="id" title="notation">.1</span></a> 0%<span class="id" title="var">R</span> (<a class="idref" href="mathcomp.algebra.matrix.html#xcol"><span class="id" title="definition">xcol</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#k"><span class="id" title="variable">k</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#675082cc4d4538da052b547bdc6ea4c9"><span class="id" title="notation">.2</span></a> 0%<span class="id" title="var">R</span> <a class="idref" href="mathcomp.algebra.mxpoly.html#A"><span class="id" title="variable">A</span></a>)) <span class="id" title="tactic">in</span><br/> - <span class="id" title="keyword">let</span> <span class="id" title="var">recf</span> <span class="id" title="var">k</span> := <a class="idref" href="mathcomp.algebra.mxpoly.html#MatrixFormula.Bool"><span class="id" title="abbreviation">Bool</span></a> (<a class="idref" href="mathcomp.algebra.mxpoly.html#r"><span class="id" title="variable">r</span></a> <a class="idref" href="mathcomp.ssreflect.ssrnat.html#7f2a7ef2c63af7359b22787a9daf336e"><span class="id" title="notation">></span></a> 0) <a class="idref" href="mathcomp.algebra.ssralg.html#5a500d4ce4c6eea4df7cd2e3cacc0360"><span class="id" title="notation">∧</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#mxrank_form"><span class="id" title="definition">mxrank_form</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#r"><span class="id" title="variable">r</span></a><a class="idref" href="mathcomp.ssreflect.ssrnat.html#f953bf7095e0da1cb644443fd0e17d6d"><span class="id" title="notation">.-1</span></a> (<a class="idref" href="mathcomp.algebra.mxpoly.html#xSchur"><span class="id" title="variable">xSchur</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#k"><span class="id" title="variable">k</span></a>) <span class="id" title="tactic">in</span><br/> - <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Pick"><span class="id" title="definition">GRing.Pick</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#nzA"><span class="id" title="variable">nzA</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#recf"><span class="id" title="variable">recf</span></a> (<a class="idref" href="mathcomp.algebra.mxpoly.html#MatrixFormula.Bool"><span class="id" title="abbreviation">Bool</span></a> (<a class="idref" href="mathcomp.algebra.mxpoly.html#r"><span class="id" title="variable">r</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#df45e8c2e8370fd4f0f7c4fdaf208180"><span class="id" title="notation">==</span></a> 0%<span class="id" title="var">N</span>))<br/> - | <span class="id" title="var">_</span>, <span class="id" title="var">_</span> ⇒ <span class="id" title="keyword">fun</span> <span class="id" title="var">_</span> ⇒ <a class="idref" href="mathcomp.algebra.mxpoly.html#MatrixFormula.Bool"><span class="id" title="abbreviation">Bool</span></a> (<a class="idref" href="mathcomp.algebra.mxpoly.html#r"><span class="id" title="variable">r</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#df45e8c2e8370fd4f0f7c4fdaf208180"><span class="id" title="notation">==</span></a> 0%<span class="id" title="var">N</span>)<br/> - <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="MatrixFormula.mxrank_form_qf"><span class="id" title="lemma">mxrank_form_qf</span></a> <span class="id" title="var">r</span> <span class="id" title="var">m</span> <span class="id" title="var">n</span> (<span class="id" title="var">A</span> : <a class="idref" href="mathcomp.algebra.matrix.html#5402b0dfe2a7ea661b91256aeeaf93da"><span class="id" title="notation">'</span></a><a class="idref" href="mathcomp.algebra.matrix.html#5402b0dfe2a7ea661b91256aeeaf93da"><span class="id" title="notation">M_</span></a><a class="idref" href="mathcomp.algebra.matrix.html#5402b0dfe2a7ea661b91256aeeaf93da"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.mxpoly.html#m"><span class="id" title="variable">m</span></a><a class="idref" href="mathcomp.algebra.matrix.html#5402b0dfe2a7ea661b91256aeeaf93da"><span class="id" title="notation">,</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#n"><span class="id" title="variable">n</span></a><a class="idref" href="mathcomp.algebra.matrix.html#5402b0dfe2a7ea661b91256aeeaf93da"><span class="id" title="notation">)</span></a>) : <a class="idref" href="mathcomp.algebra.mxpoly.html#MatrixFormula.qf_form"><span class="id" title="abbreviation">qf_form</span></a> (<a class="idref" href="mathcomp.algebra.mxpoly.html#MatrixFormula.mxrank_form"><span class="id" title="definition">mxrank_form</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#r"><span class="id" title="variable">r</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#A"><span class="id" title="variable">A</span></a>).<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="MatrixFormula.eval_mxrank"><span class="id" title="lemma">eval_mxrank</span></a> <span class="id" title="var">e</span> <span class="id" title="var">r</span> <span class="id" title="var">m</span> <span class="id" title="var">n</span> (<span class="id" title="var">A</span> : <a class="idref" href="mathcomp.algebra.matrix.html#5402b0dfe2a7ea661b91256aeeaf93da"><span class="id" title="notation">'</span></a><a class="idref" href="mathcomp.algebra.matrix.html#5402b0dfe2a7ea661b91256aeeaf93da"><span class="id" title="notation">M_</span></a><a class="idref" href="mathcomp.algebra.matrix.html#5402b0dfe2a7ea661b91256aeeaf93da"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.mxpoly.html#m"><span class="id" title="variable">m</span></a><a class="idref" href="mathcomp.algebra.matrix.html#5402b0dfe2a7ea661b91256aeeaf93da"><span class="id" title="notation">,</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#n"><span class="id" title="variable">n</span></a><a class="idref" href="mathcomp.algebra.matrix.html#5402b0dfe2a7ea661b91256aeeaf93da"><span class="id" title="notation">)</span></a>) :<br/> - <a class="idref" href="mathcomp.algebra.mxpoly.html#MatrixFormula.qf_eval"><span class="id" title="abbreviation">qf_eval</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#e"><span class="id" title="variable">e</span></a> (<a class="idref" href="mathcomp.algebra.mxpoly.html#MatrixFormula.mxrank_form"><span class="id" title="definition">mxrank_form</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#r"><span class="id" title="variable">r</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#A"><span class="id" title="variable">A</span></a>) <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#6cd0f7b28b6092304087c7049437bb1a"><span class="id" title="notation">=</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#6cd0f7b28b6092304087c7049437bb1a"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.mxalgebra.html#b8af73c258a533909a2acba13114d67c"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.algebra.mxalgebra.html#b8af73c258a533909a2acba13114d67c"><span class="id" title="notation">rank</span></a> <a class="idref" href="mathcomp.algebra.mxalgebra.html#b8af73c258a533909a2acba13114d67c"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.mxpoly.html#MatrixFormula.eval_mx"><span class="id" title="definition">eval_mx</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#e"><span class="id" title="variable">e</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#A"><span class="id" title="variable">A</span></a><a class="idref" href="mathcomp.algebra.mxalgebra.html#b8af73c258a533909a2acba13114d67c"><span class="id" title="notation">)</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#df45e8c2e8370fd4f0f7c4fdaf208180"><span class="id" title="notation">==</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#r"><span class="id" title="variable">r</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#6cd0f7b28b6092304087c7049437bb1a"><span class="id" title="notation">)</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="MatrixFormula.eval_vec_mx"><span class="id" title="lemma">eval_vec_mx</span></a> <span class="id" title="var">e</span> <span class="id" title="var">m</span> <span class="id" title="var">n</span> (<span class="id" title="var">u</span> : <a class="idref" href="mathcomp.algebra.matrix.html#2f65cfd766dcf020894d753750ad1a23"><span class="id" title="notation">'</span></a><a class="idref" href="mathcomp.algebra.matrix.html#2f65cfd766dcf020894d753750ad1a23"><span class="id" title="notation">rV_</span></a><a class="idref" href="mathcomp.algebra.matrix.html#2f65cfd766dcf020894d753750ad1a23"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.mxpoly.html#m"><span class="id" title="variable">m</span></a> <a class="idref" href="mathcomp.ssreflect.ssrnat.html#ea2ff3d561159081cea6fb2e8113cc54"><span class="id" title="notation">×</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#n"><span class="id" title="variable">n</span></a><a class="idref" href="mathcomp.algebra.matrix.html#2f65cfd766dcf020894d753750ad1a23"><span class="id" title="notation">)</span></a>) :<br/> - <a class="idref" href="mathcomp.algebra.mxpoly.html#MatrixFormula.eval_mx"><span class="id" title="definition">eval_mx</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#e"><span class="id" title="variable">e</span></a> (<a class="idref" href="mathcomp.algebra.matrix.html#vec_mx"><span class="id" title="definition">vec_mx</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#u"><span class="id" title="variable">u</span></a>) <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#6cd0f7b28b6092304087c7049437bb1a"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#vec_mx"><span class="id" title="definition">vec_mx</span></a> (<a class="idref" href="mathcomp.algebra.mxpoly.html#MatrixFormula.eval_mx"><span class="id" title="definition">eval_mx</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#e"><span class="id" title="variable">e</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#u"><span class="id" title="variable">u</span></a>).<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="MatrixFormula.eval_mxvec"><span class="id" title="lemma">eval_mxvec</span></a> <span class="id" title="var">e</span> <span class="id" title="var">m</span> <span class="id" title="var">n</span> (<span class="id" title="var">A</span> : <a class="idref" href="mathcomp.algebra.matrix.html#5402b0dfe2a7ea661b91256aeeaf93da"><span class="id" title="notation">'</span></a><a class="idref" href="mathcomp.algebra.matrix.html#5402b0dfe2a7ea661b91256aeeaf93da"><span class="id" title="notation">M_</span></a><a class="idref" href="mathcomp.algebra.matrix.html#5402b0dfe2a7ea661b91256aeeaf93da"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.mxpoly.html#m"><span class="id" title="variable">m</span></a><a class="idref" href="mathcomp.algebra.matrix.html#5402b0dfe2a7ea661b91256aeeaf93da"><span class="id" title="notation">,</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#n"><span class="id" title="variable">n</span></a><a class="idref" href="mathcomp.algebra.matrix.html#5402b0dfe2a7ea661b91256aeeaf93da"><span class="id" title="notation">)</span></a>) :<br/> - <a class="idref" href="mathcomp.algebra.mxpoly.html#MatrixFormula.eval_mx"><span class="id" title="definition">eval_mx</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#e"><span class="id" title="variable">e</span></a> (<a class="idref" href="mathcomp.algebra.matrix.html#mxvec"><span class="id" title="definition">mxvec</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#A"><span class="id" title="variable">A</span></a>) <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#6cd0f7b28b6092304087c7049437bb1a"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#mxvec"><span class="id" title="definition">mxvec</span></a> (<a class="idref" href="mathcomp.algebra.mxpoly.html#MatrixFormula.eval_mx"><span class="id" title="definition">eval_mx</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#e"><span class="id" title="variable">e</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#A"><span class="id" title="variable">A</span></a>).<br/> - -<br/> -<span class="id" title="keyword">Section</span> <a name="MatrixFormula.MatrixFormula.Subsetmx"><span class="id" title="section">Subsetmx</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Variables</span> (<a name="MatrixFormula.MatrixFormula.Subsetmx.m1"><span class="id" title="variable">m1</span></a> <a name="MatrixFormula.MatrixFormula.Subsetmx.m2"><span class="id" title="variable">m2</span></a> <a name="MatrixFormula.MatrixFormula.Subsetmx.n"><span class="id" title="variable">n</span></a> : <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Datatypes.html#nat"><span class="id" title="inductive">nat</span></a>) (<a name="MatrixFormula.MatrixFormula.Subsetmx.A"><span class="id" title="variable">A</span></a> : <a class="idref" href="mathcomp.algebra.matrix.html#9c0a062cce31174bb4a1f05fb9cee844"><span class="id" title="notation">'</span></a><a class="idref" href="mathcomp.algebra.matrix.html#9c0a062cce31174bb4a1f05fb9cee844"><span class="id" title="notation">M</span></a><a class="idref" href="mathcomp.algebra.matrix.html#9c0a062cce31174bb4a1f05fb9cee844"><span class="id" title="notation">[</span></a><a class="idref" href="mathcomp.algebra.mxpoly.html#MatrixFormula.term"><span class="id" title="abbreviation">term</span></a><a class="idref" href="mathcomp.algebra.matrix.html#9c0a062cce31174bb4a1f05fb9cee844"><span class="id" title="notation">]</span></a><a class="idref" href="mathcomp.algebra.matrix.html#9c0a062cce31174bb4a1f05fb9cee844"><span class="id" title="notation">_</span></a><a class="idref" href="mathcomp.algebra.matrix.html#9c0a062cce31174bb4a1f05fb9cee844"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.mxpoly.html#m1"><span class="id" title="variable">m1</span></a><a class="idref" href="mathcomp.algebra.matrix.html#9c0a062cce31174bb4a1f05fb9cee844"><span class="id" title="notation">,</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#n"><span class="id" title="variable">n</span></a><a class="idref" href="mathcomp.algebra.matrix.html#9c0a062cce31174bb4a1f05fb9cee844"><span class="id" title="notation">)</span></a>) (<a name="MatrixFormula.MatrixFormula.Subsetmx.B"><span class="id" title="variable">B</span></a> : <a class="idref" href="mathcomp.algebra.matrix.html#9c0a062cce31174bb4a1f05fb9cee844"><span class="id" title="notation">'</span></a><a class="idref" href="mathcomp.algebra.matrix.html#9c0a062cce31174bb4a1f05fb9cee844"><span class="id" title="notation">M</span></a><a class="idref" href="mathcomp.algebra.matrix.html#9c0a062cce31174bb4a1f05fb9cee844"><span class="id" title="notation">[</span></a><a class="idref" href="mathcomp.algebra.mxpoly.html#MatrixFormula.term"><span class="id" title="abbreviation">term</span></a><a class="idref" href="mathcomp.algebra.matrix.html#9c0a062cce31174bb4a1f05fb9cee844"><span class="id" title="notation">]</span></a><a class="idref" href="mathcomp.algebra.matrix.html#9c0a062cce31174bb4a1f05fb9cee844"><span class="id" title="notation">_</span></a><a class="idref" href="mathcomp.algebra.matrix.html#9c0a062cce31174bb4a1f05fb9cee844"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.mxpoly.html#m2"><span class="id" title="variable">m2</span></a><a class="idref" href="mathcomp.algebra.matrix.html#9c0a062cce31174bb4a1f05fb9cee844"><span class="id" title="notation">,</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#n"><span class="id" title="variable">n</span></a><a class="idref" href="mathcomp.algebra.matrix.html#9c0a062cce31174bb4a1f05fb9cee844"><span class="id" title="notation">)</span></a>).<br/> - -<br/> -<span class="id" title="keyword">Definition</span> <a name="MatrixFormula.submx_form"><span class="id" title="definition">submx_form</span></a> :=<br/> - <a class="idref" href="mathcomp.ssreflect.bigop.html#afef6bddeda988bbc365e556241d5732"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.ssreflect.bigop.html#afef6bddeda988bbc365e556241d5732"><span class="id" title="notation">big</span></a><a class="idref" href="mathcomp.ssreflect.bigop.html#afef6bddeda988bbc365e556241d5732"><span class="id" title="notation">[</span></a><a class="idref" href="mathcomp.algebra.mxpoly.html#MatrixFormula.And"><span class="id" title="abbreviation">And</span></a><a class="idref" href="mathcomp.ssreflect.bigop.html#afef6bddeda988bbc365e556241d5732"><span class="id" title="notation">/</span></a><a class="idref" href="mathcomp.algebra.mxpoly.html#MatrixFormula.True"><span class="id" title="abbreviation">True</span></a><a class="idref" href="mathcomp.ssreflect.bigop.html#afef6bddeda988bbc365e556241d5732"><span class="id" title="notation">]</span></a><a class="idref" href="mathcomp.ssreflect.bigop.html#afef6bddeda988bbc365e556241d5732"><span class="id" title="notation">_</span></a><a class="idref" href="mathcomp.ssreflect.bigop.html#afef6bddeda988bbc365e556241d5732"><span class="id" title="notation">(</span></a><span class="id" title="var">r</span> <a class="idref" href="mathcomp.ssreflect.bigop.html#afef6bddeda988bbc365e556241d5732"><span class="id" title="notation"><</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#MatrixFormula.MatrixFormula.Subsetmx.n"><span class="id" title="variable">n</span></a><a class="idref" href="mathcomp.ssreflect.ssrnat.html#bda89d73ec4a8f23ae92b565ffb5aaa6"><span class="id" title="notation">.+1</span></a><a class="idref" href="mathcomp.ssreflect.bigop.html#afef6bddeda988bbc365e556241d5732"><span class="id" title="notation">)</span></a> (<a class="idref" href="mathcomp.algebra.mxpoly.html#MatrixFormula.mxrank_form"><span class="id" title="definition">mxrank_form</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#r"><span class="id" title="variable">r</span></a> (<a class="idref" href="mathcomp.algebra.matrix.html#col_mx"><span class="id" title="definition">col_mx</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#MatrixFormula.MatrixFormula.Subsetmx.A"><span class="id" title="variable">A</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#MatrixFormula.MatrixFormula.Subsetmx.B"><span class="id" title="variable">B</span></a>) <a class="idref" href="mathcomp.algebra.ssralg.html#b7075a427ea950c442d03d47d831421c"><span class="id" title="notation">==></span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#MatrixFormula.mxrank_form"><span class="id" title="definition">mxrank_form</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#r"><span class="id" title="variable">r</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#MatrixFormula.MatrixFormula.Subsetmx.B"><span class="id" title="variable">B</span></a>)%<span class="id" title="var">T</span>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="MatrixFormula.eval_col_mx"><span class="id" title="lemma">eval_col_mx</span></a> <span class="id" title="var">e</span> :<br/> - <a class="idref" href="mathcomp.algebra.mxpoly.html#MatrixFormula.eval_mx"><span class="id" title="definition">eval_mx</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#e"><span class="id" title="variable">e</span></a> (<a class="idref" href="mathcomp.algebra.matrix.html#col_mx"><span class="id" title="definition">col_mx</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#MatrixFormula.MatrixFormula.Subsetmx.A"><span class="id" title="variable">A</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#MatrixFormula.MatrixFormula.Subsetmx.B"><span class="id" title="variable">B</span></a>) <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#6cd0f7b28b6092304087c7049437bb1a"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#col_mx"><span class="id" title="definition">col_mx</span></a> (<a class="idref" href="mathcomp.algebra.mxpoly.html#MatrixFormula.eval_mx"><span class="id" title="definition">eval_mx</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#e"><span class="id" title="variable">e</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#MatrixFormula.MatrixFormula.Subsetmx.A"><span class="id" title="variable">A</span></a>) (<a class="idref" href="mathcomp.algebra.mxpoly.html#MatrixFormula.eval_mx"><span class="id" title="definition">eval_mx</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#e"><span class="id" title="variable">e</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#MatrixFormula.MatrixFormula.Subsetmx.B"><span class="id" title="variable">B</span></a>).<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="MatrixFormula.submx_form_qf"><span class="id" title="lemma">submx_form_qf</span></a> : <a class="idref" href="mathcomp.algebra.mxpoly.html#MatrixFormula.qf_form"><span class="id" title="abbreviation">qf_form</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#MatrixFormula.submx_form"><span class="id" title="definition">submx_form</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="MatrixFormula.eval_submx"><span class="id" title="lemma">eval_submx</span></a> <span class="id" title="var">e</span> : <a class="idref" href="mathcomp.algebra.mxpoly.html#MatrixFormula.qf_eval"><span class="id" title="abbreviation">qf_eval</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#e"><span class="id" title="variable">e</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#MatrixFormula.submx_form"><span class="id" title="definition">submx_form</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#6cd0f7b28b6092304087c7049437bb1a"><span class="id" title="notation">=</span></a> (<a class="idref" href="mathcomp.algebra.mxpoly.html#MatrixFormula.eval_mx"><span class="id" title="definition">eval_mx</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#e"><span class="id" title="variable">e</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#MatrixFormula.MatrixFormula.Subsetmx.A"><span class="id" title="variable">A</span></a> <a class="idref" href="mathcomp.algebra.mxalgebra.html#09a21fbfc35503eeecaca8720742f7ab"><span class="id" title="notation">≤</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#MatrixFormula.eval_mx"><span class="id" title="definition">eval_mx</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#e"><span class="id" title="variable">e</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#MatrixFormula.MatrixFormula.Subsetmx.B"><span class="id" title="variable">B</span></a>)%<span class="id" title="var">MS</span>.<br/> - -<br/> -<span class="id" title="keyword">End</span> <a class="idref" href="mathcomp.algebra.mxpoly.html#MatrixFormula.MatrixFormula.Subsetmx"><span class="id" title="section">Subsetmx</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Section</span> <a name="MatrixFormula.MatrixFormula.Env"><span class="id" title="section">Env</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Variable</span> <a name="MatrixFormula.MatrixFormula.Env.d"><span class="id" title="variable">d</span></a> : <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Datatypes.html#nat"><span class="id" title="inductive">nat</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Definition</span> <a name="MatrixFormula.seq_of_rV"><span class="id" title="definition">seq_of_rV</span></a> (<span class="id" title="var">v</span> : <a class="idref" href="mathcomp.algebra.matrix.html#2f65cfd766dcf020894d753750ad1a23"><span class="id" title="notation">'</span></a><a class="idref" href="mathcomp.algebra.matrix.html#2f65cfd766dcf020894d753750ad1a23"><span class="id" title="notation">rV_d</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.mxpoly.html#MatrixFormula.MatrixFormula.F"><span class="id" title="variable">F</span></a> := <a class="idref" href="mathcomp.ssreflect.finfun.html#fgraph"><span class="id" title="definition">fgraph</span></a> <a class="idref" href="mathcomp.ssreflect.finfun.html#486743bb05c6aa8b9d64fd3cec29ee79"><span class="id" title="notation">[</span></a><a class="idref" href="mathcomp.ssreflect.finfun.html#486743bb05c6aa8b9d64fd3cec29ee79"><span class="id" title="notation">ffun</span></a> <span class="id" title="var">i</span> <a class="idref" href="mathcomp.ssreflect.finfun.html#486743bb05c6aa8b9d64fd3cec29ee79"><span class="id" title="notation">⇒</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#v"><span class="id" title="variable">v</span></a> 0 <a class="idref" href="mathcomp.algebra.mxpoly.html#i"><span class="id" title="variable">i</span></a><a class="idref" href="mathcomp.ssreflect.finfun.html#486743bb05c6aa8b9d64fd3cec29ee79"><span class="id" title="notation">]</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="MatrixFormula.size_seq_of_rV"><span class="id" title="lemma">size_seq_of_rV</span></a> <span class="id" title="var">v</span> : <a class="idref" href="mathcomp.ssreflect.seq.html#size"><span class="id" title="definition">size</span></a> (<a class="idref" href="mathcomp.algebra.mxpoly.html#MatrixFormula.seq_of_rV"><span class="id" title="definition">seq_of_rV</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#v"><span class="id" title="variable">v</span></a>) <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#6cd0f7b28b6092304087c7049437bb1a"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#MatrixFormula.MatrixFormula.Env.d"><span class="id" title="variable">d</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="MatrixFormula.nth_seq_of_rV"><span class="id" title="lemma">nth_seq_of_rV</span></a> <span class="id" title="var">x0</span> <span class="id" title="var">v</span> (<span class="id" title="var">i</span> : <a class="idref" href="mathcomp.ssreflect.fintype.html#545d9d6249a673300f950a2a8b8a930b"><span class="id" title="notation">'</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#545d9d6249a673300f950a2a8b8a930b"><span class="id" title="notation">I_d</span></a>) : <a class="idref" href="mathcomp.ssreflect.seq.html#nth"><span class="id" title="definition">nth</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#x0"><span class="id" title="variable">x0</span></a> (<a class="idref" href="mathcomp.algebra.mxpoly.html#MatrixFormula.seq_of_rV"><span class="id" title="definition">seq_of_rV</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#v"><span class="id" title="variable">v</span></a>) <a class="idref" href="mathcomp.algebra.mxpoly.html#i"><span class="id" title="variable">i</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#6cd0f7b28b6092304087c7049437bb1a"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#v"><span class="id" title="variable">v</span></a> 0 <a class="idref" href="mathcomp.algebra.mxpoly.html#i"><span class="id" title="variable">i</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Definition</span> <a name="MatrixFormula.row_var"><span class="id" title="definition">row_var</span></a> <span class="id" title="var">k</span> : <a class="idref" href="mathcomp.algebra.matrix.html#928a892a0c1438777aeb17535aec0378"><span class="id" title="notation">'</span></a><a class="idref" href="mathcomp.algebra.matrix.html#928a892a0c1438777aeb17535aec0378"><span class="id" title="notation">rV</span></a><a class="idref" href="mathcomp.algebra.matrix.html#928a892a0c1438777aeb17535aec0378"><span class="id" title="notation">[</span></a><a class="idref" href="mathcomp.algebra.mxpoly.html#MatrixFormula.term"><span class="id" title="abbreviation">term</span></a><a class="idref" href="mathcomp.algebra.matrix.html#928a892a0c1438777aeb17535aec0378"><span class="id" title="notation">]</span></a><a class="idref" href="mathcomp.algebra.matrix.html#928a892a0c1438777aeb17535aec0378"><span class="id" title="notation">_d</span></a> := <a class="idref" href="mathcomp.algebra.matrix.html#e96cc16a4a892792949f73b0ccf32cf1"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.algebra.matrix.html#e96cc16a4a892792949f73b0ccf32cf1"><span class="id" title="notation">row_i</span></a> (<a class="idref" href="mathcomp.algebra.ssralg.html#4469cceefa45bf6eb9c3a2c83154c5db"><span class="id" title="notation">'</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#4469cceefa45bf6eb9c3a2c83154c5db"><span class="id" title="notation">X_</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#4469cceefa45bf6eb9c3a2c83154c5db"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.mxpoly.html#k"><span class="id" title="variable">k</span></a> <a class="idref" href="mathcomp.ssreflect.ssrnat.html#ea2ff3d561159081cea6fb2e8113cc54"><span class="id" title="notation">×</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#MatrixFormula.MatrixFormula.Env.d"><span class="id" title="variable">d</span></a> <a class="idref" href="mathcomp.ssreflect.ssrnat.html#0dacc1786c5ba797d47dd85006231633"><span class="id" title="notation">+</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#i"><span class="id" title="variable">i</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#4469cceefa45bf6eb9c3a2c83154c5db"><span class="id" title="notation">)</span></a>)%<span class="id" title="var">T</span>.<br/> - -<br/> -<span class="id" title="keyword">Definition</span> <a name="MatrixFormula.row_env"><span class="id" title="definition">row_env</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.matrix.html#2f65cfd766dcf020894d753750ad1a23"><span class="id" title="notation">'</span></a><a class="idref" href="mathcomp.algebra.matrix.html#2f65cfd766dcf020894d753750ad1a23"><span class="id" title="notation">rV_d</span></a>) := <a class="idref" href="mathcomp.ssreflect.seq.html#flatten"><span class="id" title="definition">flatten</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.mxpoly.html#MatrixFormula.seq_of_rV"><span class="id" title="definition">seq_of_rV</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#e"><span class="id" title="variable">e</span></a>).<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="MatrixFormula.nth_row_env"><span class="id" title="lemma">nth_row_env</span></a> <span class="id" title="var">e</span> <span class="id" title="var">k</span> (<span class="id" title="var">i</span> : <a class="idref" href="mathcomp.ssreflect.fintype.html#545d9d6249a673300f950a2a8b8a930b"><span class="id" title="notation">'</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#545d9d6249a673300f950a2a8b8a930b"><span class="id" title="notation">I_d</span></a>) : <a class="idref" href="mathcomp.algebra.ssralg.html#82d810f9f90b79e8fe98d90a63070c32"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.mxpoly.html#MatrixFormula.row_env"><span class="id" title="definition">row_env</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#e"><span class="id" title="variable">e</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#82d810f9f90b79e8fe98d90a63070c32"><span class="id" title="notation">)`</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#82d810f9f90b79e8fe98d90a63070c32"><span class="id" title="notation">_</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#82d810f9f90b79e8fe98d90a63070c32"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.mxpoly.html#k"><span class="id" title="variable">k</span></a> <a class="idref" href="mathcomp.ssreflect.ssrnat.html#ea2ff3d561159081cea6fb2e8113cc54"><span class="id" title="notation">×</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#MatrixFormula.MatrixFormula.Env.d"><span class="id" title="variable">d</span></a> <a class="idref" href="mathcomp.ssreflect.ssrnat.html#0dacc1786c5ba797d47dd85006231633"><span class="id" title="notation">+</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#i"><span class="id" title="variable">i</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#82d810f9f90b79e8fe98d90a63070c32"><span class="id" title="notation">)</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#6cd0f7b28b6092304087c7049437bb1a"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#e"><span class="id" title="variable">e</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#82d810f9f90b79e8fe98d90a63070c32"><span class="id" title="notation">`</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#82d810f9f90b79e8fe98d90a63070c32"><span class="id" title="notation">_k</span></a> 0 <a class="idref" href="mathcomp.algebra.mxpoly.html#i"><span class="id" title="variable">i</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="MatrixFormula.eval_row_var"><span class="id" title="lemma">eval_row_var</span></a> <span class="id" title="var">e</span> <span class="id" title="var">k</span> : <a class="idref" href="mathcomp.algebra.mxpoly.html#MatrixFormula.eval_mx"><span class="id" title="definition">eval_mx</span></a> (<a class="idref" href="mathcomp.algebra.mxpoly.html#MatrixFormula.row_env"><span class="id" title="definition">row_env</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#e"><span class="id" title="variable">e</span></a>) (<a class="idref" href="mathcomp.algebra.mxpoly.html#MatrixFormula.row_var"><span class="id" title="definition">row_var</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#k"><span class="id" title="variable">k</span></a>) <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#b8b2ebc8e1a8b9aa935c0702efb5dccf"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#e"><span class="id" title="variable">e</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#82d810f9f90b79e8fe98d90a63070c32"><span class="id" title="notation">`</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#82d810f9f90b79e8fe98d90a63070c32"><span class="id" title="notation">_k</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#b8b2ebc8e1a8b9aa935c0702efb5dccf"><span class="id" title="notation">:></span></a> <a class="idref" href="mathcomp.algebra.matrix.html#2f65cfd766dcf020894d753750ad1a23"><span class="id" title="notation">'</span></a><a class="idref" href="mathcomp.algebra.matrix.html#2f65cfd766dcf020894d753750ad1a23"><span class="id" title="notation">rV_d</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Definition</span> <a name="MatrixFormula.Exists_row_form"><span class="id" title="definition">Exists_row_form</span></a> <span class="id" title="var">k</span> (<span class="id" title="var">f</span> : <a class="idref" href="mathcomp.algebra.mxpoly.html#MatrixFormula.form"><span class="id" title="abbreviation">form</span></a>) :=<br/> - <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">GRing.Exists</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#f"><span class="id" title="variable">f</span></a> (<a class="idref" href="mathcomp.ssreflect.fintype.html#codom"><span class="id" title="definition">codom</span></a> (<span class="id" title="keyword">fun</span> <span class="id" title="var">i</span> : <a class="idref" href="mathcomp.ssreflect.fintype.html#545d9d6249a673300f950a2a8b8a930b"><span class="id" title="notation">'</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#545d9d6249a673300f950a2a8b8a930b"><span class="id" title="notation">I_d</span></a> ⇒ <a class="idref" href="mathcomp.algebra.mxpoly.html#k"><span class="id" title="variable">k</span></a> <a class="idref" href="mathcomp.ssreflect.ssrnat.html#ea2ff3d561159081cea6fb2e8113cc54"><span class="id" title="notation">×</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#MatrixFormula.MatrixFormula.Env.d"><span class="id" title="variable">d</span></a> <a class="idref" href="mathcomp.ssreflect.ssrnat.html#0dacc1786c5ba797d47dd85006231633"><span class="id" title="notation">+</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#i"><span class="id" title="variable">i</span></a>)%<span class="id" title="var">N</span>).<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="MatrixFormula.Exists_rowP"><span class="id" title="lemma">Exists_rowP</span></a> <span class="id" title="var">e</span> <span class="id" title="var">k</span> <span class="id" title="var">f</span> :<br/> - <a class="idref" href="mathcomp.algebra.mxpoly.html#MatrixFormula.MatrixFormula.Env.d"><span class="id" title="variable">d</span></a> <a class="idref" href="mathcomp.ssreflect.ssrnat.html#7f2a7ef2c63af7359b22787a9daf336e"><span class="id" title="notation">></span></a> 0 <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#1c93e43e07fbeaeb6a625cb6614beb5d"><span class="id" title="notation">→</span></a><br/> - <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#1c93e43e07fbeaeb6a625cb6614beb5d"><span class="id" title="notation">(</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#4bfb4f2d0721ba668e3a802ab1b745a1"><span class="id" title="notation">(</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#a883bdd010993579f99d60b3775bcf54"><span class="id" title="notation">∃</span></a> <span class="id" title="var">v</span> : <a class="idref" href="mathcomp.algebra.matrix.html#928a892a0c1438777aeb17535aec0378"><span class="id" title="notation">'</span></a><a class="idref" href="mathcomp.algebra.matrix.html#928a892a0c1438777aeb17535aec0378"><span class="id" title="notation">rV</span></a><a class="idref" href="mathcomp.algebra.matrix.html#928a892a0c1438777aeb17535aec0378"><span class="id" title="notation">[</span></a><a class="idref" href="mathcomp.algebra.mxpoly.html#MatrixFormula.MatrixFormula.F"><span class="id" title="variable">F</span></a><a class="idref" href="mathcomp.algebra.matrix.html#928a892a0c1438777aeb17535aec0378"><span class="id" title="notation">]</span></a><a class="idref" href="mathcomp.algebra.matrix.html#928a892a0c1438777aeb17535aec0378"><span class="id" title="notation">_d</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#a883bdd010993579f99d60b3775bcf54"><span class="id" title="notation">,</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#MatrixFormula.holds"><span class="id" title="abbreviation">holds</span></a> (<a class="idref" href="mathcomp.algebra.mxpoly.html#MatrixFormula.row_env"><span class="id" title="definition">row_env</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.mxpoly.html#e"><span class="id" title="variable">e</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#k"><span class="id" title="variable">k</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#v"><span class="id" title="variable">v</span></a>)) <a class="idref" href="mathcomp.algebra.mxpoly.html#f"><span class="id" title="variable">f</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#4bfb4f2d0721ba668e3a802ab1b745a1"><span class="id" title="notation">)</span></a><br/> - <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#4bfb4f2d0721ba668e3a802ab1b745a1"><span class="id" title="notation">↔</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#MatrixFormula.holds"><span class="id" title="abbreviation">holds</span></a> (<a class="idref" href="mathcomp.algebra.mxpoly.html#MatrixFormula.row_env"><span class="id" title="definition">row_env</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#e"><span class="id" title="variable">e</span></a>) (<a class="idref" href="mathcomp.algebra.mxpoly.html#MatrixFormula.Exists_row_form"><span class="id" title="definition">Exists_row_form</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#k"><span class="id" title="variable">k</span></a> <a class="idref" href="mathcomp.algebra.mxpoly.html#f"><span class="id" title="variable">f</span></a>)<a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#1c93e43e07fbeaeb6a625cb6614beb5d"><span class="id" title="notation">)</span></a>.<br/> - -<br/> -<span class="id" title="keyword">End</span> <a class="idref" href="mathcomp.algebra.mxpoly.html#MatrixFormula.MatrixFormula.Env"><span class="id" title="section">Env</span></a>.<br/> - -<br/> -<span class="id" title="keyword">End</span> <a class="idref" href="mathcomp.algebra.mxpoly.html#MatrixFormula.MatrixFormula"><span class="id" title="section">MatrixFormula</span></a>.<br/> - -<br/> -<span class="id" title="keyword">End</span> <a class="idref" href="mathcomp.algebra.mxpoly.html#MatrixFormula"><span class="id" title="module">MatrixFormula</span></a>.<br/> -</div> -</div> - -<div id="footer"> -<hr/><a href="index.html">Index</a><hr/>This page has been generated by <a href="http://coq.inria.fr/">coqdoc</a> -</div> - -</div> - -</body> -</html>
\ No newline at end of file |
