diff options
Diffstat (limited to 'docs/htmldoc/mathcomp.algebra.poly.html')
| -rw-r--r-- | docs/htmldoc/mathcomp.algebra.poly.html | 2294 |
1 files changed, 0 insertions, 2294 deletions
diff --git a/docs/htmldoc/mathcomp.algebra.poly.html b/docs/htmldoc/mathcomp.algebra.poly.html deleted file mode 100644 index d10d9bb..0000000 --- a/docs/htmldoc/mathcomp.algebra.poly.html +++ /dev/null @@ -1,2294 +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.poly</title> -</head> - -<body> - -<div id="page"> - -<div id="header"> -</div> - -<div id="main"> - -<h1 class="libtitle">Library mathcomp.algebra.poly</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 a library for univariate polynomials over ring - structures; it also provides an extended theory for polynomials whose - coefficients range over commutative rings and integral domains. - -<div class="paragraph"> </div> - - {poly R} == the type of polynomials with coefficients of type R, - represented as lists with a non zero last element - (big endian representation); the coeficient type R - must have a canonical ringType structure cR. In fact - {poly R} denotes the concrete type polynomial cR; R - is just a phantom argument that lets type inference - reconstruct the (hidden) ringType structure cR. - p : seq R == the big-endian sequence of coefficients of p, via - the coercion polyseq : polynomial >-> seq. - Poly s == the polynomial with coefficient sequence s (ignoring - trailing zeroes). - \poly(i < n) E(i) == the polynomial of degree at most n - 1 whose - coefficients are given by the general term E(i) - 0, 1, - p, p + q, == the usual ring operations: {poly R} has a canonical - p * q, p ^+ n, ... ringType structure, which is commutative / integral - when R is commutative / integral, respectively. - polyC c, c%:P == the constant polynomial c - 'X == the (unique) variable - 'X^n == a power of 'X; 'X^0 is 1, 'X^1 is convertible to 'X - p`<i>i == the coefficient of 'X^i in p; this is in fact just - the ring_scope notation generic seq-indexing using - nth 0%R, combined with the polyseq coercion. - coefp i == the linear function p |-> p`<i>i (self-exapanding). - size p == 1 + the degree of p, or 0 if p = 0 (this is the - generic seq function combined with polyseq). - lead_coef p == the coefficient of the highest monomial in p, or 0 - if p = 0 (hence lead_coef p = 0 iff p = 0) - p \is monic <=> lead_coef p == 1 (0 is not monic). - p \is a polyOver S <=> the coefficients of p satisfy S; S should have a - key that should be (at least) an addrPred. - p. [x] == the evaluation of a polynomial p at a point x using - the Horner scheme -<a name="lab1"></a><h3 class="section">The multi-rule hornerE (resp., hornerE_comm) unwinds</h3> - - horner evaluation of a polynomial expression (resp., - in a non commutative ring, with side conditions). - p^` == formal derivative of p - p^`(n) == formal n-derivative of p - p^`N(n) == formal n-derivative of p divided by n! - p \Po q == polynomial composition; because this is naturally a - a linear morphism in the first argument, this - notation is transposed (q comes before p for redex - selection, etc). - := \sum(i < size p) p`<i>i *: q ^+ i - comm_poly p x == x and p. [x] commute; this is a sufficient condition - for evaluating (q * p). [x] as q. [x] * p. [x] when R - is not commutative. - comm_coef p x == x commutes with all the coefficients of p (clearly, - this implies comm_poly p x). - root p x == x is a root of p, i.e., p. [x] = 0 - n.-unity_root x == x is an nth root of unity, i.e., a root of 'X^n - 1 - n.-primitive_root x == x is a primitive nth root of unity, i.e., n is the - least positive integer m > 0 such that x ^+ m = 1. -<a name="lab2"></a><h3 class="section">The submodule poly.UnityRootTheory can be used to</h3> - - import selectively the part of the theory of roots - of unity that doesn't mention polynomials explicitly - map_poly f p == the image of the polynomial by the function f (which - (locally, p^f) is usually a ring morphism). - p^:P == p lifted to {poly {poly R}} (:= map_poly polyC p). - commr_rmorph f u == u commutes with the image of f (i.e., with all f x). - horner_morph cfu == given cfu : commr_rmorph f u, the function mapping p - to the value of map_poly f p at u; this is a ring - morphism from {poly R} to the codomain of f when f - is a ring morphism. - horner_eval u == the function mapping p to p. [u]; this function can - only be used for u in a commutative ring, so it is - always a linear ring morphism from {poly R} to R. - diff_roots x y == x and y are distinct roots; if R is a field, this - just means x != y, but this concept is generalized - to the case where R is only a ring with units (i.e., - a unitRingType); in which case it means that x and y - commute, and that the difference x - y is a unit - (i.e., has a multiplicative inverse) in R. - to just x != y). - uniq_roots s == s is a sequence or pairwise distinct roots, in the - sense of diff_roots p above. -<a name="lab3"></a><h3 class="section">We only show that these operations and properties are transferred by</h3> - - morphisms whose domain is a field (thus ensuring injectivity). - We prove the factor_theorem, and the max_poly_roots inequality relating - the number of distinct roots of a polynomial and its size. - The some polynomial lemmas use following suffix interpretation : - C - constant polynomial (as in polyseqC : a%:P = nseq (a != 0) a). - X - the polynomial variable 'X (as in coefX : 'X`<i>i = (i == 1%N)). - Xn - power of 'X (as in monicXn : monic 'X^n). -</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">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">Reserved Notation</span> "{ 'poly' T }" (<span class="id" title="tactic">at</span> <span class="id" title="keyword">level</span> 0, <span class="id" title="var">format</span> "{ 'poly' T }").<br/> -<span class="id" title="keyword">Reserved Notation</span> "c %:P" (<span class="id" title="tactic">at</span> <span class="id" title="keyword">level</span> 2, <span class="id" title="var">format</span> "c %:P").<br/> -<span class="id" title="keyword">Reserved Notation</span> "p ^:P" (<span class="id" title="tactic">at</span> <span class="id" title="keyword">level</span> 2, <span class="id" title="var">format</span> "p ^:P").<br/> -<span class="id" title="keyword">Reserved Notation</span> "'X" (<span class="id" title="tactic">at</span> <span class="id" title="keyword">level</span> 0).<br/> -<span class="id" title="keyword">Reserved Notation</span> "''X^' n" (<span class="id" title="tactic">at</span> <span class="id" title="keyword">level</span> 3, <span class="id" title="var">n</span> <span class="id" title="tactic">at</span> <span class="id" title="keyword">level</span> 2, <span class="id" title="var">format</span> "''X^' n").<br/> -<span class="id" title="keyword">Reserved Notation</span> "\poly_ ( i < n ) E"<br/> - (<span class="id" title="tactic">at</span> <span class="id" title="keyword">level</span> 36, <span class="id" title="var">E</span> <span class="id" title="tactic">at</span> <span class="id" title="keyword">level</span> 36, <span class="id" title="var">i</span>, <span class="id" title="var">n</span> <span class="id" title="tactic">at</span> <span class="id" title="keyword">level</span> 50,<br/> - <span class="id" title="var">format</span> "\poly_ ( i < n ) E").<br/> -<span class="id" title="keyword">Reserved Notation</span> "p \Po q" (<span class="id" title="tactic">at</span> <span class="id" title="keyword">level</span> 50).<br/> -<span class="id" title="keyword">Reserved Notation</span> "p ^`N ( n )" (<span class="id" title="tactic">at</span> <span class="id" title="keyword">level</span> 8, <span class="id" title="var">format</span> "p ^`N ( n )").<br/> -<span class="id" title="keyword">Reserved Notation</span> "n .-unity_root" (<span class="id" title="tactic">at</span> <span class="id" title="keyword">level</span> 2, <span class="id" title="var">format</span> "n .-unity_root").<br/> -<span class="id" title="keyword">Reserved Notation</span> "n .-primitive_root"<br/> - (<span class="id" title="tactic">at</span> <span class="id" title="keyword">level</span> 2, <span class="id" title="var">format</span> "n .-primitive_root").<br/> - -<br/> - -<br/> -<span class="id" title="keyword">Section</span> <a name="Polynomial"><span class="id" title="section">Polynomial</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Variable</span> <a name="Polynomial.R"><span class="id" title="variable">R</span></a> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Ring.Exports.ringType"><span class="id" title="abbreviation">ringType</span></a>.<br/> - -<br/> -</div> - -<div class="doc"> - Defines a polynomial as a sequence with <> 0 last element -</div> -<div class="code"> -<span class="id" title="keyword">Record</span> <a name="polynomial"><span class="id" title="record">polynomial</span></a> := <a name="Polynomial"><span class="id" title="constructor">Polynomial</span></a> {<a name="polyseq"><span class="id" title="projection">polyseq</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.poly.html#Polynomial.R"><span class="id" title="variable">R</span></a>; <span class="id" title="var">_</span> : <a class="idref" href="mathcomp.ssreflect.seq.html#last"><span class="id" title="definition">last</span></a> 1 <a class="idref" href="mathcomp.algebra.poly.html#polyseq"><span class="id" title="method">polyseq</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#c385a484ee9d1b4e0615924561a9b75e"><span class="id" title="notation">!=</span></a> 0}.<br/> - -<br/> -<span class="id" title="keyword">Canonical</span> <span class="id" title="var">polynomial_subType</span> := <span class="id" title="keyword">Eval</span> <span class="id" title="tactic">hnf</span> <span class="id" title="tactic">in</span> <a class="idref" href="mathcomp.ssreflect.eqtype.html#c2d02b544d823cdc1e1e08de552cdba4"><span class="id" title="notation">[</span></a><a class="idref" href="mathcomp.ssreflect.eqtype.html#c2d02b544d823cdc1e1e08de552cdba4"><span class="id" title="notation">subType</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#c2d02b544d823cdc1e1e08de552cdba4"><span class="id" title="notation">for</span></a> <a class="idref" href="mathcomp.algebra.poly.html#polyseq"><span class="id" title="projection">polyseq</span></a><a class="idref" href="mathcomp.ssreflect.eqtype.html#c2d02b544d823cdc1e1e08de552cdba4"><span class="id" title="notation">]</span></a>.<br/> -<span class="id" title="keyword">Definition</span> <a name="polynomial_eqMixin"><span class="id" title="definition">polynomial_eqMixin</span></a> := <span class="id" title="keyword">Eval</span> <span class="id" title="tactic">hnf</span> <span class="id" title="tactic">in</span> <a class="idref" href="mathcomp.ssreflect.eqtype.html#b361a0fe0b43cea5c506ee5eccc55542"><span class="id" title="notation">[</span></a><a class="idref" href="mathcomp.ssreflect.eqtype.html#b361a0fe0b43cea5c506ee5eccc55542"><span class="id" title="notation">eqMixin</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#b361a0fe0b43cea5c506ee5eccc55542"><span class="id" title="notation">of</span></a> <a class="idref" href="mathcomp.algebra.poly.html#polynomial"><span class="id" title="record">polynomial</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#b361a0fe0b43cea5c506ee5eccc55542"><span class="id" title="notation">by</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#b361a0fe0b43cea5c506ee5eccc55542"><span class="id" title="notation"><:]</span></a>.<br/> -<span class="id" title="keyword">Canonical</span> <span class="id" title="var">polynomial_eqType</span> := <span class="id" title="keyword">Eval</span> <span class="id" title="tactic">hnf</span> <span class="id" title="tactic">in</span> <a class="idref" href="mathcomp.ssreflect.eqtype.html#Equality.Exports.EqType"><span class="id" title="abbreviation">EqType</span></a> <a class="idref" href="mathcomp.algebra.poly.html#polynomial"><span class="id" title="record">polynomial</span></a> <a class="idref" href="mathcomp.algebra.poly.html#polynomial_eqMixin"><span class="id" title="definition">polynomial_eqMixin</span></a>.<br/> -<span class="id" title="keyword">Definition</span> <a name="polynomial_choiceMixin"><span class="id" title="definition">polynomial_choiceMixin</span></a> := <a class="idref" href="mathcomp.ssreflect.choice.html#035054ba987e1c05f2985518b41ec31f"><span class="id" title="notation">[</span></a><a class="idref" href="mathcomp.ssreflect.choice.html#035054ba987e1c05f2985518b41ec31f"><span class="id" title="notation">choiceMixin</span></a> <a class="idref" href="mathcomp.ssreflect.choice.html#035054ba987e1c05f2985518b41ec31f"><span class="id" title="notation">of</span></a> <a class="idref" href="mathcomp.algebra.poly.html#polynomial"><span class="id" title="record">polynomial</span></a> <a class="idref" href="mathcomp.ssreflect.choice.html#035054ba987e1c05f2985518b41ec31f"><span class="id" title="notation">by</span></a> <a class="idref" href="mathcomp.ssreflect.choice.html#035054ba987e1c05f2985518b41ec31f"><span class="id" title="notation"><:]</span></a>.<br/> -<span class="id" title="keyword">Canonical</span> <span class="id" title="var">polynomial_choiceType</span> :=<br/> - <span class="id" title="keyword">Eval</span> <span class="id" title="tactic">hnf</span> <span class="id" title="tactic">in</span> <a class="idref" href="mathcomp.ssreflect.choice.html#Choice.Exports.ChoiceType"><span class="id" title="abbreviation">ChoiceType</span></a> <a class="idref" href="mathcomp.algebra.poly.html#polynomial"><span class="id" title="record">polynomial</span></a> <a class="idref" href="mathcomp.algebra.poly.html#polynomial_choiceMixin"><span class="id" title="definition">polynomial_choiceMixin</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="poly_inj"><span class="id" title="lemma">poly_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.poly.html#polyseq"><span class="id" title="projection">polyseq</span></a>. <br/> - -<br/> -<span class="id" title="keyword">Definition</span> <a name="poly_of"><span class="id" title="definition">poly_of</span></a> <span class="id" title="keyword">of</span> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssreflect.html#phant"><span class="id" title="inductive">phant</span></a> <a class="idref" href="mathcomp.algebra.poly.html#Polynomial.R"><span class="id" title="variable">R</span></a> := <a class="idref" href="mathcomp.algebra.poly.html#polynomial"><span class="id" title="record">polynomial</span></a>.<br/> -<span class="id" title="keyword">Identity</span> <span class="id" title="keyword">Coercion</span> <span class="id" title="var">type_poly_of</span> : <span class="id" title="var">poly_of</span> >-> <span class="id" title="var">polynomial</span>.<br/> - -<br/> -<span class="id" title="keyword">Definition</span> <a name="coefp_head"><span class="id" title="definition">coefp_head</span></a> <span class="id" title="var">h</span> <span class="id" title="var">i</span> (<span class="id" title="var">p</span> : <a class="idref" href="mathcomp.algebra.poly.html#poly_of"><span class="id" title="definition">poly_of</span></a> (<a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssreflect.html#Phant"><span class="id" title="constructor">Phant</span></a> <a class="idref" href="mathcomp.algebra.poly.html#Polynomial.R"><span class="id" title="variable">R</span></a>)) := <span class="id" title="keyword">let</span>: <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Datatypes.html#tt"><span class="id" title="constructor">tt</span></a> := <a class="idref" href="mathcomp.algebra.poly.html#h"><span class="id" title="variable">h</span></a> <span class="id" title="tactic">in</span> <a class="idref" href="mathcomp.algebra.poly.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">End</span> <a class="idref" href="mathcomp.algebra.poly.html#Polynomial"><span class="id" title="section">Polynomial</span></a>.<br/> - -<br/> -</div> - -<div class="doc"> - We need to break off the section here to let the Bind Scope directives - take effect. -</div> -<div class="code"> -<span class="id" title="keyword">Notation</span> <a name="c2ef4fdf7ae62c36654f85f0d2a6c874"><span class="id" title="notation">"</span></a>{ 'poly' T }" := (<a class="idref" href="mathcomp.algebra.poly.html#poly_of"><span class="id" title="definition">poly_of</span></a> (<a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssreflect.html#Phant"><span class="id" title="constructor">Phant</span></a> <span class="id" title="var">T</span>)).<br/> -<span class="id" title="keyword">Notation</span> <a name="coefp"><span class="id" title="abbreviation">coefp</span></a> <span class="id" title="var">i</span> := (<a class="idref" href="mathcomp.algebra.poly.html#coefp_head"><span class="id" title="definition">coefp_head</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Datatypes.html#tt"><span class="id" title="constructor">tt</span></a> <span class="id" title="var">i</span>).<br/> - -<br/> -<span class="id" title="keyword">Definition</span> <a name="poly_countMixin"><span class="id" title="definition">poly_countMixin</span></a> (<span class="id" title="var">R</span> : <a class="idref" href="mathcomp.algebra.countalg.html#CountRing.Ring.Exports.countRingType"><span class="id" title="abbreviation">countRingType</span></a>) :=<br/> - <a class="idref" href="mathcomp.ssreflect.choice.html#c2a823e7a76d1d303efdd00309d93aca"><span class="id" title="notation">[</span></a><a class="idref" href="mathcomp.ssreflect.choice.html#c2a823e7a76d1d303efdd00309d93aca"><span class="id" title="notation">countMixin</span></a> <a class="idref" href="mathcomp.ssreflect.choice.html#c2a823e7a76d1d303efdd00309d93aca"><span class="id" title="notation">of</span></a> <a class="idref" href="mathcomp.algebra.poly.html#polynomial"><span class="id" title="record">polynomial</span></a> <a class="idref" href="mathcomp.algebra.poly.html#R"><span class="id" title="variable">R</span></a> <a class="idref" href="mathcomp.ssreflect.choice.html#c2a823e7a76d1d303efdd00309d93aca"><span class="id" title="notation">by</span></a> <a class="idref" href="mathcomp.ssreflect.choice.html#c2a823e7a76d1d303efdd00309d93aca"><span class="id" title="notation"><:]</span></a>.<br/> -<span class="id" title="keyword">Canonical</span> <span class="id" title="var">polynomial_countType</span> <span class="id" title="var">R</span> := <a class="idref" href="mathcomp.ssreflect.choice.html#Countable.Exports.CountType"><span class="id" title="abbreviation">CountType</span></a> <span class="id" title="var">_</span> (<a class="idref" href="mathcomp.algebra.poly.html#poly_countMixin"><span class="id" title="definition">poly_countMixin</span></a> <a class="idref" href="mathcomp.algebra.poly.html#R"><span class="id" title="variable">R</span></a>).<br/> -<span class="id" title="keyword">Canonical</span> <span class="id" title="var">poly_countType</span> (<span class="id" title="var">R</span> : <a class="idref" href="mathcomp.algebra.countalg.html#CountRing.Ring.Exports.countRingType"><span class="id" title="abbreviation">countRingType</span></a>) := <a class="idref" href="mathcomp.ssreflect.choice.html#3fd72847645c366340e6e9be05776bd8"><span class="id" title="notation">[</span></a><a class="idref" href="mathcomp.ssreflect.choice.html#3fd72847645c366340e6e9be05776bd8"><span class="id" title="notation">countType</span></a> <a class="idref" href="mathcomp.ssreflect.choice.html#3fd72847645c366340e6e9be05776bd8"><span class="id" title="notation">of</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.poly.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.ssreflect.choice.html#3fd72847645c366340e6e9be05776bd8"><span class="id" title="notation">]</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Section</span> <a name="PolynomialTheory"><span class="id" title="section">PolynomialTheory</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Variable</span> <a name="PolynomialTheory.R"><span class="id" title="variable">R</span></a> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Ring.Exports.ringType"><span class="id" title="abbreviation">ringType</span></a>.<br/> -<span class="id" title="keyword">Implicit</span> <span class="id" title="keyword">Types</span> (<span class="id" title="var">a</span> <span class="id" title="var">b</span> <span class="id" title="var">c</span> <span class="id" title="var">x</span> <span class="id" title="var">y</span> <span class="id" title="var">z</span> : <a class="idref" href="mathcomp.algebra.poly.html#PolynomialTheory.R"><span class="id" title="variable">R</span></a>) (<span class="id" title="var">p</span> <span class="id" title="var">q</span> <span class="id" title="var">r</span> <span class="id" title="var">d</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.poly.html#PolynomialTheory.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">Canonical</span> <span class="id" title="var">poly_subType</span> := <span class="id" title="keyword">Eval</span> <span class="id" title="tactic">hnf</span> <span class="id" title="tactic">in</span> <a class="idref" href="mathcomp.ssreflect.eqtype.html#aa8c179e7d847b79500c7558a661edb0"><span class="id" title="notation">[</span></a><a class="idref" href="mathcomp.ssreflect.eqtype.html#aa8c179e7d847b79500c7558a661edb0"><span class="id" title="notation">subType</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#aa8c179e7d847b79500c7558a661edb0"><span class="id" title="notation">of</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.poly.html#PolynomialTheory.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.ssreflect.eqtype.html#aa8c179e7d847b79500c7558a661edb0"><span class="id" title="notation">]</span></a>.<br/> -<span class="id" title="keyword">Canonical</span> <span class="id" title="var">poly_eqType</span> := <span class="id" title="keyword">Eval</span> <span class="id" title="tactic">hnf</span> <span class="id" title="tactic">in</span> <a class="idref" href="mathcomp.ssreflect.eqtype.html#2b9222c46a529018a8ebb5be6355801c"><span class="id" title="notation">[</span></a><a class="idref" href="mathcomp.ssreflect.eqtype.html#2b9222c46a529018a8ebb5be6355801c"><span class="id" title="notation">eqType</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#2b9222c46a529018a8ebb5be6355801c"><span class="id" title="notation">of</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.poly.html#PolynomialTheory.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.ssreflect.eqtype.html#2b9222c46a529018a8ebb5be6355801c"><span class="id" title="notation">]</span></a>.<br/> -<span class="id" title="keyword">Canonical</span> <span class="id" title="var">poly_choiceType</span> := <span class="id" title="keyword">Eval</span> <span class="id" title="tactic">hnf</span> <span class="id" title="tactic">in</span> <a class="idref" href="mathcomp.ssreflect.choice.html#6cecb3ca492751e55998eec154506328"><span class="id" title="notation">[</span></a><a class="idref" href="mathcomp.ssreflect.choice.html#6cecb3ca492751e55998eec154506328"><span class="id" title="notation">choiceType</span></a> <a class="idref" href="mathcomp.ssreflect.choice.html#6cecb3ca492751e55998eec154506328"><span class="id" title="notation">of</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.poly.html#PolynomialTheory.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.ssreflect.choice.html#6cecb3ca492751e55998eec154506328"><span class="id" title="notation">]</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Definition</span> <a name="lead_coef"><span class="id" title="definition">lead_coef</span></a> <span class="id" title="var">p</span> := <a class="idref" href="mathcomp.algebra.poly.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">_</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.poly.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/> -<span class="id" title="keyword">Lemma</span> <a name="lead_coefE"><span class="id" title="lemma">lead_coefE</span></a> <span class="id" title="var">p</span> : <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.poly.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.poly.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">_</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.poly.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/> - -<br/> -<span class="id" title="keyword">Definition</span> <a name="poly_nil"><span class="id" title="definition">poly_nil</span></a> := @<a class="idref" href="mathcomp.algebra.poly.html#Polynomial"><span class="id" title="constructor">Polynomial</span></a> <a class="idref" href="mathcomp.algebra.poly.html#PolynomialTheory.R"><span class="id" title="variable">R</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#0a934e621391740b862762275992e626"><span class="id" title="notation">[::]</span></a> (<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Theory.oner_neq0"><span class="id" title="definition">oner_neq0</span></a> <a class="idref" href="mathcomp.algebra.poly.html#PolynomialTheory.R"><span class="id" title="variable">R</span></a>).<br/> -<span class="id" title="keyword">Definition</span> <a name="polyC"><span class="id" title="definition">polyC</span></a> <span class="id" title="var">c</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.poly.html#PolynomialTheory.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.ssreflect.eqtype.html#insubd"><span class="id" title="definition">insubd</span></a> <a class="idref" href="mathcomp.algebra.poly.html#poly_nil"><span class="id" title="definition">poly_nil</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#506674b18256ef8f50efed43fa1dfd7d"><span class="id" title="notation">[::</span></a> <a class="idref" href="mathcomp.algebra.poly.html#c"><span class="id" title="variable">c</span></a><a class="idref" href="mathcomp.ssreflect.seq.html#506674b18256ef8f50efed43fa1dfd7d"><span class="id" title="notation">]</span></a>.<br/> - -<br/> - -<br/> -</div> - -<div class="doc"> - Remember the boolean (c != 0) is coerced to 1 if true and 0 if false -</div> -<div class="code"> -<span class="id" title="keyword">Lemma</span> <a name="polyseqC"><span class="id" title="lemma">polyseqC</span></a> <span class="id" title="var">c</span> : <a class="idref" href="mathcomp.algebra.poly.html#c"><span class="id" title="variable">c</span></a><a class="idref" href="mathcomp.algebra.poly.html#728a2917ff59e46e3f0e4d98ed9ea172"><span class="id" title="notation">%:</span></a><a class="idref" href="mathcomp.algebra.poly.html#728a2917ff59e46e3f0e4d98ed9ea172"><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#b8b2ebc8e1a8b9aa935c0702efb5dccf"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#nseq"><span class="id" title="definition">nseq</span></a> (<a class="idref" href="mathcomp.algebra.poly.html#c"><span class="id" title="variable">c</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#c385a484ee9d1b4e0615924561a9b75e"><span class="id" title="notation">!=</span></a> 0) <a class="idref" href="mathcomp.algebra.poly.html#c"><span class="id" title="variable">c</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#b8b2ebc8e1a8b9aa935c0702efb5dccf"><span class="id" title="notation">:></span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#seq"><span class="id" title="abbreviation">seq</span></a> <a class="idref" href="mathcomp.algebra.poly.html#PolynomialTheory.R"><span class="id" title="variable">R</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="size_polyC"><span class="id" title="lemma">size_polyC</span></a> <span class="id" title="var">c</span> : <a class="idref" href="mathcomp.ssreflect.seq.html#size"><span class="id" title="definition">size</span></a> <a class="idref" href="mathcomp.algebra.poly.html#c"><span class="id" title="variable">c</span></a><a class="idref" href="mathcomp.algebra.poly.html#728a2917ff59e46e3f0e4d98ed9ea172"><span class="id" title="notation">%:</span></a><a class="idref" href="mathcomp.algebra.poly.html#728a2917ff59e46e3f0e4d98ed9ea172"><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="http://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#c"><span class="id" title="variable">c</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#6cd0f7b28b6092304087c7049437bb1a"><span class="id" title="notation">)</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="coefC"><span class="id" title="lemma">coefC</span></a> <span class="id" title="var">c</span> <span class="id" title="var">i</span> : <a class="idref" href="mathcomp.algebra.poly.html#c"><span class="id" title="variable">c</span></a><a class="idref" href="mathcomp.algebra.poly.html#728a2917ff59e46e3f0e4d98ed9ea172"><span class="id" title="notation">%:</span></a><a class="idref" href="mathcomp.algebra.poly.html#728a2917ff59e46e3f0e4d98ed9ea172"><span class="id" title="notation">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#6cd0f7b28b6092304087c7049437bb1a"><span class="id" title="notation">=</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssreflect.html#00a1a5b58aac8f1e3f1abff064a39f9d"><span class="id" title="notation">if</span></a> <a class="idref" href="mathcomp.algebra.poly.html#i"><span class="id" title="variable">i</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> <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.poly.html#c"><span class="id" title="variable">c</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> 0.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="polyCK"><span class="id" title="lemma">polyCK</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.poly.html#polyC"><span class="id" title="definition">polyC</span></a> (<a class="idref" href="mathcomp.algebra.poly.html#coefp"><span class="id" title="abbreviation">coefp</span></a> 0).<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="polyC_inj"><span class="id" title="lemma">polyC_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.poly.html#polyC"><span class="id" title="definition">polyC</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="lead_coefC"><span class="id" title="lemma">lead_coefC</span></a> <span class="id" title="var">c</span> : <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.poly.html#c"><span class="id" title="variable">c</span></a><a class="idref" href="mathcomp.algebra.poly.html#728a2917ff59e46e3f0e4d98ed9ea172"><span class="id" title="notation">%:</span></a><a class="idref" href="mathcomp.algebra.poly.html#728a2917ff59e46e3f0e4d98ed9ea172"><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.poly.html#c"><span class="id" title="variable">c</span></a>.<br/> - -<br/> -</div> - -<div class="doc"> - Extensional interpretation (poly <=> nat -> R) -</div> -<div class="code"> -<span class="id" title="keyword">Lemma</span> <a name="polyP"><span class="id" title="lemma">polyP</span></a> <span class="id" title="var">p</span> <span class="id" title="var">q</span> : <a class="idref" href="mathcomp.ssreflect.seq.html#nth"><span class="id" title="definition">nth</span></a> 0 <a class="idref" href="mathcomp.algebra.poly.html#p"><span class="id" title="variable">p</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#876aa133fb3472bffd492f74ff496035"><span class="id" title="notation">=1</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#nth"><span class="id" title="definition">nth</span></a> 0 <a class="idref" href="mathcomp.algebra.poly.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#4bfb4f2d0721ba668e3a802ab1b745a1"><span class="id" title="notation">↔</span></a> <a class="idref" href="mathcomp.algebra.poly.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.poly.html#q"><span class="id" title="variable">q</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="size1_polyC"><span class="id" title="lemma">size1_polyC</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.poly.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> 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.algebra.poly.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.poly.html#728a2917ff59e46e3f0e4d98ed9ea172"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.poly.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">_0</span></a><a class="idref" href="mathcomp.algebra.poly.html#728a2917ff59e46e3f0e4d98ed9ea172"><span class="id" title="notation">)%:</span></a><a class="idref" href="mathcomp.algebra.poly.html#728a2917ff59e46e3f0e4d98ed9ea172"><span class="id" title="notation">P</span></a>.<br/> - -<br/> -</div> - -<div class="doc"> - Builds a polynomial by extension. -</div> -<div class="code"> -<span class="id" title="keyword">Definition</span> <a name="cons_poly"><span class="id" title="definition">cons_poly</span></a> <span class="id" title="var">c</span> <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.poly.html#PolynomialTheory.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/> - <span class="id" title="keyword">if</span> <a class="idref" href="mathcomp.algebra.poly.html#p"><span class="id" title="variable">p</span></a> <span class="id" title="keyword">is</span> <a class="idref" href="mathcomp.algebra.poly.html#Polynomial"><span class="id" title="constructor">Polynomial</span></a> ((<span class="id" title="var">_</span> <a class="idref" href="mathcomp.ssreflect.seq.html#407cde5b61fbf27196d1a7c5a475e083"><span class="id" title="notation">::</span></a> <span class="id" title="var">_</span>) <span class="id" title="keyword">as</span> <span class="id" title="var">s</span>) <span class="id" title="var">ns</span> <span class="id" title="keyword">then</span><br/> - @<a class="idref" href="mathcomp.algebra.poly.html#Polynomial"><span class="id" title="constructor">Polynomial</span></a> <a class="idref" href="mathcomp.algebra.poly.html#PolynomialTheory.R"><span class="id" title="variable">R</span></a> (<a class="idref" href="mathcomp.algebra.poly.html#c"><span class="id" title="variable">c</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#407cde5b61fbf27196d1a7c5a475e083"><span class="id" title="notation">::</span></a> <span class="id" title="var">s</span>) <span class="id" title="var">ns</span><br/> - <span class="id" title="keyword">else</span> <a class="idref" href="mathcomp.algebra.poly.html#c"><span class="id" title="variable">c</span></a><a class="idref" href="mathcomp.algebra.poly.html#728a2917ff59e46e3f0e4d98ed9ea172"><span class="id" title="notation">%:</span></a><a class="idref" href="mathcomp.algebra.poly.html#728a2917ff59e46e3f0e4d98ed9ea172"><span class="id" title="notation">P</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="polyseq_cons"><span class="id" title="lemma">polyseq_cons</span></a> <span class="id" title="var">c</span> <span class="id" title="var">p</span> :<br/> - <a class="idref" href="mathcomp.algebra.poly.html#cons_poly"><span class="id" title="definition">cons_poly</span></a> <a class="idref" href="mathcomp.algebra.poly.html#c"><span class="id" title="variable">c</span></a> <a class="idref" href="mathcomp.algebra.poly.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="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#b8b2ebc8e1a8b9aa935c0702efb5dccf"><span class="id" title="notation">(</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssreflect.html#00a1a5b58aac8f1e3f1abff064a39f9d"><span class="id" title="notation">if</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#b3ebd0deddd84fd60e149cb5ef719351"><span class="id" title="notation">~~</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#nilp"><span class="id" title="definition">nilp</span></a> <a class="idref" href="mathcomp.algebra.poly.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#00a1a5b58aac8f1e3f1abff064a39f9d"><span class="id" title="notation">then</span></a> <a class="idref" href="mathcomp.algebra.poly.html#c"><span class="id" title="variable">c</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#407cde5b61fbf27196d1a7c5a475e083"><span class="id" title="notation">::</span></a> <a class="idref" href="mathcomp.algebra.poly.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#00a1a5b58aac8f1e3f1abff064a39f9d"><span class="id" title="notation">else</span></a> <a class="idref" href="mathcomp.algebra.poly.html#c"><span class="id" title="variable">c</span></a><a class="idref" href="mathcomp.algebra.poly.html#728a2917ff59e46e3f0e4d98ed9ea172"><span class="id" title="notation">%:</span></a><a class="idref" href="mathcomp.algebra.poly.html#728a2917ff59e46e3f0e4d98ed9ea172"><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#b8b2ebc8e1a8b9aa935c0702efb5dccf"><span class="id" title="notation">)</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#b8b2ebc8e1a8b9aa935c0702efb5dccf"><span class="id" title="notation">:></span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#seq"><span class="id" title="abbreviation">seq</span></a> <a class="idref" href="mathcomp.algebra.poly.html#PolynomialTheory.R"><span class="id" title="variable">R</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="size_cons_poly"><span class="id" title="lemma">size_cons_poly</span></a> <span class="id" title="var">c</span> <span class="id" title="var">p</span> :<br/> - <a class="idref" href="mathcomp.ssreflect.seq.html#size"><span class="id" title="definition">size</span></a> (<a class="idref" href="mathcomp.algebra.poly.html#cons_poly"><span class="id" title="definition">cons_poly</span></a> <a class="idref" href="mathcomp.algebra.poly.html#c"><span class="id" title="variable">c</span></a> <a class="idref" href="mathcomp.algebra.poly.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="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#6cd0f7b28b6092304087c7049437bb1a"><span class="id" title="notation">(</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssreflect.html#00a1a5b58aac8f1e3f1abff064a39f9d"><span class="id" title="notation">if</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#nilp"><span class="id" title="definition">nilp</span></a> <a class="idref" href="mathcomp.algebra.poly.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.Datatypes.html#9ddeac0ab66152bd1d64bedb507a795e"><span class="id" title="notation">&&</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Datatypes.html#9ddeac0ab66152bd1d64bedb507a795e"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.poly.html#c"><span class="id" title="variable">c</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.Datatypes.html#9ddeac0ab66152bd1d64bedb507a795e"><span class="id" title="notation">)</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssreflect.html#00a1a5b58aac8f1e3f1abff064a39f9d"><span class="id" title="notation">then</span></a> 0%<span class="id" title="var">N</span> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssreflect.html#00a1a5b58aac8f1e3f1abff064a39f9d"><span class="id" title="notation">else</span></a> <a class="idref" href="mathcomp.ssreflect.ssrnat.html#bda89d73ec4a8f23ae92b565ffb5aaa6"><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.poly.html#p"><span class="id" title="variable">p</span></a><a class="idref" href="mathcomp.ssreflect.ssrnat.html#bda89d73ec4a8f23ae92b565ffb5aaa6"><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>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="coef_cons"><span class="id" title="lemma">coef_cons</span></a> <span class="id" title="var">c</span> <span class="id" title="var">p</span> <span class="id" title="var">i</span> : <a class="idref" href="mathcomp.algebra.ssralg.html#82d810f9f90b79e8fe98d90a63070c32"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.poly.html#cons_poly"><span class="id" title="definition">cons_poly</span></a> <a class="idref" href="mathcomp.algebra.poly.html#c"><span class="id" title="variable">c</span></a> <a class="idref" href="mathcomp.algebra.poly.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#6cd0f7b28b6092304087c7049437bb1a"><span class="id" title="notation">=</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssreflect.html#00a1a5b58aac8f1e3f1abff064a39f9d"><span class="id" title="notation">if</span></a> <a class="idref" href="mathcomp.algebra.poly.html#i"><span class="id" title="variable">i</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> <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.poly.html#c"><span class="id" title="variable">c</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.poly.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="mathcomp.ssreflect.ssrnat.html#f953bf7095e0da1cb644443fd0e17d6d"><span class="id" title="notation">.-1</span></a>.<br/> - -<br/> -</div> - -<div class="doc"> - Build a polynomial directly from a list of coefficients. -</div> -<div class="code"> -<span class="id" title="keyword">Definition</span> <a name="Poly"><span class="id" title="definition">Poly</span></a> := <a class="idref" href="mathcomp.ssreflect.seq.html#foldr"><span class="id" title="definition">foldr</span></a> <a class="idref" href="mathcomp.algebra.poly.html#cons_poly"><span class="id" title="definition">cons_poly</span></a> 0<a class="idref" href="mathcomp.algebra.poly.html#728a2917ff59e46e3f0e4d98ed9ea172"><span class="id" title="notation">%:</span></a><a class="idref" href="mathcomp.algebra.poly.html#728a2917ff59e46e3f0e4d98ed9ea172"><span class="id" title="notation">P</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="PolyK"><span class="id" title="lemma">PolyK</span></a> <span class="id" title="var">c</span> <span class="id" title="var">s</span> : <a class="idref" href="mathcomp.ssreflect.seq.html#last"><span class="id" title="definition">last</span></a> <a class="idref" href="mathcomp.algebra.poly.html#c"><span class="id" title="variable">c</span></a> <a class="idref" href="mathcomp.algebra.poly.html#s"><span class="id" title="variable">s</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#Poly"><span class="id" title="definition">Poly</span></a> <a class="idref" href="mathcomp.algebra.poly.html#s"><span class="id" title="variable">s</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.poly.html#s"><span class="id" title="variable">s</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#b8b2ebc8e1a8b9aa935c0702efb5dccf"><span class="id" title="notation">:></span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#seq"><span class="id" title="abbreviation">seq</span></a> <a class="idref" href="mathcomp.algebra.poly.html#PolynomialTheory.R"><span class="id" title="variable">R</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="polyseqK"><span class="id" title="lemma">polyseqK</span></a> <span class="id" title="var">p</span> : <a class="idref" href="mathcomp.algebra.poly.html#Poly"><span class="id" title="definition">Poly</span></a> <a class="idref" href="mathcomp.algebra.poly.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.poly.html#p"><span class="id" title="variable">p</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="size_Poly"><span class="id" title="lemma">size_Poly</span></a> <span class="id" title="var">s</span> : <a class="idref" href="mathcomp.ssreflect.seq.html#size"><span class="id" title="definition">size</span></a> (<a class="idref" href="mathcomp.algebra.poly.html#Poly"><span class="id" title="definition">Poly</span></a> <a class="idref" href="mathcomp.algebra.poly.html#s"><span class="id" title="variable">s</span></a>) <a class="idref" href="mathcomp.ssreflect.ssrnat.html#cb53cf0ee22c036a03b4a9281c68b5a3"><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.poly.html#s"><span class="id" title="variable">s</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="coef_Poly"><span class="id" title="lemma">coef_Poly</span></a> <span class="id" title="var">s</span> <span class="id" title="var">i</span> : <a class="idref" href="mathcomp.algebra.ssralg.html#82d810f9f90b79e8fe98d90a63070c32"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.poly.html#Poly"><span class="id" title="definition">Poly</span></a> <a class="idref" href="mathcomp.algebra.poly.html#s"><span class="id" title="variable">s</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.poly.html#s"><span class="id" title="variable">s</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/> -</div> - -<div class="doc"> - Build a polynomial from an infinite sequence of coefficients and a bound. -</div> -<div class="code"> -<span class="id" title="keyword">Definition</span> <a name="poly_expanded_def"><span class="id" title="definition">poly_expanded_def</span></a> <span class="id" title="var">n</span> <span class="id" title="var">E</span> := <a class="idref" href="mathcomp.algebra.poly.html#Poly"><span class="id" title="definition">Poly</span></a> (<a class="idref" href="mathcomp.ssreflect.seq.html#mkseq"><span class="id" title="definition">mkseq</span></a> <a class="idref" href="mathcomp.algebra.poly.html#E"><span class="id" title="variable">E</span></a> <a class="idref" href="mathcomp.algebra.poly.html#n"><span class="id" title="variable">n</span></a>).<br/> -<span class="id" title="keyword">Fact</span> <a name="poly_key"><span class="id" title="lemma">poly_key</span></a> : <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Datatypes.html#unit"><span class="id" title="inductive">unit</span></a>. <br/> -<span class="id" title="keyword">Definition</span> <a name="poly"><span class="id" title="definition">poly</span></a> := <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssreflect.html#locked_with"><span class="id" title="definition">locked_with</span></a> <a class="idref" href="mathcomp.algebra.poly.html#poly_key"><span class="id" title="lemma">poly_key</span></a> <a class="idref" href="mathcomp.algebra.poly.html#poly_expanded_def"><span class="id" title="definition">poly_expanded_def</span></a>.<br/> -<span class="id" title="keyword">Canonical</span> <span class="id" title="var">poly_unlockable</span> := <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssreflect.html#84464b412faf5a30a7c5c6423d9b3956"><span class="id" title="notation">[</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssreflect.html#84464b412faf5a30a7c5c6423d9b3956"><span class="id" title="notation">unlockable</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssreflect.html#84464b412faf5a30a7c5c6423d9b3956"><span class="id" title="notation">fun</span></a> <a class="idref" href="mathcomp.algebra.poly.html#poly"><span class="id" title="definition">poly</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssreflect.html#84464b412faf5a30a7c5c6423d9b3956"><span class="id" title="notation">]</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="polyseq_poly"><span class="id" title="lemma">polyseq_poly</span></a> <span class="id" title="var">n</span> <span class="id" title="var">E</span> :<br/> - <a class="idref" href="mathcomp.algebra.poly.html#E"><span class="id" title="variable">E</span></a> <a class="idref" href="mathcomp.algebra.poly.html#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> <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#27fd9446e6d344308e4e6554f93d6b3b"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.algebra.poly.html#27fd9446e6d344308e4e6554f93d6b3b"><span class="id" title="notation">poly_</span></a><a class="idref" href="mathcomp.algebra.poly.html#27fd9446e6d344308e4e6554f93d6b3b"><span class="id" title="notation">(</span></a><span class="id" title="var">i</span> <a class="idref" href="mathcomp.algebra.poly.html#27fd9446e6d344308e4e6554f93d6b3b"><span class="id" title="notation"><</span></a> <a class="idref" href="mathcomp.algebra.poly.html#n"><span class="id" title="variable">n</span></a><a class="idref" href="mathcomp.algebra.poly.html#27fd9446e6d344308e4e6554f93d6b3b"><span class="id" title="notation">)</span></a> <a class="idref" href="mathcomp.algebra.poly.html#E"><span class="id" title="variable">E</span></a> <a class="idref" href="mathcomp.algebra.poly.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#b8b2ebc8e1a8b9aa935c0702efb5dccf"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#mkseq"><span class="id" title="definition">mkseq</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#20b75710d0541e9ffd06f8e723fd3daf"><span class="id" title="notation">[</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#20b75710d0541e9ffd06f8e723fd3daf"><span class="id" title="notation">eta</span></a> <a class="idref" href="mathcomp.algebra.poly.html#E"><span class="id" title="variable">E</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#20b75710d0541e9ffd06f8e723fd3daf"><span class="id" title="notation">]</span></a> <a class="idref" href="mathcomp.algebra.poly.html#n"><span class="id" title="variable">n</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#b8b2ebc8e1a8b9aa935c0702efb5dccf"><span class="id" title="notation">:></span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#seq"><span class="id" title="abbreviation">seq</span></a> <a class="idref" href="mathcomp.algebra.poly.html#PolynomialTheory.R"><span class="id" title="variable">R</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="size_poly"><span class="id" title="lemma">size_poly</span></a> <span class="id" title="var">n</span> <span class="id" title="var">E</span> : <a class="idref" href="mathcomp.ssreflect.seq.html#size"><span class="id" title="definition">size</span></a> (<a class="idref" href="mathcomp.algebra.poly.html#27fd9446e6d344308e4e6554f93d6b3b"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.algebra.poly.html#27fd9446e6d344308e4e6554f93d6b3b"><span class="id" title="notation">poly_</span></a><a class="idref" href="mathcomp.algebra.poly.html#27fd9446e6d344308e4e6554f93d6b3b"><span class="id" title="notation">(</span></a><span class="id" title="var">i</span> <a class="idref" href="mathcomp.algebra.poly.html#27fd9446e6d344308e4e6554f93d6b3b"><span class="id" title="notation"><</span></a> <a class="idref" href="mathcomp.algebra.poly.html#n"><span class="id" title="variable">n</span></a><a class="idref" href="mathcomp.algebra.poly.html#27fd9446e6d344308e4e6554f93d6b3b"><span class="id" title="notation">)</span></a> <a class="idref" href="mathcomp.algebra.poly.html#E"><span class="id" title="variable">E</span></a> <a class="idref" href="mathcomp.algebra.poly.html#i"><span class="id" title="variable">i</span></a>) <a class="idref" href="mathcomp.ssreflect.ssrnat.html#cb53cf0ee22c036a03b4a9281c68b5a3"><span class="id" title="notation">≤</span></a> <a class="idref" href="mathcomp.algebra.poly.html#n"><span class="id" title="variable">n</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="size_poly_eq"><span class="id" title="lemma">size_poly_eq</span></a> <span class="id" title="var">n</span> <span class="id" title="var">E</span> : <a class="idref" href="mathcomp.algebra.poly.html#E"><span class="id" title="variable">E</span></a> <a class="idref" href="mathcomp.algebra.poly.html#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> <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.ssreflect.seq.html#size"><span class="id" title="definition">size</span></a> (<a class="idref" href="mathcomp.algebra.poly.html#27fd9446e6d344308e4e6554f93d6b3b"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.algebra.poly.html#27fd9446e6d344308e4e6554f93d6b3b"><span class="id" title="notation">poly_</span></a><a class="idref" href="mathcomp.algebra.poly.html#27fd9446e6d344308e4e6554f93d6b3b"><span class="id" title="notation">(</span></a><span class="id" title="var">i</span> <a class="idref" href="mathcomp.algebra.poly.html#27fd9446e6d344308e4e6554f93d6b3b"><span class="id" title="notation"><</span></a> <a class="idref" href="mathcomp.algebra.poly.html#n"><span class="id" title="variable">n</span></a><a class="idref" href="mathcomp.algebra.poly.html#27fd9446e6d344308e4e6554f93d6b3b"><span class="id" title="notation">)</span></a> <a class="idref" href="mathcomp.algebra.poly.html#E"><span class="id" title="variable">E</span></a> <a class="idref" href="mathcomp.algebra.poly.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#n"><span class="id" title="variable">n</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="coef_poly"><span class="id" title="lemma">coef_poly</span></a> <span class="id" title="var">n</span> <span class="id" title="var">E</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.poly.html#27fd9446e6d344308e4e6554f93d6b3b"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.algebra.poly.html#27fd9446e6d344308e4e6554f93d6b3b"><span class="id" title="notation">poly_</span></a><a class="idref" href="mathcomp.algebra.poly.html#27fd9446e6d344308e4e6554f93d6b3b"><span class="id" title="notation">(</span></a><span class="id" title="var">i</span> <a class="idref" href="mathcomp.algebra.poly.html#27fd9446e6d344308e4e6554f93d6b3b"><span class="id" title="notation"><</span></a> <a class="idref" href="mathcomp.algebra.poly.html#n"><span class="id" title="variable">n</span></a><a class="idref" href="mathcomp.algebra.poly.html#27fd9446e6d344308e4e6554f93d6b3b"><span class="id" title="notation">)</span></a> <a class="idref" href="mathcomp.algebra.poly.html#E"><span class="id" title="variable">E</span></a> <a class="idref" href="mathcomp.algebra.poly.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="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> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#6cd0f7b28b6092304087c7049437bb1a"><span class="id" title="notation">(</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssreflect.html#00a1a5b58aac8f1e3f1abff064a39f9d"><span class="id" title="notation">if</span></a> <a class="idref" href="mathcomp.algebra.poly.html#k"><span class="id" title="variable">k</span></a> <a class="idref" href="mathcomp.ssreflect.ssrnat.html#00fe0eaf5e6949f0a31725357afa4bba"><span class="id" title="notation"><</span></a> <a class="idref" href="mathcomp.algebra.poly.html#n"><span class="id" title="variable">n</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.poly.html#E"><span class="id" title="variable">E</span></a> <a class="idref" href="mathcomp.algebra.poly.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.ssreflect.html#00a1a5b58aac8f1e3f1abff064a39f9d"><span class="id" title="notation">else</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>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="lead_coef_poly"><span class="id" title="lemma">lead_coef_poly</span></a> <span class="id" title="var">n</span> <span class="id" title="var">E</span> :<br/> - <a class="idref" href="mathcomp.algebra.poly.html#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.poly.html#E"><span class="id" title="variable">E</span></a> <a class="idref" href="mathcomp.algebra.poly.html#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> <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#lead_coef"><span class="id" title="definition">lead_coef</span></a> (<a class="idref" href="mathcomp.algebra.poly.html#27fd9446e6d344308e4e6554f93d6b3b"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.algebra.poly.html#27fd9446e6d344308e4e6554f93d6b3b"><span class="id" title="notation">poly_</span></a><a class="idref" href="mathcomp.algebra.poly.html#27fd9446e6d344308e4e6554f93d6b3b"><span class="id" title="notation">(</span></a><span class="id" title="var">i</span> <a class="idref" href="mathcomp.algebra.poly.html#27fd9446e6d344308e4e6554f93d6b3b"><span class="id" title="notation"><</span></a> <a class="idref" href="mathcomp.algebra.poly.html#n"><span class="id" title="variable">n</span></a><a class="idref" href="mathcomp.algebra.poly.html#27fd9446e6d344308e4e6554f93d6b3b"><span class="id" title="notation">)</span></a> <a class="idref" href="mathcomp.algebra.poly.html#E"><span class="id" title="variable">E</span></a> <a class="idref" href="mathcomp.algebra.poly.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#E"><span class="id" title="variable">E</span></a> <a class="idref" href="mathcomp.algebra.poly.html#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="coefK"><span class="id" title="lemma">coefK</span></a> <span class="id" title="var">p</span> : <a class="idref" href="mathcomp.algebra.poly.html#27fd9446e6d344308e4e6554f93d6b3b"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.algebra.poly.html#27fd9446e6d344308e4e6554f93d6b3b"><span class="id" title="notation">poly_</span></a><a class="idref" href="mathcomp.algebra.poly.html#27fd9446e6d344308e4e6554f93d6b3b"><span class="id" title="notation">(</span></a><span class="id" title="var">i</span> <a class="idref" href="mathcomp.algebra.poly.html#27fd9446e6d344308e4e6554f93d6b3b"><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.poly.html#p"><span class="id" title="variable">p</span></a><a class="idref" href="mathcomp.algebra.poly.html#27fd9446e6d344308e4e6554f93d6b3b"><span class="id" title="notation">)</span></a> <a class="idref" href="mathcomp.algebra.poly.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#6cd0f7b28b6092304087c7049437bb1a"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.poly.html#p"><span class="id" title="variable">p</span></a>.<br/> - -<br/> -</div> - -<div class="doc"> - Zmodule structure for polynomial -</div> -<div class="code"> -<span class="id" title="keyword">Definition</span> <a name="add_poly_def"><span class="id" title="definition">add_poly_def</span></a> <span class="id" title="var">p</span> <span class="id" title="var">q</span> := <a class="idref" href="mathcomp.algebra.poly.html#27fd9446e6d344308e4e6554f93d6b3b"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.algebra.poly.html#27fd9446e6d344308e4e6554f93d6b3b"><span class="id" title="notation">poly_</span></a><a class="idref" href="mathcomp.algebra.poly.html#27fd9446e6d344308e4e6554f93d6b3b"><span class="id" title="notation">(</span></a><span class="id" title="var">i</span> <a class="idref" href="mathcomp.algebra.poly.html#27fd9446e6d344308e4e6554f93d6b3b"><span class="id" title="notation"><</span></a> <a class="idref" href="mathcomp.ssreflect.ssrnat.html#maxn"><span class="id" title="definition">maxn</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.poly.html#p"><span class="id" title="variable">p</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.poly.html#q"><span class="id" title="variable">q</span></a>)<a class="idref" href="mathcomp.algebra.poly.html#27fd9446e6d344308e4e6554f93d6b3b"><span class="id" title="notation">)</span></a> <a class="idref" href="mathcomp.algebra.poly.html#27fd9446e6d344308e4e6554f93d6b3b"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.poly.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="mathcomp.algebra.ssralg.html#c7f78cf1f6a5e4f664654f7d671ca752"><span class="id" title="notation">+</span></a> <a class="idref" href="mathcomp.algebra.poly.html#q"><span class="id" title="variable">q</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="mathcomp.algebra.poly.html#27fd9446e6d344308e4e6554f93d6b3b"><span class="id" title="notation">)</span></a>.<br/> -<span class="id" title="keyword">Fact</span> <a name="add_poly_key"><span class="id" title="lemma">add_poly_key</span></a> : <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Datatypes.html#unit"><span class="id" title="inductive">unit</span></a>. <br/> -<span class="id" title="keyword">Definition</span> <a name="add_poly"><span class="id" title="definition">add_poly</span></a> := <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssreflect.html#locked_with"><span class="id" title="definition">locked_with</span></a> <a class="idref" href="mathcomp.algebra.poly.html#add_poly_key"><span class="id" title="lemma">add_poly_key</span></a> <a class="idref" href="mathcomp.algebra.poly.html#add_poly_def"><span class="id" title="definition">add_poly_def</span></a>.<br/> -<span class="id" title="keyword">Canonical</span> <span class="id" title="var">add_poly_unlockable</span> := <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssreflect.html#84464b412faf5a30a7c5c6423d9b3956"><span class="id" title="notation">[</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssreflect.html#84464b412faf5a30a7c5c6423d9b3956"><span class="id" title="notation">unlockable</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssreflect.html#84464b412faf5a30a7c5c6423d9b3956"><span class="id" title="notation">fun</span></a> <a class="idref" href="mathcomp.algebra.poly.html#add_poly"><span class="id" title="definition">add_poly</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssreflect.html#84464b412faf5a30a7c5c6423d9b3956"><span class="id" title="notation">]</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Definition</span> <a name="opp_poly_def"><span class="id" title="definition">opp_poly_def</span></a> <span class="id" title="var">p</span> := <a class="idref" href="mathcomp.algebra.poly.html#27fd9446e6d344308e4e6554f93d6b3b"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.algebra.poly.html#27fd9446e6d344308e4e6554f93d6b3b"><span class="id" title="notation">poly_</span></a><a class="idref" href="mathcomp.algebra.poly.html#27fd9446e6d344308e4e6554f93d6b3b"><span class="id" title="notation">(</span></a><span class="id" title="var">i</span> <a class="idref" href="mathcomp.algebra.poly.html#27fd9446e6d344308e4e6554f93d6b3b"><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.poly.html#p"><span class="id" title="variable">p</span></a><a class="idref" href="mathcomp.algebra.poly.html#27fd9446e6d344308e4e6554f93d6b3b"><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.poly.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/> -<span class="id" title="keyword">Fact</span> <a name="opp_poly_key"><span class="id" title="lemma">opp_poly_key</span></a> : <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Datatypes.html#unit"><span class="id" title="inductive">unit</span></a>. <br/> -<span class="id" title="keyword">Definition</span> <a name="opp_poly"><span class="id" title="definition">opp_poly</span></a> := <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssreflect.html#locked_with"><span class="id" title="definition">locked_with</span></a> <a class="idref" href="mathcomp.algebra.poly.html#opp_poly_key"><span class="id" title="lemma">opp_poly_key</span></a> <a class="idref" href="mathcomp.algebra.poly.html#opp_poly_def"><span class="id" title="definition">opp_poly_def</span></a>.<br/> -<span class="id" title="keyword">Canonical</span> <span class="id" title="var">opp_poly_unlockable</span> := <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssreflect.html#84464b412faf5a30a7c5c6423d9b3956"><span class="id" title="notation">[</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssreflect.html#84464b412faf5a30a7c5c6423d9b3956"><span class="id" title="notation">unlockable</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssreflect.html#84464b412faf5a30a7c5c6423d9b3956"><span class="id" title="notation">fun</span></a> <a class="idref" href="mathcomp.algebra.poly.html#opp_poly"><span class="id" title="definition">opp_poly</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssreflect.html#84464b412faf5a30a7c5c6423d9b3956"><span class="id" title="notation">]</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Fact</span> <a name="coef_add_poly"><span class="id" title="lemma">coef_add_poly</span></a> <span class="id" title="var">p</span> <span class="id" title="var">q</span> <span class="id" title="var">i</span> : <a class="idref" href="mathcomp.algebra.ssralg.html#82d810f9f90b79e8fe98d90a63070c32"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.poly.html#add_poly"><span class="id" title="definition">add_poly</span></a> <a class="idref" href="mathcomp.algebra.poly.html#p"><span class="id" title="variable">p</span></a> <a class="idref" href="mathcomp.algebra.poly.html#q"><span class="id" title="variable">q</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.poly.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="mathcomp.algebra.ssralg.html#c7f78cf1f6a5e4f664654f7d671ca752"><span class="id" title="notation">+</span></a> <a class="idref" href="mathcomp.algebra.poly.html#q"><span class="id" title="variable">q</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">Fact</span> <a name="coef_opp_poly"><span class="id" title="lemma">coef_opp_poly</span></a> <span class="id" title="var">p</span> <span class="id" title="var">i</span> : <a class="idref" href="mathcomp.algebra.ssralg.html#82d810f9f90b79e8fe98d90a63070c32"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.poly.html#opp_poly"><span class="id" title="definition">opp_poly</span></a> <a class="idref" href="mathcomp.algebra.poly.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#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.poly.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">Fact</span> <a name="add_polyA"><span class="id" title="lemma">add_polyA</span></a> : <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#associative"><span class="id" title="definition">associative</span></a> <a class="idref" href="mathcomp.algebra.poly.html#add_poly"><span class="id" title="definition">add_poly</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Fact</span> <a name="add_polyC"><span class="id" title="lemma">add_polyC</span></a> : <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#commutative"><span class="id" title="definition">commutative</span></a> <a class="idref" href="mathcomp.algebra.poly.html#add_poly"><span class="id" title="definition">add_poly</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Fact</span> <a name="add_poly0"><span class="id" title="lemma">add_poly0</span></a> : <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#left_id"><span class="id" title="definition">left_id</span></a> 0<a class="idref" href="mathcomp.algebra.poly.html#728a2917ff59e46e3f0e4d98ed9ea172"><span class="id" title="notation">%:</span></a><a class="idref" href="mathcomp.algebra.poly.html#728a2917ff59e46e3f0e4d98ed9ea172"><span class="id" title="notation">P</span></a> <a class="idref" href="mathcomp.algebra.poly.html#add_poly"><span class="id" title="definition">add_poly</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Fact</span> <a name="add_polyN"><span class="id" title="lemma">add_polyN</span></a> : <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#left_inverse"><span class="id" title="definition">left_inverse</span></a> 0<a class="idref" href="mathcomp.algebra.poly.html#728a2917ff59e46e3f0e4d98ed9ea172"><span class="id" title="notation">%:</span></a><a class="idref" href="mathcomp.algebra.poly.html#728a2917ff59e46e3f0e4d98ed9ea172"><span class="id" title="notation">P</span></a> <a class="idref" href="mathcomp.algebra.poly.html#opp_poly"><span class="id" title="definition">opp_poly</span></a> <a class="idref" href="mathcomp.algebra.poly.html#add_poly"><span class="id" title="definition">add_poly</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Definition</span> <a name="poly_zmodMixin"><span class="id" title="definition">poly_zmodMixin</span></a> :=<br/> - <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Zmodule.Exports.ZmodMixin"><span class="id" title="abbreviation">ZmodMixin</span></a> <a class="idref" href="mathcomp.algebra.poly.html#add_polyA"><span class="id" title="lemma">add_polyA</span></a> <a class="idref" href="mathcomp.algebra.poly.html#add_polyC"><span class="id" title="lemma">add_polyC</span></a> <a class="idref" href="mathcomp.algebra.poly.html#add_poly0"><span class="id" title="lemma">add_poly0</span></a> <a class="idref" href="mathcomp.algebra.poly.html#add_polyN"><span class="id" title="lemma">add_polyN</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Canonical</span> <span class="id" title="var">poly_zmodType</span> := <span class="id" title="keyword">Eval</span> <span class="id" title="tactic">hnf</span> <span class="id" title="tactic">in</span> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Zmodule.Exports.ZmodType"><span class="id" title="abbreviation">ZmodType</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.poly.html#PolynomialTheory.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.poly.html#poly_zmodMixin"><span class="id" title="definition">poly_zmodMixin</span></a>.<br/> -<span class="id" title="keyword">Canonical</span> <span class="id" title="var">polynomial_zmodType</span> :=<br/> - <span class="id" title="keyword">Eval</span> <span class="id" title="tactic">hnf</span> <span class="id" title="tactic">in</span> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Zmodule.Exports.ZmodType"><span class="id" title="abbreviation">ZmodType</span></a> (<a class="idref" href="mathcomp.algebra.poly.html#polynomial"><span class="id" title="record">polynomial</span></a> <a class="idref" href="mathcomp.algebra.poly.html#PolynomialTheory.R"><span class="id" title="variable">R</span></a>) <a class="idref" href="mathcomp.algebra.poly.html#poly_zmodMixin"><span class="id" title="definition">poly_zmodMixin</span></a>.<br/> - -<br/> -</div> - -<div class="doc"> - Properties of the zero polynomial -</div> -<div class="code"> -<span class="id" title="keyword">Lemma</span> <a name="polyC0"><span class="id" title="lemma">polyC0</span></a> : 0<a class="idref" href="mathcomp.algebra.poly.html#728a2917ff59e46e3f0e4d98ed9ea172"><span class="id" title="notation">%:</span></a><a class="idref" href="mathcomp.algebra.poly.html#728a2917ff59e46e3f0e4d98ed9ea172"><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#b8b2ebc8e1a8b9aa935c0702efb5dccf"><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#b8b2ebc8e1a8b9aa935c0702efb5dccf"><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.poly.html#PolynomialTheory.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">Lemma</span> <a name="polyseq0"><span class="id" title="lemma">polyseq0</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>0 <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.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.poly.html#PolynomialTheory.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.Logic.html#b8b2ebc8e1a8b9aa935c0702efb5dccf"><span class="id" title="notation">)</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#b8b2ebc8e1a8b9aa935c0702efb5dccf"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#0a934e621391740b862762275992e626"><span class="id" title="notation">[::]</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#b8b2ebc8e1a8b9aa935c0702efb5dccf"><span class="id" title="notation">:></span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#seq"><span class="id" title="abbreviation">seq</span></a> <a class="idref" href="mathcomp.algebra.poly.html#PolynomialTheory.R"><span class="id" title="variable">R</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="size_poly0"><span class="id" title="lemma">size_poly0</span></a> : <a class="idref" href="mathcomp.ssreflect.seq.html#size"><span class="id" title="definition">size</span></a> (0 <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.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.poly.html#PolynomialTheory.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.Logic.html#6cd0f7b28b6092304087c7049437bb1a"><span class="id" title="notation">=</span></a> 0%<span class="id" title="var">N</span>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="coef0"><span class="id" title="lemma">coef0</span></a> <span class="id" title="var">i</span> : <a class="idref" href="mathcomp.algebra.ssralg.html#82d810f9f90b79e8fe98d90a63070c32"><span class="id" title="notation">(</span></a>0 <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.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.poly.html#PolynomialTheory.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.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> 0.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="lead_coef0"><span class="id" title="lemma">lead_coef0</span></a> : <a class="idref" href="mathcomp.algebra.poly.html#lead_coef"><span class="id" title="definition">lead_coef</span></a> 0 <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> 0 <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.poly.html#PolynomialTheory.R"><span class="id" title="variable">R</span></a>. <br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="size_poly_eq0"><span class="id" title="lemma">size_poly_eq0</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#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.poly.html#p"><span class="id" title="variable">p</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><a class="idref" href="http://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.algebra.poly.html#p"><span class="id" title="variable">p</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>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="size_poly_leq0"><span class="id" title="lemma">size_poly_leq0</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#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.poly.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> 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.algebra.poly.html#p"><span class="id" title="variable">p</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>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="size_poly_leq0P"><span class="id" title="lemma">size_poly_leq0P</span></a> <span class="id" title="var">p</span> : <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#reflect"><span class="id" title="abbreviation">reflect</span></a> (<a class="idref" href="mathcomp.algebra.poly.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="mathcomp.ssreflect.seq.html#size"><span class="id" title="definition">size</span></a> <a class="idref" href="mathcomp.algebra.poly.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> 0%<span class="id" title="var">N</span>).<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="size_poly_gt0"><span class="id" title="lemma">size_poly_gt0</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#6cd0f7b28b6092304087c7049437bb1a"><span class="id" title="notation">(</span></a>0 <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.poly.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="http://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.poly.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#6cd0f7b28b6092304087c7049437bb1a"><span class="id" title="notation">)</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="gt_size_poly_neq0"><span class="id" title="lemma">gt_size_poly_neq0</span></a> <span class="id" title="var">p</span> <span class="id" title="var">n</span> : (<a class="idref" href="mathcomp.ssreflect.seq.html#size"><span class="id" title="definition">size</span></a> <a class="idref" href="mathcomp.algebra.poly.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> <a class="idref" href="mathcomp.algebra.poly.html#n"><span class="id" title="variable">n</span></a>)%<span class="id" title="var">N</span> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#1c93e43e07fbeaeb6a625cb6614beb5d"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.poly.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.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="nil_poly"><span class="id" title="lemma">nil_poly</span></a> <span class="id" title="var">p</span> : <a class="idref" href="mathcomp.ssreflect.seq.html#nilp"><span class="id" title="definition">nilp</span></a> <a class="idref" href="mathcomp.algebra.poly.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="http://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#p"><span class="id" title="variable">p</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>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="poly0Vpos"><span class="id" title="lemma">poly0Vpos</span></a> <span class="id" title="var">p</span> : <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Specif.html#87727981cdc1579fef00b9d9c1d3b9da"><span class="id" title="notation">{</span></a><a class="idref" href="mathcomp.algebra.poly.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.Specif.html#87727981cdc1579fef00b9d9c1d3b9da"><span class="id" title="notation">}</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Specif.html#87727981cdc1579fef00b9d9c1d3b9da"><span class="id" title="notation">+</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Specif.html#87727981cdc1579fef00b9d9c1d3b9da"><span class="id" title="notation">{</span></a><a class="idref" href="mathcomp.ssreflect.seq.html#size"><span class="id" title="definition">size</span></a> <a class="idref" href="mathcomp.algebra.poly.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> 0<a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Specif.html#87727981cdc1579fef00b9d9c1d3b9da"><span class="id" title="notation">}</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="polySpred"><span class="id" title="lemma">polySpred</span></a> <span class="id" title="var">p</span> : <a class="idref" href="mathcomp.algebra.poly.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.ssreflect.seq.html#size"><span class="id" title="definition">size</span></a> <a class="idref" href="mathcomp.algebra.poly.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.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.poly.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><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="lead_coef_eq0"><span class="id" title="lemma">lead_coef_eq0</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#6cd0f7b28b6092304087c7049437bb1a"><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> <a class="idref" href="mathcomp.algebra.poly.html#p"><span class="id" title="variable">p</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.algebra.poly.html#p"><span class="id" title="variable">p</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>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="polyC_eq0"><span class="id" title="lemma">polyC_eq0</span></a> (<span class="id" title="var">c</span> : <a class="idref" href="mathcomp.algebra.poly.html#PolynomialTheory.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><a class="idref" href="mathcomp.algebra.poly.html#c"><span class="id" title="variable">c</span></a><a class="idref" href="mathcomp.algebra.poly.html#728a2917ff59e46e3f0e4d98ed9ea172"><span class="id" title="notation">%:</span></a><a class="idref" href="mathcomp.algebra.poly.html#728a2917ff59e46e3f0e4d98ed9ea172"><span class="id" title="notation">P</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.algebra.poly.html#c"><span class="id" title="variable">c</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>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="size_poly1P"><span class="id" title="lemma">size_poly1P</span></a> <span class="id" title="var">p</span> : <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#reflect"><span class="id" title="abbreviation">reflect</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">exists2</span></a> <span class="id" title="var">c</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.poly.html#c"><span class="id" title="variable">c</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#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.poly.html#c"><span class="id" title="variable">c</span></a><a class="idref" href="mathcomp.algebra.poly.html#728a2917ff59e46e3f0e4d98ed9ea172"><span class="id" title="notation">%:</span></a><a class="idref" href="mathcomp.algebra.poly.html#728a2917ff59e46e3f0e4d98ed9ea172"><span class="id" title="notation">P</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.poly.html#p"><span class="id" title="variable">p</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#df45e8c2e8370fd4f0f7c4fdaf208180"><span class="id" title="notation">==</span></a> 1%<span class="id" title="var">N</span>).<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="size_polyC_leq1"><span class="id" title="lemma">size_polyC_leq1</span></a> (<span class="id" title="var">c</span> : <a class="idref" href="mathcomp.algebra.poly.html#PolynomialTheory.R"><span class="id" title="variable">R</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.poly.html#c"><span class="id" title="variable">c</span></a><a class="idref" href="mathcomp.algebra.poly.html#728a2917ff59e46e3f0e4d98ed9ea172"><span class="id" title="notation">%:</span></a><a class="idref" href="mathcomp.algebra.poly.html#728a2917ff59e46e3f0e4d98ed9ea172"><span class="id" title="notation">P</span></a> <a class="idref" href="mathcomp.ssreflect.ssrnat.html#cb53cf0ee22c036a03b4a9281c68b5a3"><span class="id" title="notation">≤</span></a> 1)%<span class="id" title="var">N</span>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="leq_sizeP"><span class="id" title="lemma">leq_sizeP</span></a> <span class="id" title="var">p</span> <span class="id" title="var">i</span> : <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#reflect"><span class="id" title="abbreviation">reflect</span></a> (<span class="id" title="keyword">∀</span> <span class="id" title="var">j</span>, <a class="idref" href="mathcomp.algebra.poly.html#i"><span class="id" title="variable">i</span></a> <a class="idref" href="mathcomp.ssreflect.ssrnat.html#cb53cf0ee22c036a03b4a9281c68b5a3"><span class="id" title="notation">≤</span></a> <a class="idref" href="mathcomp.algebra.poly.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#1c93e43e07fbeaeb6a625cb6614beb5d"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.poly.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.Init.Logic.html#6cd0f7b28b6092304087c7049437bb1a"><span class="id" title="notation">=</span></a> 0) (<a class="idref" href="mathcomp.ssreflect.seq.html#size"><span class="id" title="definition">size</span></a> <a class="idref" href="mathcomp.algebra.poly.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.poly.html#i"><span class="id" title="variable">i</span></a>).<br/> - -<br/> -</div> - -<div class="doc"> - Size, leading coef, morphism properties of coef -</div> -<div class="code"> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="coefD"><span class="id" title="lemma">coefD</span></a> <span class="id" title="var">p</span> <span class="id" title="var">q</span> <span class="id" title="var">i</span> : <a class="idref" href="mathcomp.algebra.ssralg.html#82d810f9f90b79e8fe98d90a63070c32"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.poly.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.poly.html#q"><span class="id" title="variable">q</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.poly.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="mathcomp.algebra.ssralg.html#c7f78cf1f6a5e4f664654f7d671ca752"><span class="id" title="notation">+</span></a> <a class="idref" href="mathcomp.algebra.poly.html#q"><span class="id" title="variable">q</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="coefN"><span class="id" title="lemma">coefN</span></a> <span class="id" title="var">p</span> <span class="id" title="var">i</span> : <a class="idref" href="mathcomp.algebra.ssralg.html#82d810f9f90b79e8fe98d90a63070c32"><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.poly.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#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.poly.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="coefB"><span class="id" title="lemma">coefB</span></a> <span class="id" title="var">p</span> <span class="id" title="var">q</span> <span class="id" title="var">i</span> : <a class="idref" href="mathcomp.algebra.ssralg.html#82d810f9f90b79e8fe98d90a63070c32"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.poly.html#p"><span class="id" title="variable">p</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#51dc792c356ca1a71a3094b50d6bb2fb"><span class="id" title="notation">-</span></a> <a class="idref" href="mathcomp.algebra.poly.html#q"><span class="id" title="variable">q</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.poly.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="mathcomp.algebra.ssralg.html#51dc792c356ca1a71a3094b50d6bb2fb"><span class="id" title="notation">-</span></a> <a class="idref" href="mathcomp.algebra.poly.html#q"><span class="id" title="variable">q</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">Canonical</span> <span class="id" title="var">coefp_additive</span> <span class="id" title="var">i</span> :=<br/> - <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Additive.Exports.Additive"><span class="id" title="abbreviation">Additive</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><span class="id" title="keyword">fun</span> <span class="id" title="var">p</span> ⇒ <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#d89396f990d6b54d736cfe259e498cf4"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.poly.html#coefB"><span class="id" title="lemma">coefB</span></a> <a class="idref" href="mathcomp.algebra.poly.html#p"><span class="id" title="variable">p</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#d89396f990d6b54d736cfe259e498cf4"><span class="id" title="notation">)^~</span></a> <a class="idref" href="mathcomp.algebra.poly.html#i"><span class="id" title="variable">i</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssreflect.html#aed478b27f23b4f753c27c8ac393febc"><span class="id" title="notation">)</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssreflect.html#aed478b27f23b4f753c27c8ac393febc"><span class="id" title="notation">:</span></a> <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.poly.html#coefp"><span class="id" title="abbreviation">coefp</span></a> <a class="idref" href="mathcomp.algebra.poly.html#i"><span class="id" title="variable">i</span></a>)).<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="coefMn"><span class="id" title="lemma">coefMn</span></a> <span class="id" title="var">p</span> <span class="id" title="var">n</span> <span class="id" title="var">i</span> : <a class="idref" href="mathcomp.algebra.ssralg.html#82d810f9f90b79e8fe98d90a63070c32"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.poly.html#p"><span class="id" title="variable">p</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#e9001f602764f7896bb1eb34bf606a23"><span class="id" title="notation">*+</span></a> <a class="idref" href="mathcomp.algebra.poly.html#n"><span class="id" title="variable">n</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.poly.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="mathcomp.algebra.ssralg.html#e9001f602764f7896bb1eb34bf606a23"><span class="id" title="notation">*+</span></a> <a class="idref" href="mathcomp.algebra.poly.html#n"><span class="id" title="variable">n</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="coefMNn"><span class="id" title="lemma">coefMNn</span></a> <span class="id" title="var">p</span> <span class="id" title="var">n</span> <span class="id" title="var">i</span> : <a class="idref" href="mathcomp.algebra.ssralg.html#82d810f9f90b79e8fe98d90a63070c32"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.poly.html#p"><span class="id" title="variable">p</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#e4d9eba2da60fcfead1a1c78283587ed"><span class="id" title="notation">*-</span></a> <a class="idref" href="mathcomp.algebra.poly.html#n"><span class="id" title="variable">n</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.poly.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="mathcomp.algebra.ssralg.html#e4d9eba2da60fcfead1a1c78283587ed"><span class="id" title="notation">*-</span></a> <a class="idref" href="mathcomp.algebra.poly.html#n"><span class="id" title="variable">n</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="coef_sum"><span class="id" title="lemma">coef_sum</span></a> <span class="id" title="var">I</span> (<span class="id" title="var">r</span> : <a class="idref" href="mathcomp.ssreflect.seq.html#seq"><span class="id" title="abbreviation">seq</span></a> <a class="idref" href="mathcomp.algebra.poly.html#I"><span class="id" title="variable">I</span></a>) (<span class="id" title="var">P</span> : <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#pred"><span class="id" title="definition">pred</span></a> <a class="idref" href="mathcomp.algebra.poly.html#I"><span class="id" title="variable">I</span></a>) (<span class="id" title="var">F</span> : <a class="idref" href="mathcomp.algebra.poly.html#I"><span class="id" title="variable">I</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#1c93e43e07fbeaeb6a625cb6614beb5d"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.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.poly.html#PolynomialTheory.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>) <span class="id" title="var">k</span> :<br/> - <a class="idref" href="mathcomp.algebra.ssralg.html#82d810f9f90b79e8fe98d90a63070c32"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#0e493beb85c9c1b3ab2241ceeaa98b08"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#0e493beb85c9c1b3ab2241ceeaa98b08"><span class="id" title="notation">sum_</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#0e493beb85c9c1b3ab2241ceeaa98b08"><span class="id" title="notation">(</span></a><span class="id" title="var">i</span> <a class="idref" href="mathcomp.algebra.ssralg.html#0e493beb85c9c1b3ab2241ceeaa98b08"><span class="id" title="notation"><-</span></a> <a class="idref" href="mathcomp.algebra.poly.html#r"><span class="id" title="variable">r</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#0e493beb85c9c1b3ab2241ceeaa98b08"><span class="id" title="notation">|</span></a> <a class="idref" href="mathcomp.algebra.poly.html#P"><span class="id" title="variable">P</span></a> <a class="idref" href="mathcomp.algebra.poly.html#i"><span class="id" title="variable">i</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#0e493beb85c9c1b3ab2241ceeaa98b08"><span class="id" title="notation">)</span></a> <a class="idref" href="mathcomp.algebra.poly.html#F"><span class="id" title="variable">F</span></a> <a class="idref" href="mathcomp.algebra.poly.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="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> <a class="idref" href="mathcomp.algebra.ssralg.html#0e493beb85c9c1b3ab2241ceeaa98b08"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#0e493beb85c9c1b3ab2241ceeaa98b08"><span class="id" title="notation">sum_</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#0e493beb85c9c1b3ab2241ceeaa98b08"><span class="id" title="notation">(</span></a><span class="id" title="var">i</span> <a class="idref" href="mathcomp.algebra.ssralg.html#0e493beb85c9c1b3ab2241ceeaa98b08"><span class="id" title="notation"><-</span></a> <a class="idref" href="mathcomp.algebra.poly.html#r"><span class="id" title="variable">r</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#0e493beb85c9c1b3ab2241ceeaa98b08"><span class="id" title="notation">|</span></a> <a class="idref" href="mathcomp.algebra.poly.html#P"><span class="id" title="variable">P</span></a> <a class="idref" href="mathcomp.algebra.poly.html#i"><span class="id" title="variable">i</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#0e493beb85c9c1b3ab2241ceeaa98b08"><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.poly.html#F"><span class="id" title="variable">F</span></a> <a class="idref" href="mathcomp.algebra.poly.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="mathcomp.algebra.ssralg.html#82d810f9f90b79e8fe98d90a63070c32"><span class="id" title="notation">_k</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="polyC_add"><span class="id" title="lemma">polyC_add</span></a> : <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#e69c60b553f06d3463460a9f4cee3c01"><span class="id" title="notation">{</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#e69c60b553f06d3463460a9f4cee3c01"><span class="id" title="notation">morph</span></a> <a class="idref" href="mathcomp.algebra.poly.html#polyC"><span class="id" title="definition">polyC</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#e69c60b553f06d3463460a9f4cee3c01"><span class="id" title="notation">:</span></a> <span class="id" title="var">a</span> <span class="id" title="var">b</span> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#e69c60b553f06d3463460a9f4cee3c01"><span class="id" title="notation">/</span></a> <a class="idref" href="mathcomp.algebra.poly.html#a"><span class="id" title="variable">a</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#c7f78cf1f6a5e4f664654f7d671ca752"><span class="id" title="notation">+</span></a> <a class="idref" href="mathcomp.algebra.poly.html#b"><span class="id" title="variable">b</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#e69c60b553f06d3463460a9f4cee3c01"><span class="id" title="notation">}</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="polyC_opp"><span class="id" title="lemma">polyC_opp</span></a> : <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#3d6621e6eef40dcc7dc9a612222d0b4e"><span class="id" title="notation">{</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#3d6621e6eef40dcc7dc9a612222d0b4e"><span class="id" title="notation">morph</span></a> <a class="idref" href="mathcomp.algebra.poly.html#polyC"><span class="id" title="definition">polyC</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#3d6621e6eef40dcc7dc9a612222d0b4e"><span class="id" title="notation">:</span></a> <span class="id" title="var">c</span> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#3d6621e6eef40dcc7dc9a612222d0b4e"><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.poly.html#c"><span class="id" title="variable">c</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#3d6621e6eef40dcc7dc9a612222d0b4e"><span class="id" title="notation">}</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="polyC_sub"><span class="id" title="lemma">polyC_sub</span></a> : <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#e69c60b553f06d3463460a9f4cee3c01"><span class="id" title="notation">{</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#e69c60b553f06d3463460a9f4cee3c01"><span class="id" title="notation">morph</span></a> <a class="idref" href="mathcomp.algebra.poly.html#polyC"><span class="id" title="definition">polyC</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#e69c60b553f06d3463460a9f4cee3c01"><span class="id" title="notation">:</span></a> <span class="id" title="var">a</span> <span class="id" title="var">b</span> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#e69c60b553f06d3463460a9f4cee3c01"><span class="id" title="notation">/</span></a> <a class="idref" href="mathcomp.algebra.poly.html#a"><span class="id" title="variable">a</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#51dc792c356ca1a71a3094b50d6bb2fb"><span class="id" title="notation">-</span></a> <a class="idref" href="mathcomp.algebra.poly.html#b"><span class="id" title="variable">b</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#e69c60b553f06d3463460a9f4cee3c01"><span class="id" title="notation">}</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Canonical</span> <span class="id" title="var">polyC_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.poly.html#polyC_sub"><span class="id" title="lemma">polyC_sub</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="polyC_muln"><span class="id" title="lemma">polyC_muln</span></a> <span class="id" title="var">n</span> : <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#3d6621e6eef40dcc7dc9a612222d0b4e"><span class="id" title="notation">{</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#3d6621e6eef40dcc7dc9a612222d0b4e"><span class="id" title="notation">morph</span></a> <a class="idref" href="mathcomp.algebra.poly.html#polyC"><span class="id" title="definition">polyC</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#3d6621e6eef40dcc7dc9a612222d0b4e"><span class="id" title="notation">:</span></a> <span class="id" title="var">c</span> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#3d6621e6eef40dcc7dc9a612222d0b4e"><span class="id" title="notation">/</span></a> <a class="idref" href="mathcomp.algebra.poly.html#c"><span class="id" title="variable">c</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#e9001f602764f7896bb1eb34bf606a23"><span class="id" title="notation">*+</span></a> <a class="idref" href="mathcomp.algebra.poly.html#n"><span class="id" title="variable">n</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#3d6621e6eef40dcc7dc9a612222d0b4e"><span class="id" title="notation">}</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="size_opp"><span class="id" title="lemma">size_opp</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.ssralg.html#8d0566c961139ec21811f52ef0c317db"><span class="id" title="notation">-</span></a> <a class="idref" href="mathcomp.algebra.poly.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.ssreflect.seq.html#size"><span class="id" title="definition">size</span></a> <a class="idref" href="mathcomp.algebra.poly.html#p"><span class="id" title="variable">p</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="lead_coef_opp"><span class="id" title="lemma">lead_coef_opp</span></a> <span class="id" title="var">p</span> : <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.ssralg.html#8d0566c961139ec21811f52ef0c317db"><span class="id" title="notation">-</span></a> <a class="idref" href="mathcomp.algebra.poly.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.ssralg.html#8d0566c961139ec21811f52ef0c317db"><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> <a class="idref" href="mathcomp.algebra.poly.html#p"><span class="id" title="variable">p</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="size_add"><span class="id" title="lemma">size_add</span></a> <span class="id" title="var">p</span> <span class="id" title="var">q</span> : <a class="idref" href="mathcomp.ssreflect.seq.html#size"><span class="id" title="definition">size</span></a> (<a class="idref" href="mathcomp.algebra.poly.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.poly.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.ssreflect.ssrnat.html#maxn"><span class="id" title="definition">maxn</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.poly.html#p"><span class="id" title="variable">p</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.poly.html#q"><span class="id" title="variable">q</span></a>).<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="size_addl"><span class="id" title="lemma">size_addl</span></a> <span class="id" title="var">p</span> <span class="id" title="var">q</span> : <a class="idref" href="mathcomp.ssreflect.seq.html#size"><span class="id" title="definition">size</span></a> <a class="idref" href="mathcomp.algebra.poly.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> <a class="idref" href="mathcomp.ssreflect.seq.html#size"><span class="id" title="definition">size</span></a> <a class="idref" href="mathcomp.algebra.poly.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#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.poly.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.poly.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.ssreflect.seq.html#size"><span class="id" title="definition">size</span></a> <a class="idref" href="mathcomp.algebra.poly.html#p"><span class="id" title="variable">p</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="size_sum"><span class="id" title="lemma">size_sum</span></a> <span class="id" title="var">I</span> (<span class="id" title="var">r</span> : <a class="idref" href="mathcomp.ssreflect.seq.html#seq"><span class="id" title="abbreviation">seq</span></a> <a class="idref" href="mathcomp.algebra.poly.html#I"><span class="id" title="variable">I</span></a>) (<span class="id" title="var">P</span> : <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#pred"><span class="id" title="definition">pred</span></a> <a class="idref" href="mathcomp.algebra.poly.html#I"><span class="id" title="variable">I</span></a>) (<span class="id" title="var">F</span> : <a class="idref" href="mathcomp.algebra.poly.html#I"><span class="id" title="variable">I</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#1c93e43e07fbeaeb6a625cb6614beb5d"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.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.poly.html#PolynomialTheory.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.ssralg.html#0e493beb85c9c1b3ab2241ceeaa98b08"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#0e493beb85c9c1b3ab2241ceeaa98b08"><span class="id" title="notation">sum_</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#0e493beb85c9c1b3ab2241ceeaa98b08"><span class="id" title="notation">(</span></a><span class="id" title="var">i</span> <a class="idref" href="mathcomp.algebra.ssralg.html#0e493beb85c9c1b3ab2241ceeaa98b08"><span class="id" title="notation"><-</span></a> <a class="idref" href="mathcomp.algebra.poly.html#r"><span class="id" title="variable">r</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#0e493beb85c9c1b3ab2241ceeaa98b08"><span class="id" title="notation">|</span></a> <a class="idref" href="mathcomp.algebra.poly.html#P"><span class="id" title="variable">P</span></a> <a class="idref" href="mathcomp.algebra.poly.html#i"><span class="id" title="variable">i</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#0e493beb85c9c1b3ab2241ceeaa98b08"><span class="id" title="notation">)</span></a> <a class="idref" href="mathcomp.algebra.poly.html#F"><span class="id" title="variable">F</span></a> <a class="idref" href="mathcomp.algebra.poly.html#i"><span class="id" title="variable">i</span></a>) <a class="idref" href="mathcomp.ssreflect.ssrnat.html#cb53cf0ee22c036a03b4a9281c68b5a3"><span class="id" title="notation">≤</span></a> <a class="idref" href="mathcomp.ssreflect.bigop.html#8973d8916b0a092278944d6bb0b02462"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.ssreflect.bigop.html#8973d8916b0a092278944d6bb0b02462"><span class="id" title="notation">max_</span></a><a class="idref" href="mathcomp.ssreflect.bigop.html#8973d8916b0a092278944d6bb0b02462"><span class="id" title="notation">(</span></a><span class="id" title="var">i</span> <a class="idref" href="mathcomp.ssreflect.bigop.html#8973d8916b0a092278944d6bb0b02462"><span class="id" title="notation"><-</span></a> <a class="idref" href="mathcomp.algebra.poly.html#r"><span class="id" title="variable">r</span></a> <a class="idref" href="mathcomp.ssreflect.bigop.html#8973d8916b0a092278944d6bb0b02462"><span class="id" title="notation">|</span></a> <a class="idref" href="mathcomp.algebra.poly.html#P"><span class="id" title="variable">P</span></a> <a class="idref" href="mathcomp.algebra.poly.html#i"><span class="id" title="variable">i</span></a><a class="idref" href="mathcomp.ssreflect.bigop.html#8973d8916b0a092278944d6bb0b02462"><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.poly.html#F"><span class="id" title="variable">F</span></a> <a class="idref" href="mathcomp.algebra.poly.html#i"><span class="id" title="variable">i</span></a>).<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="lead_coefDl"><span class="id" title="lemma">lead_coefDl</span></a> <span class="id" title="var">p</span> <span class="id" title="var">q</span> : <a class="idref" href="mathcomp.ssreflect.seq.html#size"><span class="id" title="definition">size</span></a> <a class="idref" href="mathcomp.algebra.poly.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> <a class="idref" href="mathcomp.ssreflect.seq.html#size"><span class="id" title="definition">size</span></a> <a class="idref" href="mathcomp.algebra.poly.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#1c93e43e07fbeaeb6a625cb6614beb5d"><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> (<a class="idref" href="mathcomp.algebra.poly.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.poly.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.poly.html#lead_coef"><span class="id" title="definition">lead_coef</span></a> <a class="idref" href="mathcomp.algebra.poly.html#p"><span class="id" title="variable">p</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="lead_coefDr"><span class="id" title="lemma">lead_coefDr</span></a> <span class="id" title="var">p</span> <span class="id" title="var">q</span> : <a class="idref" href="mathcomp.ssreflect.seq.html#size"><span class="id" title="definition">size</span></a> <a class="idref" href="mathcomp.algebra.poly.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> <a class="idref" href="mathcomp.ssreflect.seq.html#size"><span class="id" title="definition">size</span></a> <a class="idref" href="mathcomp.algebra.poly.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#1c93e43e07fbeaeb6a625cb6614beb5d"><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> (<a class="idref" href="mathcomp.algebra.poly.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.poly.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.poly.html#lead_coef"><span class="id" title="definition">lead_coef</span></a> <a class="idref" href="mathcomp.algebra.poly.html#q"><span class="id" title="variable">q</span></a>.<br/> - -<br/> -</div> - -<div class="doc"> - Polynomial ring structure. -</div> -<div class="code"> - -<br/> -<span class="id" title="keyword">Definition</span> <a name="mul_poly_def"><span class="id" title="definition">mul_poly_def</span></a> <span class="id" title="var">p</span> <span class="id" title="var">q</span> :=<br/> - <a class="idref" href="mathcomp.algebra.poly.html#27fd9446e6d344308e4e6554f93d6b3b"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.algebra.poly.html#27fd9446e6d344308e4e6554f93d6b3b"><span class="id" title="notation">poly_</span></a><a class="idref" href="mathcomp.algebra.poly.html#27fd9446e6d344308e4e6554f93d6b3b"><span class="id" title="notation">(</span></a><span class="id" title="var">i</span> <a class="idref" href="mathcomp.algebra.poly.html#27fd9446e6d344308e4e6554f93d6b3b"><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.poly.html#p"><span class="id" title="variable">p</span></a> <a class="idref" href="mathcomp.ssreflect.ssrnat.html#0dacc1786c5ba797d47dd85006231633"><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.poly.html#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.algebra.poly.html#27fd9446e6d344308e4e6554f93d6b3b"><span class="id" title="notation">)</span></a> <a class="idref" href="mathcomp.algebra.poly.html#27fd9446e6d344308e4e6554f93d6b3b"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#784f0af919f467115774be372bf0dbd7"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#784f0af919f467115774be372bf0dbd7"><span class="id" title="notation">sum_</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#784f0af919f467115774be372bf0dbd7"><span class="id" title="notation">(</span></a><span class="id" title="var">j</span> <a class="idref" href="mathcomp.algebra.ssralg.html#784f0af919f467115774be372bf0dbd7"><span class="id" title="notation"><</span></a> <a class="idref" href="mathcomp.algebra.poly.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.algebra.ssralg.html#784f0af919f467115774be372bf0dbd7"><span class="id" title="notation">)</span></a> <a class="idref" href="mathcomp.algebra.poly.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="mathcomp.algebra.ssralg.html#2d0cfb150261028f4ebd2ba355623dcc"><span class="id" title="notation">×</span></a> <a class="idref" href="mathcomp.algebra.poly.html#q"><span class="id" title="variable">q</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.poly.html#i"><span class="id" title="variable">i</span></a> <a class="idref" href="mathcomp.ssreflect.ssrnat.html#7825ccc99f23b0d30c9d40c317ba7af0"><span class="id" title="notation">-</span></a> <a class="idref" href="mathcomp.algebra.poly.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.poly.html#27fd9446e6d344308e4e6554f93d6b3b"><span class="id" title="notation">)</span></a>.<br/> -<span class="id" title="keyword">Fact</span> <a name="mul_poly_key"><span class="id" title="lemma">mul_poly_key</span></a> : <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Datatypes.html#unit"><span class="id" title="inductive">unit</span></a>. <br/> -<span class="id" title="keyword">Definition</span> <a name="mul_poly"><span class="id" title="definition">mul_poly</span></a> := <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssreflect.html#locked_with"><span class="id" title="definition">locked_with</span></a> <a class="idref" href="mathcomp.algebra.poly.html#mul_poly_key"><span class="id" title="lemma">mul_poly_key</span></a> <a class="idref" href="mathcomp.algebra.poly.html#mul_poly_def"><span class="id" title="definition">mul_poly_def</span></a>.<br/> -<span class="id" title="keyword">Canonical</span> <span class="id" title="var">mul_poly_unlockable</span> := <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssreflect.html#84464b412faf5a30a7c5c6423d9b3956"><span class="id" title="notation">[</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssreflect.html#84464b412faf5a30a7c5c6423d9b3956"><span class="id" title="notation">unlockable</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssreflect.html#84464b412faf5a30a7c5c6423d9b3956"><span class="id" title="notation">fun</span></a> <a class="idref" href="mathcomp.algebra.poly.html#mul_poly"><span class="id" title="definition">mul_poly</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssreflect.html#84464b412faf5a30a7c5c6423d9b3956"><span class="id" title="notation">]</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Fact</span> <a name="coef_mul_poly"><span class="id" title="lemma">coef_mul_poly</span></a> <span class="id" title="var">p</span> <span class="id" title="var">q</span> <span class="id" title="var">i</span> :<br/> - <a class="idref" href="mathcomp.algebra.ssralg.html#82d810f9f90b79e8fe98d90a63070c32"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.poly.html#mul_poly"><span class="id" title="definition">mul_poly</span></a> <a class="idref" href="mathcomp.algebra.poly.html#p"><span class="id" title="variable">p</span></a> <a class="idref" href="mathcomp.algebra.poly.html#q"><span class="id" title="variable">q</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.ssralg.html#784f0af919f467115774be372bf0dbd7"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#784f0af919f467115774be372bf0dbd7"><span class="id" title="notation">sum_</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#784f0af919f467115774be372bf0dbd7"><span class="id" title="notation">(</span></a><span class="id" title="var">j</span> <a class="idref" href="mathcomp.algebra.ssralg.html#784f0af919f467115774be372bf0dbd7"><span class="id" title="notation"><</span></a> <a class="idref" href="mathcomp.algebra.poly.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.algebra.ssralg.html#784f0af919f467115774be372bf0dbd7"><span class="id" title="notation">)</span></a> <a class="idref" href="mathcomp.algebra.poly.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="mathcomp.algebra.ssralg.html#2d0cfb150261028f4ebd2ba355623dcc"><span class="id" title="notation">×</span></a> <a class="idref" href="mathcomp.algebra.poly.html#q"><span class="id" title="variable">q</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.poly.html#i"><span class="id" title="variable">i</span></a> <a class="idref" href="mathcomp.ssreflect.ssrnat.html#7825ccc99f23b0d30c9d40c317ba7af0"><span class="id" title="notation">-</span></a> <a class="idref" href="mathcomp.algebra.poly.html#j"><span class="id" title="variable">j</span></a>)%<span class="id" title="var">N</span>.<br/> - -<br/> -<span class="id" title="keyword">Fact</span> <a name="coef_mul_poly_rev"><span class="id" title="lemma">coef_mul_poly_rev</span></a> <span class="id" title="var">p</span> <span class="id" title="var">q</span> <span class="id" title="var">i</span> :<br/> - <a class="idref" href="mathcomp.algebra.ssralg.html#82d810f9f90b79e8fe98d90a63070c32"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.poly.html#mul_poly"><span class="id" title="definition">mul_poly</span></a> <a class="idref" href="mathcomp.algebra.poly.html#p"><span class="id" title="variable">p</span></a> <a class="idref" href="mathcomp.algebra.poly.html#q"><span class="id" title="variable">q</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.ssralg.html#784f0af919f467115774be372bf0dbd7"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#784f0af919f467115774be372bf0dbd7"><span class="id" title="notation">sum_</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#784f0af919f467115774be372bf0dbd7"><span class="id" title="notation">(</span></a><span class="id" title="var">j</span> <a class="idref" href="mathcomp.algebra.ssralg.html#784f0af919f467115774be372bf0dbd7"><span class="id" title="notation"><</span></a> <a class="idref" href="mathcomp.algebra.poly.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.algebra.ssralg.html#784f0af919f467115774be372bf0dbd7"><span class="id" title="notation">)</span></a> <a class="idref" href="mathcomp.algebra.poly.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">_</span></a>(<a class="idref" href="mathcomp.algebra.poly.html#i"><span class="id" title="variable">i</span></a> <a class="idref" href="mathcomp.ssreflect.ssrnat.html#7825ccc99f23b0d30c9d40c317ba7af0"><span class="id" title="notation">-</span></a> <a class="idref" href="mathcomp.algebra.poly.html#j"><span class="id" title="variable">j</span></a>)%<span class="id" title="var">N</span> <a class="idref" href="mathcomp.algebra.ssralg.html#2d0cfb150261028f4ebd2ba355623dcc"><span class="id" title="notation">×</span></a> <a class="idref" href="mathcomp.algebra.poly.html#q"><span class="id" title="variable">q</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>.<br/> - -<br/> -<span class="id" title="keyword">Fact</span> <a name="mul_polyA"><span class="id" title="lemma">mul_polyA</span></a> : <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#associative"><span class="id" title="definition">associative</span></a> <a class="idref" href="mathcomp.algebra.poly.html#mul_poly"><span class="id" title="definition">mul_poly</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Fact</span> <a name="mul_1poly"><span class="id" title="lemma">mul_1poly</span></a> : <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#left_id"><span class="id" title="definition">left_id</span></a> 1<a class="idref" href="mathcomp.algebra.poly.html#728a2917ff59e46e3f0e4d98ed9ea172"><span class="id" title="notation">%:</span></a><a class="idref" href="mathcomp.algebra.poly.html#728a2917ff59e46e3f0e4d98ed9ea172"><span class="id" title="notation">P</span></a> <a class="idref" href="mathcomp.algebra.poly.html#mul_poly"><span class="id" title="definition">mul_poly</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Fact</span> <a name="mul_poly1"><span class="id" title="lemma">mul_poly1</span></a> : <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#right_id"><span class="id" title="definition">right_id</span></a> 1<a class="idref" href="mathcomp.algebra.poly.html#728a2917ff59e46e3f0e4d98ed9ea172"><span class="id" title="notation">%:</span></a><a class="idref" href="mathcomp.algebra.poly.html#728a2917ff59e46e3f0e4d98ed9ea172"><span class="id" title="notation">P</span></a> <a class="idref" href="mathcomp.algebra.poly.html#mul_poly"><span class="id" title="definition">mul_poly</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Fact</span> <a name="mul_polyDl"><span class="id" title="lemma">mul_polyDl</span></a> : <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#left_distributive"><span class="id" title="definition">left_distributive</span></a> <a class="idref" href="mathcomp.algebra.poly.html#mul_poly"><span class="id" title="definition">mul_poly</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#a87d5ea2e207e69e5e474db24f56d4cb"><span class="id" title="notation">+%</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#a87d5ea2e207e69e5e474db24f56d4cb"><span class="id" title="notation">R</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Fact</span> <a name="mul_polyDr"><span class="id" title="lemma">mul_polyDr</span></a> : <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#right_distributive"><span class="id" title="definition">right_distributive</span></a> <a class="idref" href="mathcomp.algebra.poly.html#mul_poly"><span class="id" title="definition">mul_poly</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#a87d5ea2e207e69e5e474db24f56d4cb"><span class="id" title="notation">+%</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#a87d5ea2e207e69e5e474db24f56d4cb"><span class="id" title="notation">R</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Fact</span> <a name="poly1_neq0"><span class="id" title="lemma">poly1_neq0</span></a> : 1<a class="idref" href="mathcomp.algebra.poly.html#728a2917ff59e46e3f0e4d98ed9ea172"><span class="id" title="notation">%:</span></a><a class="idref" href="mathcomp.algebra.poly.html#728a2917ff59e46e3f0e4d98ed9ea172"><span class="id" title="notation">P</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#228e85e3c31a939cba019f255574c875"><span class="id" title="notation">!=</span></a> 0 <a class="idref" href="mathcomp.ssreflect.eqtype.html#228e85e3c31a939cba019f255574c875"><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.poly.html#PolynomialTheory.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="poly_ringMixin"><span class="id" title="definition">poly_ringMixin</span></a> :=<br/> - <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Ring.Exports.RingMixin"><span class="id" title="abbreviation">RingMixin</span></a> <a class="idref" href="mathcomp.algebra.poly.html#mul_polyA"><span class="id" title="lemma">mul_polyA</span></a> <a class="idref" href="mathcomp.algebra.poly.html#mul_1poly"><span class="id" title="lemma">mul_1poly</span></a> <a class="idref" href="mathcomp.algebra.poly.html#mul_poly1"><span class="id" title="lemma">mul_poly1</span></a> <a class="idref" href="mathcomp.algebra.poly.html#mul_polyDl"><span class="id" title="lemma">mul_polyDl</span></a> <a class="idref" href="mathcomp.algebra.poly.html#mul_polyDr"><span class="id" title="lemma">mul_polyDr</span></a> <a class="idref" href="mathcomp.algebra.poly.html#poly1_neq0"><span class="id" title="lemma">poly1_neq0</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Canonical</span> <span class="id" title="var">poly_ringType</span> := <span class="id" title="keyword">Eval</span> <span class="id" title="tactic">hnf</span> <span class="id" title="tactic">in</span> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Ring.Exports.RingType"><span class="id" title="abbreviation">RingType</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.poly.html#PolynomialTheory.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.poly.html#poly_ringMixin"><span class="id" title="definition">poly_ringMixin</span></a>.<br/> -<span class="id" title="keyword">Canonical</span> <span class="id" title="var">polynomial_ringType</span> :=<br/> - <span class="id" title="keyword">Eval</span> <span class="id" title="tactic">hnf</span> <span class="id" title="tactic">in</span> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Ring.Exports.RingType"><span class="id" title="abbreviation">RingType</span></a> (<a class="idref" href="mathcomp.algebra.poly.html#polynomial"><span class="id" title="record">polynomial</span></a> <a class="idref" href="mathcomp.algebra.poly.html#PolynomialTheory.R"><span class="id" title="variable">R</span></a>) <a class="idref" href="mathcomp.algebra.poly.html#poly_ringMixin"><span class="id" title="definition">poly_ringMixin</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="polyC1"><span class="id" title="lemma">polyC1</span></a> : 1<a class="idref" href="mathcomp.algebra.poly.html#728a2917ff59e46e3f0e4d98ed9ea172"><span class="id" title="notation">%:</span></a><a class="idref" href="mathcomp.algebra.poly.html#728a2917ff59e46e3f0e4d98ed9ea172"><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#b8b2ebc8e1a8b9aa935c0702efb5dccf"><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#b8b2ebc8e1a8b9aa935c0702efb5dccf"><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.poly.html#PolynomialTheory.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">Lemma</span> <a name="polyseq1"><span class="id" title="lemma">polyseq1</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>1 <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.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.poly.html#PolynomialTheory.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.Logic.html#b8b2ebc8e1a8b9aa935c0702efb5dccf"><span class="id" title="notation">)</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#b8b2ebc8e1a8b9aa935c0702efb5dccf"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#506674b18256ef8f50efed43fa1dfd7d"><span class="id" title="notation">[::</span></a> 1<a class="idref" href="mathcomp.ssreflect.seq.html#506674b18256ef8f50efed43fa1dfd7d"><span class="id" title="notation">]</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#b8b2ebc8e1a8b9aa935c0702efb5dccf"><span class="id" title="notation">:></span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#seq"><span class="id" title="abbreviation">seq</span></a> <a class="idref" href="mathcomp.algebra.poly.html#PolynomialTheory.R"><span class="id" title="variable">R</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="size_poly1"><span class="id" title="lemma">size_poly1</span></a> : <a class="idref" href="mathcomp.ssreflect.seq.html#size"><span class="id" title="definition">size</span></a> (1 <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.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.poly.html#PolynomialTheory.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.Logic.html#6cd0f7b28b6092304087c7049437bb1a"><span class="id" title="notation">=</span></a> 1%<span class="id" title="var">N</span>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="coef1"><span class="id" title="lemma">coef1</span></a> <span class="id" title="var">i</span> : <a class="idref" href="mathcomp.algebra.ssralg.html#82d810f9f90b79e8fe98d90a63070c32"><span class="id" title="notation">(</span></a>1 <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.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.poly.html#PolynomialTheory.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.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.ssralg.html#6411ed08724033ae48d2865f0380d533"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.poly.html#i"><span class="id" title="variable">i</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><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="lead_coef1"><span class="id" title="lemma">lead_coef1</span></a> : <a class="idref" href="mathcomp.algebra.poly.html#lead_coef"><span class="id" title="definition">lead_coef</span></a> 1 <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> 1 <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.poly.html#PolynomialTheory.R"><span class="id" title="variable">R</span></a>. <br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="coefM"><span class="id" title="lemma">coefM</span></a> <span class="id" title="var">p</span> <span class="id" title="var">q</span> <span class="id" title="var">i</span> : <a class="idref" href="mathcomp.algebra.ssralg.html#82d810f9f90b79e8fe98d90a63070c32"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.poly.html#p"><span class="id" title="variable">p</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#2d0cfb150261028f4ebd2ba355623dcc"><span class="id" title="notation">×</span></a> <a class="idref" href="mathcomp.algebra.poly.html#q"><span class="id" title="variable">q</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.ssralg.html#784f0af919f467115774be372bf0dbd7"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#784f0af919f467115774be372bf0dbd7"><span class="id" title="notation">sum_</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#784f0af919f467115774be372bf0dbd7"><span class="id" title="notation">(</span></a><span class="id" title="var">j</span> <a class="idref" href="mathcomp.algebra.ssralg.html#784f0af919f467115774be372bf0dbd7"><span class="id" title="notation"><</span></a> <a class="idref" href="mathcomp.algebra.poly.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.algebra.ssralg.html#784f0af919f467115774be372bf0dbd7"><span class="id" title="notation">)</span></a> <a class="idref" href="mathcomp.algebra.poly.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="mathcomp.algebra.ssralg.html#2d0cfb150261028f4ebd2ba355623dcc"><span class="id" title="notation">×</span></a> <a class="idref" href="mathcomp.algebra.poly.html#q"><span class="id" title="variable">q</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.poly.html#i"><span class="id" title="variable">i</span></a> <a class="idref" href="mathcomp.ssreflect.ssrnat.html#7825ccc99f23b0d30c9d40c317ba7af0"><span class="id" title="notation">-</span></a> <a class="idref" href="mathcomp.algebra.poly.html#j"><span class="id" title="variable">j</span></a>)%<span class="id" title="var">N</span>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="coefMr"><span class="id" title="lemma">coefMr</span></a> <span class="id" title="var">p</span> <span class="id" title="var">q</span> <span class="id" title="var">i</span> : <a class="idref" href="mathcomp.algebra.ssralg.html#82d810f9f90b79e8fe98d90a63070c32"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.poly.html#p"><span class="id" title="variable">p</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#2d0cfb150261028f4ebd2ba355623dcc"><span class="id" title="notation">×</span></a> <a class="idref" href="mathcomp.algebra.poly.html#q"><span class="id" title="variable">q</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.ssralg.html#784f0af919f467115774be372bf0dbd7"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#784f0af919f467115774be372bf0dbd7"><span class="id" title="notation">sum_</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#784f0af919f467115774be372bf0dbd7"><span class="id" title="notation">(</span></a><span class="id" title="var">j</span> <a class="idref" href="mathcomp.algebra.ssralg.html#784f0af919f467115774be372bf0dbd7"><span class="id" title="notation"><</span></a> <a class="idref" href="mathcomp.algebra.poly.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.algebra.ssralg.html#784f0af919f467115774be372bf0dbd7"><span class="id" title="notation">)</span></a> <a class="idref" href="mathcomp.algebra.poly.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">_</span></a>(<a class="idref" href="mathcomp.algebra.poly.html#i"><span class="id" title="variable">i</span></a> <a class="idref" href="mathcomp.ssreflect.ssrnat.html#7825ccc99f23b0d30c9d40c317ba7af0"><span class="id" title="notation">-</span></a> <a class="idref" href="mathcomp.algebra.poly.html#j"><span class="id" title="variable">j</span></a>)%<span class="id" title="var">N</span> <a class="idref" href="mathcomp.algebra.ssralg.html#2d0cfb150261028f4ebd2ba355623dcc"><span class="id" title="notation">×</span></a> <a class="idref" href="mathcomp.algebra.poly.html#q"><span class="id" title="variable">q</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>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="size_mul_leq"><span class="id" title="lemma">size_mul_leq</span></a> <span class="id" title="var">p</span> <span class="id" title="var">q</span> : <a class="idref" href="mathcomp.ssreflect.seq.html#size"><span class="id" title="definition">size</span></a> (<a class="idref" href="mathcomp.algebra.poly.html#p"><span class="id" title="variable">p</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#2d0cfb150261028f4ebd2ba355623dcc"><span class="id" title="notation">×</span></a> <a class="idref" href="mathcomp.algebra.poly.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.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.poly.html#p"><span class="id" title="variable">p</span></a> <a class="idref" href="mathcomp.ssreflect.ssrnat.html#0dacc1786c5ba797d47dd85006231633"><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.poly.html#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>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="mul_lead_coef"><span class="id" title="lemma">mul_lead_coef</span></a> <span class="id" title="var">p</span> <span class="id" title="var">q</span> :<br/> - <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.poly.html#p"><span class="id" title="variable">p</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#2d0cfb150261028f4ebd2ba355623dcc"><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> <a class="idref" href="mathcomp.algebra.poly.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.ssralg.html#82d810f9f90b79e8fe98d90a63070c32"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.poly.html#p"><span class="id" title="variable">p</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#2d0cfb150261028f4ebd2ba355623dcc"><span class="id" title="notation">×</span></a> <a class="idref" href="mathcomp.algebra.poly.html#q"><span class="id" title="variable">q</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.ssreflect.ssrnat.html#b9f3db5365f11e72cad3907646ac5a3a"><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.poly.html#p"><span class="id" title="variable">p</span></a> <a class="idref" href="mathcomp.ssreflect.ssrnat.html#0dacc1786c5ba797d47dd85006231633"><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.poly.html#q"><span class="id" title="variable">q</span></a><a class="idref" href="mathcomp.ssreflect.ssrnat.html#b9f3db5365f11e72cad3907646ac5a3a"><span class="id" title="notation">).-2</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="size_proper_mul"><span class="id" title="lemma">size_proper_mul</span></a> <span class="id" title="var">p</span> <span class="id" title="var">q</span> :<br/> - <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.poly.html#p"><span class="id" title="variable">p</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#2d0cfb150261028f4ebd2ba355623dcc"><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> <a class="idref" href="mathcomp.algebra.poly.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> <a class="idref" href="mathcomp.ssreflect.seq.html#size"><span class="id" title="definition">size</span></a> (<a class="idref" href="mathcomp.algebra.poly.html#p"><span class="id" title="variable">p</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#2d0cfb150261028f4ebd2ba355623dcc"><span class="id" title="notation">×</span></a> <a class="idref" href="mathcomp.algebra.poly.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.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.poly.html#p"><span class="id" title="variable">p</span></a> <a class="idref" href="mathcomp.ssreflect.ssrnat.html#0dacc1786c5ba797d47dd85006231633"><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.poly.html#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>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="lead_coef_proper_mul"><span class="id" title="lemma">lead_coef_proper_mul</span></a> <span class="id" title="var">p</span> <span class="id" title="var">q</span> :<br/> - <span class="id" title="keyword">let</span> <span class="id" title="var">c</span> := <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.poly.html#p"><span class="id" title="variable">p</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#2d0cfb150261028f4ebd2ba355623dcc"><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> <a class="idref" href="mathcomp.algebra.poly.html#q"><span class="id" title="variable">q</span></a> <span class="id" title="tactic">in</span> <a class="idref" href="mathcomp.algebra.poly.html#c"><span class="id" title="variable">c</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#lead_coef"><span class="id" title="definition">lead_coef</span></a> (<a class="idref" href="mathcomp.algebra.poly.html#p"><span class="id" title="variable">p</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#2d0cfb150261028f4ebd2ba355623dcc"><span class="id" title="notation">×</span></a> <a class="idref" href="mathcomp.algebra.poly.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.poly.html#c"><span class="id" title="variable">c</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="size_prod_leq"><span class="id" title="lemma">size_prod_leq</span></a> (<span class="id" title="var">I</span> : <a class="idref" href="mathcomp.ssreflect.fintype.html#Finite.Exports.finType"><span class="id" title="abbreviation">finType</span></a>) (<span class="id" title="var">P</span> : <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#pred"><span class="id" title="definition">pred</span></a> <a class="idref" href="mathcomp.algebra.poly.html#I"><span class="id" title="variable">I</span></a>) (<span class="id" title="var">F</span> : <a class="idref" href="mathcomp.algebra.poly.html#I"><span class="id" title="variable">I</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#1c93e43e07fbeaeb6a625cb6614beb5d"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.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.poly.html#PolynomialTheory.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.ssralg.html#443901d1788fc95745443c70e786b07b"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#443901d1788fc95745443c70e786b07b"><span class="id" title="notation">prod_</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#443901d1788fc95745443c70e786b07b"><span class="id" title="notation">(</span></a><span class="id" title="var">i</span> <a class="idref" href="mathcomp.algebra.ssralg.html#443901d1788fc95745443c70e786b07b"><span class="id" title="notation">|</span></a> <a class="idref" href="mathcomp.algebra.poly.html#P"><span class="id" title="variable">P</span></a> <a class="idref" href="mathcomp.algebra.poly.html#i"><span class="id" title="variable">i</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#443901d1788fc95745443c70e786b07b"><span class="id" title="notation">)</span></a> <a class="idref" href="mathcomp.algebra.poly.html#F"><span class="id" title="variable">F</span></a> <a class="idref" href="mathcomp.algebra.poly.html#i"><span class="id" title="variable">i</span></a>) <a class="idref" href="mathcomp.ssreflect.ssrnat.html#cb53cf0ee22c036a03b4a9281c68b5a3"><span class="id" title="notation">≤</span></a> <a class="idref" href="mathcomp.ssreflect.ssrnat.html#bda89d73ec4a8f23ae92b565ffb5aaa6"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.ssreflect.bigop.html#490a7188a07350a81d958e0206419577"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.ssreflect.bigop.html#490a7188a07350a81d958e0206419577"><span class="id" title="notation">sum_</span></a><a class="idref" href="mathcomp.ssreflect.bigop.html#490a7188a07350a81d958e0206419577"><span class="id" title="notation">(</span></a><span class="id" title="var">i</span> <a class="idref" href="mathcomp.ssreflect.bigop.html#490a7188a07350a81d958e0206419577"><span class="id" title="notation">|</span></a> <a class="idref" href="mathcomp.algebra.poly.html#P"><span class="id" title="variable">P</span></a> <a class="idref" href="mathcomp.algebra.poly.html#i"><span class="id" title="variable">i</span></a><a class="idref" href="mathcomp.ssreflect.bigop.html#490a7188a07350a81d958e0206419577"><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.poly.html#F"><span class="id" title="variable">F</span></a> <a class="idref" href="mathcomp.algebra.poly.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#7825ccc99f23b0d30c9d40c317ba7af0"><span class="id" title="notation">-</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#234f50e13366f794cd6877cf832a5935"><span class="id" title="notation">#|</span></a><a class="idref" href="mathcomp.algebra.poly.html#P"><span class="id" title="variable">P</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#234f50e13366f794cd6877cf832a5935"><span class="id" title="notation">|</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="coefCM"><span class="id" title="lemma">coefCM</span></a> <span class="id" title="var">c</span> <span class="id" title="var">p</span> <span class="id" title="var">i</span> : <a class="idref" href="mathcomp.algebra.ssralg.html#82d810f9f90b79e8fe98d90a63070c32"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.poly.html#c"><span class="id" title="variable">c</span></a><a class="idref" href="mathcomp.algebra.poly.html#728a2917ff59e46e3f0e4d98ed9ea172"><span class="id" title="notation">%:</span></a><a class="idref" href="mathcomp.algebra.poly.html#728a2917ff59e46e3f0e4d98ed9ea172"><span class="id" title="notation">P</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#2d0cfb150261028f4ebd2ba355623dcc"><span class="id" title="notation">×</span></a> <a class="idref" href="mathcomp.algebra.poly.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#6cd0f7b28b6092304087c7049437bb1a"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.poly.html#c"><span class="id" title="variable">c</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#2d0cfb150261028f4ebd2ba355623dcc"><span class="id" title="notation">×</span></a> <a class="idref" href="mathcomp.algebra.poly.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="coefMC"><span class="id" title="lemma">coefMC</span></a> <span class="id" title="var">c</span> <span class="id" title="var">p</span> <span class="id" title="var">i</span> : <a class="idref" href="mathcomp.algebra.ssralg.html#82d810f9f90b79e8fe98d90a63070c32"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.poly.html#p"><span class="id" title="variable">p</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#2d0cfb150261028f4ebd2ba355623dcc"><span class="id" title="notation">×</span></a> <a class="idref" href="mathcomp.algebra.poly.html#c"><span class="id" title="variable">c</span></a><a class="idref" href="mathcomp.algebra.poly.html#728a2917ff59e46e3f0e4d98ed9ea172"><span class="id" title="notation">%:</span></a><a class="idref" href="mathcomp.algebra.poly.html#728a2917ff59e46e3f0e4d98ed9ea172"><span class="id" title="notation">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#6cd0f7b28b6092304087c7049437bb1a"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.poly.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="mathcomp.algebra.ssralg.html#2d0cfb150261028f4ebd2ba355623dcc"><span class="id" title="notation">×</span></a> <a class="idref" href="mathcomp.algebra.poly.html#c"><span class="id" title="variable">c</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="polyC_mul"><span class="id" title="lemma">polyC_mul</span></a> : <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#e69c60b553f06d3463460a9f4cee3c01"><span class="id" title="notation">{</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#e69c60b553f06d3463460a9f4cee3c01"><span class="id" title="notation">morph</span></a> <a class="idref" href="mathcomp.algebra.poly.html#polyC"><span class="id" title="definition">polyC</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#e69c60b553f06d3463460a9f4cee3c01"><span class="id" title="notation">:</span></a> <span class="id" title="var">a</span> <span class="id" title="var">b</span> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#e69c60b553f06d3463460a9f4cee3c01"><span class="id" title="notation">/</span></a> <a class="idref" href="mathcomp.algebra.poly.html#a"><span class="id" title="variable">a</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#2d0cfb150261028f4ebd2ba355623dcc"><span class="id" title="notation">×</span></a> <a class="idref" href="mathcomp.algebra.poly.html#b"><span class="id" title="variable">b</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#e69c60b553f06d3463460a9f4cee3c01"><span class="id" title="notation">}</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Fact</span> <a name="polyC_multiplicative"><span class="id" title="lemma">polyC_multiplicative</span></a> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.RMorphism.Exports.multiplicative"><span class="id" title="abbreviation">multiplicative</span></a> <a class="idref" href="mathcomp.algebra.poly.html#polyC"><span class="id" title="definition">polyC</span></a>.<br/> - <span class="id" title="keyword">Canonical</span> <span class="id" title="var">polyC_rmorphism</span> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.RMorphism.Exports.AddRMorphism"><span class="id" title="abbreviation">AddRMorphism</span></a> <a class="idref" href="mathcomp.algebra.poly.html#polyC_multiplicative"><span class="id" title="lemma">polyC_multiplicative</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="polyC_exp"><span class="id" title="lemma">polyC_exp</span></a> <span class="id" title="var">n</span> : <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#3d6621e6eef40dcc7dc9a612222d0b4e"><span class="id" title="notation">{</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#3d6621e6eef40dcc7dc9a612222d0b4e"><span class="id" title="notation">morph</span></a> <a class="idref" href="mathcomp.algebra.poly.html#polyC"><span class="id" title="definition">polyC</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#3d6621e6eef40dcc7dc9a612222d0b4e"><span class="id" title="notation">:</span></a> <span class="id" title="var">c</span> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#3d6621e6eef40dcc7dc9a612222d0b4e"><span class="id" title="notation">/</span></a> <a class="idref" href="mathcomp.algebra.poly.html#c"><span class="id" title="variable">c</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#663140372ac3b275aae871b74b140513"><span class="id" title="notation">^+</span></a> <a class="idref" href="mathcomp.algebra.poly.html#n"><span class="id" title="variable">n</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#3d6621e6eef40dcc7dc9a612222d0b4e"><span class="id" title="notation">}</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="size_exp_leq"><span class="id" title="lemma">size_exp_leq</span></a> <span class="id" title="var">p</span> <span class="id" title="var">n</span> : <a class="idref" href="mathcomp.ssreflect.seq.html#size"><span class="id" title="definition">size</span></a> (<a class="idref" href="mathcomp.algebra.poly.html#p"><span class="id" title="variable">p</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#663140372ac3b275aae871b74b140513"><span class="id" title="notation">^+</span></a> <a class="idref" href="mathcomp.algebra.poly.html#n"><span class="id" title="variable">n</span></a>) <a class="idref" href="mathcomp.ssreflect.ssrnat.html#cb53cf0ee22c036a03b4a9281c68b5a3"><span class="id" title="notation">≤</span></a> <a class="idref" href="mathcomp.ssreflect.ssrnat.html#bda89d73ec4a8f23ae92b565ffb5aaa6"><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.poly.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> <a class="idref" href="mathcomp.ssreflect.ssrnat.html#ea2ff3d561159081cea6fb2e8113cc54"><span class="id" title="notation">×</span></a> <a class="idref" href="mathcomp.algebra.poly.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/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="size_Msign"><span class="id" title="lemma">size_Msign</span></a> <span class="id" title="var">p</span> <span class="id" title="var">n</span> : <a class="idref" href="mathcomp.ssreflect.seq.html#size"><span class="id" title="definition">size</span></a> (<a class="idref" href="mathcomp.algebra.ssralg.html#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.poly.html#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.poly.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.ssreflect.seq.html#size"><span class="id" title="definition">size</span></a> <a class="idref" href="mathcomp.algebra.poly.html#p"><span class="id" title="variable">p</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Fact</span> <a name="coefp0_multiplicative"><span class="id" title="lemma">coefp0_multiplicative</span></a> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.RMorphism.Exports.multiplicative"><span class="id" title="abbreviation">multiplicative</span></a> (<a class="idref" href="mathcomp.algebra.poly.html#coefp"><span class="id" title="abbreviation">coefp</span></a> 0 <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.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.poly.html#PolynomialTheory.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.Logic.html#1c93e43e07fbeaeb6a625cb6614beb5d"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.poly.html#PolynomialTheory.R"><span class="id" title="variable">R</span></a>).<br/> - -<br/> -<span class="id" title="keyword">Canonical</span> <span class="id" title="var">coefp0_rmorphism</span> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.RMorphism.Exports.AddRMorphism"><span class="id" title="abbreviation">AddRMorphism</span></a> <a class="idref" href="mathcomp.algebra.poly.html#coefp0_multiplicative"><span class="id" title="lemma">coefp0_multiplicative</span></a>.<br/> - -<br/> -</div> - -<div class="doc"> - Algebra structure of polynomials. -</div> -<div class="code"> -<span class="id" title="keyword">Definition</span> <a name="scale_poly_def"><span class="id" title="definition">scale_poly_def</span></a> <span class="id" title="var">a</span> (<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.poly.html#PolynomialTheory.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.poly.html#27fd9446e6d344308e4e6554f93d6b3b"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.algebra.poly.html#27fd9446e6d344308e4e6554f93d6b3b"><span class="id" title="notation">poly_</span></a><a class="idref" href="mathcomp.algebra.poly.html#27fd9446e6d344308e4e6554f93d6b3b"><span class="id" title="notation">(</span></a><span class="id" title="var">i</span> <a class="idref" href="mathcomp.algebra.poly.html#27fd9446e6d344308e4e6554f93d6b3b"><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.poly.html#p"><span class="id" title="variable">p</span></a><a class="idref" href="mathcomp.algebra.poly.html#27fd9446e6d344308e4e6554f93d6b3b"><span class="id" title="notation">)</span></a> <a class="idref" href="mathcomp.algebra.poly.html#27fd9446e6d344308e4e6554f93d6b3b"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.poly.html#a"><span class="id" title="variable">a</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#2d0cfb150261028f4ebd2ba355623dcc"><span class="id" title="notation">×</span></a> <a class="idref" href="mathcomp.algebra.poly.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="mathcomp.algebra.poly.html#27fd9446e6d344308e4e6554f93d6b3b"><span class="id" title="notation">)</span></a>.<br/> -<span class="id" title="keyword">Fact</span> <a name="scale_poly_key"><span class="id" title="lemma">scale_poly_key</span></a> : <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Datatypes.html#unit"><span class="id" title="inductive">unit</span></a>. <br/> -<span class="id" title="keyword">Definition</span> <a name="scale_poly"><span class="id" title="definition">scale_poly</span></a> := <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssreflect.html#locked_with"><span class="id" title="definition">locked_with</span></a> <a class="idref" href="mathcomp.algebra.poly.html#scale_poly_key"><span class="id" title="lemma">scale_poly_key</span></a> <a class="idref" href="mathcomp.algebra.poly.html#scale_poly_def"><span class="id" title="definition">scale_poly_def</span></a>.<br/> -<span class="id" title="keyword">Canonical</span> <span class="id" title="var">scale_poly_unlockable</span> := <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssreflect.html#84464b412faf5a30a7c5c6423d9b3956"><span class="id" title="notation">[</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssreflect.html#84464b412faf5a30a7c5c6423d9b3956"><span class="id" title="notation">unlockable</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssreflect.html#84464b412faf5a30a7c5c6423d9b3956"><span class="id" title="notation">fun</span></a> <a class="idref" href="mathcomp.algebra.poly.html#scale_poly"><span class="id" title="definition">scale_poly</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssreflect.html#84464b412faf5a30a7c5c6423d9b3956"><span class="id" title="notation">]</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Fact</span> <a name="scale_polyE"><span class="id" title="lemma">scale_polyE</span></a> <span class="id" title="var">a</span> <span class="id" title="var">p</span> : <a class="idref" href="mathcomp.algebra.poly.html#scale_poly"><span class="id" title="definition">scale_poly</span></a> <a class="idref" href="mathcomp.algebra.poly.html#a"><span class="id" title="variable">a</span></a> <a class="idref" href="mathcomp.algebra.poly.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.poly.html#a"><span class="id" title="variable">a</span></a><a class="idref" href="mathcomp.algebra.poly.html#728a2917ff59e46e3f0e4d98ed9ea172"><span class="id" title="notation">%:</span></a><a class="idref" href="mathcomp.algebra.poly.html#728a2917ff59e46e3f0e4d98ed9ea172"><span class="id" title="notation">P</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#2d0cfb150261028f4ebd2ba355623dcc"><span class="id" title="notation">×</span></a> <a class="idref" href="mathcomp.algebra.poly.html#p"><span class="id" title="variable">p</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Fact</span> <a name="scale_polyA"><span class="id" title="lemma">scale_polyA</span></a> <span class="id" title="var">a</span> <span class="id" title="var">b</span> <span class="id" title="var">p</span> : <a class="idref" href="mathcomp.algebra.poly.html#scale_poly"><span class="id" title="definition">scale_poly</span></a> <a class="idref" href="mathcomp.algebra.poly.html#a"><span class="id" title="variable">a</span></a> (<a class="idref" href="mathcomp.algebra.poly.html#scale_poly"><span class="id" title="definition">scale_poly</span></a> <a class="idref" href="mathcomp.algebra.poly.html#b"><span class="id" title="variable">b</span></a> <a class="idref" href="mathcomp.algebra.poly.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.poly.html#scale_poly"><span class="id" title="definition">scale_poly</span></a> (<a class="idref" href="mathcomp.algebra.poly.html#a"><span class="id" title="variable">a</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#2d0cfb150261028f4ebd2ba355623dcc"><span class="id" title="notation">×</span></a> <a class="idref" href="mathcomp.algebra.poly.html#b"><span class="id" title="variable">b</span></a>) <a class="idref" href="mathcomp.algebra.poly.html#p"><span class="id" title="variable">p</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Fact</span> <a name="scale_1poly"><span class="id" title="lemma">scale_1poly</span></a> : <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#left_id"><span class="id" title="definition">left_id</span></a> 1 <a class="idref" href="mathcomp.algebra.poly.html#scale_poly"><span class="id" title="definition">scale_poly</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Fact</span> <a name="scale_polyDr"><span class="id" title="lemma">scale_polyDr</span></a> <span class="id" title="var">a</span> : <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#e69c60b553f06d3463460a9f4cee3c01"><span class="id" title="notation">{</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#e69c60b553f06d3463460a9f4cee3c01"><span class="id" title="notation">morph</span></a> <a class="idref" href="mathcomp.algebra.poly.html#scale_poly"><span class="id" title="definition">scale_poly</span></a> <a class="idref" href="mathcomp.algebra.poly.html#a"><span class="id" title="variable">a</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#e69c60b553f06d3463460a9f4cee3c01"><span class="id" title="notation">:</span></a> <span class="id" title="var">p</span> <span class="id" title="var">q</span> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#e69c60b553f06d3463460a9f4cee3c01"><span class="id" title="notation">/</span></a> <a class="idref" href="mathcomp.algebra.poly.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.poly.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.ssrfun.html#e69c60b553f06d3463460a9f4cee3c01"><span class="id" title="notation">}</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Fact</span> <a name="scale_polyDl"><span class="id" title="lemma">scale_polyDl</span></a> <span class="id" title="var">p</span> : <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#e69c60b553f06d3463460a9f4cee3c01"><span class="id" title="notation">{</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#e69c60b553f06d3463460a9f4cee3c01"><span class="id" title="notation">morph</span></a> <a class="idref" href="mathcomp.algebra.poly.html#scale_poly"><span class="id" title="definition">scale_poly</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#d89396f990d6b54d736cfe259e498cf4"><span class="id" title="notation">^~</span></a> <a class="idref" href="mathcomp.algebra.poly.html#p"><span class="id" title="variable">p</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#e69c60b553f06d3463460a9f4cee3c01"><span class="id" title="notation">:</span></a> <span class="id" title="var">a</span> <span class="id" title="var">b</span> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#e69c60b553f06d3463460a9f4cee3c01"><span class="id" title="notation">/</span></a> <a class="idref" href="mathcomp.algebra.poly.html#a"><span class="id" title="variable">a</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#c7f78cf1f6a5e4f664654f7d671ca752"><span class="id" title="notation">+</span></a> <a class="idref" href="mathcomp.algebra.poly.html#b"><span class="id" title="variable">b</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#e69c60b553f06d3463460a9f4cee3c01"><span class="id" title="notation">}</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Fact</span> <a name="scale_polyAl"><span class="id" title="lemma">scale_polyAl</span></a> <span class="id" title="var">a</span> <span class="id" title="var">p</span> <span class="id" title="var">q</span> : <a class="idref" href="mathcomp.algebra.poly.html#scale_poly"><span class="id" title="definition">scale_poly</span></a> <a class="idref" href="mathcomp.algebra.poly.html#a"><span class="id" title="variable">a</span></a> (<a class="idref" href="mathcomp.algebra.poly.html#p"><span class="id" title="variable">p</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#2d0cfb150261028f4ebd2ba355623dcc"><span class="id" title="notation">×</span></a> <a class="idref" href="mathcomp.algebra.poly.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.poly.html#scale_poly"><span class="id" title="definition">scale_poly</span></a> <a class="idref" href="mathcomp.algebra.poly.html#a"><span class="id" title="variable">a</span></a> <a class="idref" href="mathcomp.algebra.poly.html#p"><span class="id" title="variable">p</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#2d0cfb150261028f4ebd2ba355623dcc"><span class="id" title="notation">×</span></a> <a class="idref" href="mathcomp.algebra.poly.html#q"><span class="id" title="variable">q</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Definition</span> <a name="poly_lmodMixin"><span class="id" title="definition">poly_lmodMixin</span></a> :=<br/> - <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Lmodule.Exports.LmodMixin"><span class="id" title="abbreviation">LmodMixin</span></a> <a class="idref" href="mathcomp.algebra.poly.html#scale_polyA"><span class="id" title="lemma">scale_polyA</span></a> <a class="idref" href="mathcomp.algebra.poly.html#scale_1poly"><span class="id" title="lemma">scale_1poly</span></a> <a class="idref" href="mathcomp.algebra.poly.html#scale_polyDr"><span class="id" title="lemma">scale_polyDr</span></a> <a class="idref" href="mathcomp.algebra.poly.html#scale_polyDl"><span class="id" title="lemma">scale_polyDl</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Canonical</span> <span class="id" title="var">poly_lmodType</span> :=<br/> - <span class="id" title="keyword">Eval</span> <span class="id" title="tactic">hnf</span> <span class="id" title="tactic">in</span> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Lmodule.Exports.LmodType"><span class="id" title="abbreviation">LmodType</span></a> <a class="idref" href="mathcomp.algebra.poly.html#PolynomialTheory.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.poly.html#c2ef4fdf7ae62c36654f85f0d2a6c874"><span class="id" title="notation">poly</span></a> <a class="idref" href="mathcomp.algebra.poly.html#PolynomialTheory.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.poly.html#poly_lmodMixin"><span class="id" title="definition">poly_lmodMixin</span></a>.<br/> -<span class="id" title="keyword">Canonical</span> <span class="id" title="var">polynomial_lmodType</span> :=<br/> - <span class="id" title="keyword">Eval</span> <span class="id" title="tactic">hnf</span> <span class="id" title="tactic">in</span> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Lmodule.Exports.LmodType"><span class="id" title="abbreviation">LmodType</span></a> <a class="idref" href="mathcomp.algebra.poly.html#PolynomialTheory.R"><span class="id" title="variable">R</span></a> (<a class="idref" href="mathcomp.algebra.poly.html#polynomial"><span class="id" title="record">polynomial</span></a> <a class="idref" href="mathcomp.algebra.poly.html#PolynomialTheory.R"><span class="id" title="variable">R</span></a>) <a class="idref" href="mathcomp.algebra.poly.html#poly_lmodMixin"><span class="id" title="definition">poly_lmodMixin</span></a>.<br/> -<span class="id" title="keyword">Canonical</span> <span class="id" title="var">poly_lalgType</span> :=<br/> - <span class="id" title="keyword">Eval</span> <span class="id" title="tactic">hnf</span> <span class="id" title="tactic">in</span> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Lalgebra.Exports.LalgType"><span class="id" title="abbreviation">LalgType</span></a> <a class="idref" href="mathcomp.algebra.poly.html#PolynomialTheory.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.poly.html#c2ef4fdf7ae62c36654f85f0d2a6c874"><span class="id" title="notation">poly</span></a> <a class="idref" href="mathcomp.algebra.poly.html#PolynomialTheory.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.poly.html#scale_polyAl"><span class="id" title="lemma">scale_polyAl</span></a>.<br/> -<span class="id" title="keyword">Canonical</span> <span class="id" title="var">polynomial_lalgType</span> :=<br/> - <span class="id" title="keyword">Eval</span> <span class="id" title="tactic">hnf</span> <span class="id" title="tactic">in</span> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Lalgebra.Exports.LalgType"><span class="id" title="abbreviation">LalgType</span></a> <a class="idref" href="mathcomp.algebra.poly.html#PolynomialTheory.R"><span class="id" title="variable">R</span></a> (<a class="idref" href="mathcomp.algebra.poly.html#polynomial"><span class="id" title="record">polynomial</span></a> <a class="idref" href="mathcomp.algebra.poly.html#PolynomialTheory.R"><span class="id" title="variable">R</span></a>) <a class="idref" href="mathcomp.algebra.poly.html#scale_polyAl"><span class="id" title="lemma">scale_polyAl</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="mul_polyC"><span class="id" title="lemma">mul_polyC</span></a> <span class="id" title="var">a</span> <span class="id" title="var">p</span> : <a class="idref" href="mathcomp.algebra.poly.html#a"><span class="id" title="variable">a</span></a><a class="idref" href="mathcomp.algebra.poly.html#728a2917ff59e46e3f0e4d98ed9ea172"><span class="id" title="notation">%:</span></a><a class="idref" href="mathcomp.algebra.poly.html#728a2917ff59e46e3f0e4d98ed9ea172"><span class="id" title="notation">P</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#2d0cfb150261028f4ebd2ba355623dcc"><span class="id" title="notation">×</span></a> <a class="idref" href="mathcomp.algebra.poly.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.poly.html#a"><span class="id" title="variable">a</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#3b05480e39db306e67fadbc79d394529"><span class="id" title="notation">*:</span></a> <a class="idref" href="mathcomp.algebra.poly.html#p"><span class="id" title="variable">p</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="alg_polyC"><span class="id" title="lemma">alg_polyC</span></a> <span class="id" title="var">a</span> : <a class="idref" href="mathcomp.algebra.poly.html#a"><span class="id" title="variable">a</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#862982ed16052c855fd1cdb6c8e69ea7"><span class="id" title="notation">%:</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#862982ed16052c855fd1cdb6c8e69ea7"><span class="id" title="notation">A</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.poly.html#a"><span class="id" title="variable">a</span></a><a class="idref" href="mathcomp.algebra.poly.html#728a2917ff59e46e3f0e4d98ed9ea172"><span class="id" title="notation">%:</span></a><a class="idref" href="mathcomp.algebra.poly.html#728a2917ff59e46e3f0e4d98ed9ea172"><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#b8b2ebc8e1a8b9aa935c0702efb5dccf"><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.poly.html#PolynomialTheory.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">Lemma</span> <a name="coefZ"><span class="id" title="lemma">coefZ</span></a> <span class="id" title="var">a</span> <span class="id" title="var">p</span> <span class="id" title="var">i</span> : <a class="idref" href="mathcomp.algebra.ssralg.html#82d810f9f90b79e8fe98d90a63070c32"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.poly.html#a"><span class="id" title="variable">a</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#3b05480e39db306e67fadbc79d394529"><span class="id" title="notation">*:</span></a> <a class="idref" href="mathcomp.algebra.poly.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#6cd0f7b28b6092304087c7049437bb1a"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.poly.html#a"><span class="id" title="variable">a</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#2d0cfb150261028f4ebd2ba355623dcc"><span class="id" title="notation">×</span></a> <a class="idref" href="mathcomp.algebra.poly.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="size_scale_leq"><span class="id" title="lemma">size_scale_leq</span></a> <span class="id" title="var">a</span> <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.poly.html#a"><span class="id" title="variable">a</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#3b05480e39db306e67fadbc79d394529"><span class="id" title="notation">*:</span></a> <a class="idref" href="mathcomp.algebra.poly.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.ssreflect.seq.html#size"><span class="id" title="definition">size</span></a> <a class="idref" href="mathcomp.algebra.poly.html#p"><span class="id" title="variable">p</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Canonical</span> <span class="id" title="var">coefp_linear</span> <span class="id" title="var">i</span> : <a class="idref" href="mathcomp.algebra.ssralg.html#46175849544ed868533ead6f2ac4a179"><span class="id" title="notation">{</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#46175849544ed868533ead6f2ac4a179"><span class="id" title="notation">scalar</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.poly.html#PolynomialTheory.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.ssralg.html#46175849544ed868533ead6f2ac4a179"><span class="id" title="notation">}</span></a> :=<br/> - <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Linear.Exports.AddLinear"><span class="id" title="abbreviation">AddLinear</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><span class="id" title="keyword">fun</span> <span class="id" title="var">a</span> ⇒ <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#d89396f990d6b54d736cfe259e498cf4"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.poly.html#coefZ"><span class="id" title="lemma">coefZ</span></a> <a class="idref" href="mathcomp.algebra.poly.html#a"><span class="id" title="variable">a</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#d89396f990d6b54d736cfe259e498cf4"><span class="id" title="notation">)</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#d89396f990d6b54d736cfe259e498cf4"><span class="id" title="notation">^~</span></a> <a class="idref" href="mathcomp.algebra.poly.html#i"><span class="id" title="variable">i</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssreflect.html#aed478b27f23b4f753c27c8ac393febc"><span class="id" title="notation">)</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssreflect.html#aed478b27f23b4f753c27c8ac393febc"><span class="id" title="notation">:</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Linear.Exports.scalable_for"><span class="id" title="abbreviation">scalable_for</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#3609d85e23333c9e68741ad96b416eec"><span class="id" title="notation">*%</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#3609d85e23333c9e68741ad96b416eec"><span class="id" title="notation">R</span></a> (<a class="idref" href="mathcomp.algebra.poly.html#coefp"><span class="id" title="abbreviation">coefp</span></a> <a class="idref" href="mathcomp.algebra.poly.html#i"><span class="id" title="variable">i</span></a>)).<br/> -<span class="id" title="keyword">Canonical</span> <span class="id" title="var">coefp0_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.poly.html#coefp"><span class="id" title="abbreviation">coefp</span></a> 0<a class="idref" href="mathcomp.algebra.ssralg.html#d17433407f88fd9a1e0740e2eddd6566"><span class="id" title="notation">]</span></a>.<br/> - -<br/> -</div> - -<div class="doc"> - The indeterminate, at last! -</div> -<div class="code"> -<span class="id" title="keyword">Definition</span> <a name="polyX_def"><span class="id" title="definition">polyX_def</span></a> := <a class="idref" href="mathcomp.algebra.poly.html#Poly"><span class="id" title="definition">Poly</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#9e9281397dab83046645f1b62dbb2487"><span class="id" title="notation">[::</span></a> 0<a class="idref" href="mathcomp.ssreflect.seq.html#9e9281397dab83046645f1b62dbb2487"><span class="id" title="notation">;</span></a> 1<a class="idref" href="mathcomp.ssreflect.seq.html#9e9281397dab83046645f1b62dbb2487"><span class="id" title="notation">]</span></a>.<br/> -<span class="id" title="keyword">Fact</span> <a name="polyX_key"><span class="id" title="lemma">polyX_key</span></a> : <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Datatypes.html#unit"><span class="id" title="inductive">unit</span></a>. <br/> -<span class="id" title="keyword">Definition</span> <a name="polyX"><span class="id" title="definition">polyX</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.poly.html#PolynomialTheory.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.ssr.ssreflect.html#locked_with"><span class="id" title="definition">locked_with</span></a> <a class="idref" href="mathcomp.algebra.poly.html#polyX_key"><span class="id" title="lemma">polyX_key</span></a> <a class="idref" href="mathcomp.algebra.poly.html#polyX_def"><span class="id" title="definition">polyX_def</span></a>.<br/> -<span class="id" title="keyword">Canonical</span> <span class="id" title="var">polyX_unlockable</span> := <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssreflect.html#5ad020f08aa5d2a22e22f3b18f63fcd0"><span class="id" title="notation">[</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssreflect.html#5ad020f08aa5d2a22e22f3b18f63fcd0"><span class="id" title="notation">unlockable</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssreflect.html#5ad020f08aa5d2a22e22f3b18f63fcd0"><span class="id" title="notation">of</span></a> <a class="idref" href="mathcomp.algebra.poly.html#polyX"><span class="id" title="definition">polyX</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssreflect.html#5ad020f08aa5d2a22e22f3b18f63fcd0"><span class="id" title="notation">]</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="polyseqX"><span class="id" title="lemma">polyseqX</span></a> : <a class="idref" href="mathcomp.algebra.poly.html#78f0b7e9c087664de9d653df6828ab64"><span class="id" title="notation">'</span></a><a class="idref" href="mathcomp.algebra.poly.html#78f0b7e9c087664de9d653df6828ab64"><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#b8b2ebc8e1a8b9aa935c0702efb5dccf"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#9e9281397dab83046645f1b62dbb2487"><span class="id" title="notation">[::</span></a> 0<a class="idref" href="mathcomp.ssreflect.seq.html#9e9281397dab83046645f1b62dbb2487"><span class="id" title="notation">;</span></a> 1<a class="idref" href="mathcomp.ssreflect.seq.html#9e9281397dab83046645f1b62dbb2487"><span class="id" title="notation">]</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#b8b2ebc8e1a8b9aa935c0702efb5dccf"><span class="id" title="notation">:></span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#seq"><span class="id" title="abbreviation">seq</span></a> <a class="idref" href="mathcomp.algebra.poly.html#PolynomialTheory.R"><span class="id" title="variable">R</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="size_polyX"><span class="id" title="lemma">size_polyX</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.poly.html#78f0b7e9c087664de9d653df6828ab64"><span class="id" title="notation">'</span></a><a class="idref" href="mathcomp.algebra.poly.html#78f0b7e9c087664de9d653df6828ab64"><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> 2. <br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="polyX_eq0"><span class="id" title="lemma">polyX_eq0</span></a> : <a class="idref" href="http://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#78f0b7e9c087664de9d653df6828ab64"><span class="id" title="notation">'</span></a><a class="idref" href="mathcomp.algebra.poly.html#78f0b7e9c087664de9d653df6828ab64"><span class="id" title="notation">X</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.Datatypes.html#false"><span class="id" title="constructor">false</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="coefX"><span class="id" title="lemma">coefX</span></a> <span class="id" title="var">i</span> : <a class="idref" href="mathcomp.algebra.poly.html#78f0b7e9c087664de9d653df6828ab64"><span class="id" title="notation">'</span></a><a class="idref" href="mathcomp.algebra.poly.html#78f0b7e9c087664de9d653df6828ab64"><span class="id" title="notation">X</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.ssralg.html#6411ed08724033ae48d2865f0380d533"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.poly.html#i"><span class="id" title="variable">i</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#df45e8c2e8370fd4f0f7c4fdaf208180"><span class="id" title="notation">==</span></a> 1%<span class="id" title="var">N</span><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="lead_coefX"><span class="id" title="lemma">lead_coefX</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.poly.html#78f0b7e9c087664de9d653df6828ab64"><span class="id" title="notation">'</span></a><a class="idref" href="mathcomp.algebra.poly.html#78f0b7e9c087664de9d653df6828ab64"><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> 1.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="commr_polyX"><span class="id" title="lemma">commr_polyX</span></a> <span class="id" title="var">p</span> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.comm"><span class="id" title="definition">GRing.comm</span></a> <a class="idref" href="mathcomp.algebra.poly.html#p"><span class="id" title="variable">p</span></a> <a class="idref" href="mathcomp.algebra.poly.html#78f0b7e9c087664de9d653df6828ab64"><span class="id" title="notation">'</span></a><a class="idref" href="mathcomp.algebra.poly.html#78f0b7e9c087664de9d653df6828ab64"><span class="id" title="notation">X</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="coefMX"><span class="id" title="lemma">coefMX</span></a> <span class="id" title="var">p</span> <span class="id" title="var">i</span> : <a class="idref" href="mathcomp.algebra.ssralg.html#82d810f9f90b79e8fe98d90a63070c32"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.poly.html#p"><span class="id" title="variable">p</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#2d0cfb150261028f4ebd2ba355623dcc"><span class="id" title="notation">×</span></a> <a class="idref" href="mathcomp.algebra.poly.html#78f0b7e9c087664de9d653df6828ab64"><span class="id" title="notation">'</span></a><a class="idref" href="mathcomp.algebra.poly.html#78f0b7e9c087664de9d653df6828ab64"><span class="id" title="notation">X</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="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#6cd0f7b28b6092304087c7049437bb1a"><span class="id" title="notation">(</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssreflect.html#00a1a5b58aac8f1e3f1abff064a39f9d"><span class="id" title="notation">if</span></a> (<a class="idref" href="mathcomp.algebra.poly.html#i"><span class="id" title="variable">i</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> <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> 0 <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.poly.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="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>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="coefXM"><span class="id" title="lemma">coefXM</span></a> <span class="id" title="var">p</span> <span class="id" title="var">i</span> : <a class="idref" href="mathcomp.algebra.ssralg.html#82d810f9f90b79e8fe98d90a63070c32"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.poly.html#78f0b7e9c087664de9d653df6828ab64"><span class="id" title="notation">'</span></a><a class="idref" href="mathcomp.algebra.poly.html#78f0b7e9c087664de9d653df6828ab64"><span class="id" title="notation">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.poly.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#6cd0f7b28b6092304087c7049437bb1a"><span class="id" title="notation">=</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#6cd0f7b28b6092304087c7049437bb1a"><span class="id" title="notation">(</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssreflect.html#00a1a5b58aac8f1e3f1abff064a39f9d"><span class="id" title="notation">if</span></a> (<a class="idref" href="mathcomp.algebra.poly.html#i"><span class="id" title="variable">i</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> <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> 0 <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.poly.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="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>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="cons_poly_def"><span class="id" title="lemma">cons_poly_def</span></a> <span class="id" title="var">p</span> <span class="id" title="var">a</span> : <a class="idref" href="mathcomp.algebra.poly.html#cons_poly"><span class="id" title="definition">cons_poly</span></a> <a class="idref" href="mathcomp.algebra.poly.html#a"><span class="id" title="variable">a</span></a> <a class="idref" href="mathcomp.algebra.poly.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.poly.html#p"><span class="id" title="variable">p</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#2d0cfb150261028f4ebd2ba355623dcc"><span class="id" title="notation">×</span></a> <a class="idref" href="mathcomp.algebra.poly.html#78f0b7e9c087664de9d653df6828ab64"><span class="id" title="notation">'</span></a><a class="idref" href="mathcomp.algebra.poly.html#78f0b7e9c087664de9d653df6828ab64"><span class="id" title="notation">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.poly.html#a"><span class="id" title="variable">a</span></a><a class="idref" href="mathcomp.algebra.poly.html#728a2917ff59e46e3f0e4d98ed9ea172"><span class="id" title="notation">%:</span></a><a class="idref" href="mathcomp.algebra.poly.html#728a2917ff59e46e3f0e4d98ed9ea172"><span class="id" title="notation">P</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="poly_ind"><span class="id" title="lemma">poly_ind</span></a> (<span class="id" title="var">K</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.poly.html#PolynomialTheory.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.Logic.html#1c93e43e07fbeaeb6a625cb6614beb5d"><span class="id" title="notation">→</span></a> <span class="id" title="keyword">Type</span>) :<br/> - <a class="idref" href="mathcomp.algebra.poly.html#K"><span class="id" title="variable">K</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="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#1c93e43e07fbeaeb6a625cb6614beb5d"><span class="id" title="notation">(</span></a><span class="id" title="keyword">∀</span> <span class="id" title="var">p</span> <span class="id" title="var">c</span>, <a class="idref" href="mathcomp.algebra.poly.html#K"><span class="id" title="variable">K</span></a> <a class="idref" href="mathcomp.algebra.poly.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#1c93e43e07fbeaeb6a625cb6614beb5d"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.poly.html#K"><span class="id" title="variable">K</span></a> (<a class="idref" href="mathcomp.algebra.poly.html#p"><span class="id" title="variable">p</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#2d0cfb150261028f4ebd2ba355623dcc"><span class="id" title="notation">×</span></a> <a class="idref" href="mathcomp.algebra.poly.html#78f0b7e9c087664de9d653df6828ab64"><span class="id" title="notation">'</span></a><a class="idref" href="mathcomp.algebra.poly.html#78f0b7e9c087664de9d653df6828ab64"><span class="id" title="notation">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.poly.html#c"><span class="id" title="variable">c</span></a><a class="idref" href="mathcomp.algebra.poly.html#728a2917ff59e46e3f0e4d98ed9ea172"><span class="id" title="notation">%:</span></a><a class="idref" href="mathcomp.algebra.poly.html#728a2917ff59e46e3f0e4d98ed9ea172"><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#1c93e43e07fbeaeb6a625cb6614beb5d"><span class="id" title="notation">)</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#1c93e43e07fbeaeb6a625cb6614beb5d"><span class="id" title="notation">→</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#1c93e43e07fbeaeb6a625cb6614beb5d"><span class="id" title="notation">(</span></a><span class="id" title="keyword">∀</span> <span class="id" title="var">p</span>, <a class="idref" href="mathcomp.algebra.poly.html#K"><span class="id" title="variable">K</span></a> <a class="idref" href="mathcomp.algebra.poly.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#1c93e43e07fbeaeb6a625cb6614beb5d"><span class="id" title="notation">)</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="polyseqXsubC"><span class="id" title="lemma">polyseqXsubC</span></a> <span class="id" title="var">a</span> : <a class="idref" href="mathcomp.algebra.poly.html#78f0b7e9c087664de9d653df6828ab64"><span class="id" title="notation">'</span></a><a class="idref" href="mathcomp.algebra.poly.html#78f0b7e9c087664de9d653df6828ab64"><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.poly.html#a"><span class="id" title="variable">a</span></a><a class="idref" href="mathcomp.algebra.poly.html#728a2917ff59e46e3f0e4d98ed9ea172"><span class="id" title="notation">%:</span></a><a class="idref" href="mathcomp.algebra.poly.html#728a2917ff59e46e3f0e4d98ed9ea172"><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#b8b2ebc8e1a8b9aa935c0702efb5dccf"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#9e9281397dab83046645f1b62dbb2487"><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.poly.html#a"><span class="id" title="variable">a</span></a><a class="idref" href="mathcomp.ssreflect.seq.html#9e9281397dab83046645f1b62dbb2487"><span class="id" title="notation">;</span></a> 1<a class="idref" href="mathcomp.ssreflect.seq.html#9e9281397dab83046645f1b62dbb2487"><span class="id" title="notation">]</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#b8b2ebc8e1a8b9aa935c0702efb5dccf"><span class="id" title="notation">:></span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#seq"><span class="id" title="abbreviation">seq</span></a> <a class="idref" href="mathcomp.algebra.poly.html#PolynomialTheory.R"><span class="id" title="variable">R</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="size_XsubC"><span class="id" title="lemma">size_XsubC</span></a> <span class="id" title="var">a</span> : <a class="idref" href="mathcomp.ssreflect.seq.html#size"><span class="id" title="definition">size</span></a> (<a class="idref" href="mathcomp.algebra.poly.html#78f0b7e9c087664de9d653df6828ab64"><span class="id" title="notation">'</span></a><a class="idref" href="mathcomp.algebra.poly.html#78f0b7e9c087664de9d653df6828ab64"><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.poly.html#a"><span class="id" title="variable">a</span></a><a class="idref" href="mathcomp.algebra.poly.html#728a2917ff59e46e3f0e4d98ed9ea172"><span class="id" title="notation">%:</span></a><a class="idref" href="mathcomp.algebra.poly.html#728a2917ff59e46e3f0e4d98ed9ea172"><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> 2%<span class="id" title="var">N</span>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="size_XaddC"><span class="id" title="lemma">size_XaddC</span></a> <span class="id" title="var">b</span> : <a class="idref" href="mathcomp.ssreflect.seq.html#size"><span class="id" title="definition">size</span></a> (<a class="idref" href="mathcomp.algebra.poly.html#78f0b7e9c087664de9d653df6828ab64"><span class="id" title="notation">'</span></a><a class="idref" href="mathcomp.algebra.poly.html#78f0b7e9c087664de9d653df6828ab64"><span class="id" title="notation">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.poly.html#b"><span class="id" title="variable">b</span></a><a class="idref" href="mathcomp.algebra.poly.html#728a2917ff59e46e3f0e4d98ed9ea172"><span class="id" title="notation">%:</span></a><a class="idref" href="mathcomp.algebra.poly.html#728a2917ff59e46e3f0e4d98ed9ea172"><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> 2.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="lead_coefXsubC"><span class="id" title="lemma">lead_coefXsubC</span></a> <span class="id" title="var">a</span> : <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.poly.html#78f0b7e9c087664de9d653df6828ab64"><span class="id" title="notation">'</span></a><a class="idref" href="mathcomp.algebra.poly.html#78f0b7e9c087664de9d653df6828ab64"><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.poly.html#a"><span class="id" title="variable">a</span></a><a class="idref" href="mathcomp.algebra.poly.html#728a2917ff59e46e3f0e4d98ed9ea172"><span class="id" title="notation">%:</span></a><a class="idref" href="mathcomp.algebra.poly.html#728a2917ff59e46e3f0e4d98ed9ea172"><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> 1.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="polyXsubC_eq0"><span class="id" title="lemma">polyXsubC_eq0</span></a> <span class="id" title="var">a</span> : <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#6cd0f7b28b6092304087c7049437bb1a"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.poly.html#78f0b7e9c087664de9d653df6828ab64"><span class="id" title="notation">'</span></a><a class="idref" href="mathcomp.algebra.poly.html#78f0b7e9c087664de9d653df6828ab64"><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.poly.html#a"><span class="id" title="variable">a</span></a><a class="idref" href="mathcomp.algebra.poly.html#728a2917ff59e46e3f0e4d98ed9ea172"><span class="id" title="notation">%:</span></a><a class="idref" href="mathcomp.algebra.poly.html#728a2917ff59e46e3f0e4d98ed9ea172"><span class="id" title="notation">P</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.Datatypes.html#false"><span class="id" title="constructor">false</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="size_MXaddC"><span class="id" title="lemma">size_MXaddC</span></a> <span class="id" title="var">p</span> <span class="id" title="var">c</span> :<br/> - <a class="idref" href="mathcomp.ssreflect.seq.html#size"><span class="id" title="definition">size</span></a> (<a class="idref" href="mathcomp.algebra.poly.html#p"><span class="id" title="variable">p</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#2d0cfb150261028f4ebd2ba355623dcc"><span class="id" title="notation">×</span></a> <a class="idref" href="mathcomp.algebra.poly.html#78f0b7e9c087664de9d653df6828ab64"><span class="id" title="notation">'</span></a><a class="idref" href="mathcomp.algebra.poly.html#78f0b7e9c087664de9d653df6828ab64"><span class="id" title="notation">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.poly.html#c"><span class="id" title="variable">c</span></a><a class="idref" href="mathcomp.algebra.poly.html#728a2917ff59e46e3f0e4d98ed9ea172"><span class="id" title="notation">%:</span></a><a class="idref" href="mathcomp.algebra.poly.html#728a2917ff59e46e3f0e4d98ed9ea172"><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="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#6cd0f7b28b6092304087c7049437bb1a"><span class="id" title="notation">(</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssreflect.html#00a1a5b58aac8f1e3f1abff064a39f9d"><span class="id" title="notation">if</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Datatypes.html#9ddeac0ab66152bd1d64bedb507a795e"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.poly.html#p"><span class="id" title="variable">p</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.Datatypes.html#9ddeac0ab66152bd1d64bedb507a795e"><span class="id" title="notation">)</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Datatypes.html#9ddeac0ab66152bd1d64bedb507a795e"><span class="id" title="notation">&&</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Datatypes.html#9ddeac0ab66152bd1d64bedb507a795e"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.poly.html#c"><span class="id" title="variable">c</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.Datatypes.html#9ddeac0ab66152bd1d64bedb507a795e"><span class="id" title="notation">)</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssreflect.html#00a1a5b58aac8f1e3f1abff064a39f9d"><span class="id" title="notation">then</span></a> 0%<span class="id" title="var">N</span> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssreflect.html#00a1a5b58aac8f1e3f1abff064a39f9d"><span class="id" title="notation">else</span></a> <a class="idref" href="mathcomp.ssreflect.ssrnat.html#bda89d73ec4a8f23ae92b565ffb5aaa6"><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.poly.html#p"><span class="id" title="variable">p</span></a><a class="idref" href="mathcomp.ssreflect.ssrnat.html#bda89d73ec4a8f23ae92b565ffb5aaa6"><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>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="polyseqMX"><span class="id" title="lemma">polyseqMX</span></a> <span class="id" title="var">p</span> : <a class="idref" href="mathcomp.algebra.poly.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#p"><span class="id" title="variable">p</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#2d0cfb150261028f4ebd2ba355623dcc"><span class="id" title="notation">×</span></a> <a class="idref" href="mathcomp.algebra.poly.html#78f0b7e9c087664de9d653df6828ab64"><span class="id" title="notation">'</span></a><a class="idref" href="mathcomp.algebra.poly.html#78f0b7e9c087664de9d653df6828ab64"><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#b8b2ebc8e1a8b9aa935c0702efb5dccf"><span class="id" title="notation">=</span></a> 0 <a class="idref" href="mathcomp.ssreflect.seq.html#407cde5b61fbf27196d1a7c5a475e083"><span class="id" title="notation">::</span></a> <a class="idref" href="mathcomp.algebra.poly.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.ssreflect.seq.html#seq"><span class="id" title="abbreviation">seq</span></a> <a class="idref" href="mathcomp.algebra.poly.html#PolynomialTheory.R"><span class="id" title="variable">R</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="size_mulX"><span class="id" title="lemma">size_mulX</span></a> <span class="id" title="var">p</span> : <a class="idref" href="mathcomp.algebra.poly.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.ssreflect.seq.html#size"><span class="id" title="definition">size</span></a> (<a class="idref" href="mathcomp.algebra.poly.html#p"><span class="id" title="variable">p</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#2d0cfb150261028f4ebd2ba355623dcc"><span class="id" title="notation">×</span></a> <a class="idref" href="mathcomp.algebra.poly.html#78f0b7e9c087664de9d653df6828ab64"><span class="id" title="notation">'</span></a><a class="idref" href="mathcomp.algebra.poly.html#78f0b7e9c087664de9d653df6828ab64"><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.ssreflect.ssrnat.html#bda89d73ec4a8f23ae92b565ffb5aaa6"><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.poly.html#p"><span class="id" title="variable">p</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="lead_coefMX"><span class="id" title="lemma">lead_coefMX</span></a> <span class="id" title="var">p</span> : <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.poly.html#p"><span class="id" title="variable">p</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#2d0cfb150261028f4ebd2ba355623dcc"><span class="id" title="notation">×</span></a> <a class="idref" href="mathcomp.algebra.poly.html#78f0b7e9c087664de9d653df6828ab64"><span class="id" title="notation">'</span></a><a class="idref" href="mathcomp.algebra.poly.html#78f0b7e9c087664de9d653df6828ab64"><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.poly.html#lead_coef"><span class="id" title="definition">lead_coef</span></a> <a class="idref" href="mathcomp.algebra.poly.html#p"><span class="id" title="variable">p</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="size_XmulC"><span class="id" title="lemma">size_XmulC</span></a> <span class="id" title="var">a</span> : <a class="idref" href="mathcomp.algebra.poly.html#a"><span class="id" title="variable">a</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.ssreflect.seq.html#size"><span class="id" title="definition">size</span></a> (<a class="idref" href="mathcomp.algebra.poly.html#78f0b7e9c087664de9d653df6828ab64"><span class="id" title="notation">'</span></a><a class="idref" href="mathcomp.algebra.poly.html#78f0b7e9c087664de9d653df6828ab64"><span class="id" title="notation">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.poly.html#a"><span class="id" title="variable">a</span></a><a class="idref" href="mathcomp.algebra.poly.html#728a2917ff59e46e3f0e4d98ed9ea172"><span class="id" title="notation">%:</span></a><a class="idref" href="mathcomp.algebra.poly.html#728a2917ff59e46e3f0e4d98ed9ea172"><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> 2.<br/> - -<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="coefXn"><span class="id" title="lemma">coefXn</span></a> <span class="id" title="var">n</span> <span class="id" title="var">i</span> : <a class="idref" href="mathcomp.algebra.poly.html#72573bab7b99d99443b6173a7515ef0d"><span class="id" title="notation">'</span></a><a class="idref" href="mathcomp.algebra.poly.html#72573bab7b99d99443b6173a7515ef0d"><span class="id" title="notation">X</span></a><a class="idref" href="mathcomp.algebra.poly.html#72573bab7b99d99443b6173a7515ef0d"><span class="id" title="notation">^</span></a><a class="idref" href="mathcomp.algebra.poly.html#n"><span class="id" title="variable">n</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.ssralg.html#6411ed08724033ae48d2865f0380d533"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.poly.html#i"><span class="id" title="variable">i</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#df45e8c2e8370fd4f0f7c4fdaf208180"><span class="id" title="notation">==</span></a> <a class="idref" href="mathcomp.algebra.poly.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="polyseqXn"><span class="id" title="lemma">polyseqXn</span></a> <span class="id" title="var">n</span> : <a class="idref" href="mathcomp.algebra.poly.html#72573bab7b99d99443b6173a7515ef0d"><span class="id" title="notation">'</span></a><a class="idref" href="mathcomp.algebra.poly.html#72573bab7b99d99443b6173a7515ef0d"><span class="id" title="notation">X</span></a><a class="idref" href="mathcomp.algebra.poly.html#72573bab7b99d99443b6173a7515ef0d"><span class="id" title="notation">^</span></a><a class="idref" href="mathcomp.algebra.poly.html#n"><span class="id" title="variable">n</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#b8b2ebc8e1a8b9aa935c0702efb5dccf"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#rcons"><span class="id" title="definition">rcons</span></a> (<a class="idref" href="mathcomp.ssreflect.seq.html#nseq"><span class="id" title="definition">nseq</span></a> <a class="idref" href="mathcomp.algebra.poly.html#n"><span class="id" title="variable">n</span></a> 0) 1 <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#b8b2ebc8e1a8b9aa935c0702efb5dccf"><span class="id" title="notation">:></span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#seq"><span class="id" title="abbreviation">seq</span></a> <a class="idref" href="mathcomp.algebra.poly.html#PolynomialTheory.R"><span class="id" title="variable">R</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="size_polyXn"><span class="id" title="lemma">size_polyXn</span></a> <span class="id" title="var">n</span> : <a class="idref" href="mathcomp.ssreflect.seq.html#size"><span class="id" title="definition">size</span></a> <a class="idref" href="mathcomp.algebra.poly.html#72573bab7b99d99443b6173a7515ef0d"><span class="id" title="notation">'</span></a><a class="idref" href="mathcomp.algebra.poly.html#72573bab7b99d99443b6173a7515ef0d"><span class="id" title="notation">X</span></a><a class="idref" href="mathcomp.algebra.poly.html#72573bab7b99d99443b6173a7515ef0d"><span class="id" title="notation">^</span></a><a class="idref" href="mathcomp.algebra.poly.html#n"><span class="id" title="variable">n</span></a> <a class="idref" href="http://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#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="commr_polyXn"><span class="id" title="lemma">commr_polyXn</span></a> <span class="id" title="var">p</span> <span class="id" title="var">n</span> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.comm"><span class="id" title="definition">GRing.comm</span></a> <a class="idref" href="mathcomp.algebra.poly.html#p"><span class="id" title="variable">p</span></a> <a class="idref" href="mathcomp.algebra.poly.html#72573bab7b99d99443b6173a7515ef0d"><span class="id" title="notation">'</span></a><a class="idref" href="mathcomp.algebra.poly.html#72573bab7b99d99443b6173a7515ef0d"><span class="id" title="notation">X</span></a><a class="idref" href="mathcomp.algebra.poly.html#72573bab7b99d99443b6173a7515ef0d"><span class="id" title="notation">^</span></a><a class="idref" href="mathcomp.algebra.poly.html#n"><span class="id" title="variable">n</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="lead_coefXn"><span class="id" title="lemma">lead_coefXn</span></a> <span class="id" title="var">n</span> : <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.poly.html#72573bab7b99d99443b6173a7515ef0d"><span class="id" title="notation">'</span></a><a class="idref" href="mathcomp.algebra.poly.html#72573bab7b99d99443b6173a7515ef0d"><span class="id" title="notation">X</span></a><a class="idref" href="mathcomp.algebra.poly.html#72573bab7b99d99443b6173a7515ef0d"><span class="id" title="notation">^</span></a><a class="idref" href="mathcomp.algebra.poly.html#n"><span class="id" title="variable">n</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#6cd0f7b28b6092304087c7049437bb1a"><span class="id" title="notation">=</span></a> 1.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="polyseqMXn"><span class="id" title="lemma">polyseqMXn</span></a> <span class="id" title="var">n</span> <span class="id" title="var">p</span> : <a class="idref" href="mathcomp.algebra.poly.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#p"><span class="id" title="variable">p</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#2d0cfb150261028f4ebd2ba355623dcc"><span class="id" title="notation">×</span></a> <a class="idref" href="mathcomp.algebra.poly.html#72573bab7b99d99443b6173a7515ef0d"><span class="id" title="notation">'</span></a><a class="idref" href="mathcomp.algebra.poly.html#72573bab7b99d99443b6173a7515ef0d"><span class="id" title="notation">X</span></a><a class="idref" href="mathcomp.algebra.poly.html#72573bab7b99d99443b6173a7515ef0d"><span class="id" title="notation">^</span></a><a class="idref" href="mathcomp.algebra.poly.html#n"><span class="id" title="variable">n</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#b8b2ebc8e1a8b9aa935c0702efb5dccf"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#ncons"><span class="id" title="definition">ncons</span></a> <a class="idref" href="mathcomp.algebra.poly.html#n"><span class="id" title="variable">n</span></a> 0 <a class="idref" href="mathcomp.algebra.poly.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.ssreflect.seq.html#seq"><span class="id" title="abbreviation">seq</span></a> <a class="idref" href="mathcomp.algebra.poly.html#PolynomialTheory.R"><span class="id" title="variable">R</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="coefMXn"><span class="id" title="lemma">coefMXn</span></a> <span class="id" title="var">n</span> <span class="id" title="var">p</span> <span class="id" title="var">i</span> : <a class="idref" href="mathcomp.algebra.ssralg.html#82d810f9f90b79e8fe98d90a63070c32"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.poly.html#p"><span class="id" title="variable">p</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#2d0cfb150261028f4ebd2ba355623dcc"><span class="id" title="notation">×</span></a> <a class="idref" href="mathcomp.algebra.poly.html#72573bab7b99d99443b6173a7515ef0d"><span class="id" title="notation">'</span></a><a class="idref" href="mathcomp.algebra.poly.html#72573bab7b99d99443b6173a7515ef0d"><span class="id" title="notation">X</span></a><a class="idref" href="mathcomp.algebra.poly.html#72573bab7b99d99443b6173a7515ef0d"><span class="id" title="notation">^</span></a><a class="idref" href="mathcomp.algebra.poly.html#n"><span class="id" title="variable">n</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="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssreflect.html#00a1a5b58aac8f1e3f1abff064a39f9d"><span class="id" title="notation">if</span></a> <a class="idref" href="mathcomp.algebra.poly.html#i"><span class="id" title="variable">i</span></a> <a class="idref" href="mathcomp.ssreflect.ssrnat.html#00fe0eaf5e6949f0a31725357afa4bba"><span class="id" title="notation"><</span></a> <a class="idref" href="mathcomp.algebra.poly.html#n"><span class="id" title="variable">n</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> 0 <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.poly.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">_</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#82d810f9f90b79e8fe98d90a63070c32"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.poly.html#i"><span class="id" title="variable">i</span></a> <a class="idref" href="mathcomp.ssreflect.ssrnat.html#7825ccc99f23b0d30c9d40c317ba7af0"><span class="id" title="notation">-</span></a> <a class="idref" href="mathcomp.algebra.poly.html#n"><span class="id" title="variable">n</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#82d810f9f90b79e8fe98d90a63070c32"><span class="id" title="notation">)</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="coefXnM"><span class="id" title="lemma">coefXnM</span></a> <span class="id" title="var">n</span> <span class="id" title="var">p</span> <span class="id" title="var">i</span> : <a class="idref" href="mathcomp.algebra.ssralg.html#82d810f9f90b79e8fe98d90a63070c32"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.poly.html#72573bab7b99d99443b6173a7515ef0d"><span class="id" title="notation">'</span></a><a class="idref" href="mathcomp.algebra.poly.html#72573bab7b99d99443b6173a7515ef0d"><span class="id" title="notation">X</span></a><a class="idref" href="mathcomp.algebra.poly.html#72573bab7b99d99443b6173a7515ef0d"><span class="id" title="notation">^</span></a><a class="idref" href="mathcomp.algebra.poly.html#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.poly.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#6cd0f7b28b6092304087c7049437bb1a"><span class="id" title="notation">=</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssreflect.html#00a1a5b58aac8f1e3f1abff064a39f9d"><span class="id" title="notation">if</span></a> <a class="idref" href="mathcomp.algebra.poly.html#i"><span class="id" title="variable">i</span></a> <a class="idref" href="mathcomp.ssreflect.ssrnat.html#00fe0eaf5e6949f0a31725357afa4bba"><span class="id" title="notation"><</span></a> <a class="idref" href="mathcomp.algebra.poly.html#n"><span class="id" title="variable">n</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> 0 <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.poly.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">_</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#82d810f9f90b79e8fe98d90a63070c32"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.poly.html#i"><span class="id" title="variable">i</span></a> <a class="idref" href="mathcomp.ssreflect.ssrnat.html#7825ccc99f23b0d30c9d40c317ba7af0"><span class="id" title="notation">-</span></a> <a class="idref" href="mathcomp.algebra.poly.html#n"><span class="id" title="variable">n</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#82d810f9f90b79e8fe98d90a63070c32"><span class="id" title="notation">)</span></a>.<br/> - -<br/> -</div> - -<div class="doc"> - Expansion of a polynomial as an indexed sum -</div> -<div class="code"> -<span class="id" title="keyword">Lemma</span> <a name="poly_def"><span class="id" title="lemma">poly_def</span></a> <span class="id" title="var">n</span> <span class="id" title="var">E</span> : <a class="idref" href="mathcomp.algebra.poly.html#27fd9446e6d344308e4e6554f93d6b3b"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.algebra.poly.html#27fd9446e6d344308e4e6554f93d6b3b"><span class="id" title="notation">poly_</span></a><a class="idref" href="mathcomp.algebra.poly.html#27fd9446e6d344308e4e6554f93d6b3b"><span class="id" title="notation">(</span></a><span class="id" title="var">i</span> <a class="idref" href="mathcomp.algebra.poly.html#27fd9446e6d344308e4e6554f93d6b3b"><span class="id" title="notation"><</span></a> <a class="idref" href="mathcomp.algebra.poly.html#n"><span class="id" title="variable">n</span></a><a class="idref" href="mathcomp.algebra.poly.html#27fd9446e6d344308e4e6554f93d6b3b"><span class="id" title="notation">)</span></a> <a class="idref" href="mathcomp.algebra.poly.html#E"><span class="id" title="variable">E</span></a> <a class="idref" href="mathcomp.algebra.poly.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.ssralg.html#784f0af919f467115774be372bf0dbd7"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#784f0af919f467115774be372bf0dbd7"><span class="id" title="notation">sum_</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#784f0af919f467115774be372bf0dbd7"><span class="id" title="notation">(</span></a><span class="id" title="var">i</span> <a class="idref" href="mathcomp.algebra.ssralg.html#784f0af919f467115774be372bf0dbd7"><span class="id" title="notation"><</span></a> <a class="idref" href="mathcomp.algebra.poly.html#n"><span class="id" title="variable">n</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#784f0af919f467115774be372bf0dbd7"><span class="id" title="notation">)</span></a> <a class="idref" href="mathcomp.algebra.poly.html#E"><span class="id" title="variable">E</span></a> <a class="idref" href="mathcomp.algebra.poly.html#i"><span class="id" title="variable">i</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#3b05480e39db306e67fadbc79d394529"><span class="id" title="notation">*:</span></a> <a class="idref" href="mathcomp.algebra.poly.html#72573bab7b99d99443b6173a7515ef0d"><span class="id" title="notation">'</span></a><a class="idref" href="mathcomp.algebra.poly.html#72573bab7b99d99443b6173a7515ef0d"><span class="id" title="notation">X</span></a><a class="idref" href="mathcomp.algebra.poly.html#72573bab7b99d99443b6173a7515ef0d"><span class="id" title="notation">^</span></a><a class="idref" href="mathcomp.algebra.poly.html#i"><span class="id" title="variable">i</span></a>.<br/> - -<br/> -</div> - -<div class="doc"> - Monic predicate -</div> -<div class="code"> -<span class="id" title="keyword">Definition</span> <a name="monic"><span class="id" title="definition">monic</span></a> := <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#cf46cda2c22e9374494bc1749d37c1d7"><span class="id" title="notation">[</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#cf46cda2c22e9374494bc1749d37c1d7"><span class="id" title="notation">qualify</span></a> <span class="id" title="var">p</span> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#cf46cda2c22e9374494bc1749d37c1d7"><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> <a class="idref" href="mathcomp.algebra.poly.html#p"><span class="id" title="variable">p</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#df45e8c2e8370fd4f0f7c4fdaf208180"><span class="id" title="notation">==</span></a> 1<a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#cf46cda2c22e9374494bc1749d37c1d7"><span class="id" title="notation">]</span></a>.<br/> -<span class="id" title="keyword">Fact</span> <a name="monic_key"><span class="id" title="lemma">monic_key</span></a> : <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#pred_key"><span class="id" title="inductive">pred_key</span></a> <a class="idref" href="mathcomp.algebra.poly.html#monic"><span class="id" title="definition">monic</span></a>. <br/> -<span class="id" title="keyword">Canonical</span> <span class="id" title="var">monic_keyed</span> := <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#KeyedQualifier"><span class="id" title="definition">KeyedQualifier</span></a> <a class="idref" href="mathcomp.algebra.poly.html#monic_key"><span class="id" title="lemma">monic_key</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="monicE"><span class="id" title="lemma">monicE</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#6cd0f7b28b6092304087c7049437bb1a"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.poly.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#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.algebra.poly.html#lead_coef"><span class="id" title="definition">lead_coef</span></a> <a class="idref" href="mathcomp.algebra.poly.html#p"><span class="id" title="variable">p</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#df45e8c2e8370fd4f0f7c4fdaf208180"><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/> -<span class="id" title="keyword">Lemma</span> <a name="monicP"><span class="id" title="lemma">monicP</span></a> <span class="id" title="var">p</span> : <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#reflect"><span class="id" title="abbreviation">reflect</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.poly.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> 1) (<a class="idref" href="mathcomp.algebra.poly.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>).<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="monic1"><span class="id" title="lemma">monic1</span></a> : 1 <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/> -<span class="id" title="keyword">Lemma</span> <a name="monicX"><span class="id" title="lemma">monicX</span></a> : <a class="idref" href="mathcomp.algebra.poly.html#78f0b7e9c087664de9d653df6828ab64"><span class="id" title="notation">'</span></a><a class="idref" href="mathcomp.algebra.poly.html#78f0b7e9c087664de9d653df6828ab64"><span class="id" title="notation">X</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/> -<span class="id" title="keyword">Lemma</span> <a name="monicXn"><span class="id" title="lemma">monicXn</span></a> <span class="id" title="var">n</span> : <a class="idref" href="mathcomp.algebra.poly.html#72573bab7b99d99443b6173a7515ef0d"><span class="id" title="notation">'</span></a><a class="idref" href="mathcomp.algebra.poly.html#72573bab7b99d99443b6173a7515ef0d"><span class="id" title="notation">X</span></a><a class="idref" href="mathcomp.algebra.poly.html#72573bab7b99d99443b6173a7515ef0d"><span class="id" title="notation">^</span></a><a class="idref" href="mathcomp.algebra.poly.html#n"><span class="id" title="variable">n</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="monic_neq0"><span class="id" title="lemma">monic_neq0</span></a> <span class="id" title="var">p</span> : <a class="idref" href="mathcomp.algebra.poly.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#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.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="lead_coef_monicM"><span class="id" title="lemma">lead_coef_monicM</span></a> <span class="id" title="var">p</span> <span class="id" title="var">q</span> : <a class="idref" href="mathcomp.algebra.poly.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#lead_coef"><span class="id" title="definition">lead_coef</span></a> (<a class="idref" href="mathcomp.algebra.poly.html#p"><span class="id" title="variable">p</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#2d0cfb150261028f4ebd2ba355623dcc"><span class="id" title="notation">×</span></a> <a class="idref" href="mathcomp.algebra.poly.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.poly.html#lead_coef"><span class="id" title="definition">lead_coef</span></a> <a class="idref" href="mathcomp.algebra.poly.html#q"><span class="id" title="variable">q</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="lead_coef_Mmonic"><span class="id" title="lemma">lead_coef_Mmonic</span></a> <span class="id" title="var">p</span> <span class="id" title="var">q</span> : <a class="idref" href="mathcomp.algebra.poly.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.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#lead_coef"><span class="id" title="definition">lead_coef</span></a> (<a class="idref" href="mathcomp.algebra.poly.html#p"><span class="id" title="variable">p</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#2d0cfb150261028f4ebd2ba355623dcc"><span class="id" title="notation">×</span></a> <a class="idref" href="mathcomp.algebra.poly.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.poly.html#lead_coef"><span class="id" title="definition">lead_coef</span></a> <a class="idref" href="mathcomp.algebra.poly.html#p"><span class="id" title="variable">p</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="size_monicM"><span class="id" title="lemma">size_monicM</span></a> <span class="id" title="var">p</span> <span class="id" title="var">q</span> :<br/> - <a class="idref" href="mathcomp.algebra.poly.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#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> <a class="idref" href="mathcomp.ssreflect.seq.html#size"><span class="id" title="definition">size</span></a> (<a class="idref" href="mathcomp.algebra.poly.html#p"><span class="id" title="variable">p</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#2d0cfb150261028f4ebd2ba355623dcc"><span class="id" title="notation">×</span></a> <a class="idref" href="mathcomp.algebra.poly.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.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.poly.html#p"><span class="id" title="variable">p</span></a> <a class="idref" href="mathcomp.ssreflect.ssrnat.html#0dacc1786c5ba797d47dd85006231633"><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.poly.html#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>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="size_Mmonic"><span class="id" title="lemma">size_Mmonic</span></a> <span class="id" title="var">p</span> <span class="id" title="var">q</span> :<br/> - <a class="idref" href="mathcomp.algebra.poly.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#q"><span class="id" title="variable">q</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.ssreflect.seq.html#size"><span class="id" title="definition">size</span></a> (<a class="idref" href="mathcomp.algebra.poly.html#p"><span class="id" title="variable">p</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#2d0cfb150261028f4ebd2ba355623dcc"><span class="id" title="notation">×</span></a> <a class="idref" href="mathcomp.algebra.poly.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.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.poly.html#p"><span class="id" title="variable">p</span></a> <a class="idref" href="mathcomp.ssreflect.ssrnat.html#0dacc1786c5ba797d47dd85006231633"><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.poly.html#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>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="monicMl"><span class="id" title="lemma">monicMl</span></a> <span class="id" title="var">p</span> <span class="id" title="var">q</span> : <a class="idref" href="mathcomp.algebra.poly.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="http://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#p"><span class="id" title="variable">p</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#2d0cfb150261028f4ebd2ba355623dcc"><span class="id" title="notation">×</span></a> <a class="idref" href="mathcomp.algebra.poly.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.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#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.algebra.poly.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.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#6cd0f7b28b6092304087c7049437bb1a"><span class="id" title="notation">)</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="monicMr"><span class="id" title="lemma">monicMr</span></a> <span class="id" title="var">p</span> <span class="id" title="var">q</span> : <a class="idref" href="mathcomp.algebra.poly.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.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="http://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#p"><span class="id" title="variable">p</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#2d0cfb150261028f4ebd2ba355623dcc"><span class="id" title="notation">×</span></a> <a class="idref" href="mathcomp.algebra.poly.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.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#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.algebra.poly.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#6cd0f7b28b6092304087c7049437bb1a"><span class="id" title="notation">)</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Fact</span> <a name="monic_mulr_closed"><span class="id" title="lemma">monic_mulr_closed</span></a> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Pred.Exports.mulr_closed"><span class="id" title="abbreviation">mulr_closed</span></a> <a class="idref" href="mathcomp.algebra.poly.html#monic"><span class="id" title="definition">monic</span></a>.<br/> - <span class="id" title="keyword">Canonical</span> <span class="id" title="var">monic_mulrPred</span> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Pred.Exports.MulrPred"><span class="id" title="definition">MulrPred</span></a> <a class="idref" href="mathcomp.algebra.poly.html#monic_mulr_closed"><span class="id" title="lemma">monic_mulr_closed</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="monic_exp"><span class="id" title="lemma">monic_exp</span></a> <span class="id" title="var">p</span> <span class="id" title="var">n</span> : <a class="idref" href="mathcomp.algebra.poly.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#p"><span class="id" title="variable">p</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#663140372ac3b275aae871b74b140513"><span class="id" title="notation">^+</span></a> <a class="idref" href="mathcomp.algebra.poly.html#n"><span class="id" title="variable">n</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="monic_prod"><span class="id" title="lemma">monic_prod</span></a> <span class="id" title="var">I</span> <span class="id" title="var">rI</span> (<span class="id" title="var">P</span> : <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#pred"><span class="id" title="definition">pred</span></a> <a class="idref" href="mathcomp.algebra.poly.html#I"><span class="id" title="variable">I</span></a>) (<span class="id" title="var">F</span> : <a class="idref" href="mathcomp.algebra.poly.html#I"><span class="id" title="variable">I</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#1c93e43e07fbeaeb6a625cb6614beb5d"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.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.poly.html#PolynomialTheory.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#1c93e43e07fbeaeb6a625cb6614beb5d"><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.poly.html#P"><span class="id" title="variable">P</span></a> <a class="idref" href="mathcomp.algebra.poly.html#i"><span class="id" title="variable">i</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#1c93e43e07fbeaeb6a625cb6614beb5d"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.poly.html#F"><span class="id" title="variable">F</span></a> <a class="idref" href="mathcomp.algebra.poly.html#i"><span class="id" title="variable">i</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="http://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.ssralg.html#edca584f226f01d7a05a12e4ceba1caf"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#edca584f226f01d7a05a12e4ceba1caf"><span class="id" title="notation">prod_</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#edca584f226f01d7a05a12e4ceba1caf"><span class="id" title="notation">(</span></a><span class="id" title="var">i</span> <a class="idref" href="mathcomp.algebra.ssralg.html#edca584f226f01d7a05a12e4ceba1caf"><span class="id" title="notation"><-</span></a> <a class="idref" href="mathcomp.algebra.poly.html#rI"><span class="id" title="variable">rI</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#edca584f226f01d7a05a12e4ceba1caf"><span class="id" title="notation">|</span></a> <a class="idref" href="mathcomp.algebra.poly.html#P"><span class="id" title="variable">P</span></a> <a class="idref" href="mathcomp.algebra.poly.html#i"><span class="id" title="variable">i</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#edca584f226f01d7a05a12e4ceba1caf"><span class="id" title="notation">)</span></a> <a class="idref" href="mathcomp.algebra.poly.html#F"><span class="id" title="variable">F</span></a> <a class="idref" href="mathcomp.algebra.poly.html#i"><span class="id" title="variable">i</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="monicXsubC"><span class="id" title="lemma">monicXsubC</span></a> <span class="id" title="var">c</span> : <a class="idref" href="mathcomp.algebra.poly.html#78f0b7e9c087664de9d653df6828ab64"><span class="id" title="notation">'</span></a><a class="idref" href="mathcomp.algebra.poly.html#78f0b7e9c087664de9d653df6828ab64"><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.poly.html#c"><span class="id" title="variable">c</span></a><a class="idref" href="mathcomp.algebra.poly.html#728a2917ff59e46e3f0e4d98ed9ea172"><span class="id" title="notation">%:</span></a><a class="idref" href="mathcomp.algebra.poly.html#728a2917ff59e46e3f0e4d98ed9ea172"><span class="id" title="notation">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>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="monic_prod_XsubC"><span class="id" title="lemma">monic_prod_XsubC</span></a> <span class="id" title="var">I</span> <span class="id" title="var">rI</span> (<span class="id" title="var">P</span> : <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#pred"><span class="id" title="definition">pred</span></a> <a class="idref" href="mathcomp.algebra.poly.html#I"><span class="id" title="variable">I</span></a>) (<span class="id" title="var">F</span> : <a class="idref" href="mathcomp.algebra.poly.html#I"><span class="id" title="variable">I</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#1c93e43e07fbeaeb6a625cb6614beb5d"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.poly.html#PolynomialTheory.R"><span class="id" title="variable">R</span></a>) :<br/> - <a class="idref" href="mathcomp.algebra.ssralg.html#edca584f226f01d7a05a12e4ceba1caf"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#edca584f226f01d7a05a12e4ceba1caf"><span class="id" title="notation">prod_</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#edca584f226f01d7a05a12e4ceba1caf"><span class="id" title="notation">(</span></a><span class="id" title="var">i</span> <a class="idref" href="mathcomp.algebra.ssralg.html#edca584f226f01d7a05a12e4ceba1caf"><span class="id" title="notation"><-</span></a> <a class="idref" href="mathcomp.algebra.poly.html#rI"><span class="id" title="variable">rI</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#edca584f226f01d7a05a12e4ceba1caf"><span class="id" title="notation">|</span></a> <a class="idref" href="mathcomp.algebra.poly.html#P"><span class="id" title="variable">P</span></a> <a class="idref" href="mathcomp.algebra.poly.html#i"><span class="id" title="variable">i</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#edca584f226f01d7a05a12e4ceba1caf"><span class="id" title="notation">)</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#edca584f226f01d7a05a12e4ceba1caf"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.poly.html#78f0b7e9c087664de9d653df6828ab64"><span class="id" title="notation">'</span></a><a class="idref" href="mathcomp.algebra.poly.html#78f0b7e9c087664de9d653df6828ab64"><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.poly.html#728a2917ff59e46e3f0e4d98ed9ea172"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.poly.html#F"><span class="id" title="variable">F</span></a> <a class="idref" href="mathcomp.algebra.poly.html#i"><span class="id" title="variable">i</span></a><a class="idref" href="mathcomp.algebra.poly.html#728a2917ff59e46e3f0e4d98ed9ea172"><span class="id" title="notation">)%:</span></a><a class="idref" href="mathcomp.algebra.poly.html#728a2917ff59e46e3f0e4d98ed9ea172"><span class="id" title="notation">P</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#edca584f226f01d7a05a12e4ceba1caf"><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">\</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_prod_XsubC"><span class="id" title="lemma">size_prod_XsubC</span></a> <span class="id" title="var">I</span> <span class="id" title="var">rI</span> (<span class="id" title="var">F</span> : <a class="idref" href="mathcomp.algebra.poly.html#I"><span class="id" title="variable">I</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#1c93e43e07fbeaeb6a625cb6614beb5d"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.poly.html#PolynomialTheory.R"><span class="id" title="variable">R</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.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">i</span> <a class="idref" href="mathcomp.algebra.ssralg.html#20f16c1d55d1e4ca9bb0e0513dd4b06a"><span class="id" title="notation"><-</span></a> <a class="idref" href="mathcomp.algebra.poly.html#rI"><span class="id" title="variable">rI</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#78f0b7e9c087664de9d653df6828ab64"><span class="id" title="notation">'</span></a><a class="idref" href="mathcomp.algebra.poly.html#78f0b7e9c087664de9d653df6828ab64"><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.poly.html#728a2917ff59e46e3f0e4d98ed9ea172"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.poly.html#F"><span class="id" title="variable">F</span></a> <a class="idref" href="mathcomp.algebra.poly.html#i"><span class="id" title="variable">i</span></a><a class="idref" href="mathcomp.algebra.poly.html#728a2917ff59e46e3f0e4d98ed9ea172"><span class="id" title="notation">)%:</span></a><a class="idref" href="mathcomp.algebra.poly.html#728a2917ff59e46e3f0e4d98ed9ea172"><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="http://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.ssrnat.html#bda89d73ec4a8f23ae92b565ffb5aaa6"><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.poly.html#rI"><span class="id" title="variable">rI</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="size_exp_XsubC"><span class="id" title="lemma">size_exp_XsubC</span></a> <span class="id" title="var">n</span> <span class="id" title="var">a</span> : <a class="idref" href="mathcomp.ssreflect.seq.html#size"><span class="id" title="definition">size</span></a> (<a class="idref" href="mathcomp.algebra.ssralg.html#663140372ac3b275aae871b74b140513"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.poly.html#78f0b7e9c087664de9d653df6828ab64"><span class="id" title="notation">'</span></a><a class="idref" href="mathcomp.algebra.poly.html#78f0b7e9c087664de9d653df6828ab64"><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.poly.html#a"><span class="id" title="variable">a</span></a><a class="idref" href="mathcomp.algebra.poly.html#728a2917ff59e46e3f0e4d98ed9ea172"><span class="id" title="notation">%:</span></a><a class="idref" href="mathcomp.algebra.poly.html#728a2917ff59e46e3f0e4d98ed9ea172"><span class="id" title="notation">P</span></a><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.poly.html#n"><span class="id" title="variable">n</span></a>) <a class="idref" href="http://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#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/> -</div> - -<div class="doc"> - Some facts about regular elements. -</div> -<div class="code"> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="lreg_lead"><span class="id" title="lemma">lreg_lead</span></a> <span class="id" title="var">p</span> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.lreg"><span class="id" title="definition">GRing.lreg</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.poly.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#1c93e43e07fbeaeb6a625cb6614beb5d"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.lreg"><span class="id" title="definition">GRing.lreg</span></a> <a class="idref" href="mathcomp.algebra.poly.html#p"><span class="id" title="variable">p</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="rreg_lead"><span class="id" title="lemma">rreg_lead</span></a> <span class="id" title="var">p</span> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.rreg"><span class="id" title="definition">GRing.rreg</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.poly.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#1c93e43e07fbeaeb6a625cb6614beb5d"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.rreg"><span class="id" title="definition">GRing.rreg</span></a> <a class="idref" href="mathcomp.algebra.poly.html#p"><span class="id" title="variable">p</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="lreg_lead0"><span class="id" title="lemma">lreg_lead0</span></a> <span class="id" title="var">p</span> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.lreg"><span class="id" title="definition">GRing.lreg</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.poly.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#1c93e43e07fbeaeb6a625cb6614beb5d"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.poly.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.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="rreg_lead0"><span class="id" title="lemma">rreg_lead0</span></a> <span class="id" title="var">p</span> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.rreg"><span class="id" title="definition">GRing.rreg</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.poly.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#1c93e43e07fbeaeb6a625cb6614beb5d"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.poly.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.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="lreg_size"><span class="id" title="lemma">lreg_size</span></a> <span class="id" title="var">c</span> <span class="id" title="var">p</span> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.lreg"><span class="id" title="definition">GRing.lreg</span></a> <a class="idref" href="mathcomp.algebra.poly.html#c"><span class="id" title="variable">c</span></a> <a class="idref" href="http://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.poly.html#c"><span class="id" title="variable">c</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#3b05480e39db306e67fadbc79d394529"><span class="id" title="notation">*:</span></a> <a class="idref" href="mathcomp.algebra.poly.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.ssreflect.seq.html#size"><span class="id" title="definition">size</span></a> <a class="idref" href="mathcomp.algebra.poly.html#p"><span class="id" title="variable">p</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="lreg_polyZ_eq0"><span class="id" title="lemma">lreg_polyZ_eq0</span></a> <span class="id" title="var">c</span> <span class="id" title="var">p</span> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.lreg"><span class="id" title="definition">GRing.lreg</span></a> <a class="idref" href="mathcomp.algebra.poly.html#c"><span class="id" title="variable">c</span></a> <a class="idref" href="http://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#6cd0f7b28b6092304087c7049437bb1a"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.poly.html#c"><span class="id" title="variable">c</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#3b05480e39db306e67fadbc79d394529"><span class="id" title="notation">*:</span></a> <a class="idref" href="mathcomp.algebra.poly.html#p"><span class="id" title="variable">p</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.algebra.poly.html#p"><span class="id" title="variable">p</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>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="lead_coef_lreg"><span class="id" title="lemma">lead_coef_lreg</span></a> <span class="id" title="var">c</span> <span class="id" title="var">p</span> :<br/> - <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.lreg"><span class="id" title="definition">GRing.lreg</span></a> <a class="idref" href="mathcomp.algebra.poly.html#c"><span class="id" title="variable">c</span></a> <a class="idref" href="http://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#lead_coef"><span class="id" title="definition">lead_coef</span></a> (<a class="idref" href="mathcomp.algebra.poly.html#c"><span class="id" title="variable">c</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#3b05480e39db306e67fadbc79d394529"><span class="id" title="notation">*:</span></a> <a class="idref" href="mathcomp.algebra.poly.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.poly.html#c"><span class="id" title="variable">c</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#2d0cfb150261028f4ebd2ba355623dcc"><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> <a class="idref" href="mathcomp.algebra.poly.html#p"><span class="id" title="variable">p</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="rreg_size"><span class="id" title="lemma">rreg_size</span></a> <span class="id" title="var">c</span> <span class="id" title="var">p</span> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.rreg"><span class="id" title="definition">GRing.rreg</span></a> <a class="idref" href="mathcomp.algebra.poly.html#c"><span class="id" title="variable">c</span></a> <a class="idref" href="http://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.poly.html#p"><span class="id" title="variable">p</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#2d0cfb150261028f4ebd2ba355623dcc"><span class="id" title="notation">×</span></a> <a class="idref" href="mathcomp.algebra.poly.html#c"><span class="id" title="variable">c</span></a><a class="idref" href="mathcomp.algebra.poly.html#728a2917ff59e46e3f0e4d98ed9ea172"><span class="id" title="notation">%:</span></a><a class="idref" href="mathcomp.algebra.poly.html#728a2917ff59e46e3f0e4d98ed9ea172"><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.ssreflect.seq.html#size"><span class="id" title="definition">size</span></a> <a class="idref" href="mathcomp.algebra.poly.html#p"><span class="id" title="variable">p</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="rreg_polyMC_eq0"><span class="id" title="lemma">rreg_polyMC_eq0</span></a> <span class="id" title="var">c</span> <span class="id" title="var">p</span> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.rreg"><span class="id" title="definition">GRing.rreg</span></a> <a class="idref" href="mathcomp.algebra.poly.html#c"><span class="id" title="variable">c</span></a> <a class="idref" href="http://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#6cd0f7b28b6092304087c7049437bb1a"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.poly.html#p"><span class="id" title="variable">p</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#2d0cfb150261028f4ebd2ba355623dcc"><span class="id" title="notation">×</span></a> <a class="idref" href="mathcomp.algebra.poly.html#c"><span class="id" title="variable">c</span></a><a class="idref" href="mathcomp.algebra.poly.html#728a2917ff59e46e3f0e4d98ed9ea172"><span class="id" title="notation">%:</span></a><a class="idref" href="mathcomp.algebra.poly.html#728a2917ff59e46e3f0e4d98ed9ea172"><span class="id" title="notation">P</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.algebra.poly.html#p"><span class="id" title="variable">p</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>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="rreg_div0"><span class="id" title="lemma">rreg_div0</span></a> <span class="id" title="var">q</span> <span class="id" title="var">r</span> <span class="id" title="var">d</span> :<br/> - <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.rreg"><span class="id" title="definition">GRing.rreg</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.poly.html#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.ssreflect.seq.html#size"><span class="id" title="definition">size</span></a> <a class="idref" href="mathcomp.algebra.poly.html#r"><span class="id" title="variable">r</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.poly.html#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><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.poly.html#q"><span class="id" title="variable">q</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#2d0cfb150261028f4ebd2ba355623dcc"><span class="id" title="notation">×</span></a> <a class="idref" href="mathcomp.algebra.poly.html#d"><span class="id" title="variable">d</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#c7f78cf1f6a5e4f664654f7d671ca752"><span class="id" title="notation">+</span></a> <a class="idref" href="mathcomp.algebra.poly.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<a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#6cd0f7b28b6092304087c7049437bb1a"><span class="id" title="notation">)</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#6cd0f7b28b6092304087c7049437bb1a"><span class="id" title="notation">=</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Datatypes.html#9ddeac0ab66152bd1d64bedb507a795e"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.poly.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.Datatypes.html#9ddeac0ab66152bd1d64bedb507a795e"><span class="id" title="notation">)</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Datatypes.html#9ddeac0ab66152bd1d64bedb507a795e"><span class="id" title="notation">&&</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Datatypes.html#9ddeac0ab66152bd1d64bedb507a795e"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.poly.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<a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Datatypes.html#9ddeac0ab66152bd1d64bedb507a795e"><span class="id" title="notation">)</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="monic_comreg"><span class="id" title="lemma">monic_comreg</span></a> <span class="id" title="var">p</span> :<br/> - <a class="idref" href="mathcomp.algebra.poly.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.ssralg.html#GRing.comm"><span class="id" title="definition">GRing.comm</span></a> <a class="idref" href="mathcomp.algebra.poly.html#p"><span class="id" title="variable">p</span></a> <a class="idref" href="mathcomp.algebra.poly.html#728a2917ff59e46e3f0e4d98ed9ea172"><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> <a class="idref" href="mathcomp.algebra.poly.html#p"><span class="id" title="variable">p</span></a><a class="idref" href="mathcomp.algebra.poly.html#728a2917ff59e46e3f0e4d98ed9ea172"><span class="id" title="notation">)%:</span></a><a class="idref" href="mathcomp.algebra.poly.html#728a2917ff59e46e3f0e4d98ed9ea172"><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#ba2b0e492d2b4675a0acf3ea92aabadd"><span class="id" title="notation">∧</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.rreg"><span class="id" title="definition">GRing.rreg</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.poly.html#p"><span class="id" title="variable">p</span></a>).<br/> - -<br/> -</div> - -<div class="doc"> - Horner evaluation of polynomials -</div> -<div class="code"> -<span class="id" title="keyword">Implicit</span> <span class="id" title="keyword">Types</span> <span class="id" title="var">s</span> <span class="id" title="var">rs</span> : <a class="idref" href="mathcomp.ssreflect.seq.html#seq"><span class="id" title="abbreviation">seq</span></a> <a class="idref" href="mathcomp.algebra.poly.html#PolynomialTheory.R"><span class="id" title="variable">R</span></a>.<br/> -<span class="id" title="keyword">Fixpoint</span> <a name="horner_rec"><span class="id" title="definition">horner_rec</span></a> <span class="id" title="var">s</span> <span class="id" title="var">x</span> := <span class="id" title="keyword">if</span> <a class="idref" href="mathcomp.algebra.poly.html#s"><span class="id" title="variable">s</span></a> <span class="id" title="keyword">is</span> <span class="id" title="var">a</span> <a class="idref" href="mathcomp.ssreflect.seq.html#407cde5b61fbf27196d1a7c5a475e083"><span class="id" title="notation">::</span></a> <span class="id" title="var">s'</span> <span class="id" title="keyword">then</span> <a class="idref" href="mathcomp.algebra.poly.html#horner_rec"><span class="id" title="definition">horner_rec</span></a> <span class="id" title="var">s'</span> <a class="idref" href="mathcomp.algebra.poly.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.poly.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> <span class="id" title="var">a</span> <span class="id" title="keyword">else</span> 0.<br/> -<span class="id" title="keyword">Definition</span> <a name="horner"><span class="id" title="definition">horner</span></a> <span class="id" title="var">p</span> := <a class="idref" href="mathcomp.algebra.poly.html#horner_rec"><span class="id" title="definition">horner_rec</span></a> <a class="idref" href="mathcomp.algebra.poly.html#p"><span class="id" title="variable">p</span></a>.<br/> - -<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="horner0"><span class="id" title="lemma">horner0</span></a> <span class="id" title="var">x</span> : <a class="idref" href="mathcomp.algebra.poly.html#03fafeca1d8bb8af3cc89a1830d3996b"><span class="id" title="notation">(</span></a>0 <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.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.poly.html#PolynomialTheory.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.poly.html#03fafeca1d8bb8af3cc89a1830d3996b"><span class="id" title="notation">).[</span></a><a class="idref" href="mathcomp.algebra.poly.html#x"><span class="id" title="variable">x</span></a><a class="idref" href="mathcomp.algebra.poly.html#03fafeca1d8bb8af3cc89a1830d3996b"><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> 0.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="hornerC"><span class="id" title="lemma">hornerC</span></a> <span class="id" title="var">c</span> <span class="id" title="var">x</span> : <a class="idref" href="mathcomp.algebra.poly.html#03fafeca1d8bb8af3cc89a1830d3996b"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.poly.html#c"><span class="id" title="variable">c</span></a><a class="idref" href="mathcomp.algebra.poly.html#728a2917ff59e46e3f0e4d98ed9ea172"><span class="id" title="notation">%:</span></a><a class="idref" href="mathcomp.algebra.poly.html#728a2917ff59e46e3f0e4d98ed9ea172"><span class="id" title="notation">P</span></a><a class="idref" href="mathcomp.algebra.poly.html#03fafeca1d8bb8af3cc89a1830d3996b"><span class="id" title="notation">).[</span></a><a class="idref" href="mathcomp.algebra.poly.html#x"><span class="id" title="variable">x</span></a><a class="idref" href="mathcomp.algebra.poly.html#03fafeca1d8bb8af3cc89a1830d3996b"><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.poly.html#c"><span class="id" title="variable">c</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="hornerX"><span class="id" title="lemma">hornerX</span></a> <span class="id" title="var">x</span> : <a class="idref" href="mathcomp.algebra.poly.html#78f0b7e9c087664de9d653df6828ab64"><span class="id" title="notation">'</span></a><a class="idref" href="mathcomp.algebra.poly.html#78f0b7e9c087664de9d653df6828ab64"><span class="id" title="notation">X</span></a><a class="idref" href="mathcomp.algebra.poly.html#03fafeca1d8bb8af3cc89a1830d3996b"><span class="id" title="notation">.[</span></a><a class="idref" href="mathcomp.algebra.poly.html#x"><span class="id" title="variable">x</span></a><a class="idref" href="mathcomp.algebra.poly.html#03fafeca1d8bb8af3cc89a1830d3996b"><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.poly.html#x"><span class="id" title="variable">x</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="horner_cons"><span class="id" title="lemma">horner_cons</span></a> <span class="id" title="var">p</span> <span class="id" title="var">c</span> <span class="id" title="var">x</span> : <a class="idref" href="mathcomp.algebra.poly.html#03fafeca1d8bb8af3cc89a1830d3996b"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.poly.html#cons_poly"><span class="id" title="definition">cons_poly</span></a> <a class="idref" href="mathcomp.algebra.poly.html#c"><span class="id" title="variable">c</span></a> <a class="idref" href="mathcomp.algebra.poly.html#p"><span class="id" title="variable">p</span></a><a class="idref" href="mathcomp.algebra.poly.html#03fafeca1d8bb8af3cc89a1830d3996b"><span class="id" title="notation">).[</span></a><a class="idref" href="mathcomp.algebra.poly.html#x"><span class="id" title="variable">x</span></a><a class="idref" href="mathcomp.algebra.poly.html#03fafeca1d8bb8af3cc89a1830d3996b"><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.poly.html#p"><span class="id" title="variable">p</span></a><a class="idref" href="mathcomp.algebra.poly.html#03fafeca1d8bb8af3cc89a1830d3996b"><span class="id" title="notation">.[</span></a><a class="idref" href="mathcomp.algebra.poly.html#x"><span class="id" title="variable">x</span></a><a class="idref" href="mathcomp.algebra.poly.html#03fafeca1d8bb8af3cc89a1830d3996b"><span class="id" title="notation">]</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#2d0cfb150261028f4ebd2ba355623dcc"><span class="id" title="notation">×</span></a> <a class="idref" href="mathcomp.algebra.poly.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.poly.html#c"><span class="id" title="variable">c</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="horner_coef0"><span class="id" title="lemma">horner_coef0</span></a> <span class="id" title="var">p</span> : <a class="idref" href="mathcomp.algebra.poly.html#p"><span class="id" title="variable">p</span></a><a class="idref" href="mathcomp.algebra.poly.html#03fafeca1d8bb8af3cc89a1830d3996b"><span class="id" title="notation">.[</span></a>0<a class="idref" href="mathcomp.algebra.poly.html#03fafeca1d8bb8af3cc89a1830d3996b"><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.poly.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">_0</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="hornerMXaddC"><span class="id" title="lemma">hornerMXaddC</span></a> <span class="id" title="var">p</span> <span class="id" title="var">c</span> <span class="id" title="var">x</span> : <a class="idref" href="mathcomp.algebra.poly.html#03fafeca1d8bb8af3cc89a1830d3996b"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.poly.html#p"><span class="id" title="variable">p</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#2d0cfb150261028f4ebd2ba355623dcc"><span class="id" title="notation">×</span></a> <a class="idref" href="mathcomp.algebra.poly.html#78f0b7e9c087664de9d653df6828ab64"><span class="id" title="notation">'</span></a><a class="idref" href="mathcomp.algebra.poly.html#78f0b7e9c087664de9d653df6828ab64"><span class="id" title="notation">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.poly.html#c"><span class="id" title="variable">c</span></a><a class="idref" href="mathcomp.algebra.poly.html#728a2917ff59e46e3f0e4d98ed9ea172"><span class="id" title="notation">%:</span></a><a class="idref" href="mathcomp.algebra.poly.html#728a2917ff59e46e3f0e4d98ed9ea172"><span class="id" title="notation">P</span></a><a class="idref" href="mathcomp.algebra.poly.html#03fafeca1d8bb8af3cc89a1830d3996b"><span class="id" title="notation">).[</span></a><a class="idref" href="mathcomp.algebra.poly.html#x"><span class="id" title="variable">x</span></a><a class="idref" href="mathcomp.algebra.poly.html#03fafeca1d8bb8af3cc89a1830d3996b"><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.poly.html#p"><span class="id" title="variable">p</span></a><a class="idref" href="mathcomp.algebra.poly.html#03fafeca1d8bb8af3cc89a1830d3996b"><span class="id" title="notation">.[</span></a><a class="idref" href="mathcomp.algebra.poly.html#x"><span class="id" title="variable">x</span></a><a class="idref" href="mathcomp.algebra.poly.html#03fafeca1d8bb8af3cc89a1830d3996b"><span class="id" title="notation">]</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#2d0cfb150261028f4ebd2ba355623dcc"><span class="id" title="notation">×</span></a> <a class="idref" href="mathcomp.algebra.poly.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.poly.html#c"><span class="id" title="variable">c</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="hornerMX"><span class="id" title="lemma">hornerMX</span></a> <span class="id" title="var">p</span> <span class="id" title="var">x</span> : <a class="idref" href="mathcomp.algebra.poly.html#03fafeca1d8bb8af3cc89a1830d3996b"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.poly.html#p"><span class="id" title="variable">p</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#2d0cfb150261028f4ebd2ba355623dcc"><span class="id" title="notation">×</span></a> <a class="idref" href="mathcomp.algebra.poly.html#78f0b7e9c087664de9d653df6828ab64"><span class="id" title="notation">'</span></a><a class="idref" href="mathcomp.algebra.poly.html#78f0b7e9c087664de9d653df6828ab64"><span class="id" title="notation">X</span></a><a class="idref" href="mathcomp.algebra.poly.html#03fafeca1d8bb8af3cc89a1830d3996b"><span class="id" title="notation">).[</span></a><a class="idref" href="mathcomp.algebra.poly.html#x"><span class="id" title="variable">x</span></a><a class="idref" href="mathcomp.algebra.poly.html#03fafeca1d8bb8af3cc89a1830d3996b"><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.poly.html#p"><span class="id" title="variable">p</span></a><a class="idref" href="mathcomp.algebra.poly.html#03fafeca1d8bb8af3cc89a1830d3996b"><span class="id" title="notation">.[</span></a><a class="idref" href="mathcomp.algebra.poly.html#x"><span class="id" title="variable">x</span></a><a class="idref" href="mathcomp.algebra.poly.html#03fafeca1d8bb8af3cc89a1830d3996b"><span class="id" title="notation">]</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#2d0cfb150261028f4ebd2ba355623dcc"><span class="id" title="notation">×</span></a> <a class="idref" href="mathcomp.algebra.poly.html#x"><span class="id" title="variable">x</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="horner_Poly"><span class="id" title="lemma">horner_Poly</span></a> <span class="id" title="var">s</span> <span class="id" title="var">x</span> : <a class="idref" href="mathcomp.algebra.poly.html#03fafeca1d8bb8af3cc89a1830d3996b"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.poly.html#Poly"><span class="id" title="definition">Poly</span></a> <a class="idref" href="mathcomp.algebra.poly.html#s"><span class="id" title="variable">s</span></a><a class="idref" href="mathcomp.algebra.poly.html#03fafeca1d8bb8af3cc89a1830d3996b"><span class="id" title="notation">).[</span></a><a class="idref" href="mathcomp.algebra.poly.html#x"><span class="id" title="variable">x</span></a><a class="idref" href="mathcomp.algebra.poly.html#03fafeca1d8bb8af3cc89a1830d3996b"><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.poly.html#horner_rec"><span class="id" title="definition">horner_rec</span></a> <a class="idref" href="mathcomp.algebra.poly.html#s"><span class="id" title="variable">s</span></a> <a class="idref" href="mathcomp.algebra.poly.html#x"><span class="id" title="variable">x</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="horner_coef"><span class="id" title="lemma">horner_coef</span></a> <span class="id" title="var">p</span> <span class="id" title="var">x</span> : <a class="idref" href="mathcomp.algebra.poly.html#p"><span class="id" title="variable">p</span></a><a class="idref" href="mathcomp.algebra.poly.html#03fafeca1d8bb8af3cc89a1830d3996b"><span class="id" title="notation">.[</span></a><a class="idref" href="mathcomp.algebra.poly.html#x"><span class="id" title="variable">x</span></a><a class="idref" href="mathcomp.algebra.poly.html#03fafeca1d8bb8af3cc89a1830d3996b"><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.ssralg.html#784f0af919f467115774be372bf0dbd7"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#784f0af919f467115774be372bf0dbd7"><span class="id" title="notation">sum_</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#784f0af919f467115774be372bf0dbd7"><span class="id" title="notation">(</span></a><span class="id" title="var">i</span> <a class="idref" href="mathcomp.algebra.ssralg.html#784f0af919f467115774be372bf0dbd7"><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.poly.html#p"><span class="id" title="variable">p</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#784f0af919f467115774be372bf0dbd7"><span class="id" title="notation">)</span></a> <a class="idref" href="mathcomp.algebra.poly.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="mathcomp.algebra.ssralg.html#2d0cfb150261028f4ebd2ba355623dcc"><span class="id" title="notation">×</span></a> <a class="idref" href="mathcomp.algebra.poly.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#663140372ac3b275aae871b74b140513"><span class="id" title="notation">^+</span></a> <a class="idref" href="mathcomp.algebra.poly.html#i"><span class="id" title="variable">i</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="horner_coef_wide"><span class="id" title="lemma">horner_coef_wide</span></a> <span class="id" title="var">n</span> <span class="id" title="var">p</span> <span class="id" title="var">x</span> :<br/> - <a class="idref" href="mathcomp.ssreflect.seq.html#size"><span class="id" title="definition">size</span></a> <a class="idref" href="mathcomp.algebra.poly.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.poly.html#n"><span class="id" title="variable">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#p"><span class="id" title="variable">p</span></a><a class="idref" href="mathcomp.algebra.poly.html#03fafeca1d8bb8af3cc89a1830d3996b"><span class="id" title="notation">.[</span></a><a class="idref" href="mathcomp.algebra.poly.html#x"><span class="id" title="variable">x</span></a><a class="idref" href="mathcomp.algebra.poly.html#03fafeca1d8bb8af3cc89a1830d3996b"><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.ssralg.html#784f0af919f467115774be372bf0dbd7"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#784f0af919f467115774be372bf0dbd7"><span class="id" title="notation">sum_</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#784f0af919f467115774be372bf0dbd7"><span class="id" title="notation">(</span></a><span class="id" title="var">i</span> <a class="idref" href="mathcomp.algebra.ssralg.html#784f0af919f467115774be372bf0dbd7"><span class="id" title="notation"><</span></a> <a class="idref" href="mathcomp.algebra.poly.html#n"><span class="id" title="variable">n</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#784f0af919f467115774be372bf0dbd7"><span class="id" title="notation">)</span></a> <a class="idref" href="mathcomp.algebra.poly.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="mathcomp.algebra.ssralg.html#2d0cfb150261028f4ebd2ba355623dcc"><span class="id" title="notation">×</span></a> <a class="idref" href="mathcomp.algebra.poly.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#663140372ac3b275aae871b74b140513"><span class="id" title="notation">^+</span></a> <a class="idref" href="mathcomp.algebra.poly.html#i"><span class="id" title="variable">i</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="horner_poly"><span class="id" title="lemma">horner_poly</span></a> <span class="id" title="var">n</span> <span class="id" title="var">E</span> <span class="id" title="var">x</span> : <a class="idref" href="mathcomp.algebra.poly.html#03fafeca1d8bb8af3cc89a1830d3996b"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.poly.html#27fd9446e6d344308e4e6554f93d6b3b"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.algebra.poly.html#27fd9446e6d344308e4e6554f93d6b3b"><span class="id" title="notation">poly_</span></a><a class="idref" href="mathcomp.algebra.poly.html#27fd9446e6d344308e4e6554f93d6b3b"><span class="id" title="notation">(</span></a><span class="id" title="var">i</span> <a class="idref" href="mathcomp.algebra.poly.html#27fd9446e6d344308e4e6554f93d6b3b"><span class="id" title="notation"><</span></a> <a class="idref" href="mathcomp.algebra.poly.html#n"><span class="id" title="variable">n</span></a><a class="idref" href="mathcomp.algebra.poly.html#27fd9446e6d344308e4e6554f93d6b3b"><span class="id" title="notation">)</span></a> <a class="idref" href="mathcomp.algebra.poly.html#E"><span class="id" title="variable">E</span></a> <a class="idref" href="mathcomp.algebra.poly.html#i"><span class="id" title="variable">i</span></a><a class="idref" href="mathcomp.algebra.poly.html#03fafeca1d8bb8af3cc89a1830d3996b"><span class="id" title="notation">).[</span></a><a class="idref" href="mathcomp.algebra.poly.html#x"><span class="id" title="variable">x</span></a><a class="idref" href="mathcomp.algebra.poly.html#03fafeca1d8bb8af3cc89a1830d3996b"><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.ssralg.html#784f0af919f467115774be372bf0dbd7"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#784f0af919f467115774be372bf0dbd7"><span class="id" title="notation">sum_</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#784f0af919f467115774be372bf0dbd7"><span class="id" title="notation">(</span></a><span class="id" title="var">i</span> <a class="idref" href="mathcomp.algebra.ssralg.html#784f0af919f467115774be372bf0dbd7"><span class="id" title="notation"><</span></a> <a class="idref" href="mathcomp.algebra.poly.html#n"><span class="id" title="variable">n</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#784f0af919f467115774be372bf0dbd7"><span class="id" title="notation">)</span></a> <a class="idref" href="mathcomp.algebra.poly.html#E"><span class="id" title="variable">E</span></a> <a class="idref" href="mathcomp.algebra.poly.html#i"><span class="id" title="variable">i</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#2d0cfb150261028f4ebd2ba355623dcc"><span class="id" title="notation">×</span></a> <a class="idref" href="mathcomp.algebra.poly.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#663140372ac3b275aae871b74b140513"><span class="id" title="notation">^+</span></a> <a class="idref" href="mathcomp.algebra.poly.html#i"><span class="id" title="variable">i</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="hornerN"><span class="id" title="lemma">hornerN</span></a> <span class="id" title="var">p</span> <span class="id" title="var">x</span> : <a class="idref" href="mathcomp.algebra.poly.html#03fafeca1d8bb8af3cc89a1830d3996b"><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.poly.html#p"><span class="id" title="variable">p</span></a><a class="idref" href="mathcomp.algebra.poly.html#03fafeca1d8bb8af3cc89a1830d3996b"><span class="id" title="notation">).[</span></a><a class="idref" href="mathcomp.algebra.poly.html#x"><span class="id" title="variable">x</span></a><a class="idref" href="mathcomp.algebra.poly.html#03fafeca1d8bb8af3cc89a1830d3996b"><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.ssralg.html#8d0566c961139ec21811f52ef0c317db"><span class="id" title="notation">-</span></a> <a class="idref" href="mathcomp.algebra.poly.html#p"><span class="id" title="variable">p</span></a><a class="idref" href="mathcomp.algebra.poly.html#03fafeca1d8bb8af3cc89a1830d3996b"><span class="id" title="notation">.[</span></a><a class="idref" href="mathcomp.algebra.poly.html#x"><span class="id" title="variable">x</span></a><a class="idref" href="mathcomp.algebra.poly.html#03fafeca1d8bb8af3cc89a1830d3996b"><span class="id" title="notation">]</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="hornerD"><span class="id" title="lemma">hornerD</span></a> <span class="id" title="var">p</span> <span class="id" title="var">q</span> <span class="id" title="var">x</span> : <a class="idref" href="mathcomp.algebra.poly.html#03fafeca1d8bb8af3cc89a1830d3996b"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.poly.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.poly.html#q"><span class="id" title="variable">q</span></a><a class="idref" href="mathcomp.algebra.poly.html#03fafeca1d8bb8af3cc89a1830d3996b"><span class="id" title="notation">).[</span></a><a class="idref" href="mathcomp.algebra.poly.html#x"><span class="id" title="variable">x</span></a><a class="idref" href="mathcomp.algebra.poly.html#03fafeca1d8bb8af3cc89a1830d3996b"><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.poly.html#p"><span class="id" title="variable">p</span></a><a class="idref" href="mathcomp.algebra.poly.html#03fafeca1d8bb8af3cc89a1830d3996b"><span class="id" title="notation">.[</span></a><a class="idref" href="mathcomp.algebra.poly.html#x"><span class="id" title="variable">x</span></a><a class="idref" href="mathcomp.algebra.poly.html#03fafeca1d8bb8af3cc89a1830d3996b"><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.poly.html#q"><span class="id" title="variable">q</span></a><a class="idref" href="mathcomp.algebra.poly.html#03fafeca1d8bb8af3cc89a1830d3996b"><span class="id" title="notation">.[</span></a><a class="idref" href="mathcomp.algebra.poly.html#x"><span class="id" title="variable">x</span></a><a class="idref" href="mathcomp.algebra.poly.html#03fafeca1d8bb8af3cc89a1830d3996b"><span class="id" title="notation">]</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="hornerXsubC"><span class="id" title="lemma">hornerXsubC</span></a> <span class="id" title="var">a</span> <span class="id" title="var">x</span> : <a class="idref" href="mathcomp.algebra.poly.html#03fafeca1d8bb8af3cc89a1830d3996b"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.poly.html#78f0b7e9c087664de9d653df6828ab64"><span class="id" title="notation">'</span></a><a class="idref" href="mathcomp.algebra.poly.html#78f0b7e9c087664de9d653df6828ab64"><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.poly.html#a"><span class="id" title="variable">a</span></a><a class="idref" href="mathcomp.algebra.poly.html#728a2917ff59e46e3f0e4d98ed9ea172"><span class="id" title="notation">%:</span></a><a class="idref" href="mathcomp.algebra.poly.html#728a2917ff59e46e3f0e4d98ed9ea172"><span class="id" title="notation">P</span></a><a class="idref" href="mathcomp.algebra.poly.html#03fafeca1d8bb8af3cc89a1830d3996b"><span class="id" title="notation">).[</span></a><a class="idref" href="mathcomp.algebra.poly.html#x"><span class="id" title="variable">x</span></a><a class="idref" href="mathcomp.algebra.poly.html#03fafeca1d8bb8af3cc89a1830d3996b"><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.poly.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.poly.html#a"><span class="id" title="variable">a</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="horner_sum"><span class="id" title="lemma">horner_sum</span></a> <span class="id" title="var">I</span> (<span class="id" title="var">r</span> : <a class="idref" href="mathcomp.ssreflect.seq.html#seq"><span class="id" title="abbreviation">seq</span></a> <a class="idref" href="mathcomp.algebra.poly.html#I"><span class="id" title="variable">I</span></a>) (<span class="id" title="var">P</span> : <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#pred"><span class="id" title="definition">pred</span></a> <a class="idref" href="mathcomp.algebra.poly.html#I"><span class="id" title="variable">I</span></a>) <span class="id" title="var">F</span> <span class="id" title="var">x</span> :<br/> - <a class="idref" href="mathcomp.algebra.poly.html#03fafeca1d8bb8af3cc89a1830d3996b"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#0e493beb85c9c1b3ab2241ceeaa98b08"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#0e493beb85c9c1b3ab2241ceeaa98b08"><span class="id" title="notation">sum_</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#0e493beb85c9c1b3ab2241ceeaa98b08"><span class="id" title="notation">(</span></a><span class="id" title="var">i</span> <a class="idref" href="mathcomp.algebra.ssralg.html#0e493beb85c9c1b3ab2241ceeaa98b08"><span class="id" title="notation"><-</span></a> <a class="idref" href="mathcomp.algebra.poly.html#r"><span class="id" title="variable">r</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#0e493beb85c9c1b3ab2241ceeaa98b08"><span class="id" title="notation">|</span></a> <a class="idref" href="mathcomp.algebra.poly.html#P"><span class="id" title="variable">P</span></a> <a class="idref" href="mathcomp.algebra.poly.html#i"><span class="id" title="variable">i</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#0e493beb85c9c1b3ab2241ceeaa98b08"><span class="id" title="notation">)</span></a> <a class="idref" href="mathcomp.algebra.poly.html#F"><span class="id" title="variable">F</span></a> <a class="idref" href="mathcomp.algebra.poly.html#i"><span class="id" title="variable">i</span></a><a class="idref" href="mathcomp.algebra.poly.html#03fafeca1d8bb8af3cc89a1830d3996b"><span class="id" title="notation">).[</span></a><a class="idref" href="mathcomp.algebra.poly.html#x"><span class="id" title="variable">x</span></a><a class="idref" href="mathcomp.algebra.poly.html#03fafeca1d8bb8af3cc89a1830d3996b"><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.ssralg.html#0e493beb85c9c1b3ab2241ceeaa98b08"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#0e493beb85c9c1b3ab2241ceeaa98b08"><span class="id" title="notation">sum_</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#0e493beb85c9c1b3ab2241ceeaa98b08"><span class="id" title="notation">(</span></a><span class="id" title="var">i</span> <a class="idref" href="mathcomp.algebra.ssralg.html#0e493beb85c9c1b3ab2241ceeaa98b08"><span class="id" title="notation"><-</span></a> <a class="idref" href="mathcomp.algebra.poly.html#r"><span class="id" title="variable">r</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#0e493beb85c9c1b3ab2241ceeaa98b08"><span class="id" title="notation">|</span></a> <a class="idref" href="mathcomp.algebra.poly.html#P"><span class="id" title="variable">P</span></a> <a class="idref" href="mathcomp.algebra.poly.html#i"><span class="id" title="variable">i</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#0e493beb85c9c1b3ab2241ceeaa98b08"><span class="id" title="notation">)</span></a> <a class="idref" href="mathcomp.algebra.poly.html#03fafeca1d8bb8af3cc89a1830d3996b"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.poly.html#F"><span class="id" title="variable">F</span></a> <a class="idref" href="mathcomp.algebra.poly.html#i"><span class="id" title="variable">i</span></a><a class="idref" href="mathcomp.algebra.poly.html#03fafeca1d8bb8af3cc89a1830d3996b"><span class="id" title="notation">).[</span></a><a class="idref" href="mathcomp.algebra.poly.html#x"><span class="id" title="variable">x</span></a><a class="idref" href="mathcomp.algebra.poly.html#03fafeca1d8bb8af3cc89a1830d3996b"><span class="id" title="notation">]</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="hornerCM"><span class="id" title="lemma">hornerCM</span></a> <span class="id" title="var">a</span> <span class="id" title="var">p</span> <span class="id" title="var">x</span> : <a class="idref" href="mathcomp.algebra.poly.html#03fafeca1d8bb8af3cc89a1830d3996b"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.poly.html#a"><span class="id" title="variable">a</span></a><a class="idref" href="mathcomp.algebra.poly.html#728a2917ff59e46e3f0e4d98ed9ea172"><span class="id" title="notation">%:</span></a><a class="idref" href="mathcomp.algebra.poly.html#728a2917ff59e46e3f0e4d98ed9ea172"><span class="id" title="notation">P</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#2d0cfb150261028f4ebd2ba355623dcc"><span class="id" title="notation">×</span></a> <a class="idref" href="mathcomp.algebra.poly.html#p"><span class="id" title="variable">p</span></a><a class="idref" href="mathcomp.algebra.poly.html#03fafeca1d8bb8af3cc89a1830d3996b"><span class="id" title="notation">).[</span></a><a class="idref" href="mathcomp.algebra.poly.html#x"><span class="id" title="variable">x</span></a><a class="idref" href="mathcomp.algebra.poly.html#03fafeca1d8bb8af3cc89a1830d3996b"><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.poly.html#a"><span class="id" title="variable">a</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#2d0cfb150261028f4ebd2ba355623dcc"><span class="id" title="notation">×</span></a> <a class="idref" href="mathcomp.algebra.poly.html#p"><span class="id" title="variable">p</span></a><a class="idref" href="mathcomp.algebra.poly.html#03fafeca1d8bb8af3cc89a1830d3996b"><span class="id" title="notation">.[</span></a><a class="idref" href="mathcomp.algebra.poly.html#x"><span class="id" title="variable">x</span></a><a class="idref" href="mathcomp.algebra.poly.html#03fafeca1d8bb8af3cc89a1830d3996b"><span class="id" title="notation">]</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="hornerZ"><span class="id" title="lemma">hornerZ</span></a> <span class="id" title="var">c</span> <span class="id" title="var">p</span> <span class="id" title="var">x</span> : <a class="idref" href="mathcomp.algebra.poly.html#03fafeca1d8bb8af3cc89a1830d3996b"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.poly.html#c"><span class="id" title="variable">c</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#3b05480e39db306e67fadbc79d394529"><span class="id" title="notation">*:</span></a> <a class="idref" href="mathcomp.algebra.poly.html#p"><span class="id" title="variable">p</span></a><a class="idref" href="mathcomp.algebra.poly.html#03fafeca1d8bb8af3cc89a1830d3996b"><span class="id" title="notation">).[</span></a><a class="idref" href="mathcomp.algebra.poly.html#x"><span class="id" title="variable">x</span></a><a class="idref" href="mathcomp.algebra.poly.html#03fafeca1d8bb8af3cc89a1830d3996b"><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.poly.html#c"><span class="id" title="variable">c</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#2d0cfb150261028f4ebd2ba355623dcc"><span class="id" title="notation">×</span></a> <a class="idref" href="mathcomp.algebra.poly.html#p"><span class="id" title="variable">p</span></a><a class="idref" href="mathcomp.algebra.poly.html#03fafeca1d8bb8af3cc89a1830d3996b"><span class="id" title="notation">.[</span></a><a class="idref" href="mathcomp.algebra.poly.html#x"><span class="id" title="variable">x</span></a><a class="idref" href="mathcomp.algebra.poly.html#03fafeca1d8bb8af3cc89a1830d3996b"><span class="id" title="notation">]</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="hornerMn"><span class="id" title="lemma">hornerMn</span></a> <span class="id" title="var">n</span> <span class="id" title="var">p</span> <span class="id" title="var">x</span> : <a class="idref" href="mathcomp.algebra.poly.html#03fafeca1d8bb8af3cc89a1830d3996b"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.poly.html#p"><span class="id" title="variable">p</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#e9001f602764f7896bb1eb34bf606a23"><span class="id" title="notation">*+</span></a> <a class="idref" href="mathcomp.algebra.poly.html#n"><span class="id" title="variable">n</span></a><a class="idref" href="mathcomp.algebra.poly.html#03fafeca1d8bb8af3cc89a1830d3996b"><span class="id" title="notation">).[</span></a><a class="idref" href="mathcomp.algebra.poly.html#x"><span class="id" title="variable">x</span></a><a class="idref" href="mathcomp.algebra.poly.html#03fafeca1d8bb8af3cc89a1830d3996b"><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.poly.html#p"><span class="id" title="variable">p</span></a><a class="idref" href="mathcomp.algebra.poly.html#03fafeca1d8bb8af3cc89a1830d3996b"><span class="id" title="notation">.[</span></a><a class="idref" href="mathcomp.algebra.poly.html#x"><span class="id" title="variable">x</span></a><a class="idref" href="mathcomp.algebra.poly.html#03fafeca1d8bb8af3cc89a1830d3996b"><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.poly.html#n"><span class="id" title="variable">n</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Definition</span> <a name="comm_coef"><span class="id" title="definition">comm_coef</span></a> <span class="id" title="var">p</span> <span class="id" title="var">x</span> := <span class="id" title="keyword">∀</span> <span class="id" title="var">i</span>, <a class="idref" href="mathcomp.algebra.poly.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="mathcomp.algebra.ssralg.html#2d0cfb150261028f4ebd2ba355623dcc"><span class="id" title="notation">×</span></a> <a class="idref" href="mathcomp.algebra.poly.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#6cd0f7b28b6092304087c7049437bb1a"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.poly.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.poly.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">Definition</span> <a name="comm_poly"><span class="id" title="definition">comm_poly</span></a> <span class="id" title="var">p</span> <span class="id" title="var">x</span> := <a class="idref" href="mathcomp.algebra.poly.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.poly.html#p"><span class="id" title="variable">p</span></a><a class="idref" href="mathcomp.algebra.poly.html#03fafeca1d8bb8af3cc89a1830d3996b"><span class="id" title="notation">.[</span></a><a class="idref" href="mathcomp.algebra.poly.html#x"><span class="id" title="variable">x</span></a><a class="idref" href="mathcomp.algebra.poly.html#03fafeca1d8bb8af3cc89a1830d3996b"><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.poly.html#p"><span class="id" title="variable">p</span></a><a class="idref" href="mathcomp.algebra.poly.html#03fafeca1d8bb8af3cc89a1830d3996b"><span class="id" title="notation">.[</span></a><a class="idref" href="mathcomp.algebra.poly.html#x"><span class="id" title="variable">x</span></a><a class="idref" href="mathcomp.algebra.poly.html#03fafeca1d8bb8af3cc89a1830d3996b"><span class="id" title="notation">]</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#2d0cfb150261028f4ebd2ba355623dcc"><span class="id" title="notation">×</span></a> <a class="idref" href="mathcomp.algebra.poly.html#x"><span class="id" title="variable">x</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="comm_coef_poly"><span class="id" title="lemma">comm_coef_poly</span></a> <span class="id" title="var">p</span> <span class="id" title="var">x</span> : <a class="idref" href="mathcomp.algebra.poly.html#comm_coef"><span class="id" title="definition">comm_coef</span></a> <a class="idref" href="mathcomp.algebra.poly.html#p"><span class="id" title="variable">p</span></a> <a class="idref" href="mathcomp.algebra.poly.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.poly.html#comm_poly"><span class="id" title="definition">comm_poly</span></a> <a class="idref" href="mathcomp.algebra.poly.html#p"><span class="id" title="variable">p</span></a> <a class="idref" href="mathcomp.algebra.poly.html#x"><span class="id" title="variable">x</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="comm_poly0"><span class="id" title="lemma">comm_poly0</span></a> <span class="id" title="var">x</span> : <a class="idref" href="mathcomp.algebra.poly.html#comm_poly"><span class="id" title="definition">comm_poly</span></a> 0 <a class="idref" href="mathcomp.algebra.poly.html#x"><span class="id" title="variable">x</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="comm_poly1"><span class="id" title="lemma">comm_poly1</span></a> <span class="id" title="var">x</span> : <a class="idref" href="mathcomp.algebra.poly.html#comm_poly"><span class="id" title="definition">comm_poly</span></a> 1 <a class="idref" href="mathcomp.algebra.poly.html#x"><span class="id" title="variable">x</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="comm_polyX"><span class="id" title="lemma">comm_polyX</span></a> <span class="id" title="var">x</span> : <a class="idref" href="mathcomp.algebra.poly.html#comm_poly"><span class="id" title="definition">comm_poly</span></a> <a class="idref" href="mathcomp.algebra.poly.html#78f0b7e9c087664de9d653df6828ab64"><span class="id" title="notation">'</span></a><a class="idref" href="mathcomp.algebra.poly.html#78f0b7e9c087664de9d653df6828ab64"><span class="id" title="notation">X</span></a> <a class="idref" href="mathcomp.algebra.poly.html#x"><span class="id" title="variable">x</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="hornerM_comm"><span class="id" title="lemma">hornerM_comm</span></a> <span class="id" title="var">p</span> <span class="id" title="var">q</span> <span class="id" title="var">x</span> : <a class="idref" href="mathcomp.algebra.poly.html#comm_poly"><span class="id" title="definition">comm_poly</span></a> <a class="idref" href="mathcomp.algebra.poly.html#q"><span class="id" title="variable">q</span></a> <a class="idref" href="mathcomp.algebra.poly.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.poly.html#03fafeca1d8bb8af3cc89a1830d3996b"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.poly.html#p"><span class="id" title="variable">p</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#2d0cfb150261028f4ebd2ba355623dcc"><span class="id" title="notation">×</span></a> <a class="idref" href="mathcomp.algebra.poly.html#q"><span class="id" title="variable">q</span></a><a class="idref" href="mathcomp.algebra.poly.html#03fafeca1d8bb8af3cc89a1830d3996b"><span class="id" title="notation">).[</span></a><a class="idref" href="mathcomp.algebra.poly.html#x"><span class="id" title="variable">x</span></a><a class="idref" href="mathcomp.algebra.poly.html#03fafeca1d8bb8af3cc89a1830d3996b"><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.poly.html#p"><span class="id" title="variable">p</span></a><a class="idref" href="mathcomp.algebra.poly.html#03fafeca1d8bb8af3cc89a1830d3996b"><span class="id" title="notation">.[</span></a><a class="idref" href="mathcomp.algebra.poly.html#x"><span class="id" title="variable">x</span></a><a class="idref" href="mathcomp.algebra.poly.html#03fafeca1d8bb8af3cc89a1830d3996b"><span class="id" title="notation">]</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#2d0cfb150261028f4ebd2ba355623dcc"><span class="id" title="notation">×</span></a> <a class="idref" href="mathcomp.algebra.poly.html#q"><span class="id" title="variable">q</span></a><a class="idref" href="mathcomp.algebra.poly.html#03fafeca1d8bb8af3cc89a1830d3996b"><span class="id" title="notation">.[</span></a><a class="idref" href="mathcomp.algebra.poly.html#x"><span class="id" title="variable">x</span></a><a class="idref" href="mathcomp.algebra.poly.html#03fafeca1d8bb8af3cc89a1830d3996b"><span class="id" title="notation">]</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="horner_exp_comm"><span class="id" title="lemma">horner_exp_comm</span></a> <span class="id" title="var">p</span> <span class="id" title="var">x</span> <span class="id" title="var">n</span> : <a class="idref" href="mathcomp.algebra.poly.html#comm_poly"><span class="id" title="definition">comm_poly</span></a> <a class="idref" href="mathcomp.algebra.poly.html#p"><span class="id" title="variable">p</span></a> <a class="idref" href="mathcomp.algebra.poly.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.poly.html#03fafeca1d8bb8af3cc89a1830d3996b"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.poly.html#p"><span class="id" title="variable">p</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#663140372ac3b275aae871b74b140513"><span class="id" title="notation">^+</span></a> <a class="idref" href="mathcomp.algebra.poly.html#n"><span class="id" title="variable">n</span></a><a class="idref" href="mathcomp.algebra.poly.html#03fafeca1d8bb8af3cc89a1830d3996b"><span class="id" title="notation">).[</span></a><a class="idref" href="mathcomp.algebra.poly.html#x"><span class="id" title="variable">x</span></a><a class="idref" href="mathcomp.algebra.poly.html#03fafeca1d8bb8af3cc89a1830d3996b"><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.poly.html#p"><span class="id" title="variable">p</span></a><a class="idref" href="mathcomp.algebra.poly.html#03fafeca1d8bb8af3cc89a1830d3996b"><span class="id" title="notation">.[</span></a><a class="idref" href="mathcomp.algebra.poly.html#x"><span class="id" title="variable">x</span></a><a class="idref" href="mathcomp.algebra.poly.html#03fafeca1d8bb8af3cc89a1830d3996b"><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.poly.html#n"><span class="id" title="variable">n</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="hornerXn"><span class="id" title="lemma">hornerXn</span></a> <span class="id" title="var">x</span> <span class="id" title="var">n</span> : <a class="idref" href="mathcomp.algebra.poly.html#03fafeca1d8bb8af3cc89a1830d3996b"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.poly.html#72573bab7b99d99443b6173a7515ef0d"><span class="id" title="notation">'</span></a><a class="idref" href="mathcomp.algebra.poly.html#72573bab7b99d99443b6173a7515ef0d"><span class="id" title="notation">X</span></a><a class="idref" href="mathcomp.algebra.poly.html#72573bab7b99d99443b6173a7515ef0d"><span class="id" title="notation">^</span></a><a class="idref" href="mathcomp.algebra.poly.html#n"><span class="id" title="variable">n</span></a><a class="idref" href="mathcomp.algebra.poly.html#03fafeca1d8bb8af3cc89a1830d3996b"><span class="id" title="notation">).[</span></a><a class="idref" href="mathcomp.algebra.poly.html#x"><span class="id" title="variable">x</span></a><a class="idref" href="mathcomp.algebra.poly.html#03fafeca1d8bb8af3cc89a1830d3996b"><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.poly.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#663140372ac3b275aae871b74b140513"><span class="id" title="notation">^+</span></a> <a class="idref" href="mathcomp.algebra.poly.html#n"><span class="id" title="variable">n</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Definition</span> <a name="hornerE_comm"><span class="id" title="definition">hornerE_comm</span></a> :=<br/> - <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.poly.html#hornerD"><span class="id" title="lemma">hornerD</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.poly.html#hornerN"><span class="id" title="lemma">hornerN</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.poly.html#hornerX"><span class="id" title="lemma">hornerX</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.poly.html#hornerC"><span class="id" title="lemma">hornerC</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.poly.html#horner_cons"><span class="id" title="lemma">horner_cons</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><br/> - <a class="idref" href="mathcomp.algebra.poly.html#simp"><span class="id" title="abbreviation">simp</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.poly.html#hornerCM"><span class="id" title="lemma">hornerCM</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.poly.html#hornerZ"><span class="id" title="lemma">hornerZ</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><br/> - <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><span class="id" title="keyword">fun</span> <span class="id" title="var">p</span> <span class="id" title="var">x</span> ⇒ <a class="idref" href="mathcomp.algebra.poly.html#hornerM_comm"><span class="id" title="lemma">hornerM_comm</span></a> <a class="idref" href="mathcomp.algebra.poly.html#p"><span class="id" title="variable">p</span></a> (<a class="idref" href="mathcomp.algebra.poly.html#comm_polyX"><span class="id" title="lemma">comm_polyX</span></a> <a class="idref" href="mathcomp.algebra.poly.html#x"><span class="id" title="variable">x</span></a>)<a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Datatypes.html#e6756e10c36f149b18b4a8741ed83079"><span class="id" title="notation">))</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Definition</span> <a name="root"><span class="id" title="definition">root</span></a> <span class="id" title="var">p</span> : <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#pred"><span class="id" title="definition">pred</span></a> <a class="idref" href="mathcomp.algebra.poly.html#PolynomialTheory.R"><span class="id" title="variable">R</span></a> := <span class="id" title="keyword">fun</span> <span class="id" title="var">x</span> ⇒ <a class="idref" href="mathcomp.algebra.poly.html#p"><span class="id" title="variable">p</span></a><a class="idref" href="mathcomp.algebra.poly.html#03fafeca1d8bb8af3cc89a1830d3996b"><span class="id" title="notation">.[</span></a><a class="idref" href="mathcomp.algebra.poly.html#x"><span class="id" title="variable">x</span></a><a class="idref" href="mathcomp.algebra.poly.html#03fafeca1d8bb8af3cc89a1830d3996b"><span class="id" title="notation">]</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#df45e8c2e8370fd4f0f7c4fdaf208180"><span class="id" title="notation">==</span></a> 0.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="mem_root"><span class="id" title="lemma">mem_root</span></a> <span class="id" title="var">p</span> <span class="id" title="var">x</span> : <a class="idref" href="mathcomp.algebra.poly.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#b09457274bcb94927e289b8a9e9cd3f7"><span class="id" title="notation">\</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#b09457274bcb94927e289b8a9e9cd3f7"><span class="id" title="notation">in</span></a> <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#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="http://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#p"><span class="id" title="variable">p</span></a><a class="idref" href="mathcomp.algebra.poly.html#03fafeca1d8bb8af3cc89a1830d3996b"><span class="id" title="notation">.[</span></a><a class="idref" href="mathcomp.algebra.poly.html#x"><span class="id" title="variable">x</span></a><a class="idref" href="mathcomp.algebra.poly.html#03fafeca1d8bb8af3cc89a1830d3996b"><span class="id" title="notation">]</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>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="rootE"><span class="id" title="lemma">rootE</span></a> <span class="id" title="var">p</span> <span class="id" title="var">x</span> : <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Datatypes.html#11c698c8685bb8ab1cf725545c085ac4"><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#p"><span class="id" title="variable">p</span></a> <a class="idref" href="mathcomp.algebra.poly.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#6cd0f7b28b6092304087c7049437bb1a"><span class="id" title="notation">=</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#6cd0f7b28b6092304087c7049437bb1a"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.poly.html#p"><span class="id" title="variable">p</span></a><a class="idref" href="mathcomp.algebra.poly.html#03fafeca1d8bb8af3cc89a1830d3996b"><span class="id" title="notation">.[</span></a><a class="idref" href="mathcomp.algebra.poly.html#x"><span class="id" title="variable">x</span></a><a class="idref" href="mathcomp.algebra.poly.html#03fafeca1d8bb8af3cc89a1830d3996b"><span class="id" title="notation">]</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.Datatypes.html#11c698c8685bb8ab1cf725545c085ac4"><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="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="http://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#x"><span class="id" title="variable">x</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#b09457274bcb94927e289b8a9e9cd3f7"><span class="id" title="notation">\</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#b09457274bcb94927e289b8a9e9cd3f7"><span class="id" title="notation">in</span></a> <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#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="http://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.poly.html#p"><span class="id" title="variable">p</span></a><a class="idref" href="mathcomp.algebra.poly.html#03fafeca1d8bb8af3cc89a1830d3996b"><span class="id" title="notation">.[</span></a><a class="idref" href="mathcomp.algebra.poly.html#x"><span class="id" title="variable">x</span></a><a class="idref" href="mathcomp.algebra.poly.html#03fafeca1d8bb8af3cc89a1830d3996b"><span class="id" title="notation">]</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.Datatypes.html#11c698c8685bb8ab1cf725545c085ac4"><span class="id" title="notation">)</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="rootP"><span class="id" title="lemma">rootP</span></a> <span class="id" title="var">p</span> <span class="id" title="var">x</span> : <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#reflect"><span class="id" title="abbreviation">reflect</span></a> (<a class="idref" href="mathcomp.algebra.poly.html#p"><span class="id" title="variable">p</span></a><a class="idref" href="mathcomp.algebra.poly.html#03fafeca1d8bb8af3cc89a1830d3996b"><span class="id" title="notation">.[</span></a><a class="idref" href="mathcomp.algebra.poly.html#x"><span class="id" title="variable">x</span></a><a class="idref" href="mathcomp.algebra.poly.html#03fafeca1d8bb8af3cc89a1830d3996b"><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> 0) (<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#p"><span class="id" title="variable">p</span></a> <a class="idref" href="mathcomp.algebra.poly.html#x"><span class="id" title="variable">x</span></a>).<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="rootPt"><span class="id" title="lemma">rootPt</span></a> <span class="id" title="var">p</span> <span class="id" title="var">x</span> : <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#reflect"><span class="id" title="abbreviation">reflect</span></a> (<a class="idref" href="mathcomp.algebra.poly.html#p"><span class="id" title="variable">p</span></a><a class="idref" href="mathcomp.algebra.poly.html#03fafeca1d8bb8af3cc89a1830d3996b"><span class="id" title="notation">.[</span></a><a class="idref" href="mathcomp.algebra.poly.html#x"><span class="id" title="variable">x</span></a><a class="idref" href="mathcomp.algebra.poly.html#03fafeca1d8bb8af3cc89a1830d3996b"><span class="id" title="notation">]</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#df45e8c2e8370fd4f0f7c4fdaf208180"><span class="id" title="notation">==</span></a> 0) (<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#p"><span class="id" title="variable">p</span></a> <a class="idref" href="mathcomp.algebra.poly.html#x"><span class="id" title="variable">x</span></a>).<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="rootPf"><span class="id" title="lemma">rootPf</span></a> <span class="id" title="var">p</span> <span class="id" title="var">x</span> : <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#reflect"><span class="id" title="abbreviation">reflect</span></a> (<a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#6cd0f7b28b6092304087c7049437bb1a"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.poly.html#p"><span class="id" title="variable">p</span></a><a class="idref" href="mathcomp.algebra.poly.html#03fafeca1d8bb8af3cc89a1830d3996b"><span class="id" title="notation">.[</span></a><a class="idref" href="mathcomp.algebra.poly.html#x"><span class="id" title="variable">x</span></a><a class="idref" href="mathcomp.algebra.poly.html#03fafeca1d8bb8af3cc89a1830d3996b"><span class="id" title="notation">]</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.Datatypes.html#false"><span class="id" title="constructor">false</span></a>) (<a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#b3ebd0deddd84fd60e149cb5ef719351"><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#p"><span class="id" title="variable">p</span></a> <a class="idref" href="mathcomp.algebra.poly.html#x"><span class="id" title="variable">x</span></a>).<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="rootC"><span class="id" title="lemma">rootC</span></a> <span class="id" title="var">a</span> <span class="id" title="var">x</span> : <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#a"><span class="id" title="variable">a</span></a><a class="idref" href="mathcomp.algebra.poly.html#728a2917ff59e46e3f0e4d98ed9ea172"><span class="id" title="notation">%:</span></a><a class="idref" href="mathcomp.algebra.poly.html#728a2917ff59e46e3f0e4d98ed9ea172"><span class="id" title="notation">P</span></a> <a class="idref" href="mathcomp.algebra.poly.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#6cd0f7b28b6092304087c7049437bb1a"><span class="id" title="notation">=</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#6cd0f7b28b6092304087c7049437bb1a"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.poly.html#a"><span class="id" title="variable">a</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>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="root0"><span class="id" title="lemma">root0</span></a> <span class="id" title="var">x</span> : <a class="idref" href="mathcomp.algebra.poly.html#root"><span class="id" title="definition">root</span></a> 0 <a class="idref" href="mathcomp.algebra.poly.html#x"><span class="id" title="variable">x</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="root1"><span class="id" title="lemma">root1</span></a> <span class="id" title="var">x</span> : <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#b3ebd0deddd84fd60e149cb5ef719351"><span class="id" title="notation">~~</span></a> <a class="idref" href="mathcomp.algebra.poly.html#root"><span class="id" title="definition">root</span></a> 1 <a class="idref" href="mathcomp.algebra.poly.html#x"><span class="id" title="variable">x</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="rootX"><span class="id" title="lemma">rootX</span></a> <span class="id" title="var">x</span> : <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#78f0b7e9c087664de9d653df6828ab64"><span class="id" title="notation">'</span></a><a class="idref" href="mathcomp.algebra.poly.html#78f0b7e9c087664de9d653df6828ab64"><span class="id" title="notation">X</span></a> <a class="idref" href="mathcomp.algebra.poly.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#6cd0f7b28b6092304087c7049437bb1a"><span class="id" title="notation">=</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#6cd0f7b28b6092304087c7049437bb1a"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.poly.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#df45e8c2e8370fd4f0f7c4fdaf208180"><span class="id" title="notation">==</span></a> 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>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="rootN"><span class="id" title="lemma">rootN</span></a> <span class="id" title="var">p</span> <span class="id" title="var">x</span> : <a class="idref" href="mathcomp.algebra.poly.html#root"><span class="id" title="definition">root</span></a> (<a class="idref" href="mathcomp.algebra.ssralg.html#8d0566c961139ec21811f52ef0c317db"><span class="id" title="notation">-</span></a> <a class="idref" href="mathcomp.algebra.poly.html#p"><span class="id" title="variable">p</span></a>) <a class="idref" href="mathcomp.algebra.poly.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#6cd0f7b28b6092304087c7049437bb1a"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.poly.html#root"><span class="id" title="definition">root</span></a> <a class="idref" href="mathcomp.algebra.poly.html#p"><span class="id" title="variable">p</span></a> <a class="idref" href="mathcomp.algebra.poly.html#x"><span class="id" title="variable">x</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="root_size_gt1"><span class="id" title="lemma">root_size_gt1</span></a> <span class="id" title="var">a</span> <span class="id" title="var">p</span> : <a class="idref" href="mathcomp.algebra.poly.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.poly.html#p"><span class="id" title="variable">p</span></a> <a class="idref" href="mathcomp.algebra.poly.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#1c93e43e07fbeaeb6a625cb6614beb5d"><span class="id" title="notation">→</span></a> 1 <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.poly.html#p"><span class="id" title="variable">p</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="root_XsubC"><span class="id" title="lemma">root_XsubC</span></a> <span class="id" title="var">a</span> <span class="id" title="var">x</span> : <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#78f0b7e9c087664de9d653df6828ab64"><span class="id" title="notation">'</span></a><a class="idref" href="mathcomp.algebra.poly.html#78f0b7e9c087664de9d653df6828ab64"><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.poly.html#a"><span class="id" title="variable">a</span></a><a class="idref" href="mathcomp.algebra.poly.html#728a2917ff59e46e3f0e4d98ed9ea172"><span class="id" title="notation">%:</span></a><a class="idref" href="mathcomp.algebra.poly.html#728a2917ff59e46e3f0e4d98ed9ea172"><span class="id" title="notation">P</span></a>) <a class="idref" href="mathcomp.algebra.poly.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#6cd0f7b28b6092304087c7049437bb1a"><span class="id" title="notation">=</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#6cd0f7b28b6092304087c7049437bb1a"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.poly.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#df45e8c2e8370fd4f0f7c4fdaf208180"><span class="id" title="notation">==</span></a> <a class="idref" href="mathcomp.algebra.poly.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>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="root_XaddC"><span class="id" title="lemma">root_XaddC</span></a> <span class="id" title="var">a</span> <span class="id" title="var">x</span> : <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#78f0b7e9c087664de9d653df6828ab64"><span class="id" title="notation">'</span></a><a class="idref" href="mathcomp.algebra.poly.html#78f0b7e9c087664de9d653df6828ab64"><span class="id" title="notation">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.poly.html#a"><span class="id" title="variable">a</span></a><a class="idref" href="mathcomp.algebra.poly.html#728a2917ff59e46e3f0e4d98ed9ea172"><span class="id" title="notation">%:</span></a><a class="idref" href="mathcomp.algebra.poly.html#728a2917ff59e46e3f0e4d98ed9ea172"><span class="id" title="notation">P</span></a>) <a class="idref" href="mathcomp.algebra.poly.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#6cd0f7b28b6092304087c7049437bb1a"><span class="id" title="notation">=</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#6cd0f7b28b6092304087c7049437bb1a"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.poly.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#df45e8c2e8370fd4f0f7c4fdaf208180"><span class="id" title="notation">==</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#8d0566c961139ec21811f52ef0c317db"><span class="id" title="notation">-</span></a> <a class="idref" href="mathcomp.algebra.poly.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>.<br/> - -<br/> -<span class="id" title="keyword">Theorem</span> <a name="factor_theorem"><span class="id" title="lemma">factor_theorem</span></a> <span class="id" title="var">p</span> <span class="id" title="var">a</span> : <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#reflect"><span class="id" title="abbreviation">reflect</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">q</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.poly.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.poly.html#q"><span class="id" title="variable">q</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#2d0cfb150261028f4ebd2ba355623dcc"><span class="id" title="notation">×</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#2d0cfb150261028f4ebd2ba355623dcc"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.poly.html#78f0b7e9c087664de9d653df6828ab64"><span class="id" title="notation">'</span></a><a class="idref" href="mathcomp.algebra.poly.html#78f0b7e9c087664de9d653df6828ab64"><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.poly.html#a"><span class="id" title="variable">a</span></a><a class="idref" href="mathcomp.algebra.poly.html#728a2917ff59e46e3f0e4d98ed9ea172"><span class="id" title="notation">%:</span></a><a class="idref" href="mathcomp.algebra.poly.html#728a2917ff59e46e3f0e4d98ed9ea172"><span class="id" title="notation">P</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#2d0cfb150261028f4ebd2ba355623dcc"><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#p"><span class="id" title="variable">p</span></a> <a class="idref" href="mathcomp.algebra.poly.html#a"><span class="id" title="variable">a</span></a>).<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="multiplicity_XsubC"><span class="id" title="lemma">multiplicity_XsubC</span></a> <span class="id" title="var">p</span> <span class="id" title="var">a</span> :<br/> - <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Specif.html#bc4528e836ab0e91ea7e942fb09e898f"><span class="id" title="notation">{</span></a><span class="id" title="var">m</span> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Specif.html#bc4528e836ab0e91ea7e942fb09e898f"><span class="id" title="notation">|</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.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="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#a133e82bab56729f895f9b2b31e837cd"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.poly.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.ssr.ssrbool.html#a133e82bab56729f895f9b2b31e837cd"><span class="id" title="notation">)</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#a133e82bab56729f895f9b2b31e837cd"><span class="id" title="notation">==></span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#b3ebd0deddd84fd60e149cb5ef719351"><span class="id" title="notation">~~</span></a> <a class="idref" href="mathcomp.algebra.poly.html#root"><span class="id" title="definition">root</span></a> <a class="idref" href="mathcomp.algebra.poly.html#q"><span class="id" title="variable">q</span></a> <a class="idref" href="mathcomp.algebra.poly.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#3df228c109f14f0423b4fccc967ee1ac"><span class="id" title="notation">&</span></a> <a class="idref" href="mathcomp.algebra.poly.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.poly.html#q"><span class="id" title="variable">q</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#2d0cfb150261028f4ebd2ba355623dcc"><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.poly.html#78f0b7e9c087664de9d653df6828ab64"><span class="id" title="notation">'</span></a><a class="idref" href="mathcomp.algebra.poly.html#78f0b7e9c087664de9d653df6828ab64"><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.poly.html#a"><span class="id" title="variable">a</span></a><a class="idref" href="mathcomp.algebra.poly.html#728a2917ff59e46e3f0e4d98ed9ea172"><span class="id" title="notation">%:</span></a><a class="idref" href="mathcomp.algebra.poly.html#728a2917ff59e46e3f0e4d98ed9ea172"><span class="id" title="notation">P</span></a><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.poly.html#m"><span class="id" title="variable">m</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Specif.html#bc4528e836ab0e91ea7e942fb09e898f"><span class="id" title="notation">}</span></a>.<br/> - -<br/> -</div> - -<div class="doc"> - Roots of unity. -</div> -<div class="code"> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="size_Xn_sub_1"><span class="id" title="lemma">size_Xn_sub_1</span></a> <span class="id" title="var">n</span> : <a class="idref" href="mathcomp.algebra.poly.html#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.ssreflect.seq.html#size"><span class="id" title="definition">size</span></a> (<a class="idref" href="mathcomp.algebra.poly.html#72573bab7b99d99443b6173a7515ef0d"><span class="id" title="notation">'</span></a><a class="idref" href="mathcomp.algebra.poly.html#72573bab7b99d99443b6173a7515ef0d"><span class="id" title="notation">X</span></a><a class="idref" href="mathcomp.algebra.poly.html#72573bab7b99d99443b6173a7515ef0d"><span class="id" title="notation">^</span></a><a class="idref" href="mathcomp.algebra.poly.html#n"><span class="id" title="variable">n</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#51dc792c356ca1a71a3094b50d6bb2fb"><span class="id" title="notation">-</span></a> 1 <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.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.poly.html#PolynomialTheory.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.Logic.html#6cd0f7b28b6092304087c7049437bb1a"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.poly.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/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="monic_Xn_sub_1"><span class="id" title="lemma">monic_Xn_sub_1</span></a> <span class="id" title="var">n</span> : <a class="idref" href="mathcomp.algebra.poly.html#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.poly.html#72573bab7b99d99443b6173a7515ef0d"><span class="id" title="notation">'</span></a><a class="idref" href="mathcomp.algebra.poly.html#72573bab7b99d99443b6173a7515ef0d"><span class="id" title="notation">X</span></a><a class="idref" href="mathcomp.algebra.poly.html#72573bab7b99d99443b6173a7515ef0d"><span class="id" title="notation">^</span></a><a class="idref" href="mathcomp.algebra.poly.html#n"><span class="id" title="variable">n</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#51dc792c356ca1a71a3094b50d6bb2fb"><span class="id" title="notation">-</span></a> 1 <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">Definition</span> <a name="root_of_unity"><span class="id" title="definition">root_of_unity</span></a> <span class="id" title="var">n</span> : <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#pred"><span class="id" title="definition">pred</span></a> <a class="idref" href="mathcomp.algebra.poly.html#PolynomialTheory.R"><span class="id" title="variable">R</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#72573bab7b99d99443b6173a7515ef0d"><span class="id" title="notation">'</span></a><a class="idref" href="mathcomp.algebra.poly.html#72573bab7b99d99443b6173a7515ef0d"><span class="id" title="notation">X</span></a><a class="idref" href="mathcomp.algebra.poly.html#72573bab7b99d99443b6173a7515ef0d"><span class="id" title="notation">^</span></a><a class="idref" href="mathcomp.algebra.poly.html#n"><span class="id" title="variable">n</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#51dc792c356ca1a71a3094b50d6bb2fb"><span class="id" title="notation">-</span></a> 1).<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="unity_rootE"><span class="id" title="lemma">unity_rootE</span></a> <span class="id" title="var">n</span> <span class="id" title="var">z</span> : <a class="idref" href="mathcomp.algebra.poly.html#n"><span class="id" title="variable">n</span></a><a class="idref" href="mathcomp.algebra.poly.html#cf34ca2293616a3eea81a8b32110ecbc"><span class="id" title="notation">.-</span></a><a class="idref" href="mathcomp.algebra.poly.html#cf34ca2293616a3eea81a8b32110ecbc"><span class="id" title="notation">unity_root</span></a> <a class="idref" href="mathcomp.algebra.poly.html#z"><span class="id" title="variable">z</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#6cd0f7b28b6092304087c7049437bb1a"><span class="id" title="notation">=</span></a> <a class="idref" href="http://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#z"><span class="id" title="variable">z</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#663140372ac3b275aae871b74b140513"><span class="id" title="notation">^+</span></a> <a class="idref" href="mathcomp.algebra.poly.html#n"><span class="id" title="variable">n</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#df45e8c2e8370fd4f0f7c4fdaf208180"><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">Lemma</span> <a name="unity_rootP"><span class="id" title="lemma">unity_rootP</span></a> <span class="id" title="var">n</span> <span class="id" title="var">z</span> : <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#reflect"><span class="id" title="abbreviation">reflect</span></a> (<a class="idref" href="mathcomp.algebra.poly.html#z"><span class="id" title="variable">z</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#663140372ac3b275aae871b74b140513"><span class="id" title="notation">^+</span></a> <a class="idref" href="mathcomp.algebra.poly.html#n"><span class="id" title="variable">n</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#6cd0f7b28b6092304087c7049437bb1a"><span class="id" title="notation">=</span></a> 1) (<a class="idref" href="mathcomp.algebra.poly.html#n"><span class="id" title="variable">n</span></a><a class="idref" href="mathcomp.algebra.poly.html#cf34ca2293616a3eea81a8b32110ecbc"><span class="id" title="notation">.-</span></a><a class="idref" href="mathcomp.algebra.poly.html#cf34ca2293616a3eea81a8b32110ecbc"><span class="id" title="notation">unity_root</span></a> <a class="idref" href="mathcomp.algebra.poly.html#z"><span class="id" title="variable">z</span></a>).<br/> - -<br/> -<span class="id" title="keyword">Definition</span> <a name="primitive_root_of_unity"><span class="id" title="definition">primitive_root_of_unity</span></a> <span class="id" title="var">n</span> <span class="id" title="var">z</span> :=<br/> - <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Datatypes.html#9ddeac0ab66152bd1d64bedb507a795e"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.poly.html#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.Datatypes.html#9ddeac0ab66152bd1d64bedb507a795e"><span class="id" title="notation">)</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Datatypes.html#9ddeac0ab66152bd1d64bedb507a795e"><span class="id" title="notation">&&</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#fb0199913c9911d56fa87965a9a828a3"><span class="id" title="notation">[</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#fb0199913c9911d56fa87965a9a828a3"><span class="id" title="notation">∀</span></a> <span class="id" title="var">i</span> <a class="idref" href="mathcomp.ssreflect.fintype.html#fb0199913c9911d56fa87965a9a828a3"><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#f3be25edeb0349b0a76405eded9d0b98"><span class="id" title="notation">,</span></a> <a class="idref" href="mathcomp.algebra.poly.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.algebra.poly.html#cf34ca2293616a3eea81a8b32110ecbc"><span class="id" title="notation">.-</span></a><a class="idref" href="mathcomp.algebra.poly.html#cf34ca2293616a3eea81a8b32110ecbc"><span class="id" title="notation">unity_root</span></a> <a class="idref" href="mathcomp.algebra.poly.html#z"><span class="id" title="variable">z</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#df45e8c2e8370fd4f0f7c4fdaf208180"><span class="id" title="notation">==</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#df45e8c2e8370fd4f0f7c4fdaf208180"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.poly.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#df45e8c2e8370fd4f0f7c4fdaf208180"><span class="id" title="notation">==</span></a> <a class="idref" href="mathcomp.algebra.poly.html#n"><span class="id" title="variable">n</span></a><a class="idref" href="mathcomp.ssreflect.eqtype.html#df45e8c2e8370fd4f0f7c4fdaf208180"><span class="id" title="notation">)</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#fb0199913c9911d56fa87965a9a828a3"><span class="id" title="notation">]</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="prim_order_exists"><span class="id" title="lemma">prim_order_exists</span></a> <span class="id" title="var">n</span> <span class="id" title="var">z</span> :<br/> - <a class="idref" href="mathcomp.algebra.poly.html#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.poly.html#z"><span class="id" title="variable">z</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#663140372ac3b275aae871b74b140513"><span class="id" title="notation">^+</span></a> <a class="idref" href="mathcomp.algebra.poly.html#n"><span class="id" title="variable">n</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#6cd0f7b28b6092304087c7049437bb1a"><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="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Specif.html#c0bbd202248f4def7aaf0c316cf2c29e"><span class="id" title="notation">{</span></a><span class="id" title="var">m</span> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Specif.html#c0bbd202248f4def7aaf0c316cf2c29e"><span class="id" title="notation">|</span></a> <a class="idref" href="mathcomp.algebra.poly.html#m"><span class="id" title="variable">m</span></a><a class="idref" href="mathcomp.algebra.poly.html#945c56de5ff21a9d3435445d11cfa3f2"><span class="id" title="notation">.-</span></a><a class="idref" href="mathcomp.algebra.poly.html#945c56de5ff21a9d3435445d11cfa3f2"><span class="id" title="notation">primitive_root</span></a> <a class="idref" href="mathcomp.algebra.poly.html#z"><span class="id" title="variable">z</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Specif.html#c0bbd202248f4def7aaf0c316cf2c29e"><span class="id" title="notation">&</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Specif.html#c0bbd202248f4def7aaf0c316cf2c29e"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.poly.html#m"><span class="id" title="variable">m</span></a> <a class="idref" href="mathcomp.ssreflect.div.html#bde82eab2fe4a0799bc2419e587505d4"><span class="id" title="notation">%|</span></a> <a class="idref" href="mathcomp.algebra.poly.html#n"><span class="id" title="variable">n</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Specif.html#c0bbd202248f4def7aaf0c316cf2c29e"><span class="id" title="notation">)}</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Section</span> <a name="PolynomialTheory.OnePrimitive"><span class="id" title="section">OnePrimitive</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Variables</span> (<a name="PolynomialTheory.OnePrimitive.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="PolynomialTheory.OnePrimitive.z"><span class="id" title="variable">z</span></a> : <a class="idref" href="mathcomp.algebra.poly.html#PolynomialTheory.R"><span class="id" title="variable">R</span></a>).<br/> -<span class="id" title="keyword">Hypothesis</span> <a name="PolynomialTheory.OnePrimitive.prim_z"><span class="id" title="variable">prim_z</span></a> : <a class="idref" href="mathcomp.algebra.poly.html#PolynomialTheory.OnePrimitive.n"><span class="id" title="variable">n</span></a><a class="idref" href="mathcomp.algebra.poly.html#945c56de5ff21a9d3435445d11cfa3f2"><span class="id" title="notation">.-</span></a><a class="idref" href="mathcomp.algebra.poly.html#945c56de5ff21a9d3435445d11cfa3f2"><span class="id" title="notation">primitive_root</span></a> <a class="idref" href="mathcomp.algebra.poly.html#PolynomialTheory.OnePrimitive.z"><span class="id" title="variable">z</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="prim_order_gt0"><span class="id" title="lemma">prim_order_gt0</span></a> : <a class="idref" href="mathcomp.algebra.poly.html#PolynomialTheory.OnePrimitive.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. <br/> -<span class="id" title="keyword">Let</span> <a name="PolynomialTheory.OnePrimitive.n_gt0"><span class="id" title="variable">n_gt0</span></a> := <a class="idref" href="mathcomp.algebra.poly.html#prim_order_gt0"><span class="id" title="lemma">prim_order_gt0</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="prim_expr_order"><span class="id" title="lemma">prim_expr_order</span></a> : <a class="idref" href="mathcomp.algebra.poly.html#PolynomialTheory.OnePrimitive.z"><span class="id" title="variable">z</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#663140372ac3b275aae871b74b140513"><span class="id" title="notation">^+</span></a> <a class="idref" href="mathcomp.algebra.poly.html#PolynomialTheory.OnePrimitive.n"><span class="id" title="variable">n</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#6cd0f7b28b6092304087c7049437bb1a"><span class="id" title="notation">=</span></a> 1.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="prim_expr_mod"><span class="id" title="lemma">prim_expr_mod</span></a> <span class="id" title="var">i</span> : <a class="idref" href="mathcomp.algebra.poly.html#PolynomialTheory.OnePrimitive.z"><span class="id" title="variable">z</span></a> <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.poly.html#i"><span class="id" title="variable">i</span></a> <a class="idref" href="mathcomp.ssreflect.div.html#e3d79e08e7e529cc9ef532e000103386"><span class="id" title="notation">%%</span></a> <a class="idref" href="mathcomp.algebra.poly.html#PolynomialTheory.OnePrimitive.n"><span class="id" title="variable">n</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#663140372ac3b275aae871b74b140513"><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.poly.html#PolynomialTheory.OnePrimitive.z"><span class="id" title="variable">z</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#663140372ac3b275aae871b74b140513"><span class="id" title="notation">^+</span></a> <a class="idref" href="mathcomp.algebra.poly.html#i"><span class="id" title="variable">i</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="prim_order_dvd"><span class="id" title="lemma">prim_order_dvd</span></a> <span class="id" title="var">i</span> : <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#6cd0f7b28b6092304087c7049437bb1a"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.poly.html#PolynomialTheory.OnePrimitive.n"><span class="id" title="variable">n</span></a> <a class="idref" href="mathcomp.ssreflect.div.html#bde82eab2fe4a0799bc2419e587505d4"><span class="id" title="notation">%|</span></a> <a class="idref" href="mathcomp.algebra.poly.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="http://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.poly.html#PolynomialTheory.OnePrimitive.z"><span class="id" title="variable">z</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#663140372ac3b275aae871b74b140513"><span class="id" title="notation">^+</span></a> <a class="idref" href="mathcomp.algebra.poly.html#i"><span class="id" title="variable">i</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#df45e8c2e8370fd4f0f7c4fdaf208180"><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">Lemma</span> <a name="eq_prim_root_expr"><span class="id" title="lemma">eq_prim_root_expr</span></a> <span class="id" title="var">i</span> <span class="id" title="var">j</span> : <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#6cd0f7b28b6092304087c7049437bb1a"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.poly.html#PolynomialTheory.OnePrimitive.z"><span class="id" title="variable">z</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#663140372ac3b275aae871b74b140513"><span class="id" title="notation">^+</span></a> <a class="idref" href="mathcomp.algebra.poly.html#i"><span class="id" title="variable">i</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#df45e8c2e8370fd4f0f7c4fdaf208180"><span class="id" title="notation">==</span></a> <a class="idref" href="mathcomp.algebra.poly.html#PolynomialTheory.OnePrimitive.z"><span class="id" title="variable">z</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#663140372ac3b275aae871b74b140513"><span class="id" title="notation">^+</span></a> <a class="idref" href="mathcomp.algebra.poly.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="http://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.poly.html#i"><span class="id" title="variable">i</span></a> <a class="idref" href="mathcomp.ssreflect.div.html#9c3b63aefc7fc3a3d3aa9b85185d069f"><span class="id" title="notation">==</span></a> <a class="idref" href="mathcomp.algebra.poly.html#j"><span class="id" title="variable">j</span></a> <a class="idref" href="mathcomp.ssreflect.div.html#9c3b63aefc7fc3a3d3aa9b85185d069f"><span class="id" title="notation">%[</span></a><a class="idref" href="mathcomp.ssreflect.div.html#9c3b63aefc7fc3a3d3aa9b85185d069f"><span class="id" title="notation">mod</span></a> <a class="idref" href="mathcomp.algebra.poly.html#PolynomialTheory.OnePrimitive.n"><span class="id" title="variable">n</span></a><a class="idref" href="mathcomp.ssreflect.div.html#9c3b63aefc7fc3a3d3aa9b85185d069f"><span class="id" title="notation">]</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#6cd0f7b28b6092304087c7049437bb1a"><span class="id" title="notation">)</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="exp_prim_root"><span class="id" title="lemma">exp_prim_root</span></a> <span class="id" title="var">k</span> : <a class="idref" href="mathcomp.algebra.poly.html#945c56de5ff21a9d3435445d11cfa3f2"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.poly.html#PolynomialTheory.OnePrimitive.n"><span class="id" title="variable">n</span></a> <a class="idref" href="mathcomp.ssreflect.div.html#2242f6721707980eca939ec29164eab3"><span class="id" title="notation">%/</span></a> <a class="idref" href="mathcomp.ssreflect.div.html#gcdn"><span class="id" title="definition">gcdn</span></a> <a class="idref" href="mathcomp.algebra.poly.html#k"><span class="id" title="variable">k</span></a> <a class="idref" href="mathcomp.algebra.poly.html#PolynomialTheory.OnePrimitive.n"><span class="id" title="variable">n</span></a><a class="idref" href="mathcomp.algebra.poly.html#945c56de5ff21a9d3435445d11cfa3f2"><span class="id" title="notation">).-</span></a><a class="idref" href="mathcomp.algebra.poly.html#945c56de5ff21a9d3435445d11cfa3f2"><span class="id" title="notation">primitive_root</span></a> (<a class="idref" href="mathcomp.algebra.poly.html#PolynomialTheory.OnePrimitive.z"><span class="id" title="variable">z</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#663140372ac3b275aae871b74b140513"><span class="id" title="notation">^+</span></a> <a class="idref" href="mathcomp.algebra.poly.html#k"><span class="id" title="variable">k</span></a>).<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="dvdn_prim_root"><span class="id" title="lemma">dvdn_prim_root</span></a> <span class="id" title="var">m</span> : (<a class="idref" href="mathcomp.algebra.poly.html#m"><span class="id" title="variable">m</span></a> <a class="idref" href="mathcomp.ssreflect.div.html#bde82eab2fe4a0799bc2419e587505d4"><span class="id" title="notation">%|</span></a> <a class="idref" href="mathcomp.algebra.poly.html#PolynomialTheory.OnePrimitive.n"><span class="id" title="variable">n</span></a>)%<span class="id" title="var">N</span> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#1c93e43e07fbeaeb6a625cb6614beb5d"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.poly.html#m"><span class="id" title="variable">m</span></a><a class="idref" href="mathcomp.algebra.poly.html#945c56de5ff21a9d3435445d11cfa3f2"><span class="id" title="notation">.-</span></a><a class="idref" href="mathcomp.algebra.poly.html#945c56de5ff21a9d3435445d11cfa3f2"><span class="id" title="notation">primitive_root</span></a> (<a class="idref" href="mathcomp.algebra.poly.html#PolynomialTheory.OnePrimitive.z"><span class="id" title="variable">z</span></a> <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.poly.html#PolynomialTheory.OnePrimitive.n"><span class="id" title="variable">n</span></a> <a class="idref" href="mathcomp.ssreflect.div.html#2242f6721707980eca939ec29164eab3"><span class="id" title="notation">%/</span></a> <a class="idref" href="mathcomp.algebra.poly.html#m"><span class="id" title="variable">m</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#663140372ac3b275aae871b74b140513"><span class="id" title="notation">)</span></a>).<br/> - -<br/> -<span class="id" title="keyword">End</span> <a class="idref" href="mathcomp.algebra.poly.html#PolynomialTheory.OnePrimitive"><span class="id" title="section">OnePrimitive</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="prim_root_exp_coprime"><span class="id" title="lemma">prim_root_exp_coprime</span></a> <span class="id" title="var">n</span> <span class="id" title="var">z</span> <span class="id" title="var">k</span> :<br/> - <a class="idref" href="mathcomp.algebra.poly.html#n"><span class="id" title="variable">n</span></a><a class="idref" href="mathcomp.algebra.poly.html#945c56de5ff21a9d3435445d11cfa3f2"><span class="id" title="notation">.-</span></a><a class="idref" href="mathcomp.algebra.poly.html#945c56de5ff21a9d3435445d11cfa3f2"><span class="id" title="notation">primitive_root</span></a> <a class="idref" href="mathcomp.algebra.poly.html#z"><span class="id" title="variable">z</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#1c93e43e07fbeaeb6a625cb6614beb5d"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.poly.html#n"><span class="id" title="variable">n</span></a><a class="idref" href="mathcomp.algebra.poly.html#945c56de5ff21a9d3435445d11cfa3f2"><span class="id" title="notation">.-</span></a><a class="idref" href="mathcomp.algebra.poly.html#945c56de5ff21a9d3435445d11cfa3f2"><span class="id" title="notation">primitive_root</span></a> (<a class="idref" href="mathcomp.algebra.poly.html#z"><span class="id" title="variable">z</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#663140372ac3b275aae871b74b140513"><span class="id" title="notation">^+</span></a> <a class="idref" href="mathcomp.algebra.poly.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#6cd0f7b28b6092304087c7049437bb1a"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.ssreflect.div.html#coprime"><span class="id" title="definition">coprime</span></a> <a class="idref" href="mathcomp.algebra.poly.html#k"><span class="id" title="variable">k</span></a> <a class="idref" href="mathcomp.algebra.poly.html#n"><span class="id" title="variable">n</span></a>.<br/> - -<br/> -</div> - -<div class="doc"> - Lifting a ring predicate to polynomials. -</div> -<div class="code"> - -<br/> -<span class="id" title="keyword">Implicit</span> <span class="id" title="keyword">Type</span> <span class="id" title="var">S</span> : <a class="idref" href="mathcomp.ssreflect.ssrbool.html#64f8873130736b599801d4930af00e74"><span class="id" title="notation">{</span></a><a class="idref" href="mathcomp.ssreflect.ssrbool.html#64f8873130736b599801d4930af00e74"><span class="id" title="notation">pred</span></a> <a class="idref" href="mathcomp.algebra.poly.html#PolynomialTheory.R"><span class="id" title="variable">R</span></a><a class="idref" href="mathcomp.ssreflect.ssrbool.html#64f8873130736b599801d4930af00e74"><span class="id" title="notation">}</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Definition</span> <a name="polyOver"><span class="id" title="definition">polyOver</span></a> <span class="id" title="var">S</span> := <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#65c8f47ea0daafc83f7bb18bc9eca61f"><span class="id" title="notation">[</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#65c8f47ea0daafc83f7bb18bc9eca61f"><span class="id" title="notation">qualify</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#65c8f47ea0daafc83f7bb18bc9eca61f"><span class="id" title="notation">a</span></a> <span class="id" title="var">p</span> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#65c8f47ea0daafc83f7bb18bc9eca61f"><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.poly.html#PolynomialTheory.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.ssr.ssrbool.html#65c8f47ea0daafc83f7bb18bc9eca61f"><span class="id" title="notation">|</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#all"><span class="id" title="definition">all</span></a> (<a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#mem"><span class="id" title="definition">mem</span></a> <a class="idref" href="mathcomp.algebra.poly.html#S"><span class="id" title="variable">S</span></a>) <a class="idref" href="mathcomp.algebra.poly.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#65c8f47ea0daafc83f7bb18bc9eca61f"><span class="id" title="notation">]</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Fact</span> <a name="polyOver_key"><span class="id" title="lemma">polyOver_key</span></a> <span class="id" title="var">S</span> : <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#pred_key"><span class="id" title="inductive">pred_key</span></a> (<a class="idref" href="mathcomp.algebra.poly.html#polyOver"><span class="id" title="definition">polyOver</span></a> <a class="idref" href="mathcomp.algebra.poly.html#S"><span class="id" title="variable">S</span></a>). <br/> -<span class="id" title="keyword">Canonical</span> <span class="id" title="var">polyOver_keyed</span> <span class="id" title="var">S</span> := <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#KeyedQualifier"><span class="id" title="definition">KeyedQualifier</span></a> (<a class="idref" href="mathcomp.algebra.poly.html#polyOver_key"><span class="id" title="lemma">polyOver_key</span></a> <a class="idref" href="mathcomp.algebra.poly.html#S"><span class="id" title="variable">S</span></a>).<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="polyOverS"><span class="id" title="lemma">polyOverS</span></a> (<span class="id" title="var">S1</span> <span class="id" title="var">S2</span> : <a class="idref" href="mathcomp.ssreflect.ssrbool.html#64f8873130736b599801d4930af00e74"><span class="id" title="notation">{</span></a><a class="idref" href="mathcomp.ssreflect.ssrbool.html#64f8873130736b599801d4930af00e74"><span class="id" title="notation">pred</span></a> <a class="idref" href="mathcomp.algebra.poly.html#PolynomialTheory.R"><span class="id" title="variable">R</span></a><a class="idref" href="mathcomp.ssreflect.ssrbool.html#64f8873130736b599801d4930af00e74"><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#ca592708f529c7c7ee5f3dbd6cf93463"><span class="id" title="notation">{</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#ca592708f529c7c7ee5f3dbd6cf93463"><span class="id" title="notation">subset</span></a> <a class="idref" href="mathcomp.algebra.poly.html#S1"><span class="id" title="variable">S1</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#ca592708f529c7c7ee5f3dbd6cf93463"><span class="id" title="notation">≤</span></a> <a class="idref" href="mathcomp.algebra.poly.html#S2"><span class="id" title="variable">S2</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#ca592708f529c7c7ee5f3dbd6cf93463"><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#ca592708f529c7c7ee5f3dbd6cf93463"><span class="id" title="notation">{</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#ca592708f529c7c7ee5f3dbd6cf93463"><span class="id" title="notation">subset</span></a> <a class="idref" href="mathcomp.algebra.poly.html#polyOver"><span class="id" title="definition">polyOver</span></a> <a class="idref" href="mathcomp.algebra.poly.html#S1"><span class="id" title="variable">S1</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#ca592708f529c7c7ee5f3dbd6cf93463"><span class="id" title="notation">≤</span></a> <a class="idref" href="mathcomp.algebra.poly.html#polyOver"><span class="id" title="definition">polyOver</span></a> <a class="idref" href="mathcomp.algebra.poly.html#S2"><span class="id" title="variable">S2</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#ca592708f529c7c7ee5f3dbd6cf93463"><span class="id" title="notation">}</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="polyOver0"><span class="id" title="lemma">polyOver0</span></a> <span class="id" title="var">S</span> : 0 <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#f6c65697fefaf4504de1d4d641cd4409"><span class="id" title="notation">\</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#f6c65697fefaf4504de1d4d641cd4409"><span class="id" title="notation">is</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#f6c65697fefaf4504de1d4d641cd4409"><span class="id" title="notation">a</span></a> <a class="idref" href="mathcomp.algebra.poly.html#polyOver"><span class="id" title="definition">polyOver</span></a> <a class="idref" href="mathcomp.algebra.poly.html#S"><span class="id" title="variable">S</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="polyOver_poly"><span class="id" title="lemma">polyOver_poly</span></a> <span class="id" title="var">S</span> <span class="id" title="var">n</span> <span class="id" title="var">E</span> :<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><span class="id" title="keyword">∀</span> <span class="id" title="var">i</span>, <a class="idref" href="mathcomp.algebra.poly.html#i"><span class="id" title="variable">i</span></a> <a class="idref" href="mathcomp.ssreflect.ssrnat.html#00fe0eaf5e6949f0a31725357afa4bba"><span class="id" title="notation"><</span></a> <a class="idref" href="mathcomp.algebra.poly.html#n"><span class="id" title="variable">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#E"><span class="id" title="variable">E</span></a> <a class="idref" href="mathcomp.algebra.poly.html#i"><span class="id" title="variable">i</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#b09457274bcb94927e289b8a9e9cd3f7"><span class="id" title="notation">\</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#b09457274bcb94927e289b8a9e9cd3f7"><span class="id" title="notation">in</span></a> <a class="idref" href="mathcomp.algebra.poly.html#S"><span class="id" title="variable">S</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#1c93e43e07fbeaeb6a625cb6614beb5d"><span class="id" title="notation">)</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#1c93e43e07fbeaeb6a625cb6614beb5d"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.poly.html#27fd9446e6d344308e4e6554f93d6b3b"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.algebra.poly.html#27fd9446e6d344308e4e6554f93d6b3b"><span class="id" title="notation">poly_</span></a><a class="idref" href="mathcomp.algebra.poly.html#27fd9446e6d344308e4e6554f93d6b3b"><span class="id" title="notation">(</span></a><span class="id" title="var">i</span> <a class="idref" href="mathcomp.algebra.poly.html#27fd9446e6d344308e4e6554f93d6b3b"><span class="id" title="notation"><</span></a> <a class="idref" href="mathcomp.algebra.poly.html#n"><span class="id" title="variable">n</span></a><a class="idref" href="mathcomp.algebra.poly.html#27fd9446e6d344308e4e6554f93d6b3b"><span class="id" title="notation">)</span></a> <a class="idref" href="mathcomp.algebra.poly.html#E"><span class="id" title="variable">E</span></a> <a class="idref" href="mathcomp.algebra.poly.html#i"><span class="id" title="variable">i</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#f6c65697fefaf4504de1d4d641cd4409"><span class="id" title="notation">\</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#f6c65697fefaf4504de1d4d641cd4409"><span class="id" title="notation">is</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#f6c65697fefaf4504de1d4d641cd4409"><span class="id" title="notation">a</span></a> <a class="idref" href="mathcomp.algebra.poly.html#polyOver"><span class="id" title="definition">polyOver</span></a> <a class="idref" href="mathcomp.algebra.poly.html#S"><span class="id" title="variable">S</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Section</span> <a name="PolynomialTheory.PolyOverAdd"><span class="id" title="section">PolyOverAdd</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Variables</span> (<a name="PolynomialTheory.PolyOverAdd.S"><span class="id" title="variable">S</span></a> : <a class="idref" href="mathcomp.ssreflect.ssrbool.html#64f8873130736b599801d4930af00e74"><span class="id" title="notation">{</span></a><a class="idref" href="mathcomp.ssreflect.ssrbool.html#64f8873130736b599801d4930af00e74"><span class="id" title="notation">pred</span></a> <a class="idref" href="mathcomp.algebra.poly.html#PolynomialTheory.R"><span class="id" title="variable">R</span></a><a class="idref" href="mathcomp.ssreflect.ssrbool.html#64f8873130736b599801d4930af00e74"><span class="id" title="notation">}</span></a>) (<a name="PolynomialTheory.PolyOverAdd.addS"><span class="id" title="variable">addS</span></a> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Pred.Exports.addrPred"><span class="id" title="abbreviation">addrPred</span></a> <a class="idref" href="mathcomp.algebra.poly.html#S"><span class="id" title="variable">S</span></a>) (<a name="PolynomialTheory.PolyOverAdd.kS"><span class="id" title="variable">kS</span></a> : <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#keyed_pred"><span class="id" title="record">keyed_pred</span></a> <a class="idref" href="mathcomp.algebra.poly.html#addS"><span class="id" title="variable">addS</span></a>).<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="polyOverP"><span class="id" title="lemma">polyOverP</span></a> {<span class="id" title="var">p</span>} : <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#reflect"><span class="id" title="abbreviation">reflect</span></a> (<span class="id" title="keyword">∀</span> <span class="id" title="var">i</span>, <a class="idref" href="mathcomp.algebra.poly.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.ssr.ssrbool.html#b09457274bcb94927e289b8a9e9cd3f7"><span class="id" title="notation">\</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#b09457274bcb94927e289b8a9e9cd3f7"><span class="id" title="notation">in</span></a> <a class="idref" href="mathcomp.algebra.poly.html#PolynomialTheory.PolyOverAdd.kS"><span class="id" title="variable">kS</span></a>) (<a class="idref" href="mathcomp.algebra.poly.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#b09457274bcb94927e289b8a9e9cd3f7"><span class="id" title="notation">\</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#b09457274bcb94927e289b8a9e9cd3f7"><span class="id" title="notation">in</span></a> <a class="idref" href="mathcomp.algebra.poly.html#polyOver"><span class="id" title="definition">polyOver</span></a> <a class="idref" href="mathcomp.algebra.poly.html#PolynomialTheory.PolyOverAdd.kS"><span class="id" title="variable">kS</span></a>).<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="polyOverC"><span class="id" title="lemma">polyOverC</span></a> <span class="id" title="var">c</span> : <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#6cd0f7b28b6092304087c7049437bb1a"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.poly.html#c"><span class="id" title="variable">c</span></a><a class="idref" href="mathcomp.algebra.poly.html#728a2917ff59e46e3f0e4d98ed9ea172"><span class="id" title="notation">%:</span></a><a class="idref" href="mathcomp.algebra.poly.html#728a2917ff59e46e3f0e4d98ed9ea172"><span class="id" title="notation">P</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#b09457274bcb94927e289b8a9e9cd3f7"><span class="id" title="notation">\</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#b09457274bcb94927e289b8a9e9cd3f7"><span class="id" title="notation">in</span></a> <a class="idref" href="mathcomp.algebra.poly.html#polyOver"><span class="id" title="definition">polyOver</span></a> <a class="idref" href="mathcomp.algebra.poly.html#PolynomialTheory.PolyOverAdd.kS"><span class="id" title="variable">kS</span></a><a class="idref" href="http://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.algebra.poly.html#c"><span class="id" title="variable">c</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#b09457274bcb94927e289b8a9e9cd3f7"><span class="id" title="notation">\</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#b09457274bcb94927e289b8a9e9cd3f7"><span class="id" title="notation">in</span></a> <a class="idref" href="mathcomp.algebra.poly.html#PolynomialTheory.PolyOverAdd.kS"><span class="id" title="variable">kS</span></a><a 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">Fact</span> <a name="polyOver_addr_closed"><span class="id" title="lemma">polyOver_addr_closed</span></a> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Pred.Exports.addr_closed"><span class="id" title="abbreviation">addr_closed</span></a> (<a class="idref" href="mathcomp.algebra.poly.html#polyOver"><span class="id" title="definition">polyOver</span></a> <a class="idref" href="mathcomp.algebra.poly.html#PolynomialTheory.PolyOverAdd.kS"><span class="id" title="variable">kS</span></a>).<br/> -<span class="id" title="keyword">Canonical</span> <span class="id" title="var">polyOver_addrPred</span> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Pred.Exports.AddrPred"><span class="id" title="definition">AddrPred</span></a> <a class="idref" href="mathcomp.algebra.poly.html#polyOver_addr_closed"><span class="id" title="lemma">polyOver_addr_closed</span></a>.<br/> - -<br/> -<span class="id" title="keyword">End</span> <a class="idref" href="mathcomp.algebra.poly.html#PolynomialTheory.PolyOverAdd"><span class="id" title="section">PolyOverAdd</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Fact</span> <a name="polyOverNr"><span class="id" title="lemma">polyOverNr</span></a> <span class="id" title="var">S</span> (<span class="id" title="var">addS</span> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Pred.Exports.zmodPred"><span class="id" title="abbreviation">zmodPred</span></a> <a class="idref" href="mathcomp.algebra.poly.html#S"><span class="id" title="variable">S</span></a>) (<span class="id" title="var">kS</span> : <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#keyed_pred"><span class="id" title="record">keyed_pred</span></a> <a class="idref" href="mathcomp.algebra.poly.html#addS"><span class="id" title="variable">addS</span></a>) :<br/> - <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Pred.Exports.oppr_closed"><span class="id" title="abbreviation">oppr_closed</span></a> (<a class="idref" href="mathcomp.algebra.poly.html#polyOver"><span class="id" title="definition">polyOver</span></a> <a class="idref" href="mathcomp.algebra.poly.html#kS"><span class="id" title="variable">kS</span></a>).<br/> -<span class="id" title="keyword">Canonical</span> <span class="id" title="var">polyOver_opprPred</span> <span class="id" title="var">S</span> <span class="id" title="var">addS</span> <span class="id" title="var">kS</span> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Pred.Exports.OpprPred"><span class="id" title="definition">OpprPred</span></a> (@<a class="idref" href="mathcomp.algebra.poly.html#polyOverNr"><span class="id" title="lemma">polyOverNr</span></a> <a class="idref" href="mathcomp.algebra.poly.html#S"><span class="id" title="variable">S</span></a> <a class="idref" href="mathcomp.algebra.poly.html#addS"><span class="id" title="variable">addS</span></a> <a class="idref" href="mathcomp.algebra.poly.html#kS"><span class="id" title="variable">kS</span></a>).<br/> -<span class="id" title="keyword">Canonical</span> <span class="id" title="var">polyOver_zmodPred</span> <span class="id" title="var">S</span> <span class="id" title="var">addS</span> <span class="id" title="var">kS</span> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Pred.Exports.ZmodPred"><span class="id" title="definition">ZmodPred</span></a> (@<a class="idref" href="mathcomp.algebra.poly.html#polyOverNr"><span class="id" title="lemma">polyOverNr</span></a> <a class="idref" href="mathcomp.algebra.poly.html#S"><span class="id" title="variable">S</span></a> <a class="idref" href="mathcomp.algebra.poly.html#addS"><span class="id" title="variable">addS</span></a> <a class="idref" href="mathcomp.algebra.poly.html#kS"><span class="id" title="variable">kS</span></a>).<br/> - -<br/> -<span class="id" title="keyword">Section</span> <a name="PolynomialTheory.PolyOverSemiring"><span class="id" title="section">PolyOverSemiring</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Variables</span> (<a name="PolynomialTheory.PolyOverSemiring.S"><span class="id" title="variable">S</span></a> : <a class="idref" href="mathcomp.ssreflect.ssrbool.html#64f8873130736b599801d4930af00e74"><span class="id" title="notation">{</span></a><a class="idref" href="mathcomp.ssreflect.ssrbool.html#64f8873130736b599801d4930af00e74"><span class="id" title="notation">pred</span></a> <a class="idref" href="mathcomp.algebra.poly.html#PolynomialTheory.R"><span class="id" title="variable">R</span></a><a class="idref" href="mathcomp.ssreflect.ssrbool.html#64f8873130736b599801d4930af00e74"><span class="id" title="notation">}</span></a>) (<a name="PolynomialTheory.PolyOverSemiring.ringS"><span class="id" title="variable">ringS</span></a> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Pred.Exports.semiringPred"><span class="id" title="abbreviation">semiringPred</span></a> <a class="idref" href="mathcomp.algebra.poly.html#S"><span class="id" title="variable">S</span></a>) (<a name="PolynomialTheory.PolyOverSemiring.kS"><span class="id" title="variable">kS</span></a> : <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#keyed_pred"><span class="id" title="record">keyed_pred</span></a> <a class="idref" href="mathcomp.algebra.poly.html#ringS"><span class="id" title="variable">ringS</span></a>).<br/> - -<br/> -<span class="id" title="keyword">Fact</span> <a name="polyOver_mulr_closed"><span class="id" title="lemma">polyOver_mulr_closed</span></a> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Pred.Exports.mulr_closed"><span class="id" title="abbreviation">mulr_closed</span></a> (<a class="idref" href="mathcomp.algebra.poly.html#polyOver"><span class="id" title="definition">polyOver</span></a> <a class="idref" href="mathcomp.algebra.poly.html#PolynomialTheory.PolyOverSemiring.kS"><span class="id" title="variable">kS</span></a>).<br/> -<span class="id" title="keyword">Canonical</span> <span class="id" title="var">polyOver_mulrPred</span> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Pred.Exports.MulrPred"><span class="id" title="definition">MulrPred</span></a> <a class="idref" href="mathcomp.algebra.poly.html#polyOver_mulr_closed"><span class="id" title="lemma">polyOver_mulr_closed</span></a>.<br/> -<span class="id" title="keyword">Canonical</span> <span class="id" title="var">polyOver_semiringPred</span> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Pred.Exports.SemiringPred"><span class="id" title="definition">SemiringPred</span></a> <a class="idref" href="mathcomp.algebra.poly.html#polyOver_mulr_closed"><span class="id" title="lemma">polyOver_mulr_closed</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="polyOverZ"><span class="id" title="lemma">polyOverZ</span></a> : <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#5f76d9959f82823e4253cd67e7dc0e96"><span class="id" title="notation">{</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#5f76d9959f82823e4253cd67e7dc0e96"><span class="id" title="notation">in</span></a> <a class="idref" href="mathcomp.algebra.poly.html#PolynomialTheory.PolyOverSemiring.kS"><span class="id" title="variable">kS</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#5f76d9959f82823e4253cd67e7dc0e96"><span class="id" title="notation">&</span></a> <a class="idref" href="mathcomp.algebra.poly.html#polyOver"><span class="id" title="definition">polyOver</span></a> <a class="idref" href="mathcomp.algebra.poly.html#PolynomialTheory.PolyOverSemiring.kS"><span class="id" title="variable">kS</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#5f76d9959f82823e4253cd67e7dc0e96"><span class="id" title="notation">,</span></a> <span class="id" title="keyword">∀</span> <span class="id" title="var">c</span> <span class="id" title="var">p</span>, <a class="idref" href="mathcomp.algebra.poly.html#c"><span class="id" title="variable">c</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#3b05480e39db306e67fadbc79d394529"><span class="id" title="notation">*:</span></a> <a class="idref" href="mathcomp.algebra.poly.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#f6c65697fefaf4504de1d4d641cd4409"><span class="id" title="notation">\</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#f6c65697fefaf4504de1d4d641cd4409"><span class="id" title="notation">is</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#f6c65697fefaf4504de1d4d641cd4409"><span class="id" title="notation">a</span></a> <a class="idref" href="mathcomp.algebra.poly.html#polyOver"><span class="id" title="definition">polyOver</span></a> <a class="idref" href="mathcomp.algebra.poly.html#PolynomialTheory.PolyOverSemiring.kS"><span class="id" title="variable">kS</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#5f76d9959f82823e4253cd67e7dc0e96"><span class="id" title="notation">}</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="polyOverX"><span class="id" title="lemma">polyOverX</span></a> : <a class="idref" href="mathcomp.algebra.poly.html#78f0b7e9c087664de9d653df6828ab64"><span class="id" title="notation">'</span></a><a class="idref" href="mathcomp.algebra.poly.html#78f0b7e9c087664de9d653df6828ab64"><span class="id" title="notation">X</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#b09457274bcb94927e289b8a9e9cd3f7"><span class="id" title="notation">\</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#b09457274bcb94927e289b8a9e9cd3f7"><span class="id" title="notation">in</span></a> <a class="idref" href="mathcomp.algebra.poly.html#polyOver"><span class="id" title="definition">polyOver</span></a> <a class="idref" href="mathcomp.algebra.poly.html#PolynomialTheory.PolyOverSemiring.kS"><span class="id" title="variable">kS</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="rpred_horner"><span class="id" title="lemma">rpred_horner</span></a> : <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#5f76d9959f82823e4253cd67e7dc0e96"><span class="id" title="notation">{</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#5f76d9959f82823e4253cd67e7dc0e96"><span class="id" title="notation">in</span></a> <a class="idref" href="mathcomp.algebra.poly.html#polyOver"><span class="id" title="definition">polyOver</span></a> <a class="idref" href="mathcomp.algebra.poly.html#PolynomialTheory.PolyOverSemiring.kS"><span class="id" title="variable">kS</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#5f76d9959f82823e4253cd67e7dc0e96"><span class="id" title="notation">&</span></a> <a class="idref" href="mathcomp.algebra.poly.html#PolynomialTheory.PolyOverSemiring.kS"><span class="id" title="variable">kS</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#5f76d9959f82823e4253cd67e7dc0e96"><span class="id" title="notation">,</span></a> <span class="id" title="keyword">∀</span> <span class="id" title="var">p</span> <span class="id" title="var">x</span>, <a class="idref" href="mathcomp.algebra.poly.html#p"><span class="id" title="variable">p</span></a><a class="idref" href="mathcomp.algebra.poly.html#03fafeca1d8bb8af3cc89a1830d3996b"><span class="id" title="notation">.[</span></a><a class="idref" href="mathcomp.algebra.poly.html#x"><span class="id" title="variable">x</span></a><a class="idref" href="mathcomp.algebra.poly.html#03fafeca1d8bb8af3cc89a1830d3996b"><span class="id" title="notation">]</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#b09457274bcb94927e289b8a9e9cd3f7"><span class="id" title="notation">\</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#b09457274bcb94927e289b8a9e9cd3f7"><span class="id" title="notation">in</span></a> <a class="idref" href="mathcomp.algebra.poly.html#PolynomialTheory.PolyOverSemiring.kS"><span class="id" title="variable">kS</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#5f76d9959f82823e4253cd67e7dc0e96"><span class="id" title="notation">}</span></a>.<br/> - -<br/> -<span class="id" title="keyword">End</span> <a class="idref" href="mathcomp.algebra.poly.html#PolynomialTheory.PolyOverSemiring"><span class="id" title="section">PolyOverSemiring</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Section</span> <a name="PolynomialTheory.PolyOverRing"><span class="id" title="section">PolyOverRing</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Variables</span> (<a name="PolynomialTheory.PolyOverRing.S"><span class="id" title="variable">S</span></a> : <a class="idref" href="mathcomp.ssreflect.ssrbool.html#64f8873130736b599801d4930af00e74"><span class="id" title="notation">{</span></a><a class="idref" href="mathcomp.ssreflect.ssrbool.html#64f8873130736b599801d4930af00e74"><span class="id" title="notation">pred</span></a> <a class="idref" href="mathcomp.algebra.poly.html#PolynomialTheory.R"><span class="id" title="variable">R</span></a><a class="idref" href="mathcomp.ssreflect.ssrbool.html#64f8873130736b599801d4930af00e74"><span class="id" title="notation">}</span></a>) (<a name="PolynomialTheory.PolyOverRing.ringS"><span class="id" title="variable">ringS</span></a> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Pred.Exports.subringPred"><span class="id" title="abbreviation">subringPred</span></a> <a class="idref" href="mathcomp.algebra.poly.html#S"><span class="id" title="variable">S</span></a>) (<a name="PolynomialTheory.PolyOverRing.kS"><span class="id" title="variable">kS</span></a> : <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#keyed_pred"><span class="id" title="record">keyed_pred</span></a> <a class="idref" href="mathcomp.algebra.poly.html#ringS"><span class="id" title="variable">ringS</span></a>).<br/> -<span class="id" title="keyword">Canonical</span> <span class="id" title="var">polyOver_smulrPred</span> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Pred.Exports.SmulrPred"><span class="id" title="definition">SmulrPred</span></a> (<a class="idref" href="mathcomp.algebra.poly.html#polyOver_mulr_closed"><span class="id" title="lemma">polyOver_mulr_closed</span></a> <a class="idref" href="mathcomp.algebra.poly.html#PolynomialTheory.PolyOverRing.kS"><span class="id" title="variable">kS</span></a>).<br/> -<span class="id" title="keyword">Canonical</span> <span class="id" title="var">polyOver_subringPred</span> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Pred.Exports.SubringPred"><span class="id" title="definition">SubringPred</span></a> (<a class="idref" href="mathcomp.algebra.poly.html#polyOver_mulr_closed"><span class="id" title="lemma">polyOver_mulr_closed</span></a> <a class="idref" href="mathcomp.algebra.poly.html#PolynomialTheory.PolyOverRing.kS"><span class="id" title="variable">kS</span></a>).<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="polyOverXsubC"><span class="id" title="lemma">polyOverXsubC</span></a> <span class="id" title="var">c</span> : <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#6cd0f7b28b6092304087c7049437bb1a"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.poly.html#78f0b7e9c087664de9d653df6828ab64"><span class="id" title="notation">'</span></a><a class="idref" href="mathcomp.algebra.poly.html#78f0b7e9c087664de9d653df6828ab64"><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.poly.html#c"><span class="id" title="variable">c</span></a><a class="idref" href="mathcomp.algebra.poly.html#728a2917ff59e46e3f0e4d98ed9ea172"><span class="id" title="notation">%:</span></a><a class="idref" href="mathcomp.algebra.poly.html#728a2917ff59e46e3f0e4d98ed9ea172"><span class="id" title="notation">P</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#b09457274bcb94927e289b8a9e9cd3f7"><span class="id" title="notation">\</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#b09457274bcb94927e289b8a9e9cd3f7"><span class="id" title="notation">in</span></a> <a class="idref" href="mathcomp.algebra.poly.html#polyOver"><span class="id" title="definition">polyOver</span></a> <a class="idref" href="mathcomp.algebra.poly.html#PolynomialTheory.PolyOverRing.kS"><span class="id" title="variable">kS</span></a><a class="idref" href="http://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.algebra.poly.html#c"><span class="id" title="variable">c</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#b09457274bcb94927e289b8a9e9cd3f7"><span class="id" title="notation">\</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#b09457274bcb94927e289b8a9e9cd3f7"><span class="id" title="notation">in</span></a> <a class="idref" href="mathcomp.algebra.poly.html#PolynomialTheory.PolyOverRing.kS"><span class="id" title="variable">kS</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#6cd0f7b28b6092304087c7049437bb1a"><span class="id" title="notation">)</span></a>.<br/> - -<br/> -<span class="id" title="keyword">End</span> <a class="idref" href="mathcomp.algebra.poly.html#PolynomialTheory.PolyOverRing"><span class="id" title="section">PolyOverRing</span></a>.<br/> - -<br/> -</div> - -<div class="doc"> - Single derivative. -</div> -<div class="code"> - -<br/> -<span class="id" title="keyword">Definition</span> <a name="deriv"><span class="id" title="definition">deriv</span></a> <span class="id" title="var">p</span> := <a class="idref" href="mathcomp.algebra.poly.html#27fd9446e6d344308e4e6554f93d6b3b"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.algebra.poly.html#27fd9446e6d344308e4e6554f93d6b3b"><span class="id" title="notation">poly_</span></a><a class="idref" href="mathcomp.algebra.poly.html#27fd9446e6d344308e4e6554f93d6b3b"><span class="id" title="notation">(</span></a><span class="id" title="var">i</span> <a class="idref" href="mathcomp.algebra.poly.html#27fd9446e6d344308e4e6554f93d6b3b"><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.poly.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><a class="idref" href="mathcomp.algebra.poly.html#27fd9446e6d344308e4e6554f93d6b3b"><span class="id" title="notation">)</span></a> <a class="idref" href="mathcomp.algebra.poly.html#27fd9446e6d344308e4e6554f93d6b3b"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.poly.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="mathcomp.ssreflect.ssrnat.html#bda89d73ec4a8f23ae92b565ffb5aaa6"><span class="id" title="notation">.+1</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#e9001f602764f7896bb1eb34bf606a23"><span class="id" title="notation">*+</span></a> <a class="idref" href="mathcomp.algebra.poly.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.algebra.poly.html#27fd9446e6d344308e4e6554f93d6b3b"><span class="id" title="notation">)</span></a>.<br/> - -<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="coef_deriv"><span class="id" title="lemma">coef_deriv</span></a> <span class="id" title="var">p</span> <span class="id" title="var">i</span> : <a class="idref" href="mathcomp.algebra.poly.html#p"><span class="id" title="variable">p</span></a><a class="idref" href="mathcomp.algebra.poly.html#cfa0aa09962cfc701c4777d893c479b4"><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">_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#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="mathcomp.ssreflect.ssrnat.html#bda89d73ec4a8f23ae92b565ffb5aaa6"><span class="id" title="notation">.+1</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#e9001f602764f7896bb1eb34bf606a23"><span class="id" title="notation">*+</span></a> <a class="idref" href="mathcomp.algebra.poly.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>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="polyOver_deriv"><span class="id" title="lemma">polyOver_deriv</span></a> <span class="id" title="var">S</span> (<span class="id" title="var">ringS</span> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Pred.Exports.semiringPred"><span class="id" title="abbreviation">semiringPred</span></a> <a class="idref" href="mathcomp.algebra.poly.html#S"><span class="id" title="variable">S</span></a>) (<span class="id" title="var">kS</span> : <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#keyed_pred"><span class="id" title="record">keyed_pred</span></a> <a class="idref" href="mathcomp.algebra.poly.html#ringS"><span class="id" title="variable">ringS</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.poly.html#polyOver"><span class="id" title="definition">polyOver</span></a> <a class="idref" href="mathcomp.algebra.poly.html#kS"><span class="id" title="variable">kS</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#8c08d4203604dbed63e7afa9b689d858"><span class="id" title="notation">,</span></a> <span class="id" title="keyword">∀</span> <span class="id" title="var">p</span>, <a class="idref" href="mathcomp.algebra.poly.html#p"><span class="id" title="variable">p</span></a><a class="idref" href="mathcomp.algebra.poly.html#cfa0aa09962cfc701c4777d893c479b4"><span class="id" title="notation">^`</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#f6c65697fefaf4504de1d4d641cd4409"><span class="id" title="notation">\</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#f6c65697fefaf4504de1d4d641cd4409"><span class="id" title="notation">is</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#f6c65697fefaf4504de1d4d641cd4409"><span class="id" title="notation">a</span></a> <a class="idref" href="mathcomp.algebra.poly.html#polyOver"><span class="id" title="definition">polyOver</span></a> <a class="idref" href="mathcomp.algebra.poly.html#kS"><span class="id" title="variable">kS</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="derivC"><span class="id" title="lemma">derivC</span></a> <span class="id" title="var">c</span> : <a class="idref" href="mathcomp.algebra.poly.html#c"><span class="id" title="variable">c</span></a><a class="idref" href="mathcomp.algebra.poly.html#728a2917ff59e46e3f0e4d98ed9ea172"><span class="id" title="notation">%:</span></a><a class="idref" href="mathcomp.algebra.poly.html#728a2917ff59e46e3f0e4d98ed9ea172"><span class="id" title="notation">P</span></a><a class="idref" href="mathcomp.algebra.poly.html#cfa0aa09962cfc701c4777d893c479b4"><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> 0.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="derivX"><span class="id" title="lemma">derivX</span></a> : <a class="idref" href="mathcomp.algebra.poly.html#cfa0aa09962cfc701c4777d893c479b4"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.poly.html#78f0b7e9c087664de9d653df6828ab64"><span class="id" title="notation">'</span></a><a class="idref" href="mathcomp.algebra.poly.html#78f0b7e9c087664de9d653df6828ab64"><span class="id" title="notation">X</span></a><a class="idref" href="mathcomp.algebra.poly.html#cfa0aa09962cfc701c4777d893c479b4"><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> 1.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="derivXn"><span class="id" title="lemma">derivXn</span></a> <span class="id" title="var">n</span> : <a class="idref" href="mathcomp.algebra.poly.html#72573bab7b99d99443b6173a7515ef0d"><span class="id" title="notation">'</span></a><a class="idref" href="mathcomp.algebra.poly.html#72573bab7b99d99443b6173a7515ef0d"><span class="id" title="notation">X</span></a><a class="idref" href="mathcomp.algebra.poly.html#72573bab7b99d99443b6173a7515ef0d"><span class="id" title="notation">^</span></a><a class="idref" href="mathcomp.algebra.poly.html#n"><span class="id" title="variable">n</span></a><a class="idref" href="mathcomp.algebra.poly.html#cfa0aa09962cfc701c4777d893c479b4"><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.poly.html#72573bab7b99d99443b6173a7515ef0d"><span class="id" title="notation">'</span></a><a class="idref" href="mathcomp.algebra.poly.html#72573bab7b99d99443b6173a7515ef0d"><span class="id" title="notation">X</span></a><a class="idref" href="mathcomp.algebra.poly.html#72573bab7b99d99443b6173a7515ef0d"><span class="id" title="notation">^</span></a><a class="idref" href="mathcomp.algebra.poly.html#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> <a class="idref" href="mathcomp.algebra.ssralg.html#e9001f602764f7896bb1eb34bf606a23"><span class="id" title="notation">*+</span></a> <a class="idref" href="mathcomp.algebra.poly.html#n"><span class="id" title="variable">n</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Fact</span> <a name="deriv_is_linear"><span class="id" title="lemma">deriv_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.poly.html#deriv"><span class="id" title="definition">deriv</span></a>.<br/> -<span class="id" title="keyword">Canonical</span> <span class="id" title="var">deriv_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.poly.html#deriv_is_linear"><span class="id" title="lemma">deriv_is_linear</span></a>.<br/> -<span class="id" title="keyword">Canonical</span> <span class="id" title="var">deriv_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.poly.html#deriv_is_linear"><span class="id" title="lemma">deriv_is_linear</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="deriv0"><span class="id" title="lemma">deriv0</span></a> : 0<a class="idref" href="mathcomp.algebra.poly.html#cfa0aa09962cfc701c4777d893c479b4"><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> 0.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="derivD"><span class="id" title="lemma">derivD</span></a> : <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#e69c60b553f06d3463460a9f4cee3c01"><span class="id" title="notation">{</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#e69c60b553f06d3463460a9f4cee3c01"><span class="id" title="notation">morph</span></a> <a class="idref" href="mathcomp.algebra.poly.html#deriv"><span class="id" title="definition">deriv</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#e69c60b553f06d3463460a9f4cee3c01"><span class="id" title="notation">:</span></a> <span class="id" title="var">p</span> <span class="id" title="var">q</span> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#e69c60b553f06d3463460a9f4cee3c01"><span class="id" title="notation">/</span></a> <a class="idref" href="mathcomp.algebra.poly.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.poly.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.ssrfun.html#e69c60b553f06d3463460a9f4cee3c01"><span class="id" title="notation">}</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="derivN"><span class="id" title="lemma">derivN</span></a> : <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#3d6621e6eef40dcc7dc9a612222d0b4e"><span class="id" title="notation">{</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#3d6621e6eef40dcc7dc9a612222d0b4e"><span class="id" title="notation">morph</span></a> <a class="idref" href="mathcomp.algebra.poly.html#deriv"><span class="id" title="definition">deriv</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#3d6621e6eef40dcc7dc9a612222d0b4e"><span class="id" title="notation">:</span></a> <span class="id" title="var">p</span> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#3d6621e6eef40dcc7dc9a612222d0b4e"><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.poly.html#p"><span class="id" title="variable">p</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#3d6621e6eef40dcc7dc9a612222d0b4e"><span class="id" title="notation">}</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="derivB"><span class="id" title="lemma">derivB</span></a> : <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#e69c60b553f06d3463460a9f4cee3c01"><span class="id" title="notation">{</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#e69c60b553f06d3463460a9f4cee3c01"><span class="id" title="notation">morph</span></a> <a class="idref" href="mathcomp.algebra.poly.html#deriv"><span class="id" title="definition">deriv</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#e69c60b553f06d3463460a9f4cee3c01"><span class="id" title="notation">:</span></a> <span class="id" title="var">p</span> <span class="id" title="var">q</span> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#e69c60b553f06d3463460a9f4cee3c01"><span class="id" title="notation">/</span></a> <a class="idref" href="mathcomp.algebra.poly.html#p"><span class="id" title="variable">p</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#51dc792c356ca1a71a3094b50d6bb2fb"><span class="id" title="notation">-</span></a> <a class="idref" href="mathcomp.algebra.poly.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.ssrfun.html#e69c60b553f06d3463460a9f4cee3c01"><span class="id" title="notation">}</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="derivXsubC"><span class="id" title="lemma">derivXsubC</span></a> (<span class="id" title="var">a</span> : <a class="idref" href="mathcomp.algebra.poly.html#PolynomialTheory.R"><span class="id" title="variable">R</span></a>) : <a class="idref" href="mathcomp.algebra.poly.html#cfa0aa09962cfc701c4777d893c479b4"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.poly.html#78f0b7e9c087664de9d653df6828ab64"><span class="id" title="notation">'</span></a><a class="idref" href="mathcomp.algebra.poly.html#78f0b7e9c087664de9d653df6828ab64"><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.poly.html#a"><span class="id" title="variable">a</span></a><a class="idref" href="mathcomp.algebra.poly.html#728a2917ff59e46e3f0e4d98ed9ea172"><span class="id" title="notation">%:</span></a><a class="idref" href="mathcomp.algebra.poly.html#728a2917ff59e46e3f0e4d98ed9ea172"><span class="id" title="notation">P</span></a><a class="idref" href="mathcomp.algebra.poly.html#cfa0aa09962cfc701c4777d893c479b4"><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> 1.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="derivMn"><span class="id" title="lemma">derivMn</span></a> <span class="id" title="var">n</span> <span class="id" title="var">p</span> : <a class="idref" href="mathcomp.algebra.poly.html#cfa0aa09962cfc701c4777d893c479b4"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.poly.html#p"><span class="id" title="variable">p</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#e9001f602764f7896bb1eb34bf606a23"><span class="id" title="notation">*+</span></a> <a class="idref" href="mathcomp.algebra.poly.html#n"><span class="id" title="variable">n</span></a><a class="idref" href="mathcomp.algebra.poly.html#cfa0aa09962cfc701c4777d893c479b4"><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.poly.html#p"><span class="id" title="variable">p</span></a><a class="idref" href="mathcomp.algebra.poly.html#cfa0aa09962cfc701c4777d893c479b4"><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.poly.html#n"><span class="id" title="variable">n</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="derivMNn"><span class="id" title="lemma">derivMNn</span></a> <span class="id" title="var">n</span> <span class="id" title="var">p</span> : <a class="idref" href="mathcomp.algebra.poly.html#cfa0aa09962cfc701c4777d893c479b4"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.poly.html#p"><span class="id" title="variable">p</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#e4d9eba2da60fcfead1a1c78283587ed"><span class="id" title="notation">*-</span></a> <a class="idref" href="mathcomp.algebra.poly.html#n"><span class="id" title="variable">n</span></a><a class="idref" href="mathcomp.algebra.poly.html#cfa0aa09962cfc701c4777d893c479b4"><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.poly.html#p"><span class="id" title="variable">p</span></a><a class="idref" href="mathcomp.algebra.poly.html#cfa0aa09962cfc701c4777d893c479b4"><span class="id" title="notation">^`</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#e4d9eba2da60fcfead1a1c78283587ed"><span class="id" title="notation">*-</span></a> <a class="idref" href="mathcomp.algebra.poly.html#n"><span class="id" title="variable">n</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="derivZ"><span class="id" title="lemma">derivZ</span></a> <span class="id" title="var">c</span> <span class="id" title="var">p</span> : <a class="idref" href="mathcomp.algebra.poly.html#cfa0aa09962cfc701c4777d893c479b4"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.poly.html#c"><span class="id" title="variable">c</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#3b05480e39db306e67fadbc79d394529"><span class="id" title="notation">*:</span></a> <a class="idref" href="mathcomp.algebra.poly.html#p"><span class="id" title="variable">p</span></a><a class="idref" href="mathcomp.algebra.poly.html#cfa0aa09962cfc701c4777d893c479b4"><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.poly.html#c"><span class="id" title="variable">c</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#3b05480e39db306e67fadbc79d394529"><span class="id" title="notation">*:</span></a> <a class="idref" href="mathcomp.algebra.poly.html#p"><span class="id" title="variable">p</span></a><a class="idref" href="mathcomp.algebra.poly.html#cfa0aa09962cfc701c4777d893c479b4"><span class="id" title="notation">^`</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="deriv_mulC"><span class="id" title="lemma">deriv_mulC</span></a> <span class="id" title="var">c</span> <span class="id" title="var">p</span> : <a class="idref" href="mathcomp.algebra.poly.html#cfa0aa09962cfc701c4777d893c479b4"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.poly.html#c"><span class="id" title="variable">c</span></a><a class="idref" href="mathcomp.algebra.poly.html#728a2917ff59e46e3f0e4d98ed9ea172"><span class="id" title="notation">%:</span></a><a class="idref" href="mathcomp.algebra.poly.html#728a2917ff59e46e3f0e4d98ed9ea172"><span class="id" title="notation">P</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#2d0cfb150261028f4ebd2ba355623dcc"><span class="id" title="notation">×</span></a> <a class="idref" href="mathcomp.algebra.poly.html#p"><span class="id" title="variable">p</span></a><a class="idref" href="mathcomp.algebra.poly.html#cfa0aa09962cfc701c4777d893c479b4"><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.poly.html#c"><span class="id" title="variable">c</span></a><a class="idref" href="mathcomp.algebra.poly.html#728a2917ff59e46e3f0e4d98ed9ea172"><span class="id" title="notation">%:</span></a><a class="idref" href="mathcomp.algebra.poly.html#728a2917ff59e46e3f0e4d98ed9ea172"><span class="id" title="notation">P</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#2d0cfb150261028f4ebd2ba355623dcc"><span class="id" title="notation">×</span></a> <a class="idref" href="mathcomp.algebra.poly.html#p"><span class="id" title="variable">p</span></a><a class="idref" href="mathcomp.algebra.poly.html#cfa0aa09962cfc701c4777d893c479b4"><span class="id" title="notation">^`</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="derivMXaddC"><span class="id" title="lemma">derivMXaddC</span></a> <span class="id" title="var">p</span> <span class="id" title="var">c</span> : <a class="idref" href="mathcomp.algebra.poly.html#cfa0aa09962cfc701c4777d893c479b4"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.poly.html#p"><span class="id" title="variable">p</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#2d0cfb150261028f4ebd2ba355623dcc"><span class="id" title="notation">×</span></a> <a class="idref" href="mathcomp.algebra.poly.html#78f0b7e9c087664de9d653df6828ab64"><span class="id" title="notation">'</span></a><a class="idref" href="mathcomp.algebra.poly.html#78f0b7e9c087664de9d653df6828ab64"><span class="id" title="notation">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.poly.html#c"><span class="id" title="variable">c</span></a><a class="idref" href="mathcomp.algebra.poly.html#728a2917ff59e46e3f0e4d98ed9ea172"><span class="id" title="notation">%:</span></a><a class="idref" href="mathcomp.algebra.poly.html#728a2917ff59e46e3f0e4d98ed9ea172"><span class="id" title="notation">P</span></a><a class="idref" href="mathcomp.algebra.poly.html#cfa0aa09962cfc701c4777d893c479b4"><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.poly.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.poly.html#p"><span class="id" title="variable">p</span></a><a class="idref" href="mathcomp.algebra.poly.html#cfa0aa09962cfc701c4777d893c479b4"><span class="id" title="notation">^`</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#2d0cfb150261028f4ebd2ba355623dcc"><span class="id" title="notation">×</span></a> <a class="idref" href="mathcomp.algebra.poly.html#78f0b7e9c087664de9d653df6828ab64"><span class="id" title="notation">'</span></a><a class="idref" href="mathcomp.algebra.poly.html#78f0b7e9c087664de9d653df6828ab64"><span class="id" title="notation">X</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="derivM"><span class="id" title="lemma">derivM</span></a> <span class="id" title="var">p</span> <span class="id" title="var">q</span> : <a class="idref" href="mathcomp.algebra.poly.html#cfa0aa09962cfc701c4777d893c479b4"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.poly.html#p"><span class="id" title="variable">p</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#2d0cfb150261028f4ebd2ba355623dcc"><span class="id" title="notation">×</span></a> <a class="idref" href="mathcomp.algebra.poly.html#q"><span class="id" title="variable">q</span></a><a class="idref" href="mathcomp.algebra.poly.html#cfa0aa09962cfc701c4777d893c479b4"><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.poly.html#p"><span class="id" title="variable">p</span></a><a class="idref" href="mathcomp.algebra.poly.html#cfa0aa09962cfc701c4777d893c479b4"><span class="id" title="notation">^`</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#2d0cfb150261028f4ebd2ba355623dcc"><span class="id" title="notation">×</span></a> <a class="idref" href="mathcomp.algebra.poly.html#q"><span class="id" title="variable">q</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#c7f78cf1f6a5e4f664654f7d671ca752"><span class="id" title="notation">+</span></a> <a class="idref" href="mathcomp.algebra.poly.html#p"><span class="id" title="variable">p</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#2d0cfb150261028f4ebd2ba355623dcc"><span class="id" title="notation">×</span></a> <a class="idref" href="mathcomp.algebra.poly.html#q"><span class="id" title="variable">q</span></a><a class="idref" href="mathcomp.algebra.poly.html#cfa0aa09962cfc701c4777d893c479b4"><span class="id" title="notation">^`</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Definition</span> <a name="derivE"><span class="id" title="definition">derivE</span></a> := <span class="id" title="keyword">Eval</span> <span class="id" title="tactic">lazy</span> <span class="id" title="keyword">beta</span> <span class="id" title="keyword">delta</span> [<span class="id" title="var">morphism_2</span> <span class="id" title="var">morphism_1</span>] <span class="id" title="tactic">in</span><br/> - <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.poly.html#derivZ"><span class="id" title="lemma">derivZ</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.poly.html#deriv_mulC"><span class="id" title="lemma">deriv_mulC</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.poly.html#derivC"><span class="id" title="lemma">derivC</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.poly.html#derivX"><span class="id" title="lemma">derivX</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.poly.html#derivMXaddC"><span class="id" title="lemma">derivMXaddC</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.poly.html#derivXsubC"><span class="id" title="lemma">derivXsubC</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.poly.html#derivM"><span class="id" title="lemma">derivM</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.poly.html#derivB"><span class="id" title="lemma">derivB</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><br/> - <a class="idref" href="mathcomp.algebra.poly.html#derivD"><span class="id" title="lemma">derivD</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.poly.html#derivN"><span class="id" title="lemma">derivN</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.poly.html#derivXn"><span class="id" title="lemma">derivXn</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.poly.html#derivM"><span class="id" title="lemma">derivM</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.poly.html#derivMn"><span class="id" title="lemma">derivMn</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>.<br/> - -<br/> -</div> - -<div class="doc"> - Iterated derivative. -</div> -<div class="code"> -<span class="id" title="keyword">Definition</span> <a name="derivn"><span class="id" title="definition">derivn</span></a> <span class="id" title="var">n</span> <span class="id" title="var">p</span> := <a class="idref" href="mathcomp.ssreflect.ssrnat.html#iter"><span class="id" title="definition">iter</span></a> <a class="idref" href="mathcomp.algebra.poly.html#n"><span class="id" title="variable">n</span></a> <a class="idref" href="mathcomp.algebra.poly.html#deriv"><span class="id" title="definition">deriv</span></a> <a class="idref" href="mathcomp.algebra.poly.html#p"><span class="id" title="variable">p</span></a>.<br/> - -<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="derivn0"><span class="id" title="lemma">derivn0</span></a> <span class="id" title="var">p</span> : <a class="idref" href="mathcomp.algebra.poly.html#p"><span class="id" title="variable">p</span></a><a class="idref" href="mathcomp.algebra.poly.html#1d9676bfa4392b4098c6e293b2d018ad"><span class="id" title="notation">^`(</span></a>0<a class="idref" href="mathcomp.algebra.poly.html#1d9676bfa4392b4098c6e293b2d018ad"><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.poly.html#p"><span class="id" title="variable">p</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="derivn1"><span class="id" title="lemma">derivn1</span></a> <span class="id" title="var">p</span> : <a class="idref" href="mathcomp.algebra.poly.html#p"><span class="id" title="variable">p</span></a><a class="idref" href="mathcomp.algebra.poly.html#1d9676bfa4392b4098c6e293b2d018ad"><span class="id" title="notation">^`(</span></a>1<a class="idref" href="mathcomp.algebra.poly.html#1d9676bfa4392b4098c6e293b2d018ad"><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.poly.html#p"><span class="id" title="variable">p</span></a><a class="idref" href="mathcomp.algebra.poly.html#cfa0aa09962cfc701c4777d893c479b4"><span class="id" title="notation">^`</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="derivnS"><span class="id" title="lemma">derivnS</span></a> <span class="id" title="var">p</span> <span class="id" title="var">n</span> : <a class="idref" href="mathcomp.algebra.poly.html#p"><span class="id" title="variable">p</span></a><a class="idref" href="mathcomp.algebra.poly.html#1d9676bfa4392b4098c6e293b2d018ad"><span class="id" title="notation">^`(</span></a><a class="idref" href="mathcomp.algebra.poly.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><a class="idref" href="mathcomp.algebra.poly.html#1d9676bfa4392b4098c6e293b2d018ad"><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.poly.html#p"><span class="id" title="variable">p</span></a><a class="idref" href="mathcomp.algebra.poly.html#1d9676bfa4392b4098c6e293b2d018ad"><span class="id" title="notation">^`(</span></a><a class="idref" href="mathcomp.algebra.poly.html#n"><span class="id" title="variable">n</span></a><a class="idref" href="mathcomp.algebra.poly.html#1d9676bfa4392b4098c6e293b2d018ad"><span class="id" title="notation">)</span></a><a class="idref" href="mathcomp.algebra.poly.html#cfa0aa09962cfc701c4777d893c479b4"><span class="id" title="notation">^`</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="derivSn"><span class="id" title="lemma">derivSn</span></a> <span class="id" title="var">p</span> <span class="id" title="var">n</span> : <a class="idref" href="mathcomp.algebra.poly.html#p"><span class="id" title="variable">p</span></a><a class="idref" href="mathcomp.algebra.poly.html#1d9676bfa4392b4098c6e293b2d018ad"><span class="id" title="notation">^`(</span></a><a class="idref" href="mathcomp.algebra.poly.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><a class="idref" href="mathcomp.algebra.poly.html#1d9676bfa4392b4098c6e293b2d018ad"><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.poly.html#p"><span class="id" title="variable">p</span></a><a class="idref" href="mathcomp.algebra.poly.html#cfa0aa09962cfc701c4777d893c479b4"><span class="id" title="notation">^`</span></a><a class="idref" href="mathcomp.algebra.poly.html#1d9676bfa4392b4098c6e293b2d018ad"><span class="id" title="notation">^`(</span></a><a class="idref" href="mathcomp.algebra.poly.html#n"><span class="id" title="variable">n</span></a><a class="idref" href="mathcomp.algebra.poly.html#1d9676bfa4392b4098c6e293b2d018ad"><span class="id" title="notation">)</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="coef_derivn"><span class="id" title="lemma">coef_derivn</span></a> <span class="id" title="var">n</span> <span class="id" title="var">p</span> <span class="id" title="var">i</span> : <a class="idref" href="mathcomp.algebra.poly.html#p"><span class="id" title="variable">p</span></a><a class="idref" href="mathcomp.algebra.poly.html#1d9676bfa4392b4098c6e293b2d018ad"><span class="id" title="notation">^`(</span></a><a class="idref" href="mathcomp.algebra.poly.html#n"><span class="id" title="variable">n</span></a><a class="idref" href="mathcomp.algebra.poly.html#1d9676bfa4392b4098c6e293b2d018ad"><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">_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#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">_</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#82d810f9f90b79e8fe98d90a63070c32"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.poly.html#n"><span class="id" title="variable">n</span></a> <a class="idref" href="mathcomp.ssreflect.ssrnat.html#0dacc1786c5ba797d47dd85006231633"><span class="id" title="notation">+</span></a> <a class="idref" href="mathcomp.algebra.poly.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="mathcomp.algebra.ssralg.html#e9001f602764f7896bb1eb34bf606a23"><span class="id" title="notation">*+</span></a> <a class="idref" href="mathcomp.ssreflect.binomial.html#a4b4211b62fc5f6a3d047747e223cb60"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.poly.html#n"><span class="id" title="variable">n</span></a> <a class="idref" href="mathcomp.ssreflect.ssrnat.html#0dacc1786c5ba797d47dd85006231633"><span class="id" title="notation">+</span></a> <a class="idref" href="mathcomp.algebra.poly.html#i"><span class="id" title="variable">i</span></a><a class="idref" href="mathcomp.ssreflect.binomial.html#a4b4211b62fc5f6a3d047747e223cb60"><span class="id" title="notation">)</span></a> <a class="idref" href="mathcomp.ssreflect.binomial.html#a4b4211b62fc5f6a3d047747e223cb60"><span class="id" title="notation">^</span></a><a class="idref" href="mathcomp.ssreflect.binomial.html#a4b4211b62fc5f6a3d047747e223cb60"><span class="id" title="notation">_</span></a> <a class="idref" href="mathcomp.algebra.poly.html#n"><span class="id" title="variable">n</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="polyOver_derivn"><span class="id" title="lemma">polyOver_derivn</span></a> <span class="id" title="var">S</span> (<span class="id" title="var">ringS</span> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Pred.Exports.semiringPred"><span class="id" title="abbreviation">semiringPred</span></a> <a class="idref" href="mathcomp.algebra.poly.html#S"><span class="id" title="variable">S</span></a>) (<span class="id" title="var">kS</span> : <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#keyed_pred"><span class="id" title="record">keyed_pred</span></a> <a class="idref" href="mathcomp.algebra.poly.html#ringS"><span class="id" title="variable">ringS</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.poly.html#polyOver"><span class="id" title="definition">polyOver</span></a> <a class="idref" href="mathcomp.algebra.poly.html#kS"><span class="id" title="variable">kS</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#8c08d4203604dbed63e7afa9b689d858"><span class="id" title="notation">,</span></a> <span class="id" title="keyword">∀</span> <span class="id" title="var">p</span> <span class="id" title="var">n</span>, <a class="idref" href="mathcomp.algebra.poly.html#p"><span class="id" title="variable">p</span></a><a class="idref" href="mathcomp.algebra.poly.html#1d9676bfa4392b4098c6e293b2d018ad"><span class="id" title="notation">^`(</span></a><a class="idref" href="mathcomp.algebra.poly.html#n"><span class="id" title="variable">n</span></a><a class="idref" href="mathcomp.algebra.poly.html#1d9676bfa4392b4098c6e293b2d018ad"><span class="id" title="notation">)</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#f6c65697fefaf4504de1d4d641cd4409"><span class="id" title="notation">\</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#f6c65697fefaf4504de1d4d641cd4409"><span class="id" title="notation">is</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#f6c65697fefaf4504de1d4d641cd4409"><span class="id" title="notation">a</span></a> <a class="idref" href="mathcomp.algebra.poly.html#polyOver"><span class="id" title="definition">polyOver</span></a> <a class="idref" href="mathcomp.algebra.poly.html#kS"><span class="id" title="variable">kS</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">Fact</span> <a name="derivn_is_linear"><span class="id" title="lemma">derivn_is_linear</span></a> <span class="id" title="var">n</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.poly.html#derivn"><span class="id" title="definition">derivn</span></a> <a class="idref" href="mathcomp.algebra.poly.html#n"><span class="id" title="variable">n</span></a>).<br/> - <span class="id" title="keyword">Canonical</span> <span class="id" title="var">derivn_additive</span> <span class="id" title="var">n</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.poly.html#derivn_is_linear"><span class="id" title="lemma">derivn_is_linear</span></a> <a class="idref" href="mathcomp.algebra.poly.html#n"><span class="id" title="variable">n</span></a>).<br/> -<span class="id" title="keyword">Canonical</span> <span class="id" title="var">derivn_linear</span> <span class="id" title="var">n</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.poly.html#derivn_is_linear"><span class="id" title="lemma">derivn_is_linear</span></a> <a class="idref" href="mathcomp.algebra.poly.html#n"><span class="id" title="variable">n</span></a>).<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="derivnC"><span class="id" title="lemma">derivnC</span></a> <span class="id" title="var">c</span> <span class="id" title="var">n</span> : <a class="idref" href="mathcomp.algebra.poly.html#c"><span class="id" title="variable">c</span></a><a class="idref" href="mathcomp.algebra.poly.html#728a2917ff59e46e3f0e4d98ed9ea172"><span class="id" title="notation">%:</span></a><a class="idref" href="mathcomp.algebra.poly.html#728a2917ff59e46e3f0e4d98ed9ea172"><span class="id" title="notation">P</span></a><a class="idref" href="mathcomp.algebra.poly.html#1d9676bfa4392b4098c6e293b2d018ad"><span class="id" title="notation">^`(</span></a><a class="idref" href="mathcomp.algebra.poly.html#n"><span class="id" title="variable">n</span></a><a class="idref" href="mathcomp.algebra.poly.html#1d9676bfa4392b4098c6e293b2d018ad"><span class="id" title="notation">)</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#6cd0f7b28b6092304087c7049437bb1a"><span class="id" title="notation">=</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssreflect.html#00a1a5b58aac8f1e3f1abff064a39f9d"><span class="id" title="notation">if</span></a> <a class="idref" href="mathcomp.algebra.poly.html#n"><span class="id" title="variable">n</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> <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.poly.html#c"><span class="id" title="variable">c</span></a><a class="idref" href="mathcomp.algebra.poly.html#728a2917ff59e46e3f0e4d98ed9ea172"><span class="id" title="notation">%:</span></a><a class="idref" href="mathcomp.algebra.poly.html#728a2917ff59e46e3f0e4d98ed9ea172"><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#00a1a5b58aac8f1e3f1abff064a39f9d"><span class="id" title="notation">else</span></a> 0.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="derivnD"><span class="id" title="lemma">derivnD</span></a> <span class="id" title="var">n</span> : <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#e69c60b553f06d3463460a9f4cee3c01"><span class="id" title="notation">{</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#e69c60b553f06d3463460a9f4cee3c01"><span class="id" title="notation">morph</span></a> <a class="idref" href="mathcomp.algebra.poly.html#derivn"><span class="id" title="definition">derivn</span></a> <a class="idref" href="mathcomp.algebra.poly.html#n"><span class="id" title="variable">n</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#e69c60b553f06d3463460a9f4cee3c01"><span class="id" title="notation">:</span></a> <span class="id" title="var">p</span> <span class="id" title="var">q</span> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#e69c60b553f06d3463460a9f4cee3c01"><span class="id" title="notation">/</span></a> <a class="idref" href="mathcomp.algebra.poly.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.poly.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.ssrfun.html#e69c60b553f06d3463460a9f4cee3c01"><span class="id" title="notation">}</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="derivn_sub"><span class="id" title="lemma">derivn_sub</span></a> <span class="id" title="var">n</span> : <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#e69c60b553f06d3463460a9f4cee3c01"><span class="id" title="notation">{</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#e69c60b553f06d3463460a9f4cee3c01"><span class="id" title="notation">morph</span></a> <a class="idref" href="mathcomp.algebra.poly.html#derivn"><span class="id" title="definition">derivn</span></a> <a class="idref" href="mathcomp.algebra.poly.html#n"><span class="id" title="variable">n</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#e69c60b553f06d3463460a9f4cee3c01"><span class="id" title="notation">:</span></a> <span class="id" title="var">p</span> <span class="id" title="var">q</span> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#e69c60b553f06d3463460a9f4cee3c01"><span class="id" title="notation">/</span></a> <a class="idref" href="mathcomp.algebra.poly.html#p"><span class="id" title="variable">p</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#51dc792c356ca1a71a3094b50d6bb2fb"><span class="id" title="notation">-</span></a> <a class="idref" href="mathcomp.algebra.poly.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.ssrfun.html#e69c60b553f06d3463460a9f4cee3c01"><span class="id" title="notation">}</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="derivnMn"><span class="id" title="lemma">derivnMn</span></a> <span class="id" title="var">n</span> <span class="id" title="var">m</span> <span class="id" title="var">p</span> : <a class="idref" href="mathcomp.algebra.poly.html#1d9676bfa4392b4098c6e293b2d018ad"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.poly.html#p"><span class="id" title="variable">p</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#e9001f602764f7896bb1eb34bf606a23"><span class="id" title="notation">*+</span></a> <a class="idref" href="mathcomp.algebra.poly.html#m"><span class="id" title="variable">m</span></a><a class="idref" href="mathcomp.algebra.poly.html#1d9676bfa4392b4098c6e293b2d018ad"><span class="id" title="notation">)^`(</span></a><a class="idref" href="mathcomp.algebra.poly.html#n"><span class="id" title="variable">n</span></a><a class="idref" href="mathcomp.algebra.poly.html#1d9676bfa4392b4098c6e293b2d018ad"><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.poly.html#p"><span class="id" title="variable">p</span></a><a class="idref" href="mathcomp.algebra.poly.html#1d9676bfa4392b4098c6e293b2d018ad"><span class="id" title="notation">^`(</span></a><a class="idref" href="mathcomp.algebra.poly.html#n"><span class="id" title="variable">n</span></a><a class="idref" href="mathcomp.algebra.poly.html#1d9676bfa4392b4098c6e293b2d018ad"><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.poly.html#m"><span class="id" title="variable">m</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="derivnMNn"><span class="id" title="lemma">derivnMNn</span></a> <span class="id" title="var">n</span> <span class="id" title="var">m</span> <span class="id" title="var">p</span> : <a class="idref" href="mathcomp.algebra.poly.html#1d9676bfa4392b4098c6e293b2d018ad"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.poly.html#p"><span class="id" title="variable">p</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#e4d9eba2da60fcfead1a1c78283587ed"><span class="id" title="notation">*-</span></a> <a class="idref" href="mathcomp.algebra.poly.html#m"><span class="id" title="variable">m</span></a><a class="idref" href="mathcomp.algebra.poly.html#1d9676bfa4392b4098c6e293b2d018ad"><span class="id" title="notation">)^`(</span></a><a class="idref" href="mathcomp.algebra.poly.html#n"><span class="id" title="variable">n</span></a><a class="idref" href="mathcomp.algebra.poly.html#1d9676bfa4392b4098c6e293b2d018ad"><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.poly.html#p"><span class="id" title="variable">p</span></a><a class="idref" href="mathcomp.algebra.poly.html#1d9676bfa4392b4098c6e293b2d018ad"><span class="id" title="notation">^`(</span></a><a class="idref" href="mathcomp.algebra.poly.html#n"><span class="id" title="variable">n</span></a><a class="idref" href="mathcomp.algebra.poly.html#1d9676bfa4392b4098c6e293b2d018ad"><span class="id" title="notation">)</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#e4d9eba2da60fcfead1a1c78283587ed"><span class="id" title="notation">*-</span></a> <a class="idref" href="mathcomp.algebra.poly.html#m"><span class="id" title="variable">m</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="derivnN"><span class="id" title="lemma">derivnN</span></a> <span class="id" title="var">n</span> : <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#3d6621e6eef40dcc7dc9a612222d0b4e"><span class="id" title="notation">{</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#3d6621e6eef40dcc7dc9a612222d0b4e"><span class="id" title="notation">morph</span></a> <a class="idref" href="mathcomp.algebra.poly.html#derivn"><span class="id" title="definition">derivn</span></a> <a class="idref" href="mathcomp.algebra.poly.html#n"><span class="id" title="variable">n</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#3d6621e6eef40dcc7dc9a612222d0b4e"><span class="id" title="notation">:</span></a> <span class="id" title="var">p</span> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#3d6621e6eef40dcc7dc9a612222d0b4e"><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.poly.html#p"><span class="id" title="variable">p</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#3d6621e6eef40dcc7dc9a612222d0b4e"><span class="id" title="notation">}</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="derivnZ"><span class="id" title="lemma">derivnZ</span></a> <span class="id" title="var">n</span> : <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.poly.html#derivn"><span class="id" title="definition">derivn</span></a> <a class="idref" href="mathcomp.algebra.poly.html#n"><span class="id" title="variable">n</span></a>).<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="derivnXn"><span class="id" title="lemma">derivnXn</span></a> <span class="id" title="var">m</span> <span class="id" title="var">n</span> : <a class="idref" href="mathcomp.algebra.poly.html#72573bab7b99d99443b6173a7515ef0d"><span class="id" title="notation">'</span></a><a class="idref" href="mathcomp.algebra.poly.html#72573bab7b99d99443b6173a7515ef0d"><span class="id" title="notation">X</span></a><a class="idref" href="mathcomp.algebra.poly.html#72573bab7b99d99443b6173a7515ef0d"><span class="id" title="notation">^</span></a><a class="idref" href="mathcomp.algebra.poly.html#m"><span class="id" title="variable">m</span></a><a class="idref" href="mathcomp.algebra.poly.html#1d9676bfa4392b4098c6e293b2d018ad"><span class="id" title="notation">^`(</span></a><a class="idref" href="mathcomp.algebra.poly.html#n"><span class="id" title="variable">n</span></a><a class="idref" href="mathcomp.algebra.poly.html#1d9676bfa4392b4098c6e293b2d018ad"><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.poly.html#72573bab7b99d99443b6173a7515ef0d"><span class="id" title="notation">'</span></a><a class="idref" href="mathcomp.algebra.poly.html#72573bab7b99d99443b6173a7515ef0d"><span class="id" title="notation">X</span></a><a class="idref" href="mathcomp.algebra.poly.html#72573bab7b99d99443b6173a7515ef0d"><span class="id" title="notation">^(</span></a><a class="idref" href="mathcomp.algebra.poly.html#m"><span class="id" title="variable">m</span></a> <a class="idref" href="mathcomp.ssreflect.ssrnat.html#7825ccc99f23b0d30c9d40c317ba7af0"><span class="id" title="notation">-</span></a> <a class="idref" href="mathcomp.algebra.poly.html#n"><span class="id" title="variable">n</span></a><a class="idref" href="mathcomp.algebra.poly.html#72573bab7b99d99443b6173a7515ef0d"><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.poly.html#m"><span class="id" title="variable">m</span></a> <a class="idref" href="mathcomp.ssreflect.binomial.html#a4b4211b62fc5f6a3d047747e223cb60"><span class="id" title="notation">^</span></a><a class="idref" href="mathcomp.ssreflect.binomial.html#a4b4211b62fc5f6a3d047747e223cb60"><span class="id" title="notation">_</span></a> <a class="idref" href="mathcomp.algebra.poly.html#n"><span class="id" title="variable">n</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="derivnMXaddC"><span class="id" title="lemma">derivnMXaddC</span></a> <span class="id" title="var">n</span> <span class="id" title="var">p</span> <span class="id" title="var">c</span> :<br/> - <a class="idref" href="mathcomp.algebra.poly.html#1d9676bfa4392b4098c6e293b2d018ad"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.poly.html#p"><span class="id" title="variable">p</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#2d0cfb150261028f4ebd2ba355623dcc"><span class="id" title="notation">×</span></a> <a class="idref" href="mathcomp.algebra.poly.html#78f0b7e9c087664de9d653df6828ab64"><span class="id" title="notation">'</span></a><a class="idref" href="mathcomp.algebra.poly.html#78f0b7e9c087664de9d653df6828ab64"><span class="id" title="notation">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.poly.html#c"><span class="id" title="variable">c</span></a><a class="idref" href="mathcomp.algebra.poly.html#728a2917ff59e46e3f0e4d98ed9ea172"><span class="id" title="notation">%:</span></a><a class="idref" href="mathcomp.algebra.poly.html#728a2917ff59e46e3f0e4d98ed9ea172"><span class="id" title="notation">P</span></a><a class="idref" href="mathcomp.algebra.poly.html#1d9676bfa4392b4098c6e293b2d018ad"><span class="id" title="notation">)^`(</span></a><a class="idref" href="mathcomp.algebra.poly.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><a class="idref" href="mathcomp.algebra.poly.html#1d9676bfa4392b4098c6e293b2d018ad"><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.poly.html#p"><span class="id" title="variable">p</span></a><a class="idref" href="mathcomp.algebra.poly.html#1d9676bfa4392b4098c6e293b2d018ad"><span class="id" title="notation">^`(</span></a><a class="idref" href="mathcomp.algebra.poly.html#n"><span class="id" title="variable">n</span></a><a class="idref" href="mathcomp.algebra.poly.html#1d9676bfa4392b4098c6e293b2d018ad"><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.poly.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> <a class="idref" href="mathcomp.algebra.ssralg.html#c7f78cf1f6a5e4f664654f7d671ca752"><span class="id" title="notation">+</span></a> <a class="idref" href="mathcomp.algebra.poly.html#p"><span class="id" title="variable">p</span></a><a class="idref" href="mathcomp.algebra.poly.html#1d9676bfa4392b4098c6e293b2d018ad"><span class="id" title="notation">^`(</span></a><a class="idref" href="mathcomp.algebra.poly.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><a class="idref" href="mathcomp.algebra.poly.html#1d9676bfa4392b4098c6e293b2d018ad"><span class="id" title="notation">)</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#2d0cfb150261028f4ebd2ba355623dcc"><span class="id" title="notation">×</span></a> <a class="idref" href="mathcomp.algebra.poly.html#78f0b7e9c087664de9d653df6828ab64"><span class="id" title="notation">'</span></a><a class="idref" href="mathcomp.algebra.poly.html#78f0b7e9c087664de9d653df6828ab64"><span class="id" title="notation">X</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="derivn_poly0"><span class="id" title="lemma">derivn_poly0</span></a> <span class="id" title="var">p</span> <span class="id" title="var">n</span> : <a class="idref" href="mathcomp.ssreflect.seq.html#size"><span class="id" title="definition">size</span></a> <a class="idref" href="mathcomp.algebra.poly.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.poly.html#n"><span class="id" title="variable">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#p"><span class="id" title="variable">p</span></a><a class="idref" href="mathcomp.algebra.poly.html#1d9676bfa4392b4098c6e293b2d018ad"><span class="id" title="notation">^`(</span></a><a class="idref" href="mathcomp.algebra.poly.html#n"><span class="id" title="variable">n</span></a><a class="idref" href="mathcomp.algebra.poly.html#1d9676bfa4392b4098c6e293b2d018ad"><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> 0.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="lt_size_deriv"><span class="id" title="lemma">lt_size_deriv</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.poly.html#PolynomialTheory.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.poly.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.ssreflect.seq.html#size"><span class="id" title="definition">size</span></a> <a class="idref" href="mathcomp.algebra.poly.html#p"><span class="id" title="variable">p</span></a><a class="idref" href="mathcomp.algebra.poly.html#cfa0aa09962cfc701c4777d893c479b4"><span class="id" title="notation">^`</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.poly.html#p"><span class="id" title="variable">p</span></a>.<br/> - -<br/> -</div> - -<div class="doc"> - A normalising version of derivation to get the division by n! in Taylor -</div> -<div class="code"> - -<br/> -<span class="id" title="keyword">Definition</span> <a name="nderivn"><span class="id" title="definition">nderivn</span></a> <span class="id" title="var">n</span> <span class="id" title="var">p</span> := <a class="idref" href="mathcomp.algebra.poly.html#27fd9446e6d344308e4e6554f93d6b3b"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.algebra.poly.html#27fd9446e6d344308e4e6554f93d6b3b"><span class="id" title="notation">poly_</span></a><a class="idref" href="mathcomp.algebra.poly.html#27fd9446e6d344308e4e6554f93d6b3b"><span class="id" title="notation">(</span></a><span class="id" title="var">i</span> <a class="idref" href="mathcomp.algebra.poly.html#27fd9446e6d344308e4e6554f93d6b3b"><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.poly.html#p"><span class="id" title="variable">p</span></a> <a class="idref" href="mathcomp.ssreflect.ssrnat.html#7825ccc99f23b0d30c9d40c317ba7af0"><span class="id" title="notation">-</span></a> <a class="idref" href="mathcomp.algebra.poly.html#n"><span class="id" title="variable">n</span></a><a class="idref" href="mathcomp.algebra.poly.html#27fd9446e6d344308e4e6554f93d6b3b"><span class="id" title="notation">)</span></a> <a class="idref" href="mathcomp.algebra.poly.html#27fd9446e6d344308e4e6554f93d6b3b"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.poly.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">_</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#82d810f9f90b79e8fe98d90a63070c32"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.poly.html#n"><span class="id" title="variable">n</span></a> <a class="idref" href="mathcomp.ssreflect.ssrnat.html#0dacc1786c5ba797d47dd85006231633"><span class="id" title="notation">+</span></a> <a class="idref" href="mathcomp.algebra.poly.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="mathcomp.algebra.ssralg.html#e9001f602764f7896bb1eb34bf606a23"><span class="id" title="notation">*+</span></a> <a class="idref" href="mathcomp.ssreflect.binomial.html#95129fba25b300adee91ca933fa2fcdc"><span class="id" title="notation">'</span></a><a class="idref" href="mathcomp.ssreflect.binomial.html#95129fba25b300adee91ca933fa2fcdc"><span class="id" title="notation">C</span></a><a class="idref" href="mathcomp.ssreflect.binomial.html#95129fba25b300adee91ca933fa2fcdc"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.poly.html#n"><span class="id" title="variable">n</span></a> <a class="idref" href="mathcomp.ssreflect.ssrnat.html#0dacc1786c5ba797d47dd85006231633"><span class="id" title="notation">+</span></a> <a class="idref" href="mathcomp.algebra.poly.html#i"><span class="id" title="variable">i</span></a><a class="idref" href="mathcomp.ssreflect.binomial.html#95129fba25b300adee91ca933fa2fcdc"><span class="id" title="notation">,</span></a> <a class="idref" href="mathcomp.algebra.poly.html#n"><span class="id" title="variable">n</span></a><a class="idref" href="mathcomp.ssreflect.binomial.html#95129fba25b300adee91ca933fa2fcdc"><span class="id" title="notation">)</span></a><a class="idref" href="mathcomp.algebra.poly.html#27fd9446e6d344308e4e6554f93d6b3b"><span class="id" title="notation">)</span></a>.<br/> - -<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="coef_nderivn"><span class="id" title="lemma">coef_nderivn</span></a> <span class="id" title="var">n</span> <span class="id" title="var">p</span> <span class="id" title="var">i</span> : <a class="idref" href="mathcomp.algebra.poly.html#p"><span class="id" title="variable">p</span></a><a class="idref" href="mathcomp.algebra.poly.html#31951e7a9fd9bb5a774892066ed196b8"><span class="id" title="notation">^`</span></a><a class="idref" href="mathcomp.algebra.poly.html#31951e7a9fd9bb5a774892066ed196b8"><span class="id" title="notation">N</span></a><a class="idref" href="mathcomp.algebra.poly.html#31951e7a9fd9bb5a774892066ed196b8"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.poly.html#n"><span class="id" title="variable">n</span></a><a class="idref" href="mathcomp.algebra.poly.html#31951e7a9fd9bb5a774892066ed196b8"><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">_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#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">_</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#82d810f9f90b79e8fe98d90a63070c32"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.poly.html#n"><span class="id" title="variable">n</span></a> <a class="idref" href="mathcomp.ssreflect.ssrnat.html#0dacc1786c5ba797d47dd85006231633"><span class="id" title="notation">+</span></a> <a class="idref" href="mathcomp.algebra.poly.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="mathcomp.algebra.ssralg.html#e9001f602764f7896bb1eb34bf606a23"><span class="id" title="notation">*+</span></a> <a class="idref" href="mathcomp.ssreflect.binomial.html#95129fba25b300adee91ca933fa2fcdc"><span class="id" title="notation">'</span></a><a class="idref" href="mathcomp.ssreflect.binomial.html#95129fba25b300adee91ca933fa2fcdc"><span class="id" title="notation">C</span></a><a class="idref" href="mathcomp.ssreflect.binomial.html#95129fba25b300adee91ca933fa2fcdc"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.poly.html#n"><span class="id" title="variable">n</span></a> <a class="idref" href="mathcomp.ssreflect.ssrnat.html#0dacc1786c5ba797d47dd85006231633"><span class="id" title="notation">+</span></a> <a class="idref" href="mathcomp.algebra.poly.html#i"><span class="id" title="variable">i</span></a><a class="idref" href="mathcomp.ssreflect.binomial.html#95129fba25b300adee91ca933fa2fcdc"><span class="id" title="notation">,</span></a> <a class="idref" href="mathcomp.algebra.poly.html#n"><span class="id" title="variable">n</span></a><a class="idref" href="mathcomp.ssreflect.binomial.html#95129fba25b300adee91ca933fa2fcdc"><span class="id" title="notation">)</span></a>.<br/> - -<br/> -</div> - -<div class="doc"> - Here is the division by n! -</div> -<div class="code"> -<span class="id" title="keyword">Lemma</span> <a name="nderivn_def"><span class="id" title="lemma">nderivn_def</span></a> <span class="id" title="var">n</span> <span class="id" title="var">p</span> : <a class="idref" href="mathcomp.algebra.poly.html#p"><span class="id" title="variable">p</span></a><a class="idref" href="mathcomp.algebra.poly.html#1d9676bfa4392b4098c6e293b2d018ad"><span class="id" title="notation">^`(</span></a><a class="idref" href="mathcomp.algebra.poly.html#n"><span class="id" title="variable">n</span></a><a class="idref" href="mathcomp.algebra.poly.html#1d9676bfa4392b4098c6e293b2d018ad"><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.poly.html#p"><span class="id" title="variable">p</span></a><a class="idref" href="mathcomp.algebra.poly.html#31951e7a9fd9bb5a774892066ed196b8"><span class="id" title="notation">^`</span></a><a class="idref" href="mathcomp.algebra.poly.html#31951e7a9fd9bb5a774892066ed196b8"><span class="id" title="notation">N</span></a><a class="idref" href="mathcomp.algebra.poly.html#31951e7a9fd9bb5a774892066ed196b8"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.poly.html#n"><span class="id" title="variable">n</span></a><a class="idref" href="mathcomp.algebra.poly.html#31951e7a9fd9bb5a774892066ed196b8"><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.poly.html#n"><span class="id" title="variable">n</span></a><a class="idref" href="mathcomp.ssreflect.ssrnat.html#fb85b56582e20c3ab47a4e55b1f6f111"><span class="id" title="notation">`!</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="polyOver_nderivn"><span class="id" title="lemma">polyOver_nderivn</span></a> <span class="id" title="var">S</span> (<span class="id" title="var">ringS</span> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Pred.Exports.semiringPred"><span class="id" title="abbreviation">semiringPred</span></a> <a class="idref" href="mathcomp.algebra.poly.html#S"><span class="id" title="variable">S</span></a>) (<span class="id" title="var">kS</span> : <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#keyed_pred"><span class="id" title="record">keyed_pred</span></a> <a class="idref" href="mathcomp.algebra.poly.html#ringS"><span class="id" title="variable">ringS</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.poly.html#polyOver"><span class="id" title="definition">polyOver</span></a> <a class="idref" href="mathcomp.algebra.poly.html#kS"><span class="id" title="variable">kS</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#8c08d4203604dbed63e7afa9b689d858"><span class="id" title="notation">,</span></a> <span class="id" title="keyword">∀</span> <span class="id" title="var">p</span> <span class="id" title="var">n</span>, <a class="idref" href="mathcomp.algebra.poly.html#p"><span class="id" title="variable">p</span></a><a class="idref" href="mathcomp.algebra.poly.html#31951e7a9fd9bb5a774892066ed196b8"><span class="id" title="notation">^`</span></a><a class="idref" href="mathcomp.algebra.poly.html#31951e7a9fd9bb5a774892066ed196b8"><span class="id" title="notation">N</span></a><a class="idref" href="mathcomp.algebra.poly.html#31951e7a9fd9bb5a774892066ed196b8"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.poly.html#n"><span class="id" title="variable">n</span></a><a class="idref" href="mathcomp.algebra.poly.html#31951e7a9fd9bb5a774892066ed196b8"><span class="id" title="notation">)</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#b09457274bcb94927e289b8a9e9cd3f7"><span class="id" title="notation">\</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#b09457274bcb94927e289b8a9e9cd3f7"><span class="id" title="notation">in</span></a> <a class="idref" href="mathcomp.algebra.poly.html#polyOver"><span class="id" title="definition">polyOver</span></a> <a class="idref" href="mathcomp.algebra.poly.html#kS"><span class="id" title="variable">kS</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="nderivn0"><span class="id" title="lemma">nderivn0</span></a> <span class="id" title="var">p</span> : <a class="idref" href="mathcomp.algebra.poly.html#p"><span class="id" title="variable">p</span></a><a class="idref" href="mathcomp.algebra.poly.html#31951e7a9fd9bb5a774892066ed196b8"><span class="id" title="notation">^`</span></a><a class="idref" href="mathcomp.algebra.poly.html#31951e7a9fd9bb5a774892066ed196b8"><span class="id" title="notation">N</span></a><a class="idref" href="mathcomp.algebra.poly.html#31951e7a9fd9bb5a774892066ed196b8"><span class="id" title="notation">(</span></a>0<a class="idref" href="mathcomp.algebra.poly.html#31951e7a9fd9bb5a774892066ed196b8"><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.poly.html#p"><span class="id" title="variable">p</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="nderivn1"><span class="id" title="lemma">nderivn1</span></a> <span class="id" title="var">p</span> : <a class="idref" href="mathcomp.algebra.poly.html#p"><span class="id" title="variable">p</span></a><a class="idref" href="mathcomp.algebra.poly.html#31951e7a9fd9bb5a774892066ed196b8"><span class="id" title="notation">^`</span></a><a class="idref" href="mathcomp.algebra.poly.html#31951e7a9fd9bb5a774892066ed196b8"><span class="id" title="notation">N</span></a><a class="idref" href="mathcomp.algebra.poly.html#31951e7a9fd9bb5a774892066ed196b8"><span class="id" title="notation">(</span></a>1<a class="idref" href="mathcomp.algebra.poly.html#31951e7a9fd9bb5a774892066ed196b8"><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.poly.html#p"><span class="id" title="variable">p</span></a><a class="idref" href="mathcomp.algebra.poly.html#cfa0aa09962cfc701c4777d893c479b4"><span class="id" title="notation">^`</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="nderivnC"><span class="id" title="lemma">nderivnC</span></a> <span class="id" title="var">c</span> <span class="id" title="var">n</span> : <a class="idref" href="mathcomp.algebra.poly.html#31951e7a9fd9bb5a774892066ed196b8"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.poly.html#c"><span class="id" title="variable">c</span></a><a class="idref" href="mathcomp.algebra.poly.html#728a2917ff59e46e3f0e4d98ed9ea172"><span class="id" title="notation">%:</span></a><a class="idref" href="mathcomp.algebra.poly.html#728a2917ff59e46e3f0e4d98ed9ea172"><span class="id" title="notation">P</span></a><a class="idref" href="mathcomp.algebra.poly.html#31951e7a9fd9bb5a774892066ed196b8"><span class="id" title="notation">)^`</span></a><a class="idref" href="mathcomp.algebra.poly.html#31951e7a9fd9bb5a774892066ed196b8"><span class="id" title="notation">N</span></a><a class="idref" href="mathcomp.algebra.poly.html#31951e7a9fd9bb5a774892066ed196b8"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.poly.html#n"><span class="id" title="variable">n</span></a><a class="idref" href="mathcomp.algebra.poly.html#31951e7a9fd9bb5a774892066ed196b8"><span class="id" title="notation">)</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#6cd0f7b28b6092304087c7049437bb1a"><span class="id" title="notation">=</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssreflect.html#00a1a5b58aac8f1e3f1abff064a39f9d"><span class="id" title="notation">if</span></a> <a class="idref" href="mathcomp.algebra.poly.html#n"><span class="id" title="variable">n</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> <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.poly.html#c"><span class="id" title="variable">c</span></a><a class="idref" href="mathcomp.algebra.poly.html#728a2917ff59e46e3f0e4d98ed9ea172"><span class="id" title="notation">%:</span></a><a class="idref" href="mathcomp.algebra.poly.html#728a2917ff59e46e3f0e4d98ed9ea172"><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#00a1a5b58aac8f1e3f1abff064a39f9d"><span class="id" title="notation">else</span></a> 0.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="nderivnXn"><span class="id" title="lemma">nderivnXn</span></a> <span class="id" title="var">m</span> <span class="id" title="var">n</span> : <a class="idref" href="mathcomp.algebra.poly.html#72573bab7b99d99443b6173a7515ef0d"><span class="id" title="notation">'</span></a><a class="idref" href="mathcomp.algebra.poly.html#72573bab7b99d99443b6173a7515ef0d"><span class="id" title="notation">X</span></a><a class="idref" href="mathcomp.algebra.poly.html#72573bab7b99d99443b6173a7515ef0d"><span class="id" title="notation">^</span></a><a class="idref" href="mathcomp.algebra.poly.html#m"><span class="id" title="variable">m</span></a><a class="idref" href="mathcomp.algebra.poly.html#31951e7a9fd9bb5a774892066ed196b8"><span class="id" title="notation">^`</span></a><a class="idref" href="mathcomp.algebra.poly.html#31951e7a9fd9bb5a774892066ed196b8"><span class="id" title="notation">N</span></a><a class="idref" href="mathcomp.algebra.poly.html#31951e7a9fd9bb5a774892066ed196b8"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.poly.html#n"><span class="id" title="variable">n</span></a><a class="idref" href="mathcomp.algebra.poly.html#31951e7a9fd9bb5a774892066ed196b8"><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.poly.html#72573bab7b99d99443b6173a7515ef0d"><span class="id" title="notation">'</span></a><a class="idref" href="mathcomp.algebra.poly.html#72573bab7b99d99443b6173a7515ef0d"><span class="id" title="notation">X</span></a><a class="idref" href="mathcomp.algebra.poly.html#72573bab7b99d99443b6173a7515ef0d"><span class="id" title="notation">^(</span></a><a class="idref" href="mathcomp.algebra.poly.html#m"><span class="id" title="variable">m</span></a> <a class="idref" href="mathcomp.ssreflect.ssrnat.html#7825ccc99f23b0d30c9d40c317ba7af0"><span class="id" title="notation">-</span></a> <a class="idref" href="mathcomp.algebra.poly.html#n"><span class="id" title="variable">n</span></a><a class="idref" href="mathcomp.algebra.poly.html#72573bab7b99d99443b6173a7515ef0d"><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.ssreflect.binomial.html#95129fba25b300adee91ca933fa2fcdc"><span class="id" title="notation">'</span></a><a class="idref" href="mathcomp.ssreflect.binomial.html#95129fba25b300adee91ca933fa2fcdc"><span class="id" title="notation">C</span></a><a class="idref" href="mathcomp.ssreflect.binomial.html#95129fba25b300adee91ca933fa2fcdc"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.poly.html#m"><span class="id" title="variable">m</span></a><a class="idref" href="mathcomp.ssreflect.binomial.html#95129fba25b300adee91ca933fa2fcdc"><span class="id" title="notation">,</span></a> <a class="idref" href="mathcomp.algebra.poly.html#n"><span class="id" title="variable">n</span></a><a class="idref" href="mathcomp.ssreflect.binomial.html#95129fba25b300adee91ca933fa2fcdc"><span class="id" title="notation">)</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Fact</span> <a name="nderivn_is_linear"><span class="id" title="lemma">nderivn_is_linear</span></a> <span class="id" title="var">n</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.poly.html#nderivn"><span class="id" title="definition">nderivn</span></a> <a class="idref" href="mathcomp.algebra.poly.html#n"><span class="id" title="variable">n</span></a>).<br/> -<span class="id" title="keyword">Canonical</span> <span class="id" title="var">nderivn_additive</span> <span class="id" title="var">n</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.poly.html#nderivn_is_linear"><span class="id" title="lemma">nderivn_is_linear</span></a> <a class="idref" href="mathcomp.algebra.poly.html#n"><span class="id" title="variable">n</span></a>).<br/> -<span class="id" title="keyword">Canonical</span> <span class="id" title="var">nderivn_linear</span> <span class="id" title="var">n</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.poly.html#nderivn_is_linear"><span class="id" title="lemma">nderivn_is_linear</span></a> <a class="idref" href="mathcomp.algebra.poly.html#n"><span class="id" title="variable">n</span></a>).<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="nderivnD"><span class="id" title="lemma">nderivnD</span></a> <span class="id" title="var">n</span> : <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#e69c60b553f06d3463460a9f4cee3c01"><span class="id" title="notation">{</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#e69c60b553f06d3463460a9f4cee3c01"><span class="id" title="notation">morph</span></a> <a class="idref" href="mathcomp.algebra.poly.html#nderivn"><span class="id" title="definition">nderivn</span></a> <a class="idref" href="mathcomp.algebra.poly.html#n"><span class="id" title="variable">n</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#e69c60b553f06d3463460a9f4cee3c01"><span class="id" title="notation">:</span></a> <span class="id" title="var">p</span> <span class="id" title="var">q</span> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#e69c60b553f06d3463460a9f4cee3c01"><span class="id" title="notation">/</span></a> <a class="idref" href="mathcomp.algebra.poly.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.poly.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.ssrfun.html#e69c60b553f06d3463460a9f4cee3c01"><span class="id" title="notation">}</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="nderivnB"><span class="id" title="lemma">nderivnB</span></a> <span class="id" title="var">n</span> : <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#e69c60b553f06d3463460a9f4cee3c01"><span class="id" title="notation">{</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#e69c60b553f06d3463460a9f4cee3c01"><span class="id" title="notation">morph</span></a> <a class="idref" href="mathcomp.algebra.poly.html#nderivn"><span class="id" title="definition">nderivn</span></a> <a class="idref" href="mathcomp.algebra.poly.html#n"><span class="id" title="variable">n</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#e69c60b553f06d3463460a9f4cee3c01"><span class="id" title="notation">:</span></a> <span class="id" title="var">p</span> <span class="id" title="var">q</span> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#e69c60b553f06d3463460a9f4cee3c01"><span class="id" title="notation">/</span></a> <a class="idref" href="mathcomp.algebra.poly.html#p"><span class="id" title="variable">p</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#51dc792c356ca1a71a3094b50d6bb2fb"><span class="id" title="notation">-</span></a> <a class="idref" href="mathcomp.algebra.poly.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.ssrfun.html#e69c60b553f06d3463460a9f4cee3c01"><span class="id" title="notation">}</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="nderivnMn"><span class="id" title="lemma">nderivnMn</span></a> <span class="id" title="var">n</span> <span class="id" title="var">m</span> <span class="id" title="var">p</span> : <a class="idref" href="mathcomp.algebra.poly.html#31951e7a9fd9bb5a774892066ed196b8"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.poly.html#p"><span class="id" title="variable">p</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#e9001f602764f7896bb1eb34bf606a23"><span class="id" title="notation">*+</span></a> <a class="idref" href="mathcomp.algebra.poly.html#m"><span class="id" title="variable">m</span></a><a class="idref" href="mathcomp.algebra.poly.html#31951e7a9fd9bb5a774892066ed196b8"><span class="id" title="notation">)^`</span></a><a class="idref" href="mathcomp.algebra.poly.html#31951e7a9fd9bb5a774892066ed196b8"><span class="id" title="notation">N</span></a><a class="idref" href="mathcomp.algebra.poly.html#31951e7a9fd9bb5a774892066ed196b8"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.poly.html#n"><span class="id" title="variable">n</span></a><a class="idref" href="mathcomp.algebra.poly.html#31951e7a9fd9bb5a774892066ed196b8"><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.poly.html#p"><span class="id" title="variable">p</span></a><a class="idref" href="mathcomp.algebra.poly.html#31951e7a9fd9bb5a774892066ed196b8"><span class="id" title="notation">^`</span></a><a class="idref" href="mathcomp.algebra.poly.html#31951e7a9fd9bb5a774892066ed196b8"><span class="id" title="notation">N</span></a><a class="idref" href="mathcomp.algebra.poly.html#31951e7a9fd9bb5a774892066ed196b8"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.poly.html#n"><span class="id" title="variable">n</span></a><a class="idref" href="mathcomp.algebra.poly.html#31951e7a9fd9bb5a774892066ed196b8"><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.poly.html#m"><span class="id" title="variable">m</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="nderivnMNn"><span class="id" title="lemma">nderivnMNn</span></a> <span class="id" title="var">n</span> <span class="id" title="var">m</span> <span class="id" title="var">p</span> : <a class="idref" href="mathcomp.algebra.poly.html#31951e7a9fd9bb5a774892066ed196b8"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.poly.html#p"><span class="id" title="variable">p</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#e4d9eba2da60fcfead1a1c78283587ed"><span class="id" title="notation">*-</span></a> <a class="idref" href="mathcomp.algebra.poly.html#m"><span class="id" title="variable">m</span></a><a class="idref" href="mathcomp.algebra.poly.html#31951e7a9fd9bb5a774892066ed196b8"><span class="id" title="notation">)^`</span></a><a class="idref" href="mathcomp.algebra.poly.html#31951e7a9fd9bb5a774892066ed196b8"><span class="id" title="notation">N</span></a><a class="idref" href="mathcomp.algebra.poly.html#31951e7a9fd9bb5a774892066ed196b8"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.poly.html#n"><span class="id" title="variable">n</span></a><a class="idref" href="mathcomp.algebra.poly.html#31951e7a9fd9bb5a774892066ed196b8"><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.poly.html#p"><span class="id" title="variable">p</span></a><a class="idref" href="mathcomp.algebra.poly.html#31951e7a9fd9bb5a774892066ed196b8"><span class="id" title="notation">^`</span></a><a class="idref" href="mathcomp.algebra.poly.html#31951e7a9fd9bb5a774892066ed196b8"><span class="id" title="notation">N</span></a><a class="idref" href="mathcomp.algebra.poly.html#31951e7a9fd9bb5a774892066ed196b8"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.poly.html#n"><span class="id" title="variable">n</span></a><a class="idref" href="mathcomp.algebra.poly.html#31951e7a9fd9bb5a774892066ed196b8"><span class="id" title="notation">)</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#e4d9eba2da60fcfead1a1c78283587ed"><span class="id" title="notation">*-</span></a> <a class="idref" href="mathcomp.algebra.poly.html#m"><span class="id" title="variable">m</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="nderivnN"><span class="id" title="lemma">nderivnN</span></a> <span class="id" title="var">n</span> : <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#3d6621e6eef40dcc7dc9a612222d0b4e"><span class="id" title="notation">{</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#3d6621e6eef40dcc7dc9a612222d0b4e"><span class="id" title="notation">morph</span></a> <a class="idref" href="mathcomp.algebra.poly.html#nderivn"><span class="id" title="definition">nderivn</span></a> <a class="idref" href="mathcomp.algebra.poly.html#n"><span class="id" title="variable">n</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#3d6621e6eef40dcc7dc9a612222d0b4e"><span class="id" title="notation">:</span></a> <span class="id" title="var">p</span> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#3d6621e6eef40dcc7dc9a612222d0b4e"><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.poly.html#p"><span class="id" title="variable">p</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#3d6621e6eef40dcc7dc9a612222d0b4e"><span class="id" title="notation">}</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="nderivnZ"><span class="id" title="lemma">nderivnZ</span></a> <span class="id" title="var">n</span> : <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.poly.html#nderivn"><span class="id" title="definition">nderivn</span></a> <a class="idref" href="mathcomp.algebra.poly.html#n"><span class="id" title="variable">n</span></a>).<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="nderivnMXaddC"><span class="id" title="lemma">nderivnMXaddC</span></a> <span class="id" title="var">n</span> <span class="id" title="var">p</span> <span class="id" title="var">c</span> :<br/> - <a class="idref" href="mathcomp.algebra.poly.html#31951e7a9fd9bb5a774892066ed196b8"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.poly.html#p"><span class="id" title="variable">p</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#2d0cfb150261028f4ebd2ba355623dcc"><span class="id" title="notation">×</span></a> <a class="idref" href="mathcomp.algebra.poly.html#78f0b7e9c087664de9d653df6828ab64"><span class="id" title="notation">'</span></a><a class="idref" href="mathcomp.algebra.poly.html#78f0b7e9c087664de9d653df6828ab64"><span class="id" title="notation">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.poly.html#c"><span class="id" title="variable">c</span></a><a class="idref" href="mathcomp.algebra.poly.html#728a2917ff59e46e3f0e4d98ed9ea172"><span class="id" title="notation">%:</span></a><a class="idref" href="mathcomp.algebra.poly.html#728a2917ff59e46e3f0e4d98ed9ea172"><span class="id" title="notation">P</span></a><a class="idref" href="mathcomp.algebra.poly.html#31951e7a9fd9bb5a774892066ed196b8"><span class="id" title="notation">)^`</span></a><a class="idref" href="mathcomp.algebra.poly.html#31951e7a9fd9bb5a774892066ed196b8"><span class="id" title="notation">N</span></a><a class="idref" href="mathcomp.algebra.poly.html#31951e7a9fd9bb5a774892066ed196b8"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.poly.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><a class="idref" href="mathcomp.algebra.poly.html#31951e7a9fd9bb5a774892066ed196b8"><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.poly.html#p"><span class="id" title="variable">p</span></a><a class="idref" href="mathcomp.algebra.poly.html#31951e7a9fd9bb5a774892066ed196b8"><span class="id" title="notation">^`</span></a><a class="idref" href="mathcomp.algebra.poly.html#31951e7a9fd9bb5a774892066ed196b8"><span class="id" title="notation">N</span></a><a class="idref" href="mathcomp.algebra.poly.html#31951e7a9fd9bb5a774892066ed196b8"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.poly.html#n"><span class="id" title="variable">n</span></a><a class="idref" href="mathcomp.algebra.poly.html#31951e7a9fd9bb5a774892066ed196b8"><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.poly.html#p"><span class="id" title="variable">p</span></a><a class="idref" href="mathcomp.algebra.poly.html#31951e7a9fd9bb5a774892066ed196b8"><span class="id" title="notation">^`</span></a><a class="idref" href="mathcomp.algebra.poly.html#31951e7a9fd9bb5a774892066ed196b8"><span class="id" title="notation">N</span></a><a class="idref" href="mathcomp.algebra.poly.html#31951e7a9fd9bb5a774892066ed196b8"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.poly.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><a class="idref" href="mathcomp.algebra.poly.html#31951e7a9fd9bb5a774892066ed196b8"><span class="id" title="notation">)</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#2d0cfb150261028f4ebd2ba355623dcc"><span class="id" title="notation">×</span></a> <a class="idref" href="mathcomp.algebra.poly.html#78f0b7e9c087664de9d653df6828ab64"><span class="id" title="notation">'</span></a><a class="idref" href="mathcomp.algebra.poly.html#78f0b7e9c087664de9d653df6828ab64"><span class="id" title="notation">X</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="nderivn_poly0"><span class="id" title="lemma">nderivn_poly0</span></a> <span class="id" title="var">p</span> <span class="id" title="var">n</span> : <a class="idref" href="mathcomp.ssreflect.seq.html#size"><span class="id" title="definition">size</span></a> <a class="idref" href="mathcomp.algebra.poly.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.poly.html#n"><span class="id" title="variable">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#p"><span class="id" title="variable">p</span></a><a class="idref" href="mathcomp.algebra.poly.html#31951e7a9fd9bb5a774892066ed196b8"><span class="id" title="notation">^`</span></a><a class="idref" href="mathcomp.algebra.poly.html#31951e7a9fd9bb5a774892066ed196b8"><span class="id" title="notation">N</span></a><a class="idref" href="mathcomp.algebra.poly.html#31951e7a9fd9bb5a774892066ed196b8"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.poly.html#n"><span class="id" title="variable">n</span></a><a class="idref" href="mathcomp.algebra.poly.html#31951e7a9fd9bb5a774892066ed196b8"><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> 0.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="nderiv_taylor"><span class="id" title="lemma">nderiv_taylor</span></a> <span class="id" title="var">p</span> <span class="id" title="var">x</span> <span class="id" title="var">h</span> :<br/> - <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.comm"><span class="id" title="definition">GRing.comm</span></a> <a class="idref" href="mathcomp.algebra.poly.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.algebra.poly.html#h"><span class="id" title="variable">h</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#1c93e43e07fbeaeb6a625cb6614beb5d"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.poly.html#p"><span class="id" title="variable">p</span></a><a class="idref" href="mathcomp.algebra.poly.html#03fafeca1d8bb8af3cc89a1830d3996b"><span class="id" title="notation">.[</span></a><a class="idref" href="mathcomp.algebra.poly.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.poly.html#h"><span class="id" title="variable">h</span></a><a class="idref" href="mathcomp.algebra.poly.html#03fafeca1d8bb8af3cc89a1830d3996b"><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.ssralg.html#784f0af919f467115774be372bf0dbd7"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#784f0af919f467115774be372bf0dbd7"><span class="id" title="notation">sum_</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#784f0af919f467115774be372bf0dbd7"><span class="id" title="notation">(</span></a><span class="id" title="var">i</span> <a class="idref" href="mathcomp.algebra.ssralg.html#784f0af919f467115774be372bf0dbd7"><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.poly.html#p"><span class="id" title="variable">p</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#784f0af919f467115774be372bf0dbd7"><span class="id" title="notation">)</span></a> <a class="idref" href="mathcomp.algebra.poly.html#p"><span class="id" title="variable">p</span></a><a class="idref" href="mathcomp.algebra.poly.html#31951e7a9fd9bb5a774892066ed196b8"><span class="id" title="notation">^`</span></a><a class="idref" href="mathcomp.algebra.poly.html#31951e7a9fd9bb5a774892066ed196b8"><span class="id" title="notation">N</span></a><a class="idref" href="mathcomp.algebra.poly.html#31951e7a9fd9bb5a774892066ed196b8"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.poly.html#i"><span class="id" title="variable">i</span></a><a class="idref" href="mathcomp.algebra.poly.html#31951e7a9fd9bb5a774892066ed196b8"><span class="id" title="notation">)</span></a><a class="idref" href="mathcomp.algebra.poly.html#03fafeca1d8bb8af3cc89a1830d3996b"><span class="id" title="notation">.[</span></a><a class="idref" href="mathcomp.algebra.poly.html#x"><span class="id" title="variable">x</span></a><a class="idref" href="mathcomp.algebra.poly.html#03fafeca1d8bb8af3cc89a1830d3996b"><span class="id" title="notation">]</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#2d0cfb150261028f4ebd2ba355623dcc"><span class="id" title="notation">×</span></a> <a class="idref" href="mathcomp.algebra.poly.html#h"><span class="id" title="variable">h</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#663140372ac3b275aae871b74b140513"><span class="id" title="notation">^+</span></a> <a class="idref" href="mathcomp.algebra.poly.html#i"><span class="id" title="variable">i</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="nderiv_taylor_wide"><span class="id" title="lemma">nderiv_taylor_wide</span></a> <span class="id" title="var">n</span> <span class="id" title="var">p</span> <span class="id" title="var">x</span> <span class="id" title="var">h</span> :<br/> - <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.comm"><span class="id" title="definition">GRing.comm</span></a> <a class="idref" href="mathcomp.algebra.poly.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.algebra.poly.html#h"><span class="id" title="variable">h</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#1c93e43e07fbeaeb6a625cb6614beb5d"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#size"><span class="id" title="definition">size</span></a> <a class="idref" href="mathcomp.algebra.poly.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.poly.html#n"><span class="id" title="variable">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><br/> - <a class="idref" href="mathcomp.algebra.poly.html#p"><span class="id" title="variable">p</span></a><a class="idref" href="mathcomp.algebra.poly.html#03fafeca1d8bb8af3cc89a1830d3996b"><span class="id" title="notation">.[</span></a><a class="idref" href="mathcomp.algebra.poly.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.poly.html#h"><span class="id" title="variable">h</span></a><a class="idref" href="mathcomp.algebra.poly.html#03fafeca1d8bb8af3cc89a1830d3996b"><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.ssralg.html#784f0af919f467115774be372bf0dbd7"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#784f0af919f467115774be372bf0dbd7"><span class="id" title="notation">sum_</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#784f0af919f467115774be372bf0dbd7"><span class="id" title="notation">(</span></a><span class="id" title="var">i</span> <a class="idref" href="mathcomp.algebra.ssralg.html#784f0af919f467115774be372bf0dbd7"><span class="id" title="notation"><</span></a> <a class="idref" href="mathcomp.algebra.poly.html#n"><span class="id" title="variable">n</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#784f0af919f467115774be372bf0dbd7"><span class="id" title="notation">)</span></a> <a class="idref" href="mathcomp.algebra.poly.html#p"><span class="id" title="variable">p</span></a><a class="idref" href="mathcomp.algebra.poly.html#31951e7a9fd9bb5a774892066ed196b8"><span class="id" title="notation">^`</span></a><a class="idref" href="mathcomp.algebra.poly.html#31951e7a9fd9bb5a774892066ed196b8"><span class="id" title="notation">N</span></a><a class="idref" href="mathcomp.algebra.poly.html#31951e7a9fd9bb5a774892066ed196b8"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.poly.html#i"><span class="id" title="variable">i</span></a><a class="idref" href="mathcomp.algebra.poly.html#31951e7a9fd9bb5a774892066ed196b8"><span class="id" title="notation">)</span></a><a class="idref" href="mathcomp.algebra.poly.html#03fafeca1d8bb8af3cc89a1830d3996b"><span class="id" title="notation">.[</span></a><a class="idref" href="mathcomp.algebra.poly.html#x"><span class="id" title="variable">x</span></a><a class="idref" href="mathcomp.algebra.poly.html#03fafeca1d8bb8af3cc89a1830d3996b"><span class="id" title="notation">]</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#2d0cfb150261028f4ebd2ba355623dcc"><span class="id" title="notation">×</span></a> <a class="idref" href="mathcomp.algebra.poly.html#h"><span class="id" title="variable">h</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#663140372ac3b275aae871b74b140513"><span class="id" title="notation">^+</span></a> <a class="idref" href="mathcomp.algebra.poly.html#i"><span class="id" title="variable">i</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="eq_poly"><span class="id" title="lemma">eq_poly</span></a> <span class="id" title="var">n</span> <span class="id" title="var">E1</span> <span class="id" title="var">E2</span> : <a class="idref" href="mathcomp.algebra.poly.html#E1"><span class="id" title="variable">E1</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#876aa133fb3472bffd492f74ff496035"><span class="id" title="notation">=1</span></a> <a class="idref" href="mathcomp.algebra.poly.html#E2"><span class="id" title="variable">E2</span></a> <a class="idref" href="http://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#poly"><span class="id" title="definition">poly</span></a> <a class="idref" href="mathcomp.algebra.poly.html#n"><span class="id" title="variable">n</span></a> <a class="idref" href="mathcomp.algebra.poly.html#E1"><span class="id" title="variable">E1</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#6cd0f7b28b6092304087c7049437bb1a"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.poly.html#poly"><span class="id" title="definition">poly</span></a> <a class="idref" href="mathcomp.algebra.poly.html#n"><span class="id" title="variable">n</span></a> <a class="idref" href="mathcomp.algebra.poly.html#E2"><span class="id" title="variable">E2</span></a>.<br/> - -<br/> -<span class="id" title="keyword">End</span> <a class="idref" href="mathcomp.algebra.poly.html#PolynomialTheory"><span class="id" title="section">PolynomialTheory</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Notation</span> <a name="e7c928d7996da3748fbd8a7e6d560557"><span class="id" title="notation">"</span></a>\poly_ ( i < n ) E" := (<a class="idref" href="mathcomp.algebra.poly.html#poly"><span class="id" title="definition">poly</span></a> <span class="id" title="var">n</span> (<span class="id" title="keyword">fun</span> <span class="id" title="var">i</span> ⇒ <span class="id" title="var">E</span>)) : <span class="id" title="var">ring_scope</span>.<br/> -<span class="id" title="keyword">Notation</span> <a name="8b14e41ab5fcce2460b8672da1456d67"><span class="id" title="notation">"</span></a>c %:P" := (<a class="idref" href="mathcomp.algebra.poly.html#polyC"><span class="id" title="definition">polyC</span></a> <span class="id" title="var">c</span>) : <span class="id" title="var">ring_scope</span>.<br/> -<span class="id" title="keyword">Notation</span> <a name="dc2ed3a32abac1baa27cfc93ddc4e844"><span class="id" title="notation">"</span></a>'X" := (<a class="idref" href="mathcomp.algebra.poly.html#polyX"><span class="id" title="definition">polyX</span></a> <span class="id" title="var">_</span>) : <span class="id" title="var">ring_scope</span>.<br/> -<span class="id" title="keyword">Notation</span> <a name="e809881bcf0cc80f806c17b9ef433187"><span class="id" title="notation">"</span></a>''X^' n" := (<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#663140372ac3b275aae871b74b140513"><span class="id" title="notation">^+</span></a> <span class="id" title="var">n</span>) : <span class="id" title="var">ring_scope</span>.<br/> -<span class="id" title="keyword">Notation</span> <a name="e4361ce58e4de0a4b9786d0011b61316"><span class="id" title="notation">"</span></a>p .[ x ]" := (<a class="idref" href="mathcomp.algebra.poly.html#horner"><span class="id" title="definition">horner</span></a> <span class="id" title="var">p</span> <span class="id" title="var">x</span>) : <span class="id" title="var">ring_scope</span>.<br/> -<span class="id" title="keyword">Notation</span> <a name="acbc7bcbd85a1f81c4f65e93aa5fd967"><span class="id" title="notation">"</span></a>n .-unity_root" := (<a class="idref" href="mathcomp.algebra.poly.html#root_of_unity"><span class="id" title="definition">root_of_unity</span></a> <span class="id" title="var">n</span>) : <span class="id" title="var">ring_scope</span>.<br/> -<span class="id" title="keyword">Notation</span> <a name="ad6a7217bc47606779ec5b6d2378a1dd"><span class="id" title="notation">"</span></a>n .-primitive_root" := (<a class="idref" href="mathcomp.algebra.poly.html#primitive_root_of_unity"><span class="id" title="definition">primitive_root_of_unity</span></a> <span class="id" title="var">n</span>) : <span class="id" title="var">ring_scope</span>.<br/> -<span class="id" title="keyword">Notation</span> <a name="4edbe111d3afeccb0860281084ef5446"><span class="id" title="notation">"</span></a>a ^` " := (<a class="idref" href="mathcomp.algebra.poly.html#deriv"><span class="id" title="definition">deriv</span></a> <span class="id" title="var">a</span>) : <span class="id" title="var">ring_scope</span>.<br/> -<span class="id" title="keyword">Notation</span> <a name="b958e16eceb6670a53fefab70c549c2e"><span class="id" title="notation">"</span></a>a ^` ( n )" := (<a class="idref" href="mathcomp.algebra.poly.html#derivn"><span class="id" title="definition">derivn</span></a> <span class="id" title="var">n</span> <span class="id" title="var">a</span>) : <span class="id" title="var">ring_scope</span>.<br/> -<span class="id" title="keyword">Notation</span> <a name="fd18436a5c1673ca6b0e81010f0a963a"><span class="id" title="notation">"</span></a>a ^`N ( n )" := (<a class="idref" href="mathcomp.algebra.poly.html#nderivn"><span class="id" title="definition">nderivn</span></a> <span class="id" title="var">n</span> <span class="id" title="var">a</span>) : <span class="id" title="var">ring_scope</span>.<br/> - -<br/> - -<br/> -<span class="id" title="keyword">Canonical</span> <span class="id" title="var">polynomial_countZmodType</span> (<span class="id" title="var">R</span> : <a class="idref" href="mathcomp.algebra.countalg.html#CountRing.Ring.Exports.countRingType"><span class="id" title="abbreviation">countRingType</span></a>) :=<br/> - <a class="idref" href="mathcomp.algebra.countalg.html#c4cf911b6276243d26c2dd85fdb53f8f"><span class="id" title="notation">[</span></a><a class="idref" href="mathcomp.algebra.countalg.html#c4cf911b6276243d26c2dd85fdb53f8f"><span class="id" title="notation">countZmodType</span></a> <a class="idref" href="mathcomp.algebra.countalg.html#c4cf911b6276243d26c2dd85fdb53f8f"><span class="id" title="notation">of</span></a> <a class="idref" href="mathcomp.algebra.poly.html#polynomial"><span class="id" title="record">polynomial</span></a> <a class="idref" href="mathcomp.algebra.poly.html#R"><span class="id" title="variable">R</span></a><a class="idref" href="mathcomp.algebra.countalg.html#c4cf911b6276243d26c2dd85fdb53f8f"><span class="id" title="notation">]</span></a>.<br/> -<span class="id" title="keyword">Canonical</span> <span class="id" title="var">poly_countZmodType</span> (<span class="id" title="var">R</span> : <a class="idref" href="mathcomp.algebra.countalg.html#CountRing.Ring.Exports.countRingType"><span class="id" title="abbreviation">countRingType</span></a>) := <a class="idref" href="mathcomp.algebra.countalg.html#c4cf911b6276243d26c2dd85fdb53f8f"><span class="id" title="notation">[</span></a><a class="idref" href="mathcomp.algebra.countalg.html#c4cf911b6276243d26c2dd85fdb53f8f"><span class="id" title="notation">countZmodType</span></a> <a class="idref" href="mathcomp.algebra.countalg.html#c4cf911b6276243d26c2dd85fdb53f8f"><span class="id" title="notation">of</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.poly.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.countalg.html#c4cf911b6276243d26c2dd85fdb53f8f"><span class="id" title="notation">]</span></a>.<br/> -<span class="id" title="keyword">Canonical</span> <span class="id" title="var">polynomial_countRingType</span> (<span class="id" title="var">R</span> : <a class="idref" href="mathcomp.algebra.countalg.html#CountRing.Ring.Exports.countRingType"><span class="id" title="abbreviation">countRingType</span></a>) :=<br/> - <a class="idref" href="mathcomp.algebra.countalg.html#5d38f59e59d31b0f5328b7330ff4d0f6"><span class="id" title="notation">[</span></a><a class="idref" href="mathcomp.algebra.countalg.html#5d38f59e59d31b0f5328b7330ff4d0f6"><span class="id" title="notation">countRingType</span></a> <a class="idref" href="mathcomp.algebra.countalg.html#5d38f59e59d31b0f5328b7330ff4d0f6"><span class="id" title="notation">of</span></a> <a class="idref" href="mathcomp.algebra.poly.html#polynomial"><span class="id" title="record">polynomial</span></a> <a class="idref" href="mathcomp.algebra.poly.html#R"><span class="id" title="variable">R</span></a><a class="idref" href="mathcomp.algebra.countalg.html#5d38f59e59d31b0f5328b7330ff4d0f6"><span class="id" title="notation">]</span></a>.<br/> -<span class="id" title="keyword">Canonical</span> <span class="id" title="var">poly_countRingType</span> (<span class="id" title="var">R</span> : <a class="idref" href="mathcomp.algebra.countalg.html#CountRing.Ring.Exports.countRingType"><span class="id" title="abbreviation">countRingType</span></a>) := <a class="idref" href="mathcomp.algebra.countalg.html#5d38f59e59d31b0f5328b7330ff4d0f6"><span class="id" title="notation">[</span></a><a class="idref" href="mathcomp.algebra.countalg.html#5d38f59e59d31b0f5328b7330ff4d0f6"><span class="id" title="notation">countRingType</span></a> <a class="idref" href="mathcomp.algebra.countalg.html#5d38f59e59d31b0f5328b7330ff4d0f6"><span class="id" title="notation">of</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.poly.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.countalg.html#5d38f59e59d31b0f5328b7330ff4d0f6"><span class="id" title="notation">]</span></a>.<br/> - -<br/> -</div> - -<div class="doc"> - Container morphism. -</div> -<div class="code"> -<span class="id" title="keyword">Section</span> <a name="MapPoly"><span class="id" title="section">MapPoly</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Section</span> <a name="MapPoly.Definitions"><span class="id" title="section">Definitions</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Variables</span> (<a name="MapPoly.Definitions.aR"><span class="id" title="variable">aR</span></a> <a name="MapPoly.Definitions.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="MapPoly.Definitions.f"><span class="id" title="variable">f</span></a> : <a class="idref" href="mathcomp.algebra.poly.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.poly.html#rR"><span class="id" title="variable">rR</span></a>).<br/> - -<br/> -<span class="id" title="keyword">Definition</span> <a name="map_poly"><span class="id" title="definition">map_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.poly.html#MapPoly.Definitions.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="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">i</span> <a class="idref" href="mathcomp.algebra.poly.html#e7c928d7996da3748fbd8a7e6d560557"><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.poly.html#p"><span class="id" title="variable">p</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#MapPoly.Definitions.f"><span class="id" title="variable">f</span></a> <a class="idref" href="mathcomp.algebra.poly.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/> -</div> - -<div class="doc"> - Alternative definition; the one above is more convenient because it lets - us use the lemmas on \poly, e.g., size (map_poly p) <= size p is an - instance of size_poly. -</div> -<div class="code"> -<span class="id" title="keyword">Lemma</span> <a name="map_polyE"><span class="id" title="lemma">map_polyE</span></a> <span class="id" title="var">p</span> : <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.poly.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.poly.html#Poly"><span class="id" title="definition">Poly</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.poly.html#MapPoly.Definitions.f"><span class="id" title="variable">f</span></a> <a class="idref" href="mathcomp.algebra.poly.html#p"><span class="id" title="variable">p</span></a>).<br/> - -<br/> -<span class="id" title="keyword">Definition</span> <a name="commr_rmorph"><span class="id" title="definition">commr_rmorph</span></a> <span class="id" title="var">u</span> := <span class="id" title="keyword">∀</span> <span class="id" title="var">x</span>, <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.comm"><span class="id" title="definition">GRing.comm</span></a> <a class="idref" href="mathcomp.algebra.poly.html#u"><span class="id" title="variable">u</span></a> (<a class="idref" href="mathcomp.algebra.poly.html#MapPoly.Definitions.f"><span class="id" title="variable">f</span></a> <a class="idref" href="mathcomp.algebra.poly.html#x"><span class="id" title="variable">x</span></a>).<br/> - -<br/> -<span class="id" title="keyword">Definition</span> <a name="horner_morph"><span class="id" title="definition">horner_morph</span></a> <span class="id" title="var">u</span> <span class="id" title="keyword">of</span> <a class="idref" href="mathcomp.algebra.poly.html#commr_rmorph"><span class="id" title="definition">commr_rmorph</span></a> <a class="idref" href="mathcomp.algebra.poly.html#u"><span class="id" title="variable">u</span></a> := <span class="id" title="keyword">fun</span> <span class="id" title="var">p</span> ⇒ <a class="idref" href="mathcomp.algebra.poly.html#e4361ce58e4de0a4b9786d0011b61316"><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.poly.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.poly.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">End</span> <a class="idref" href="mathcomp.algebra.poly.html#MapPoly.Definitions"><span class="id" title="section">Definitions</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Variables</span> <a name="MapPoly.aR"><span class="id" title="variable">aR</span></a> <a name="MapPoly.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>.<br/> - -<br/> -<span class="id" title="keyword">Section</span> <a name="MapPoly.Combinatorial"><span class="id" title="section">Combinatorial</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Variables</span> (<a name="MapPoly.Combinatorial.iR"><span class="id" title="variable">iR</span></a> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Ring.Exports.ringType"><span class="id" title="abbreviation">ringType</span></a>) (<a name="MapPoly.Combinatorial.f"><span class="id" title="variable">f</span></a> : <a class="idref" href="mathcomp.algebra.poly.html#MapPoly.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.poly.html#MapPoly.rR"><span class="id" title="variable">rR</span></a>).<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="map_poly0"><span class="id" title="lemma">map_poly0</span></a> : 0<a class="idref" href="mathcomp.algebra.poly.html#77bee8efe57fbb5773ae6e32ab3a0709"><span class="id" title="notation">^</span></a><a class="idref" href="mathcomp.algebra.poly.html#77bee8efe57fbb5773ae6e32ab3a0709"><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> 0.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="eq_map_poly"><span class="id" title="lemma">eq_map_poly</span></a> (<span class="id" title="var">g</span> : <a class="idref" href="mathcomp.algebra.poly.html#MapPoly.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.poly.html#MapPoly.rR"><span class="id" title="variable">rR</span></a>) : <a class="idref" href="mathcomp.algebra.poly.html#MapPoly.Combinatorial.f"><span class="id" title="variable">f</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#876aa133fb3472bffd492f74ff496035"><span class="id" title="notation">=1</span></a> <a class="idref" href="mathcomp.algebra.poly.html#g"><span class="id" title="variable">g</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#1c93e43e07fbeaeb6a625cb6614beb5d"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.poly.html#map_poly"><span class="id" title="definition">map_poly</span></a> <a class="idref" href="mathcomp.algebra.poly.html#MapPoly.Combinatorial.f"><span class="id" title="variable">f</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#876aa133fb3472bffd492f74ff496035"><span class="id" title="notation">=1</span></a> <a class="idref" href="mathcomp.algebra.poly.html#map_poly"><span class="id" title="definition">map_poly</span></a> <a class="idref" href="mathcomp.algebra.poly.html#g"><span class="id" title="variable">g</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="map_poly_id"><span class="id" title="lemma">map_poly_id</span></a> <span class="id" title="var">g</span> (<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.poly.html#MapPoly.Combinatorial.iR"><span class="id" title="variable">iR</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.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="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.poly.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.poly.html#MapPoly.Combinatorial.iR"><span class="id" title="variable">iR</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.poly.html#g"><span class="id" title="variable">g</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#876aa133fb3472bffd492f74ff496035"><span class="id" title="notation">=1</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#id"><span class="id" title="abbreviation">id</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.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.poly.html#map_poly"><span class="id" title="definition">map_poly</span></a> <a class="idref" href="mathcomp.algebra.poly.html#g"><span class="id" title="variable">g</span></a> <a class="idref" href="mathcomp.algebra.poly.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.poly.html#p"><span class="id" title="variable">p</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="coef_map_id0"><span class="id" title="lemma">coef_map_id0</span></a> <span class="id" title="var">p</span> <span class="id" title="var">i</span> : <a class="idref" href="mathcomp.algebra.poly.html#MapPoly.Combinatorial.f"><span class="id" title="variable">f</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 <a class="idref" href="http://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.ssralg.html#82d810f9f90b79e8fe98d90a63070c32"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.poly.html#p"><span class="id" title="variable">p</span></a><a class="idref" href="mathcomp.algebra.poly.html#77bee8efe57fbb5773ae6e32ab3a0709"><span class="id" title="notation">^</span></a><a class="idref" href="mathcomp.algebra.poly.html#77bee8efe57fbb5773ae6e32ab3a0709"><span class="id" title="notation">f</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.poly.html#MapPoly.Combinatorial.f"><span class="id" title="variable">f</span></a> <a class="idref" href="mathcomp.algebra.poly.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="map_Poly_id0"><span class="id" title="lemma">map_Poly_id0</span></a> <span class="id" title="var">s</span> : <a class="idref" href="mathcomp.algebra.poly.html#MapPoly.Combinatorial.f"><span class="id" title="variable">f</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 <a class="idref" href="http://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#77bee8efe57fbb5773ae6e32ab3a0709"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.poly.html#Poly"><span class="id" title="definition">Poly</span></a> <a class="idref" href="mathcomp.algebra.poly.html#s"><span class="id" title="variable">s</span></a><a class="idref" href="mathcomp.algebra.poly.html#77bee8efe57fbb5773ae6e32ab3a0709"><span class="id" title="notation">)^</span></a><a class="idref" href="mathcomp.algebra.poly.html#77bee8efe57fbb5773ae6e32ab3a0709"><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.poly.html#Poly"><span class="id" title="definition">Poly</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.poly.html#MapPoly.Combinatorial.f"><span class="id" title="variable">f</span></a> <a class="idref" href="mathcomp.algebra.poly.html#s"><span class="id" title="variable">s</span></a>).<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="map_poly_comp_id0"><span class="id" title="lemma">map_poly_comp_id0</span></a> (<span class="id" title="var">g</span> : <a class="idref" href="mathcomp.algebra.poly.html#MapPoly.Combinatorial.iR"><span class="id" title="variable">iR</span></a> <a class="idref" href="http://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#MapPoly.aR"><span class="id" title="variable">aR</span></a>) <span class="id" title="var">p</span> :<br/> - <a class="idref" href="mathcomp.algebra.poly.html#MapPoly.Combinatorial.f"><span class="id" title="variable">f</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 <a class="idref" href="http://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#map_poly"><span class="id" title="definition">map_poly</span></a> (<a class="idref" href="mathcomp.algebra.poly.html#MapPoly.Combinatorial.f"><span class="id" title="variable">f</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#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.poly.html#g"><span class="id" title="variable">g</span></a>) <a class="idref" href="mathcomp.algebra.poly.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.poly.html#77bee8efe57fbb5773ae6e32ab3a0709"><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.poly.html#g"><span class="id" title="variable">g</span></a> <a class="idref" href="mathcomp.algebra.poly.html#p"><span class="id" title="variable">p</span></a><a class="idref" href="mathcomp.algebra.poly.html#77bee8efe57fbb5773ae6e32ab3a0709"><span class="id" title="notation">)^</span></a><a class="idref" href="mathcomp.algebra.poly.html#77bee8efe57fbb5773ae6e32ab3a0709"><span class="id" title="notation">f</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="size_map_poly_id0"><span class="id" title="lemma">size_map_poly_id0</span></a> <span class="id" title="var">p</span> : <a class="idref" href="mathcomp.algebra.poly.html#MapPoly.Combinatorial.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.poly.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.ssreflect.seq.html#size"><span class="id" title="definition">size</span></a> <a class="idref" href="mathcomp.algebra.poly.html#p"><span class="id" title="variable">p</span></a><a class="idref" href="mathcomp.algebra.poly.html#77bee8efe57fbb5773ae6e32ab3a0709"><span class="id" title="notation">^</span></a><a class="idref" href="mathcomp.algebra.poly.html#77bee8efe57fbb5773ae6e32ab3a0709"><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.ssreflect.seq.html#size"><span class="id" title="definition">size</span></a> <a class="idref" href="mathcomp.algebra.poly.html#p"><span class="id" title="variable">p</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="map_poly_eq0_id0"><span class="id" title="lemma">map_poly_eq0_id0</span></a> <span class="id" title="var">p</span> : <a class="idref" href="mathcomp.algebra.poly.html#MapPoly.Combinatorial.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.poly.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="http://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#p"><span class="id" title="variable">p</span></a><a class="idref" href="mathcomp.algebra.poly.html#77bee8efe57fbb5773ae6e32ab3a0709"><span class="id" title="notation">^</span></a><a class="idref" href="mathcomp.algebra.poly.html#77bee8efe57fbb5773ae6e32ab3a0709"><span class="id" title="notation">f</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.algebra.poly.html#p"><span class="id" title="variable">p</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>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="lead_coef_map_id0"><span class="id" title="lemma">lead_coef_map_id0</span></a> <span class="id" title="var">p</span> :<br/> - <a class="idref" href="mathcomp.algebra.poly.html#MapPoly.Combinatorial.f"><span class="id" title="variable">f</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 <a class="idref" href="http://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#MapPoly.Combinatorial.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.poly.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#lead_coef"><span class="id" title="definition">lead_coef</span></a> <a class="idref" href="mathcomp.algebra.poly.html#p"><span class="id" title="variable">p</span></a><a class="idref" href="mathcomp.algebra.poly.html#77bee8efe57fbb5773ae6e32ab3a0709"><span class="id" title="notation">^</span></a><a class="idref" href="mathcomp.algebra.poly.html#77bee8efe57fbb5773ae6e32ab3a0709"><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.poly.html#MapPoly.Combinatorial.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.poly.html#p"><span class="id" title="variable">p</span></a>).<br/> - -<br/> -<span class="id" title="keyword">Hypotheses</span> (<a name="MapPoly.Combinatorial.inj_f"><span class="id" title="variable">inj_f</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.poly.html#MapPoly.Combinatorial.f"><span class="id" title="variable">f</span></a>) (<a name="MapPoly.Combinatorial.f_0"><span class="id" title="variable">f_0</span></a> : <a class="idref" href="mathcomp.algebra.poly.html#MapPoly.Combinatorial.f"><span class="id" title="variable">f</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="size_map_inj_poly"><span class="id" title="lemma">size_map_inj_poly</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.poly.html#p"><span class="id" title="variable">p</span></a><a class="idref" href="mathcomp.algebra.poly.html#77bee8efe57fbb5773ae6e32ab3a0709"><span class="id" title="notation">^</span></a><a class="idref" href="mathcomp.algebra.poly.html#77bee8efe57fbb5773ae6e32ab3a0709"><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.ssreflect.seq.html#size"><span class="id" title="definition">size</span></a> <a class="idref" href="mathcomp.algebra.poly.html#p"><span class="id" title="variable">p</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="map_inj_poly"><span class="id" title="lemma">map_inj_poly</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.poly.html#map_poly"><span class="id" title="definition">map_poly</span></a> <a class="idref" href="mathcomp.algebra.poly.html#MapPoly.Combinatorial.f"><span class="id" title="variable">f</span></a>).<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="lead_coef_map_inj"><span class="id" title="lemma">lead_coef_map_inj</span></a> <span class="id" title="var">p</span> : <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.poly.html#p"><span class="id" title="variable">p</span></a><a class="idref" href="mathcomp.algebra.poly.html#77bee8efe57fbb5773ae6e32ab3a0709"><span class="id" title="notation">^</span></a><a class="idref" href="mathcomp.algebra.poly.html#77bee8efe57fbb5773ae6e32ab3a0709"><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.poly.html#MapPoly.Combinatorial.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.poly.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.poly.html#MapPoly.Combinatorial"><span class="id" title="section">Combinatorial</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="map_polyK"><span class="id" title="lemma">map_polyK</span></a> (<span class="id" title="var">f</span> : <a class="idref" href="mathcomp.algebra.poly.html#MapPoly.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.poly.html#MapPoly.rR"><span class="id" title="variable">rR</span></a>) <span class="id" title="var">g</span> :<br/> - <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.poly.html#g"><span class="id" title="variable">g</span></a> <a class="idref" href="mathcomp.algebra.poly.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.poly.html#f"><span class="id" title="variable">f</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 <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#1c93e43e07fbeaeb6a625cb6614beb5d"><span class="id" title="notation">→</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#cancel"><span class="id" title="definition">cancel</span></a> (<a class="idref" href="mathcomp.algebra.poly.html#map_poly"><span class="id" title="definition">map_poly</span></a> <a class="idref" href="mathcomp.algebra.poly.html#g"><span class="id" title="variable">g</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.poly.html#f"><span class="id" title="variable">f</span></a>).<br/> - -<br/> -<span class="id" title="keyword">Section</span> <a name="MapPoly.Additive"><span class="id" title="section">Additive</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Variables</span> (<a name="MapPoly.Additive.iR"><span class="id" title="variable">iR</span></a> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Ring.Exports.ringType"><span class="id" title="abbreviation">ringType</span></a>) (<a name="MapPoly.Additive.f"><span class="id" title="variable">f</span></a> : <a class="idref" href="mathcomp.algebra.ssralg.html#b15d1bebaaff5b5ed693647b6d36f348"><span class="id" title="notation">{</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#b15d1bebaaff5b5ed693647b6d36f348"><span class="id" title="notation">additive</span></a> <a class="idref" href="mathcomp.algebra.poly.html#MapPoly.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.poly.html#MapPoly.rR"><span class="id" title="variable">rR</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#b15d1bebaaff5b5ed693647b6d36f348"><span class="id" title="notation">}</span></a>).<br/> - -<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="coef_map"><span class="id" title="lemma">coef_map</span></a> <span class="id" title="var">p</span> <span class="id" title="var">i</span> : <a class="idref" href="mathcomp.algebra.poly.html#p"><span class="id" title="variable">p</span></a><a class="idref" href="mathcomp.algebra.poly.html#f96de40aa5b46ab228915f8026ade3b8"><span class="id" title="notation">^</span></a><a class="idref" href="mathcomp.algebra.poly.html#f96de40aa5b46ab228915f8026ade3b8"><span class="id" title="notation">f</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.poly.html#MapPoly.Additive.f"><span class="id" title="variable">f</span></a> <a class="idref" href="mathcomp.algebra.poly.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="map_Poly"><span class="id" title="lemma">map_Poly</span></a> <span class="id" title="var">s</span> : <a class="idref" href="mathcomp.algebra.poly.html#f96de40aa5b46ab228915f8026ade3b8"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.poly.html#Poly"><span class="id" title="definition">Poly</span></a> <a class="idref" href="mathcomp.algebra.poly.html#s"><span class="id" title="variable">s</span></a><a class="idref" href="mathcomp.algebra.poly.html#f96de40aa5b46ab228915f8026ade3b8"><span class="id" title="notation">)^</span></a><a class="idref" href="mathcomp.algebra.poly.html#f96de40aa5b46ab228915f8026ade3b8"><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.poly.html#Poly"><span class="id" title="definition">Poly</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.poly.html#MapPoly.Additive.f"><span class="id" title="variable">f</span></a> <a class="idref" href="mathcomp.algebra.poly.html#s"><span class="id" title="variable">s</span></a>).<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="map_poly_comp"><span class="id" title="lemma">map_poly_comp</span></a> (<span class="id" title="var">g</span> : <a class="idref" href="mathcomp.algebra.poly.html#MapPoly.Additive.iR"><span class="id" title="variable">iR</span></a> <a class="idref" href="http://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#MapPoly.aR"><span class="id" title="variable">aR</span></a>) <span class="id" title="var">p</span> :<br/> - <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.poly.html#MapPoly.Additive.f"><span class="id" title="variable">f</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#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.poly.html#g"><span class="id" title="variable">g</span></a>) <a class="idref" href="mathcomp.algebra.poly.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.poly.html#map_poly"><span class="id" title="definition">map_poly</span></a> <a class="idref" href="mathcomp.algebra.poly.html#MapPoly.Additive.f"><span class="id" title="variable">f</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.poly.html#g"><span class="id" title="variable">g</span></a> <a class="idref" href="mathcomp.algebra.poly.html#p"><span class="id" title="variable">p</span></a>).<br/> - -<br/> -<span class="id" title="keyword">Fact</span> <a name="map_poly_is_additive"><span class="id" title="lemma">map_poly_is_additive</span></a> : <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.poly.html#map_poly"><span class="id" title="definition">map_poly</span></a> <a class="idref" href="mathcomp.algebra.poly.html#MapPoly.Additive.f"><span class="id" title="variable">f</span></a>).<br/> - <span class="id" title="keyword">Canonical</span> <span class="id" title="var">map_poly_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.poly.html#map_poly_is_additive"><span class="id" title="lemma">map_poly_is_additive</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="map_polyC"><span class="id" title="lemma">map_polyC</span></a> <span class="id" title="var">a</span> : <a class="idref" href="mathcomp.algebra.poly.html#f96de40aa5b46ab228915f8026ade3b8"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.poly.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="mathcomp.algebra.poly.html#f96de40aa5b46ab228915f8026ade3b8"><span class="id" title="notation">)^</span></a><a class="idref" href="mathcomp.algebra.poly.html#f96de40aa5b46ab228915f8026ade3b8"><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.poly.html#8b14e41ab5fcce2460b8672da1456d67"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.poly.html#MapPoly.Additive.f"><span class="id" title="variable">f</span></a> <a class="idref" href="mathcomp.algebra.poly.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/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="lead_coef_map_eq"><span class="id" title="lemma">lead_coef_map_eq</span></a> <span class="id" title="var">p</span> :<br/> - <a class="idref" href="mathcomp.algebra.poly.html#MapPoly.Additive.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.poly.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#lead_coef"><span class="id" title="definition">lead_coef</span></a> <a class="idref" href="mathcomp.algebra.poly.html#p"><span class="id" title="variable">p</span></a><a class="idref" href="mathcomp.algebra.poly.html#f96de40aa5b46ab228915f8026ade3b8"><span class="id" title="notation">^</span></a><a class="idref" href="mathcomp.algebra.poly.html#f96de40aa5b46ab228915f8026ade3b8"><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.poly.html#MapPoly.Additive.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.poly.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.poly.html#MapPoly.Additive"><span class="id" title="section">Additive</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Variable</span> <a name="MapPoly.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.poly.html#MapPoly.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.poly.html#MapPoly.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">Implicit</span> <span class="id" title="keyword">Types</span> <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.poly.html#MapPoly.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>.<br/> - -<br/> - -<br/> -<span class="id" title="keyword">Fact</span> <a name="map_poly_is_rmorphism"><span class="id" title="lemma">map_poly_is_rmorphism</span></a> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.RMorphism.Exports.rmorphism"><span class="id" title="abbreviation">rmorphism</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.poly.html#MapPoly.f"><span class="id" title="variable">f</span></a>).<br/> -<span class="id" title="keyword">Canonical</span> <span class="id" title="var">map_poly_rmorphism</span> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.RMorphism.Exports.RMorphism"><span class="id" title="abbreviation">RMorphism</span></a> <a class="idref" href="mathcomp.algebra.poly.html#map_poly_is_rmorphism"><span class="id" title="lemma">map_poly_is_rmorphism</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="map_polyZ"><span class="id" title="lemma">map_polyZ</span></a> <span class="id" title="var">c</span> <span class="id" title="var">p</span> : <a class="idref" href="mathcomp.algebra.poly.html#08484e31d7e3ec6a6712aaeb95848c94"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.poly.html#c"><span class="id" title="variable">c</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#3b05480e39db306e67fadbc79d394529"><span class="id" title="notation">*:</span></a> <a class="idref" href="mathcomp.algebra.poly.html#p"><span class="id" title="variable">p</span></a><a class="idref" href="mathcomp.algebra.poly.html#08484e31d7e3ec6a6712aaeb95848c94"><span class="id" title="notation">)^</span></a><a class="idref" href="mathcomp.algebra.poly.html#08484e31d7e3ec6a6712aaeb95848c94"><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.poly.html#MapPoly.f"><span class="id" title="variable">f</span></a> <a class="idref" href="mathcomp.algebra.poly.html#c"><span class="id" title="variable">c</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#3b05480e39db306e67fadbc79d394529"><span class="id" title="notation">*:</span></a> <a class="idref" href="mathcomp.algebra.poly.html#p"><span class="id" title="variable">p</span></a><a class="idref" href="mathcomp.algebra.poly.html#08484e31d7e3ec6a6712aaeb95848c94"><span class="id" title="notation">^</span></a><a class="idref" href="mathcomp.algebra.poly.html#08484e31d7e3ec6a6712aaeb95848c94"><span class="id" title="notation">f</span></a>.<br/> - <span class="id" title="keyword">Canonical</span> <span class="id" title="var">map_poly_linear</span> :=<br/> - <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.poly.html#map_polyZ"><span class="id" title="lemma">map_polyZ</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.ssralg.html#GRing.Linear.Exports.scalable_for"><span class="id" title="abbreviation">scalable_for</span></a> (<a class="idref" href="mathcomp.algebra.poly.html#MapPoly.f"><span class="id" title="variable">f</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#11ebad41b70994075d9152ef8d0a15b3"><span class="id" title="notation">\;</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#eb2b32cc2f63f97454a307a8ee8d68cc"><span class="id" title="notation">*:%</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#eb2b32cc2f63f97454a307a8ee8d68cc"><span class="id" title="notation">R</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.poly.html#MapPoly.f"><span class="id" title="variable">f</span></a>)).<br/> -<span class="id" title="keyword">Canonical</span> <span class="id" title="var">map_poly_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.poly.html#map_poly"><span class="id" title="definition">map_poly</span></a> <a class="idref" href="mathcomp.algebra.poly.html#MapPoly.f"><span class="id" title="variable">f</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">Lemma</span> <a name="map_polyX"><span class="id" title="lemma">map_polyX</span></a> : <a class="idref" href="mathcomp.algebra.poly.html#08484e31d7e3ec6a6712aaeb95848c94"><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.poly.html#08484e31d7e3ec6a6712aaeb95848c94"><span class="id" title="notation">)^</span></a><a class="idref" href="mathcomp.algebra.poly.html#08484e31d7e3ec6a6712aaeb95848c94"><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.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>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="map_polyXn"><span class="id" title="lemma">map_polyXn</span></a> <span class="id" title="var">n</span> : <a class="idref" href="mathcomp.algebra.poly.html#08484e31d7e3ec6a6712aaeb95848c94"><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.poly.html#n"><span class="id" title="variable">n</span></a><a class="idref" href="mathcomp.algebra.poly.html#08484e31d7e3ec6a6712aaeb95848c94"><span class="id" title="notation">)^</span></a><a class="idref" href="mathcomp.algebra.poly.html#08484e31d7e3ec6a6712aaeb95848c94"><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.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.poly.html#n"><span class="id" title="variable">n</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="monic_map"><span class="id" title="lemma">monic_map</span></a> <span class="id" title="var">p</span> : <a class="idref" href="mathcomp.algebra.poly.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#p"><span class="id" title="variable">p</span></a><a class="idref" href="mathcomp.algebra.poly.html#08484e31d7e3ec6a6712aaeb95848c94"><span class="id" title="notation">^</span></a><a class="idref" href="mathcomp.algebra.poly.html#08484e31d7e3ec6a6712aaeb95848c94"><span class="id" title="notation">f</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="horner_map"><span class="id" title="lemma">horner_map</span></a> <span class="id" title="var">p</span> <span class="id" title="var">x</span> : <a class="idref" href="mathcomp.algebra.poly.html#p"><span class="id" title="variable">p</span></a><a class="idref" href="mathcomp.algebra.poly.html#08484e31d7e3ec6a6712aaeb95848c94"><span class="id" title="notation">^</span></a><a class="idref" href="mathcomp.algebra.poly.html#08484e31d7e3ec6a6712aaeb95848c94"><span class="id" title="notation">f</span></a><a class="idref" href="mathcomp.algebra.poly.html#e4361ce58e4de0a4b9786d0011b61316"><span class="id" title="notation">.[</span></a><a class="idref" href="mathcomp.algebra.poly.html#MapPoly.f"><span class="id" title="variable">f</span></a> <a class="idref" href="mathcomp.algebra.poly.html#x"><span class="id" title="variable">x</span></a><a class="idref" href="mathcomp.algebra.poly.html#e4361ce58e4de0a4b9786d0011b61316"><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.poly.html#MapPoly.f"><span class="id" title="variable">f</span></a> <a class="idref" href="mathcomp.algebra.poly.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.poly.html#x"><span class="id" title="variable">x</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="map_comm_poly"><span class="id" title="lemma">map_comm_poly</span></a> <span class="id" title="var">p</span> <span class="id" title="var">x</span> : <a class="idref" href="mathcomp.algebra.poly.html#comm_poly"><span class="id" title="definition">comm_poly</span></a> <a class="idref" href="mathcomp.algebra.poly.html#p"><span class="id" title="variable">p</span></a> <a class="idref" href="mathcomp.algebra.poly.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.poly.html#comm_poly"><span class="id" title="definition">comm_poly</span></a> <a class="idref" href="mathcomp.algebra.poly.html#p"><span class="id" title="variable">p</span></a><a class="idref" href="mathcomp.algebra.poly.html#08484e31d7e3ec6a6712aaeb95848c94"><span class="id" title="notation">^</span></a><a class="idref" href="mathcomp.algebra.poly.html#08484e31d7e3ec6a6712aaeb95848c94"><span class="id" title="notation">f</span></a> (<a class="idref" href="mathcomp.algebra.poly.html#MapPoly.f"><span class="id" title="variable">f</span></a> <a class="idref" href="mathcomp.algebra.poly.html#x"><span class="id" title="variable">x</span></a>).<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="map_comm_coef"><span class="id" title="lemma">map_comm_coef</span></a> <span class="id" title="var">p</span> <span class="id" title="var">x</span> : <a class="idref" href="mathcomp.algebra.poly.html#comm_coef"><span class="id" title="definition">comm_coef</span></a> <a class="idref" href="mathcomp.algebra.poly.html#p"><span class="id" title="variable">p</span></a> <a class="idref" href="mathcomp.algebra.poly.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.poly.html#comm_coef"><span class="id" title="definition">comm_coef</span></a> <a class="idref" href="mathcomp.algebra.poly.html#p"><span class="id" title="variable">p</span></a><a class="idref" href="mathcomp.algebra.poly.html#08484e31d7e3ec6a6712aaeb95848c94"><span class="id" title="notation">^</span></a><a class="idref" href="mathcomp.algebra.poly.html#08484e31d7e3ec6a6712aaeb95848c94"><span class="id" title="notation">f</span></a> (<a class="idref" href="mathcomp.algebra.poly.html#MapPoly.f"><span class="id" title="variable">f</span></a> <a class="idref" href="mathcomp.algebra.poly.html#x"><span class="id" title="variable">x</span></a>).<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="rmorph_root"><span class="id" title="lemma">rmorph_root</span></a> <span class="id" title="var">p</span> <span class="id" title="var">x</span> : <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#p"><span class="id" title="variable">p</span></a> <a class="idref" href="mathcomp.algebra.poly.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.poly.html#root"><span class="id" title="definition">root</span></a> <a class="idref" href="mathcomp.algebra.poly.html#p"><span class="id" title="variable">p</span></a><a class="idref" href="mathcomp.algebra.poly.html#08484e31d7e3ec6a6712aaeb95848c94"><span class="id" title="notation">^</span></a><a class="idref" href="mathcomp.algebra.poly.html#08484e31d7e3ec6a6712aaeb95848c94"><span class="id" title="notation">f</span></a> (<a class="idref" href="mathcomp.algebra.poly.html#MapPoly.f"><span class="id" title="variable">f</span></a> <a class="idref" href="mathcomp.algebra.poly.html#x"><span class="id" title="variable">x</span></a>).<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="rmorph_unity_root"><span class="id" title="lemma">rmorph_unity_root</span></a> <span class="id" title="var">n</span> <span class="id" title="var">z</span> : <a class="idref" href="mathcomp.algebra.poly.html#n"><span class="id" title="variable">n</span></a><a class="idref" href="mathcomp.algebra.poly.html#acbc7bcbd85a1f81c4f65e93aa5fd967"><span class="id" title="notation">.-</span></a><a class="idref" href="mathcomp.algebra.poly.html#acbc7bcbd85a1f81c4f65e93aa5fd967"><span class="id" title="notation">unity_root</span></a> <a class="idref" href="mathcomp.algebra.poly.html#z"><span class="id" title="variable">z</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#1c93e43e07fbeaeb6a625cb6614beb5d"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.poly.html#n"><span class="id" title="variable">n</span></a><a class="idref" href="mathcomp.algebra.poly.html#acbc7bcbd85a1f81c4f65e93aa5fd967"><span class="id" title="notation">.-</span></a><a class="idref" href="mathcomp.algebra.poly.html#acbc7bcbd85a1f81c4f65e93aa5fd967"><span class="id" title="notation">unity_root</span></a> (<a class="idref" href="mathcomp.algebra.poly.html#MapPoly.f"><span class="id" title="variable">f</span></a> <a class="idref" href="mathcomp.algebra.poly.html#z"><span class="id" title="variable">z</span></a>).<br/> - -<br/> -<span class="id" title="keyword">Section</span> <a name="MapPoly.HornerMorph"><span class="id" title="section">HornerMorph</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Variable</span> <a name="MapPoly.HornerMorph.u"><span class="id" title="variable">u</span></a> : <a class="idref" href="mathcomp.algebra.poly.html#MapPoly.rR"><span class="id" title="variable">rR</span></a>.<br/> -<span class="id" title="keyword">Hypothesis</span> <a name="MapPoly.HornerMorph.cfu"><span class="id" title="variable">cfu</span></a> : <a class="idref" href="mathcomp.algebra.poly.html#commr_rmorph"><span class="id" title="definition">commr_rmorph</span></a> <a class="idref" href="mathcomp.algebra.poly.html#MapPoly.f"><span class="id" title="variable">f</span></a> <a class="idref" href="mathcomp.algebra.poly.html#MapPoly.HornerMorph.u"><span class="id" title="variable">u</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="horner_morphC"><span class="id" title="lemma">horner_morphC</span></a> <span class="id" title="var">a</span> : <a class="idref" href="mathcomp.algebra.poly.html#horner_morph"><span class="id" title="definition">horner_morph</span></a> <a class="idref" href="mathcomp.algebra.poly.html#MapPoly.HornerMorph.cfu"><span class="id" title="variable">cfu</span></a> <a class="idref" href="mathcomp.algebra.poly.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.poly.html#MapPoly.f"><span class="id" title="variable">f</span></a> <a class="idref" href="mathcomp.algebra.poly.html#a"><span class="id" title="variable">a</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="horner_morphX"><span class="id" title="lemma">horner_morphX</span></a> : <a class="idref" href="mathcomp.algebra.poly.html#horner_morph"><span class="id" title="definition">horner_morph</span></a> <a class="idref" href="mathcomp.algebra.poly.html#MapPoly.HornerMorph.cfu"><span class="id" title="variable">cfu</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.poly.html#MapPoly.HornerMorph.u"><span class="id" title="variable">u</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Fact</span> <a name="horner_is_lrmorphism"><span class="id" title="lemma">horner_is_lrmorphism</span></a> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.LRMorphism.Exports.lrmorphism_for"><span class="id" title="abbreviation">lrmorphism_for</span></a> (<a class="idref" href="mathcomp.algebra.poly.html#MapPoly.f"><span class="id" title="variable">f</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#11ebad41b70994075d9152ef8d0a15b3"><span class="id" title="notation">\;</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#3609d85e23333c9e68741ad96b416eec"><span class="id" title="notation">*%</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#3609d85e23333c9e68741ad96b416eec"><span class="id" title="notation">R</span></a>) (<a class="idref" href="mathcomp.algebra.poly.html#horner_morph"><span class="id" title="definition">horner_morph</span></a> <a class="idref" href="mathcomp.algebra.poly.html#MapPoly.HornerMorph.cfu"><span class="id" title="variable">cfu</span></a>).<br/> -<span class="id" title="keyword">Canonical</span> <span class="id" title="var">horner_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.poly.html#horner_is_lrmorphism"><span class="id" title="lemma">horner_is_lrmorphism</span></a>.<br/> -<span class="id" title="keyword">Canonical</span> <span class="id" title="var">horner_rmorphism</span> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.RMorphism.Exports.RMorphism"><span class="id" title="abbreviation">RMorphism</span></a> <a class="idref" href="mathcomp.algebra.poly.html#horner_is_lrmorphism"><span class="id" title="lemma">horner_is_lrmorphism</span></a>.<br/> -<span class="id" title="keyword">Canonical</span> <span class="id" title="var">horner_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.poly.html#horner_is_lrmorphism"><span class="id" title="lemma">horner_is_lrmorphism</span></a>.<br/> -<span class="id" title="keyword">Canonical</span> <span class="id" title="var">horner_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.poly.html#horner_morph"><span class="id" title="definition">horner_morph</span></a> <a class="idref" href="mathcomp.algebra.poly.html#MapPoly.HornerMorph.cfu"><span class="id" title="variable">cfu</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">End</span> <a class="idref" href="mathcomp.algebra.poly.html#MapPoly.HornerMorph"><span class="id" title="section">HornerMorph</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="deriv_map"><span class="id" title="lemma">deriv_map</span></a> <span class="id" title="var">p</span> : <a class="idref" href="mathcomp.algebra.poly.html#p"><span class="id" title="variable">p</span></a><a class="idref" href="mathcomp.algebra.poly.html#08484e31d7e3ec6a6712aaeb95848c94"><span class="id" title="notation">^</span></a><a class="idref" href="mathcomp.algebra.poly.html#08484e31d7e3ec6a6712aaeb95848c94"><span class="id" title="notation">f</span></a><a class="idref" href="mathcomp.algebra.poly.html#4edbe111d3afeccb0860281084ef5446"><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.poly.html#08484e31d7e3ec6a6712aaeb95848c94"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.poly.html#p"><span class="id" title="variable">p</span></a><a class="idref" href="mathcomp.algebra.poly.html#4edbe111d3afeccb0860281084ef5446"><span class="id" title="notation">^`</span></a><a class="idref" href="mathcomp.algebra.poly.html#08484e31d7e3ec6a6712aaeb95848c94"><span class="id" title="notation">)^</span></a><a class="idref" href="mathcomp.algebra.poly.html#08484e31d7e3ec6a6712aaeb95848c94"><span class="id" title="notation">f</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="derivn_map"><span class="id" title="lemma">derivn_map</span></a> <span class="id" title="var">p</span> <span class="id" title="var">n</span> : <a class="idref" href="mathcomp.algebra.poly.html#p"><span class="id" title="variable">p</span></a><a class="idref" href="mathcomp.algebra.poly.html#08484e31d7e3ec6a6712aaeb95848c94"><span class="id" title="notation">^</span></a><a class="idref" href="mathcomp.algebra.poly.html#08484e31d7e3ec6a6712aaeb95848c94"><span class="id" title="notation">f</span></a><a class="idref" href="mathcomp.algebra.poly.html#b958e16eceb6670a53fefab70c549c2e"><span class="id" title="notation">^`(</span></a><a class="idref" href="mathcomp.algebra.poly.html#n"><span class="id" title="variable">n</span></a><a class="idref" href="mathcomp.algebra.poly.html#b958e16eceb6670a53fefab70c549c2e"><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.poly.html#08484e31d7e3ec6a6712aaeb95848c94"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.poly.html#p"><span class="id" title="variable">p</span></a><a class="idref" href="mathcomp.algebra.poly.html#b958e16eceb6670a53fefab70c549c2e"><span class="id" title="notation">^`(</span></a><a class="idref" href="mathcomp.algebra.poly.html#n"><span class="id" title="variable">n</span></a><a class="idref" href="mathcomp.algebra.poly.html#b958e16eceb6670a53fefab70c549c2e"><span class="id" title="notation">)</span></a><a class="idref" href="mathcomp.algebra.poly.html#08484e31d7e3ec6a6712aaeb95848c94"><span class="id" title="notation">)^</span></a><a class="idref" href="mathcomp.algebra.poly.html#08484e31d7e3ec6a6712aaeb95848c94"><span class="id" title="notation">f</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="nderivn_map"><span class="id" title="lemma">nderivn_map</span></a> <span class="id" title="var">p</span> <span class="id" title="var">n</span> : <a class="idref" href="mathcomp.algebra.poly.html#p"><span class="id" title="variable">p</span></a><a class="idref" href="mathcomp.algebra.poly.html#08484e31d7e3ec6a6712aaeb95848c94"><span class="id" title="notation">^</span></a><a class="idref" href="mathcomp.algebra.poly.html#08484e31d7e3ec6a6712aaeb95848c94"><span class="id" title="notation">f</span></a><a class="idref" href="mathcomp.algebra.poly.html#fd18436a5c1673ca6b0e81010f0a963a"><span class="id" title="notation">^`</span></a><a class="idref" href="mathcomp.algebra.poly.html#fd18436a5c1673ca6b0e81010f0a963a"><span class="id" title="notation">N</span></a><a class="idref" href="mathcomp.algebra.poly.html#fd18436a5c1673ca6b0e81010f0a963a"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.poly.html#n"><span class="id" title="variable">n</span></a><a class="idref" href="mathcomp.algebra.poly.html#fd18436a5c1673ca6b0e81010f0a963a"><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.poly.html#08484e31d7e3ec6a6712aaeb95848c94"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.poly.html#p"><span class="id" title="variable">p</span></a><a class="idref" href="mathcomp.algebra.poly.html#fd18436a5c1673ca6b0e81010f0a963a"><span class="id" title="notation">^`</span></a><a class="idref" href="mathcomp.algebra.poly.html#fd18436a5c1673ca6b0e81010f0a963a"><span class="id" title="notation">N</span></a><a class="idref" href="mathcomp.algebra.poly.html#fd18436a5c1673ca6b0e81010f0a963a"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.poly.html#n"><span class="id" title="variable">n</span></a><a class="idref" href="mathcomp.algebra.poly.html#fd18436a5c1673ca6b0e81010f0a963a"><span class="id" title="notation">)</span></a><a class="idref" href="mathcomp.algebra.poly.html#08484e31d7e3ec6a6712aaeb95848c94"><span class="id" title="notation">)^</span></a><a class="idref" href="mathcomp.algebra.poly.html#08484e31d7e3ec6a6712aaeb95848c94"><span class="id" title="notation">f</span></a>.<br/> - -<br/> -<span class="id" title="keyword">End</span> <a class="idref" href="mathcomp.algebra.poly.html#MapPoly"><span class="id" title="section">MapPoly</span></a>.<br/> - -<br/> -</div> - -<div class="doc"> - Morphisms from the polynomial ring, and the initiality of polynomials - with respect to these. -</div> -<div class="code"> -<span class="id" title="keyword">Section</span> <a name="MorphPoly"><span class="id" title="section">MorphPoly</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Variable</span> (<a name="MorphPoly.aR"><span class="id" title="variable">aR</span></a> <a name="MorphPoly.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="MorphPoly.pf"><span class="id" title="variable">pf</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.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.poly.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.poly.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/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="poly_morphX_comm"><span class="id" title="lemma">poly_morphX_comm</span></a> : <a class="idref" href="mathcomp.algebra.poly.html#commr_rmorph"><span class="id" title="definition">commr_rmorph</span></a> (<a class="idref" href="mathcomp.algebra.poly.html#MorphPoly.pf"><span class="id" title="variable">pf</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.poly.html#polyC"><span class="id" title="definition">polyC</span></a>) (<a class="idref" href="mathcomp.algebra.poly.html#MorphPoly.pf"><span class="id" title="variable">pf</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>).<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="poly_initial"><span class="id" title="lemma">poly_initial</span></a> : <a class="idref" href="mathcomp.algebra.poly.html#MorphPoly.pf"><span class="id" title="variable">pf</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#876aa133fb3472bffd492f74ff496035"><span class="id" title="notation">=1</span></a> <a class="idref" href="mathcomp.algebra.poly.html#horner_morph"><span class="id" title="definition">horner_morph</span></a> <a class="idref" href="mathcomp.algebra.poly.html#poly_morphX_comm"><span class="id" title="lemma">poly_morphX_comm</span></a>.<br/> - -<br/> -<span class="id" title="keyword">End</span> <a class="idref" href="mathcomp.algebra.poly.html#MorphPoly"><span class="id" title="section">MorphPoly</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Notation</span> <a name="3ccfd12ca6a7abb145c90e1788b68707"><span class="id" title="notation">"</span></a>p ^:P" := (<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.poly.html#polyC"><span class="id" title="definition">polyC</span></a> <span class="id" title="var">p</span>) : <span class="id" title="var">ring_scope</span>.<br/> - -<br/> -<span class="id" title="keyword">Section</span> <a name="PolyCompose"><span class="id" title="section">PolyCompose</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Variable</span> <a name="PolyCompose.R"><span class="id" title="variable">R</span></a> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Ring.Exports.ringType"><span class="id" title="abbreviation">ringType</span></a>.<br/> -<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.poly.html#PolyCompose.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="comp_poly"><span class="id" title="definition">comp_poly</span></a> <span class="id" title="var">q</span> <span class="id" title="var">p</span> := <a class="idref" href="mathcomp.algebra.poly.html#p"><span class="id" title="variable">p</span></a><a class="idref" href="mathcomp.algebra.poly.html#3ccfd12ca6a7abb145c90e1788b68707"><span class="id" title="notation">^:</span></a><a class="idref" href="mathcomp.algebra.poly.html#3ccfd12ca6a7abb145c90e1788b68707"><span class="id" title="notation">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.poly.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>.<br/> - -<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="size_map_polyC"><span class="id" title="lemma">size_map_polyC</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.poly.html#p"><span class="id" title="variable">p</span></a><a class="idref" href="mathcomp.algebra.poly.html#3ccfd12ca6a7abb145c90e1788b68707"><span class="id" title="notation">^:</span></a><a class="idref" href="mathcomp.algebra.poly.html#3ccfd12ca6a7abb145c90e1788b68707"><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.ssreflect.seq.html#size"><span class="id" title="definition">size</span></a> <a class="idref" href="mathcomp.algebra.poly.html#p"><span class="id" title="variable">p</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="map_polyC_eq0"><span class="id" title="lemma">map_polyC_eq0</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#6cd0f7b28b6092304087c7049437bb1a"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.poly.html#p"><span class="id" title="variable">p</span></a><a class="idref" href="mathcomp.algebra.poly.html#3ccfd12ca6a7abb145c90e1788b68707"><span class="id" title="notation">^:</span></a><a class="idref" href="mathcomp.algebra.poly.html#3ccfd12ca6a7abb145c90e1788b68707"><span class="id" title="notation">P</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.algebra.poly.html#p"><span class="id" title="variable">p</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>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="root_polyC"><span class="id" title="lemma">root_polyC</span></a> <span class="id" title="var">p</span> <span class="id" title="var">x</span> : <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#p"><span class="id" title="variable">p</span></a><a class="idref" href="mathcomp.algebra.poly.html#3ccfd12ca6a7abb145c90e1788b68707"><span class="id" title="notation">^:</span></a><a class="idref" href="mathcomp.algebra.poly.html#3ccfd12ca6a7abb145c90e1788b68707"><span class="id" title="notation">P</span></a> <a class="idref" href="mathcomp.algebra.poly.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="http://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.poly.html#p"><span class="id" title="variable">p</span></a> <a class="idref" href="mathcomp.algebra.poly.html#x"><span class="id" title="variable">x</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="comp_polyE"><span class="id" title="lemma">comp_polyE</span></a> <span class="id" title="var">p</span> <span class="id" title="var">q</span> : <a class="idref" href="mathcomp.algebra.poly.html#p"><span class="id" title="variable">p</span></a> <a class="idref" href="mathcomp.algebra.poly.html#b0797d7dde7f681ae2ccab57f6c6a648"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.algebra.poly.html#b0797d7dde7f681ae2ccab57f6c6a648"><span class="id" title="notation">Po</span></a> <a class="idref" href="mathcomp.algebra.poly.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.ssralg.html#784f0af919f467115774be372bf0dbd7"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#784f0af919f467115774be372bf0dbd7"><span class="id" title="notation">sum_</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#784f0af919f467115774be372bf0dbd7"><span class="id" title="notation">(</span></a><span class="id" title="var">i</span> <a class="idref" href="mathcomp.algebra.ssralg.html#784f0af919f467115774be372bf0dbd7"><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.poly.html#p"><span class="id" title="variable">p</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#784f0af919f467115774be372bf0dbd7"><span class="id" title="notation">)</span></a> <a class="idref" href="mathcomp.algebra.poly.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="mathcomp.algebra.ssralg.html#3b05480e39db306e67fadbc79d394529"><span class="id" title="notation">*:</span></a> <a class="idref" href="mathcomp.algebra.poly.html#q"><span class="id" title="variable">q</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#663140372ac3b275aae871b74b140513"><span class="id" title="notation">^+</span></a><a class="idref" href="mathcomp.algebra.poly.html#i"><span class="id" title="variable">i</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="coef_comp_poly"><span class="id" title="lemma">coef_comp_poly</span></a> <span class="id" title="var">p</span> <span class="id" title="var">q</span> <span class="id" title="var">n</span> :<br/> - <a class="idref" href="mathcomp.algebra.ssralg.html#82d810f9f90b79e8fe98d90a63070c32"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.poly.html#p"><span class="id" title="variable">p</span></a> <a class="idref" href="mathcomp.algebra.poly.html#b0797d7dde7f681ae2ccab57f6c6a648"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.algebra.poly.html#b0797d7dde7f681ae2ccab57f6c6a648"><span class="id" title="notation">Po</span></a> <a class="idref" href="mathcomp.algebra.poly.html#q"><span class="id" title="variable">q</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="http://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#784f0af919f467115774be372bf0dbd7"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#784f0af919f467115774be372bf0dbd7"><span class="id" title="notation">sum_</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#784f0af919f467115774be372bf0dbd7"><span class="id" title="notation">(</span></a><span class="id" title="var">i</span> <a class="idref" href="mathcomp.algebra.ssralg.html#784f0af919f467115774be372bf0dbd7"><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.poly.html#p"><span class="id" title="variable">p</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#784f0af919f467115774be372bf0dbd7"><span class="id" title="notation">)</span></a> <a class="idref" href="mathcomp.algebra.poly.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="mathcomp.algebra.ssralg.html#2d0cfb150261028f4ebd2ba355623dcc"><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.poly.html#q"><span class="id" title="variable">q</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#663140372ac3b275aae871b74b140513"><span class="id" title="notation">^+</span></a> <a class="idref" href="mathcomp.algebra.poly.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="mathcomp.algebra.ssralg.html#82d810f9f90b79e8fe98d90a63070c32"><span class="id" title="notation">_n</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="polyOver_comp"><span class="id" title="lemma">polyOver_comp</span></a> <span class="id" title="var">S</span> (<span class="id" title="var">ringS</span> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Pred.Exports.semiringPred"><span class="id" title="abbreviation">semiringPred</span></a> <a class="idref" href="mathcomp.algebra.poly.html#S"><span class="id" title="variable">S</span></a>) (<span class="id" title="var">kS</span> : <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#keyed_pred"><span class="id" title="record">keyed_pred</span></a> <a class="idref" href="mathcomp.algebra.poly.html#ringS"><span class="id" title="variable">ringS</span></a>) :<br/> - <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#b4f176550f5b849a7fbba2ee164934d3"><span class="id" title="notation">{</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#b4f176550f5b849a7fbba2ee164934d3"><span class="id" title="notation">in</span></a> <a class="idref" href="mathcomp.algebra.poly.html#polyOver"><span class="id" title="definition">polyOver</span></a> <a class="idref" href="mathcomp.algebra.poly.html#kS"><span class="id" title="variable">kS</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#b4f176550f5b849a7fbba2ee164934d3"><span class="id" title="notation">&,</span></a> <span class="id" title="keyword">∀</span> <span class="id" title="var">p</span> <span class="id" title="var">q</span>, <a class="idref" href="mathcomp.algebra.poly.html#p"><span class="id" title="variable">p</span></a> <a class="idref" href="mathcomp.algebra.poly.html#b0797d7dde7f681ae2ccab57f6c6a648"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.algebra.poly.html#b0797d7dde7f681ae2ccab57f6c6a648"><span class="id" title="notation">Po</span></a> <a class="idref" href="mathcomp.algebra.poly.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.ssrbool.html#b09457274bcb94927e289b8a9e9cd3f7"><span class="id" title="notation">\</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#b09457274bcb94927e289b8a9e9cd3f7"><span class="id" title="notation">in</span></a> <a class="idref" href="mathcomp.algebra.poly.html#polyOver"><span class="id" title="definition">polyOver</span></a> <a class="idref" href="mathcomp.algebra.poly.html#kS"><span class="id" title="variable">kS</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#b4f176550f5b849a7fbba2ee164934d3"><span class="id" title="notation">}</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="comp_polyCr"><span class="id" title="lemma">comp_polyCr</span></a> <span class="id" title="var">p</span> <span class="id" title="var">c</span> : <a class="idref" href="mathcomp.algebra.poly.html#p"><span class="id" title="variable">p</span></a> <a class="idref" href="mathcomp.algebra.poly.html#b0797d7dde7f681ae2ccab57f6c6a648"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.algebra.poly.html#b0797d7dde7f681ae2ccab57f6c6a648"><span class="id" title="notation">Po</span></a> <a class="idref" href="mathcomp.algebra.poly.html#c"><span class="id" title="variable">c</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.poly.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.poly.html#c"><span class="id" title="variable">c</span></a><a class="idref" href="mathcomp.algebra.poly.html#e4361ce58e4de0a4b9786d0011b61316"><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.poly.html#8b14e41ab5fcce2460b8672da1456d67"><span class="id" title="notation">P</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="comp_poly0r"><span class="id" title="lemma">comp_poly0r</span></a> <span class="id" title="var">p</span> : <a class="idref" href="mathcomp.algebra.poly.html#p"><span class="id" title="variable">p</span></a> <a class="idref" href="mathcomp.algebra.poly.html#b0797d7dde7f681ae2ccab57f6c6a648"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.algebra.poly.html#b0797d7dde7f681ae2ccab57f6c6a648"><span class="id" title="notation">Po</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="mathcomp.algebra.poly.html#8b14e41ab5fcce2460b8672da1456d67"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.poly.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">_0</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/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="comp_polyC"><span class="id" title="lemma">comp_polyC</span></a> <span class="id" title="var">c</span> <span class="id" title="var">p</span> : <a class="idref" href="mathcomp.algebra.poly.html#c"><span class="id" title="variable">c</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.poly.html#b0797d7dde7f681ae2ccab57f6c6a648"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.algebra.poly.html#b0797d7dde7f681ae2ccab57f6c6a648"><span class="id" title="notation">Po</span></a> <a class="idref" href="mathcomp.algebra.poly.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.poly.html#c"><span class="id" title="variable">c</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/> - -<br/> -<span class="id" title="keyword">Fact</span> <a name="comp_poly_is_linear"><span class="id" title="lemma">comp_poly_is_linear</span></a> <span class="id" title="var">p</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.poly.html#comp_poly"><span class="id" title="definition">comp_poly</span></a> <a class="idref" href="mathcomp.algebra.poly.html#p"><span class="id" title="variable">p</span></a>).<br/> -<span class="id" title="keyword">Canonical</span> <span class="id" title="var">comp_poly_additive</span> <span class="id" title="var">p</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.poly.html#comp_poly_is_linear"><span class="id" title="lemma">comp_poly_is_linear</span></a> <a class="idref" href="mathcomp.algebra.poly.html#p"><span class="id" title="variable">p</span></a>).<br/> -<span class="id" title="keyword">Canonical</span> <span class="id" title="var">comp_poly_linear</span> <span class="id" title="var">p</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.poly.html#comp_poly_is_linear"><span class="id" title="lemma">comp_poly_is_linear</span></a> <a class="idref" href="mathcomp.algebra.poly.html#p"><span class="id" title="variable">p</span></a>).<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="comp_poly0"><span class="id" title="lemma">comp_poly0</span></a> <span class="id" title="var">p</span> : 0 <a class="idref" href="mathcomp.algebra.poly.html#b0797d7dde7f681ae2ccab57f6c6a648"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.algebra.poly.html#b0797d7dde7f681ae2ccab57f6c6a648"><span class="id" title="notation">Po</span></a> <a class="idref" href="mathcomp.algebra.poly.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.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="comp_polyD"><span class="id" title="lemma">comp_polyD</span></a> <span class="id" title="var">p</span> <span class="id" title="var">q</span> <span class="id" title="var">r</span> : <a class="idref" href="mathcomp.algebra.poly.html#b0797d7dde7f681ae2ccab57f6c6a648"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.poly.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.poly.html#q"><span class="id" title="variable">q</span></a><a class="idref" href="mathcomp.algebra.poly.html#b0797d7dde7f681ae2ccab57f6c6a648"><span class="id" title="notation">)</span></a> <a class="idref" href="mathcomp.algebra.poly.html#b0797d7dde7f681ae2ccab57f6c6a648"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.algebra.poly.html#b0797d7dde7f681ae2ccab57f6c6a648"><span class="id" title="notation">Po</span></a> <a class="idref" href="mathcomp.algebra.poly.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> <a class="idref" href="mathcomp.algebra.ssralg.html#c7f78cf1f6a5e4f664654f7d671ca752"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.poly.html#p"><span class="id" title="variable">p</span></a> <a class="idref" href="mathcomp.algebra.poly.html#b0797d7dde7f681ae2ccab57f6c6a648"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.algebra.poly.html#b0797d7dde7f681ae2ccab57f6c6a648"><span class="id" title="notation">Po</span></a> <a class="idref" href="mathcomp.algebra.poly.html#r"><span class="id" title="variable">r</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#c7f78cf1f6a5e4f664654f7d671ca752"><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.ssralg.html#c7f78cf1f6a5e4f664654f7d671ca752"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.poly.html#q"><span class="id" title="variable">q</span></a> <a class="idref" href="mathcomp.algebra.poly.html#b0797d7dde7f681ae2ccab57f6c6a648"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.algebra.poly.html#b0797d7dde7f681ae2ccab57f6c6a648"><span class="id" title="notation">Po</span></a> <a class="idref" href="mathcomp.algebra.poly.html#r"><span class="id" title="variable">r</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#c7f78cf1f6a5e4f664654f7d671ca752"><span class="id" title="notation">)</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="comp_polyB"><span class="id" title="lemma">comp_polyB</span></a> <span class="id" title="var">p</span> <span class="id" title="var">q</span> <span class="id" title="var">r</span> : <a class="idref" href="mathcomp.algebra.poly.html#b0797d7dde7f681ae2ccab57f6c6a648"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.poly.html#p"><span class="id" title="variable">p</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#51dc792c356ca1a71a3094b50d6bb2fb"><span class="id" title="notation">-</span></a> <a class="idref" href="mathcomp.algebra.poly.html#q"><span class="id" title="variable">q</span></a><a class="idref" href="mathcomp.algebra.poly.html#b0797d7dde7f681ae2ccab57f6c6a648"><span class="id" title="notation">)</span></a> <a class="idref" href="mathcomp.algebra.poly.html#b0797d7dde7f681ae2ccab57f6c6a648"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.algebra.poly.html#b0797d7dde7f681ae2ccab57f6c6a648"><span class="id" title="notation">Po</span></a> <a class="idref" href="mathcomp.algebra.poly.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> <a class="idref" href="mathcomp.algebra.ssralg.html#51dc792c356ca1a71a3094b50d6bb2fb"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.poly.html#p"><span class="id" title="variable">p</span></a> <a class="idref" href="mathcomp.algebra.poly.html#b0797d7dde7f681ae2ccab57f6c6a648"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.algebra.poly.html#b0797d7dde7f681ae2ccab57f6c6a648"><span class="id" title="notation">Po</span></a> <a class="idref" href="mathcomp.algebra.poly.html#r"><span class="id" title="variable">r</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#51dc792c356ca1a71a3094b50d6bb2fb"><span class="id" title="notation">)</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#51dc792c356ca1a71a3094b50d6bb2fb"><span class="id" title="notation">-</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#51dc792c356ca1a71a3094b50d6bb2fb"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.poly.html#q"><span class="id" title="variable">q</span></a> <a class="idref" href="mathcomp.algebra.poly.html#b0797d7dde7f681ae2ccab57f6c6a648"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.algebra.poly.html#b0797d7dde7f681ae2ccab57f6c6a648"><span class="id" title="notation">Po</span></a> <a class="idref" href="mathcomp.algebra.poly.html#r"><span class="id" title="variable">r</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#51dc792c356ca1a71a3094b50d6bb2fb"><span class="id" title="notation">)</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="comp_polyZ"><span class="id" title="lemma">comp_polyZ</span></a> <span class="id" title="var">c</span> <span class="id" title="var">p</span> <span class="id" title="var">q</span> : <a class="idref" href="mathcomp.algebra.poly.html#b0797d7dde7f681ae2ccab57f6c6a648"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.poly.html#c"><span class="id" title="variable">c</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#3b05480e39db306e67fadbc79d394529"><span class="id" title="notation">*:</span></a> <a class="idref" href="mathcomp.algebra.poly.html#p"><span class="id" title="variable">p</span></a><a class="idref" href="mathcomp.algebra.poly.html#b0797d7dde7f681ae2ccab57f6c6a648"><span class="id" title="notation">)</span></a> <a class="idref" href="mathcomp.algebra.poly.html#b0797d7dde7f681ae2ccab57f6c6a648"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.algebra.poly.html#b0797d7dde7f681ae2ccab57f6c6a648"><span class="id" title="notation">Po</span></a> <a class="idref" href="mathcomp.algebra.poly.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.poly.html#c"><span class="id" title="variable">c</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#3b05480e39db306e67fadbc79d394529"><span class="id" title="notation">*:</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#3b05480e39db306e67fadbc79d394529"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.poly.html#p"><span class="id" title="variable">p</span></a> <a class="idref" href="mathcomp.algebra.poly.html#b0797d7dde7f681ae2ccab57f6c6a648"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.algebra.poly.html#b0797d7dde7f681ae2ccab57f6c6a648"><span class="id" title="notation">Po</span></a> <a class="idref" href="mathcomp.algebra.poly.html#q"><span class="id" title="variable">q</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#3b05480e39db306e67fadbc79d394529"><span class="id" title="notation">)</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="comp_polyXr"><span class="id" title="lemma">comp_polyXr</span></a> <span class="id" title="var">p</span> : <a class="idref" href="mathcomp.algebra.poly.html#p"><span class="id" title="variable">p</span></a> <a class="idref" href="mathcomp.algebra.poly.html#b0797d7dde7f681ae2ccab57f6c6a648"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.algebra.poly.html#b0797d7dde7f681ae2ccab57f6c6a648"><span class="id" title="notation">Po</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.poly.html#p"><span class="id" title="variable">p</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="comp_polyX"><span class="id" title="lemma">comp_polyX</span></a> <span class="id" title="var">p</span> : <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.poly.html#b0797d7dde7f681ae2ccab57f6c6a648"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.algebra.poly.html#b0797d7dde7f681ae2ccab57f6c6a648"><span class="id" title="notation">Po</span></a> <a class="idref" href="mathcomp.algebra.poly.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.poly.html#p"><span class="id" title="variable">p</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="comp_poly_MXaddC"><span class="id" title="lemma">comp_poly_MXaddC</span></a> <span class="id" title="var">c</span> <span class="id" title="var">p</span> <span class="id" title="var">q</span> : <a class="idref" href="mathcomp.algebra.poly.html#b0797d7dde7f681ae2ccab57f6c6a648"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.poly.html#p"><span class="id" title="variable">p</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#2d0cfb150261028f4ebd2ba355623dcc"><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#c7f78cf1f6a5e4f664654f7d671ca752"><span class="id" title="notation">+</span></a> <a class="idref" href="mathcomp.algebra.poly.html#c"><span class="id" title="variable">c</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.poly.html#b0797d7dde7f681ae2ccab57f6c6a648"><span class="id" title="notation">)</span></a> <a class="idref" href="mathcomp.algebra.poly.html#b0797d7dde7f681ae2ccab57f6c6a648"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.algebra.poly.html#b0797d7dde7f681ae2ccab57f6c6a648"><span class="id" title="notation">Po</span></a> <a class="idref" href="mathcomp.algebra.poly.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.ssralg.html#2d0cfb150261028f4ebd2ba355623dcc"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.poly.html#p"><span class="id" title="variable">p</span></a> <a class="idref" href="mathcomp.algebra.poly.html#b0797d7dde7f681ae2ccab57f6c6a648"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.algebra.poly.html#b0797d7dde7f681ae2ccab57f6c6a648"><span class="id" title="notation">Po</span></a> <a class="idref" href="mathcomp.algebra.poly.html#q"><span class="id" title="variable">q</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#2d0cfb150261028f4ebd2ba355623dcc"><span class="id" title="notation">)</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#2d0cfb150261028f4ebd2ba355623dcc"><span class="id" title="notation">×</span></a> <a class="idref" href="mathcomp.algebra.poly.html#q"><span class="id" title="variable">q</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#c7f78cf1f6a5e4f664654f7d671ca752"><span class="id" title="notation">+</span></a> <a class="idref" href="mathcomp.algebra.poly.html#c"><span class="id" title="variable">c</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/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="comp_polyXaddC_K"><span class="id" title="lemma">comp_polyXaddC_K</span></a> <span class="id" title="var">p</span> <span class="id" title="var">z</span> : <a class="idref" href="mathcomp.algebra.poly.html#b0797d7dde7f681ae2ccab57f6c6a648"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.poly.html#p"><span class="id" title="variable">p</span></a> <a class="idref" href="mathcomp.algebra.poly.html#b0797d7dde7f681ae2ccab57f6c6a648"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.algebra.poly.html#b0797d7dde7f681ae2ccab57f6c6a648"><span class="id" title="notation">Po</span></a> <a class="idref" href="mathcomp.algebra.poly.html#b0797d7dde7f681ae2ccab57f6c6a648"><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#c7f78cf1f6a5e4f664654f7d671ca752"><span class="id" title="notation">+</span></a> <a class="idref" href="mathcomp.algebra.poly.html#z"><span class="id" title="variable">z</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.poly.html#b0797d7dde7f681ae2ccab57f6c6a648"><span class="id" title="notation">))</span></a> <a class="idref" href="mathcomp.algebra.poly.html#b0797d7dde7f681ae2ccab57f6c6a648"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.algebra.poly.html#b0797d7dde7f681ae2ccab57f6c6a648"><span class="id" title="notation">Po</span></a> <a class="idref" href="mathcomp.algebra.poly.html#b0797d7dde7f681ae2ccab57f6c6a648"><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.poly.html#z"><span class="id" title="variable">z</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.poly.html#b0797d7dde7f681ae2ccab57f6c6a648"><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.poly.html#p"><span class="id" title="variable">p</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="size_comp_poly_leq"><span class="id" title="lemma">size_comp_poly_leq</span></a> <span class="id" title="var">p</span> <span class="id" title="var">q</span> :<br/> - <a class="idref" href="mathcomp.ssreflect.seq.html#size"><span class="id" title="definition">size</span></a> (<a class="idref" href="mathcomp.algebra.poly.html#p"><span class="id" title="variable">p</span></a> <a class="idref" href="mathcomp.algebra.poly.html#b0797d7dde7f681ae2ccab57f6c6a648"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.algebra.poly.html#b0797d7dde7f681ae2ccab57f6c6a648"><span class="id" title="notation">Po</span></a> <a class="idref" href="mathcomp.algebra.poly.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.ssreflect.ssrnat.html#bda89d73ec4a8f23ae92b565ffb5aaa6"><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.poly.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> <a class="idref" href="mathcomp.ssreflect.ssrnat.html#ea2ff3d561159081cea6fb2e8113cc54"><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.poly.html#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#bda89d73ec4a8f23ae92b565ffb5aaa6"><span class="id" title="notation">).+1</span></a>.<br/> - -<br/> -<span class="id" title="keyword">End</span> <a class="idref" href="mathcomp.algebra.poly.html#PolyCompose"><span class="id" title="section">PolyCompose</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Notation</span> <a name="011952147f33cb889a964c228c4ebadd"><span class="id" title="notation">"</span></a>p \Po q" := (<a class="idref" href="mathcomp.algebra.poly.html#comp_poly"><span class="id" title="definition">comp_poly</span></a> <span class="id" title="var">q</span> <span class="id" title="var">p</span>) : <span class="id" title="var">ring_scope</span>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="map_comp_poly"><span class="id" title="lemma">map_comp_poly</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#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.poly.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.poly.html#map_poly"><span class="id" title="definition">map_poly</span></a> <a class="idref" href="mathcomp.algebra.poly.html#f"><span class="id" title="variable">f</span></a> (<a class="idref" href="mathcomp.algebra.poly.html#p"><span class="id" title="variable">p</span></a> <a class="idref" href="mathcomp.algebra.poly.html#011952147f33cb889a964c228c4ebadd"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.algebra.poly.html#011952147f33cb889a964c228c4ebadd"><span class="id" title="notation">Po</span></a> <a class="idref" href="mathcomp.algebra.poly.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.poly.html#map_poly"><span class="id" title="definition">map_poly</span></a> <a class="idref" href="mathcomp.algebra.poly.html#f"><span class="id" title="variable">f</span></a> <a class="idref" href="mathcomp.algebra.poly.html#p"><span class="id" title="variable">p</span></a> <a class="idref" href="mathcomp.algebra.poly.html#011952147f33cb889a964c228c4ebadd"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.algebra.poly.html#011952147f33cb889a964c228c4ebadd"><span class="id" title="notation">Po</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.poly.html#f"><span class="id" title="variable">f</span></a> <a class="idref" href="mathcomp.algebra.poly.html#q"><span class="id" title="variable">q</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Section</span> <a name="PolynomialComRing"><span class="id" title="section">PolynomialComRing</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Variable</span> <a name="PolynomialComRing.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>.<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.poly.html#PolynomialComRing.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">Fact</span> <a name="poly_mul_comm"><span class="id" title="lemma">poly_mul_comm</span></a> <span class="id" title="var">p</span> <span class="id" title="var">q</span> : <a class="idref" href="mathcomp.algebra.poly.html#p"><span class="id" title="variable">p</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#2d0cfb150261028f4ebd2ba355623dcc"><span class="id" title="notation">×</span></a> <a class="idref" href="mathcomp.algebra.poly.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.poly.html#q"><span class="id" title="variable">q</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#2d0cfb150261028f4ebd2ba355623dcc"><span class="id" title="notation">×</span></a> <a class="idref" href="mathcomp.algebra.poly.html#p"><span class="id" title="variable">p</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Canonical</span> <span class="id" title="var">poly_comRingType</span> := <span class="id" title="keyword">Eval</span> <span class="id" title="tactic">hnf</span> <span class="id" title="tactic">in</span> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ComRing.Exports.ComRingType"><span class="id" title="abbreviation">ComRingType</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.poly.html#PolynomialComRing.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.poly.html#poly_mul_comm"><span class="id" title="lemma">poly_mul_comm</span></a>.<br/> -<span class="id" title="keyword">Canonical</span> <span class="id" title="var">polynomial_comRingType</span> :=<br/> - <span class="id" title="keyword">Eval</span> <span class="id" title="tactic">hnf</span> <span class="id" title="tactic">in</span> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ComRing.Exports.ComRingType"><span class="id" title="abbreviation">ComRingType</span></a> (<a class="idref" href="mathcomp.algebra.poly.html#polynomial"><span class="id" title="record">polynomial</span></a> <a class="idref" href="mathcomp.algebra.poly.html#PolynomialComRing.R"><span class="id" title="variable">R</span></a>) <a class="idref" href="mathcomp.algebra.poly.html#poly_mul_comm"><span class="id" title="lemma">poly_mul_comm</span></a>.<br/> -<span class="id" title="keyword">Canonical</span> <span class="id" title="var">poly_algType</span> := <span class="id" title="keyword">Eval</span> <span class="id" title="tactic">hnf</span> <span class="id" title="tactic">in</span> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Algebra.Exports.CommAlgType"><span class="id" title="abbreviation">CommAlgType</span></a> <a class="idref" href="mathcomp.algebra.poly.html#PolynomialComRing.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.poly.html#c2ef4fdf7ae62c36654f85f0d2a6c874"><span class="id" title="notation">poly</span></a> <a class="idref" href="mathcomp.algebra.poly.html#PolynomialComRing.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/> -<span class="id" title="keyword">Canonical</span> <span class="id" title="var">polynomial_algType</span> :=<br/> - <span class="id" title="keyword">Eval</span> <span class="id" title="tactic">hnf</span> <span class="id" title="tactic">in</span> <a class="idref" href="mathcomp.algebra.ssralg.html#93568324863779f91a1c79d8a55f7d2b"><span class="id" title="notation">[</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#93568324863779f91a1c79d8a55f7d2b"><span class="id" title="notation">algType</span></a> <a class="idref" href="mathcomp.algebra.poly.html#PolynomialComRing.R"><span class="id" title="variable">R</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#93568324863779f91a1c79d8a55f7d2b"><span class="id" title="notation">of</span></a> <a class="idref" href="mathcomp.algebra.poly.html#polynomial"><span class="id" title="record">polynomial</span></a> <a class="idref" href="mathcomp.algebra.poly.html#PolynomialComRing.R"><span class="id" title="variable">R</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#93568324863779f91a1c79d8a55f7d2b"><span class="id" title="notation">for</span></a> <a class="idref" href="mathcomp.algebra.poly.html#poly_algType"><span class="id" title="definition">poly_algType</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#93568324863779f91a1c79d8a55f7d2b"><span class="id" title="notation">]</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="hornerM"><span class="id" title="lemma">hornerM</span></a> <span class="id" title="var">p</span> <span class="id" title="var">q</span> <span class="id" title="var">x</span> : <a class="idref" href="mathcomp.algebra.poly.html#e4361ce58e4de0a4b9786d0011b61316"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.poly.html#p"><span class="id" title="variable">p</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#2d0cfb150261028f4ebd2ba355623dcc"><span class="id" title="notation">×</span></a> <a class="idref" href="mathcomp.algebra.poly.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.poly.html#x"><span class="id" title="variable">x</span></a><a class="idref" href="mathcomp.algebra.poly.html#e4361ce58e4de0a4b9786d0011b61316"><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.poly.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.poly.html#x"><span class="id" title="variable">x</span></a><a class="idref" href="mathcomp.algebra.poly.html#e4361ce58e4de0a4b9786d0011b61316"><span class="id" title="notation">]</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#2d0cfb150261028f4ebd2ba355623dcc"><span class="id" title="notation">×</span></a> <a class="idref" href="mathcomp.algebra.poly.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.poly.html#x"><span class="id" title="variable">x</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="horner_exp"><span class="id" title="lemma">horner_exp</span></a> <span class="id" title="var">p</span> <span class="id" title="var">x</span> <span class="id" title="var">n</span> : <a class="idref" href="mathcomp.algebra.poly.html#e4361ce58e4de0a4b9786d0011b61316"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.poly.html#p"><span class="id" title="variable">p</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#663140372ac3b275aae871b74b140513"><span class="id" title="notation">^+</span></a> <a class="idref" href="mathcomp.algebra.poly.html#n"><span class="id" title="variable">n</span></a><a class="idref" href="mathcomp.algebra.poly.html#e4361ce58e4de0a4b9786d0011b61316"><span class="id" title="notation">).[</span></a><a class="idref" href="mathcomp.algebra.poly.html#x"><span class="id" title="variable">x</span></a><a class="idref" href="mathcomp.algebra.poly.html#e4361ce58e4de0a4b9786d0011b61316"><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.poly.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.poly.html#x"><span class="id" title="variable">x</span></a><a class="idref" href="mathcomp.algebra.poly.html#e4361ce58e4de0a4b9786d0011b61316"><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.poly.html#n"><span class="id" title="variable">n</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="horner_prod"><span class="id" title="lemma">horner_prod</span></a> <span class="id" title="var">I</span> <span class="id" title="var">r</span> (<span class="id" title="var">P</span> : <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#pred"><span class="id" title="definition">pred</span></a> <a class="idref" href="mathcomp.algebra.poly.html#I"><span class="id" title="variable">I</span></a>) (<span class="id" title="var">F</span> : <a class="idref" href="mathcomp.algebra.poly.html#I"><span class="id" title="variable">I</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#1c93e43e07fbeaeb6a625cb6614beb5d"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.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.poly.html#PolynomialComRing.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>) <span class="id" title="var">x</span> :<br/> - <a class="idref" href="mathcomp.algebra.poly.html#e4361ce58e4de0a4b9786d0011b61316"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#edca584f226f01d7a05a12e4ceba1caf"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#edca584f226f01d7a05a12e4ceba1caf"><span class="id" title="notation">prod_</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#edca584f226f01d7a05a12e4ceba1caf"><span class="id" title="notation">(</span></a><span class="id" title="var">i</span> <a class="idref" href="mathcomp.algebra.ssralg.html#edca584f226f01d7a05a12e4ceba1caf"><span class="id" title="notation"><-</span></a> <a class="idref" href="mathcomp.algebra.poly.html#r"><span class="id" title="variable">r</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#edca584f226f01d7a05a12e4ceba1caf"><span class="id" title="notation">|</span></a> <a class="idref" href="mathcomp.algebra.poly.html#P"><span class="id" title="variable">P</span></a> <a class="idref" href="mathcomp.algebra.poly.html#i"><span class="id" title="variable">i</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#edca584f226f01d7a05a12e4ceba1caf"><span class="id" title="notation">)</span></a> <a class="idref" href="mathcomp.algebra.poly.html#F"><span class="id" title="variable">F</span></a> <a class="idref" href="mathcomp.algebra.poly.html#i"><span class="id" title="variable">i</span></a><a class="idref" href="mathcomp.algebra.poly.html#e4361ce58e4de0a4b9786d0011b61316"><span class="id" title="notation">).[</span></a><a class="idref" href="mathcomp.algebra.poly.html#x"><span class="id" title="variable">x</span></a><a class="idref" href="mathcomp.algebra.poly.html#e4361ce58e4de0a4b9786d0011b61316"><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.ssralg.html#edca584f226f01d7a05a12e4ceba1caf"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#edca584f226f01d7a05a12e4ceba1caf"><span class="id" title="notation">prod_</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#edca584f226f01d7a05a12e4ceba1caf"><span class="id" title="notation">(</span></a><span class="id" title="var">i</span> <a class="idref" href="mathcomp.algebra.ssralg.html#edca584f226f01d7a05a12e4ceba1caf"><span class="id" title="notation"><-</span></a> <a class="idref" href="mathcomp.algebra.poly.html#r"><span class="id" title="variable">r</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#edca584f226f01d7a05a12e4ceba1caf"><span class="id" title="notation">|</span></a> <a class="idref" href="mathcomp.algebra.poly.html#P"><span class="id" title="variable">P</span></a> <a class="idref" href="mathcomp.algebra.poly.html#i"><span class="id" title="variable">i</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#edca584f226f01d7a05a12e4ceba1caf"><span class="id" title="notation">)</span></a> <a class="idref" href="mathcomp.algebra.poly.html#e4361ce58e4de0a4b9786d0011b61316"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.poly.html#F"><span class="id" title="variable">F</span></a> <a class="idref" href="mathcomp.algebra.poly.html#i"><span class="id" title="variable">i</span></a><a class="idref" href="mathcomp.algebra.poly.html#e4361ce58e4de0a4b9786d0011b61316"><span class="id" title="notation">).[</span></a><a class="idref" href="mathcomp.algebra.poly.html#x"><span class="id" title="variable">x</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">Definition</span> <a name="hornerE"><span class="id" title="definition">hornerE</span></a> :=<br/> - <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.poly.html#hornerD"><span class="id" title="lemma">hornerD</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.poly.html#hornerN"><span class="id" title="lemma">hornerN</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.poly.html#hornerX"><span class="id" title="lemma">hornerX</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.poly.html#hornerC"><span class="id" title="lemma">hornerC</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.poly.html#horner_cons"><span class="id" title="lemma">horner_cons</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><br/> - <a class="idref" href="mathcomp.algebra.poly.html#simp"><span class="id" title="abbreviation">simp</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.poly.html#hornerCM"><span class="id" title="lemma">hornerCM</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.poly.html#hornerZ"><span class="id" title="lemma">hornerZ</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.poly.html#hornerM"><span class="id" title="lemma">hornerM</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>.<br/> - -<br/> -<span class="id" title="keyword">Definition</span> <a name="horner_eval"><span class="id" title="definition">horner_eval</span></a> (<span class="id" title="var">x</span> : <a class="idref" href="mathcomp.algebra.poly.html#PolynomialComRing.R"><span class="id" title="variable">R</span></a>) := <a class="idref" href="mathcomp.algebra.poly.html#horner"><span class="id" title="definition">horner</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#d89396f990d6b54d736cfe259e498cf4"><span class="id" title="notation">^~</span></a> <a class="idref" href="mathcomp.algebra.poly.html#x"><span class="id" title="variable">x</span></a>.<br/> -<span class="id" title="keyword">Lemma</span> <a name="horner_evalE"><span class="id" title="lemma">horner_evalE</span></a> <span class="id" title="var">x</span> <span class="id" title="var">p</span> : <a class="idref" href="mathcomp.algebra.poly.html#horner_eval"><span class="id" title="definition">horner_eval</span></a> <a class="idref" href="mathcomp.algebra.poly.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.algebra.poly.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.poly.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.poly.html#x"><span class="id" title="variable">x</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">Fact</span> <a name="horner_eval_is_lrmorphism"><span class="id" title="lemma">horner_eval_is_lrmorphism</span></a> <span class="id" title="var">x</span> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.LRMorphism.Exports.lrmorphism_for"><span class="id" title="abbreviation">lrmorphism_for</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#3609d85e23333c9e68741ad96b416eec"><span class="id" title="notation">*%</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#3609d85e23333c9e68741ad96b416eec"><span class="id" title="notation">R</span></a> (<a class="idref" href="mathcomp.algebra.poly.html#horner_eval"><span class="id" title="definition">horner_eval</span></a> <a class="idref" href="mathcomp.algebra.poly.html#x"><span class="id" title="variable">x</span></a>).<br/> -<span class="id" title="keyword">Canonical</span> <span class="id" title="var">horner_eval_additive</span> <span class="id" title="var">x</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.poly.html#horner_eval_is_lrmorphism"><span class="id" title="lemma">horner_eval_is_lrmorphism</span></a> <a class="idref" href="mathcomp.algebra.poly.html#x"><span class="id" title="variable">x</span></a>).<br/> -<span class="id" title="keyword">Canonical</span> <span class="id" title="var">horner_eval_rmorphism</span> <span class="id" title="var">x</span> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.RMorphism.Exports.RMorphism"><span class="id" title="abbreviation">RMorphism</span></a> (<a class="idref" href="mathcomp.algebra.poly.html#horner_eval_is_lrmorphism"><span class="id" title="lemma">horner_eval_is_lrmorphism</span></a> <a class="idref" href="mathcomp.algebra.poly.html#x"><span class="id" title="variable">x</span></a>).<br/> -<span class="id" title="keyword">Canonical</span> <span class="id" title="var">horner_eval_linear</span> <span class="id" title="var">x</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.poly.html#horner_eval_is_lrmorphism"><span class="id" title="lemma">horner_eval_is_lrmorphism</span></a> <a class="idref" href="mathcomp.algebra.poly.html#x"><span class="id" title="variable">x</span></a>).<br/> -<span class="id" title="keyword">Canonical</span> <span class="id" title="var">horner_eval_lrmorphism</span> <span class="id" title="var">x</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.poly.html#horner_eval"><span class="id" title="definition">horner_eval</span></a> <a class="idref" href="mathcomp.algebra.poly.html#x"><span class="id" title="variable">x</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">Fact</span> <a name="comp_poly_multiplicative"><span class="id" title="lemma">comp_poly_multiplicative</span></a> <span class="id" title="var">q</span> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.RMorphism.Exports.multiplicative"><span class="id" title="abbreviation">multiplicative</span></a> (<a class="idref" href="mathcomp.algebra.poly.html#comp_poly"><span class="id" title="definition">comp_poly</span></a> <a class="idref" href="mathcomp.algebra.poly.html#q"><span class="id" title="variable">q</span></a>).<br/> -<span class="id" title="keyword">Canonical</span> <span class="id" title="var">comp_poly_rmorphism</span> <span class="id" title="var">q</span> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.RMorphism.Exports.AddRMorphism"><span class="id" title="abbreviation">AddRMorphism</span></a> (<a class="idref" href="mathcomp.algebra.poly.html#comp_poly_multiplicative"><span class="id" title="lemma">comp_poly_multiplicative</span></a> <a class="idref" href="mathcomp.algebra.poly.html#q"><span class="id" title="variable">q</span></a>).<br/> -<span class="id" title="keyword">Canonical</span> <span class="id" title="var">comp_poly_lrmorphism</span> <span class="id" title="var">q</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.poly.html#comp_poly"><span class="id" title="definition">comp_poly</span></a> <a class="idref" href="mathcomp.algebra.poly.html#q"><span class="id" title="variable">q</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">Lemma</span> <a name="comp_polyM"><span class="id" title="lemma">comp_polyM</span></a> <span class="id" title="var">p</span> <span class="id" title="var">q</span> <span class="id" title="var">r</span> : <a class="idref" href="mathcomp.algebra.poly.html#011952147f33cb889a964c228c4ebadd"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.poly.html#p"><span class="id" title="variable">p</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#2d0cfb150261028f4ebd2ba355623dcc"><span class="id" title="notation">×</span></a> <a class="idref" href="mathcomp.algebra.poly.html#q"><span class="id" title="variable">q</span></a><a class="idref" href="mathcomp.algebra.poly.html#011952147f33cb889a964c228c4ebadd"><span class="id" title="notation">)</span></a> <a class="idref" href="mathcomp.algebra.poly.html#011952147f33cb889a964c228c4ebadd"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.algebra.poly.html#011952147f33cb889a964c228c4ebadd"><span class="id" title="notation">Po</span></a> <a class="idref" href="mathcomp.algebra.poly.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> <a class="idref" href="mathcomp.algebra.ssralg.html#2d0cfb150261028f4ebd2ba355623dcc"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.poly.html#p"><span class="id" title="variable">p</span></a> <a class="idref" href="mathcomp.algebra.poly.html#011952147f33cb889a964c228c4ebadd"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.algebra.poly.html#011952147f33cb889a964c228c4ebadd"><span class="id" title="notation">Po</span></a> <a class="idref" href="mathcomp.algebra.poly.html#r"><span class="id" title="variable">r</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#2d0cfb150261028f4ebd2ba355623dcc"><span class="id" title="notation">)</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#2d0cfb150261028f4ebd2ba355623dcc"><span class="id" title="notation">×</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#2d0cfb150261028f4ebd2ba355623dcc"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.poly.html#q"><span class="id" title="variable">q</span></a> <a class="idref" href="mathcomp.algebra.poly.html#011952147f33cb889a964c228c4ebadd"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.algebra.poly.html#011952147f33cb889a964c228c4ebadd"><span class="id" title="notation">Po</span></a> <a class="idref" href="mathcomp.algebra.poly.html#r"><span class="id" title="variable">r</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#2d0cfb150261028f4ebd2ba355623dcc"><span class="id" title="notation">)</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="comp_polyA"><span class="id" title="lemma">comp_polyA</span></a> <span class="id" title="var">p</span> <span class="id" title="var">q</span> <span class="id" title="var">r</span> : <a class="idref" href="mathcomp.algebra.poly.html#p"><span class="id" title="variable">p</span></a> <a class="idref" href="mathcomp.algebra.poly.html#011952147f33cb889a964c228c4ebadd"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.algebra.poly.html#011952147f33cb889a964c228c4ebadd"><span class="id" title="notation">Po</span></a> <a class="idref" href="mathcomp.algebra.poly.html#011952147f33cb889a964c228c4ebadd"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.poly.html#q"><span class="id" title="variable">q</span></a> <a class="idref" href="mathcomp.algebra.poly.html#011952147f33cb889a964c228c4ebadd"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.algebra.poly.html#011952147f33cb889a964c228c4ebadd"><span class="id" title="notation">Po</span></a> <a class="idref" href="mathcomp.algebra.poly.html#r"><span class="id" title="variable">r</span></a><a class="idref" href="mathcomp.algebra.poly.html#011952147f33cb889a964c228c4ebadd"><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.poly.html#011952147f33cb889a964c228c4ebadd"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.poly.html#p"><span class="id" title="variable">p</span></a> <a class="idref" href="mathcomp.algebra.poly.html#011952147f33cb889a964c228c4ebadd"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.algebra.poly.html#011952147f33cb889a964c228c4ebadd"><span class="id" title="notation">Po</span></a> <a class="idref" href="mathcomp.algebra.poly.html#q"><span class="id" title="variable">q</span></a><a class="idref" href="mathcomp.algebra.poly.html#011952147f33cb889a964c228c4ebadd"><span class="id" title="notation">)</span></a> <a class="idref" href="mathcomp.algebra.poly.html#011952147f33cb889a964c228c4ebadd"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.algebra.poly.html#011952147f33cb889a964c228c4ebadd"><span class="id" title="notation">Po</span></a> <a class="idref" href="mathcomp.algebra.poly.html#r"><span class="id" title="variable">r</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="horner_comp"><span class="id" title="lemma">horner_comp</span></a> <span class="id" title="var">p</span> <span class="id" title="var">q</span> <span class="id" title="var">x</span> : <a class="idref" href="mathcomp.algebra.poly.html#e4361ce58e4de0a4b9786d0011b61316"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.poly.html#p"><span class="id" title="variable">p</span></a> <a class="idref" href="mathcomp.algebra.poly.html#011952147f33cb889a964c228c4ebadd"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.algebra.poly.html#011952147f33cb889a964c228c4ebadd"><span class="id" title="notation">Po</span></a> <a class="idref" href="mathcomp.algebra.poly.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.poly.html#x"><span class="id" title="variable">x</span></a><a class="idref" href="mathcomp.algebra.poly.html#e4361ce58e4de0a4b9786d0011b61316"><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.poly.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.poly.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.poly.html#x"><span class="id" title="variable">x</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="root_comp"><span class="id" title="lemma">root_comp</span></a> <span class="id" title="var">p</span> <span class="id" title="var">q</span> <span class="id" title="var">x</span> : <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#p"><span class="id" title="variable">p</span></a> <a class="idref" href="mathcomp.algebra.poly.html#011952147f33cb889a964c228c4ebadd"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.algebra.poly.html#011952147f33cb889a964c228c4ebadd"><span class="id" title="notation">Po</span></a> <a class="idref" href="mathcomp.algebra.poly.html#q"><span class="id" title="variable">q</span></a>) <a class="idref" href="mathcomp.algebra.poly.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#6cd0f7b28b6092304087c7049437bb1a"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.poly.html#root"><span class="id" title="definition">root</span></a> <a class="idref" href="mathcomp.algebra.poly.html#p"><span class="id" title="variable">p</span></a> (<a class="idref" href="mathcomp.algebra.poly.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.poly.html#x"><span class="id" title="variable">x</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="deriv_comp"><span class="id" title="lemma">deriv_comp</span></a> <span class="id" title="var">p</span> <span class="id" title="var">q</span> : <a class="idref" href="mathcomp.algebra.poly.html#4edbe111d3afeccb0860281084ef5446"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.poly.html#p"><span class="id" title="variable">p</span></a> <a class="idref" href="mathcomp.algebra.poly.html#011952147f33cb889a964c228c4ebadd"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.algebra.poly.html#011952147f33cb889a964c228c4ebadd"><span class="id" title="notation">Po</span></a> <a class="idref" href="mathcomp.algebra.poly.html#q"><span class="id" title="variable">q</span></a><a class="idref" href="mathcomp.algebra.poly.html#4edbe111d3afeccb0860281084ef5446"><span class="id" title="notation">)</span></a> <a class="idref" href="mathcomp.algebra.poly.html#4edbe111d3afeccb0860281084ef5446"><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.ssralg.html#2d0cfb150261028f4ebd2ba355623dcc"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.poly.html#p"><span class="id" title="variable">p</span></a> <a class="idref" href="mathcomp.algebra.poly.html#4edbe111d3afeccb0860281084ef5446"><span class="id" title="notation">^`</span></a> <a class="idref" href="mathcomp.algebra.poly.html#011952147f33cb889a964c228c4ebadd"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.algebra.poly.html#011952147f33cb889a964c228c4ebadd"><span class="id" title="notation">Po</span></a> <a class="idref" href="mathcomp.algebra.poly.html#q"><span class="id" title="variable">q</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#2d0cfb150261028f4ebd2ba355623dcc"><span class="id" title="notation">)</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#2d0cfb150261028f4ebd2ba355623dcc"><span class="id" title="notation">×</span></a> <a class="idref" href="mathcomp.algebra.poly.html#q"><span class="id" title="variable">q</span></a><a class="idref" href="mathcomp.algebra.poly.html#4edbe111d3afeccb0860281084ef5446"><span class="id" title="notation">^`</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="deriv_exp"><span class="id" title="lemma">deriv_exp</span></a> <span class="id" title="var">p</span> <span class="id" title="var">n</span> : <a class="idref" href="mathcomp.algebra.poly.html#4edbe111d3afeccb0860281084ef5446"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.poly.html#p"><span class="id" title="variable">p</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#663140372ac3b275aae871b74b140513"><span class="id" title="notation">^+</span></a> <a class="idref" href="mathcomp.algebra.poly.html#n"><span class="id" title="variable">n</span></a><a class="idref" href="mathcomp.algebra.poly.html#4edbe111d3afeccb0860281084ef5446"><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.poly.html#p"><span class="id" title="variable">p</span></a><a class="idref" href="mathcomp.algebra.poly.html#4edbe111d3afeccb0860281084ef5446"><span class="id" title="notation">^`</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#2d0cfb150261028f4ebd2ba355623dcc"><span class="id" title="notation">×</span></a> <a class="idref" href="mathcomp.algebra.poly.html#p"><span class="id" title="variable">p</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#663140372ac3b275aae871b74b140513"><span class="id" title="notation">^+</span></a> <a class="idref" href="mathcomp.algebra.poly.html#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> <a class="idref" href="mathcomp.algebra.ssralg.html#e9001f602764f7896bb1eb34bf606a23"><span class="id" title="notation">*+</span></a> <a class="idref" href="mathcomp.algebra.poly.html#n"><span class="id" title="variable">n</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Definition</span> <a name="derivCE"><span class="id" title="definition">derivCE</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.poly.html#derivE"><span class="id" title="definition">derivE</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.poly.html#deriv_exp"><span class="id" title="lemma">deriv_exp</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>.<br/> - -<br/> -<span class="id" title="keyword">End</span> <a class="idref" href="mathcomp.algebra.poly.html#PolynomialComRing"><span class="id" title="section">PolynomialComRing</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Canonical</span> <span class="id" title="var">polynomial_countComRingType</span> (<span class="id" title="var">R</span> : <a class="idref" href="mathcomp.algebra.countalg.html#CountRing.ComRing.Exports.countComRingType"><span class="id" title="abbreviation">countComRingType</span></a>) :=<br/> - <a class="idref" href="mathcomp.algebra.countalg.html#d271043791f97708a05788e885686caa"><span class="id" title="notation">[</span></a><a class="idref" href="mathcomp.algebra.countalg.html#d271043791f97708a05788e885686caa"><span class="id" title="notation">countComRingType</span></a> <a class="idref" href="mathcomp.algebra.countalg.html#d271043791f97708a05788e885686caa"><span class="id" title="notation">of</span></a> <a class="idref" href="mathcomp.algebra.poly.html#polynomial"><span class="id" title="record">polynomial</span></a> <a class="idref" href="mathcomp.algebra.poly.html#R"><span class="id" title="variable">R</span></a><a class="idref" href="mathcomp.algebra.countalg.html#d271043791f97708a05788e885686caa"><span class="id" title="notation">]</span></a>.<br/> -<span class="id" title="keyword">Canonical</span> <span class="id" title="var">poly_countComRingType</span> (<span class="id" title="var">R</span> : <a class="idref" href="mathcomp.algebra.countalg.html#CountRing.ComRing.Exports.countComRingType"><span class="id" title="abbreviation">countComRingType</span></a>) :=<br/> - <a class="idref" href="mathcomp.algebra.countalg.html#d271043791f97708a05788e885686caa"><span class="id" title="notation">[</span></a><a class="idref" href="mathcomp.algebra.countalg.html#d271043791f97708a05788e885686caa"><span class="id" title="notation">countComRingType</span></a> <a class="idref" href="mathcomp.algebra.countalg.html#d271043791f97708a05788e885686caa"><span class="id" title="notation">of</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.poly.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.countalg.html#d271043791f97708a05788e885686caa"><span class="id" title="notation">]</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Section</span> <a name="PolynomialIdomain"><span class="id" title="section">PolynomialIdomain</span></a>.<br/> - -<br/> -</div> - -<div class="doc"> - Integral domain structure on poly -</div> -<div class="code"> -<span class="id" title="keyword">Variable</span> <a name="PolynomialIdomain.R"><span class="id" title="variable">R</span></a> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.IntegralDomain.Exports.idomainType"><span class="id" title="abbreviation">idomainType</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Implicit</span> <span class="id" title="keyword">Types</span> (<span class="id" title="var">a</span> <span class="id" title="var">b</span> <span class="id" title="var">x</span> <span class="id" title="var">y</span> : <a class="idref" href="mathcomp.algebra.poly.html#PolynomialIdomain.R"><span class="id" title="variable">R</span></a>) (<span class="id" title="var">p</span> <span class="id" title="var">q</span> <span class="id" title="var">r</span> <span class="id" title="var">m</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.poly.html#PolynomialIdomain.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">Lemma</span> <a name="size_mul"><span class="id" title="lemma">size_mul</span></a> <span class="id" title="var">p</span> <span class="id" title="var">q</span> : <a class="idref" href="mathcomp.algebra.poly.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#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> <a class="idref" href="mathcomp.ssreflect.seq.html#size"><span class="id" title="definition">size</span></a> (<a class="idref" href="mathcomp.algebra.poly.html#p"><span class="id" title="variable">p</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#2d0cfb150261028f4ebd2ba355623dcc"><span class="id" title="notation">×</span></a> <a class="idref" href="mathcomp.algebra.poly.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.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.poly.html#p"><span class="id" title="variable">p</span></a> <a class="idref" href="mathcomp.ssreflect.ssrnat.html#0dacc1786c5ba797d47dd85006231633"><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.poly.html#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>.<br/> - -<br/> -<span class="id" title="keyword">Fact</span> <a name="poly_idomainAxiom"><span class="id" title="lemma">poly_idomainAxiom</span></a> <span class="id" title="var">p</span> <span class="id" title="var">q</span> : <a class="idref" href="mathcomp.algebra.poly.html#p"><span class="id" title="variable">p</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#2d0cfb150261028f4ebd2ba355623dcc"><span class="id" title="notation">×</span></a> <a class="idref" href="mathcomp.algebra.poly.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> 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="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Datatypes.html#081ff67d3116402bb680e8692aa39185"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.poly.html#p"><span class="id" title="variable">p</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.Datatypes.html#081ff67d3116402bb680e8692aa39185"><span class="id" title="notation">)</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Datatypes.html#081ff67d3116402bb680e8692aa39185"><span class="id" title="notation">||</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Datatypes.html#081ff67d3116402bb680e8692aa39185"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.poly.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.Datatypes.html#081ff67d3116402bb680e8692aa39185"><span class="id" title="notation">)</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Definition</span> <a name="poly_unit"><span class="id" title="definition">poly_unit</span></a> : <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#pred"><span class="id" title="definition">pred</span></a> <a class="idref" href="mathcomp.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.poly.html#PolynomialIdomain.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/> - <span class="id" title="keyword">fun</span> <span class="id" title="var">p</span> ⇒ <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Datatypes.html#9ddeac0ab66152bd1d64bedb507a795e"><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.poly.html#p"><span class="id" title="variable">p</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#df45e8c2e8370fd4f0f7c4fdaf208180"><span class="id" title="notation">==</span></a> 1%<span class="id" title="var">N</span><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Datatypes.html#9ddeac0ab66152bd1d64bedb507a795e"><span class="id" title="notation">)</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Datatypes.html#9ddeac0ab66152bd1d64bedb507a795e"><span class="id" title="notation">&&</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Datatypes.html#9ddeac0ab66152bd1d64bedb507a795e"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.poly.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">_0</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#b09457274bcb94927e289b8a9e9cd3f7"><span class="id" title="notation">\</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#b09457274bcb94927e289b8a9e9cd3f7"><span class="id" title="notation">in</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.unit"><span class="id" title="definition">GRing.unit</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Datatypes.html#9ddeac0ab66152bd1d64bedb507a795e"><span class="id" title="notation">)</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Definition</span> <a name="poly_inv"><span class="id" title="definition">poly_inv</span></a> <span class="id" title="var">p</span> := <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssreflect.html#00a1a5b58aac8f1e3f1abff064a39f9d"><span class="id" title="notation">if</span></a> <a class="idref" href="mathcomp.algebra.poly.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#b09457274bcb94927e289b8a9e9cd3f7"><span class="id" title="notation">\</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#b09457274bcb94927e289b8a9e9cd3f7"><span class="id" title="notation">in</span></a> <a class="idref" href="mathcomp.algebra.poly.html#poly_unit"><span class="id" title="definition">poly_unit</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#4e5a4c91ec0aa12de06dfe1cc07ea126"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.poly.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">_0</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#4e5a4c91ec0aa12de06dfe1cc07ea126"><span class="id" title="notation">)^-1</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#00a1a5b58aac8f1e3f1abff064a39f9d"><span class="id" title="notation">else</span></a> <a class="idref" href="mathcomp.algebra.poly.html#p"><span class="id" title="variable">p</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Fact</span> <a name="poly_mulVp"><span class="id" title="lemma">poly_mulVp</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#poly_unit"><span class="id" title="definition">poly_unit</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#8c08d4203604dbed63e7afa9b689d858"><span class="id" title="notation">,</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#left_inverse"><span class="id" title="definition">left_inverse</span></a> 1 <a class="idref" href="mathcomp.algebra.poly.html#poly_inv"><span class="id" title="definition">poly_inv</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#3609d85e23333c9e68741ad96b416eec"><span class="id" title="notation">*%</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#3609d85e23333c9e68741ad96b416eec"><span class="id" title="notation">R</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">Fact</span> <a name="poly_intro_unit"><span class="id" title="lemma">poly_intro_unit</span></a> <span class="id" title="var">p</span> <span class="id" title="var">q</span> : <a class="idref" href="mathcomp.algebra.poly.html#q"><span class="id" title="variable">q</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#2d0cfb150261028f4ebd2ba355623dcc"><span class="id" title="notation">×</span></a> <a class="idref" href="mathcomp.algebra.poly.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> 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.algebra.poly.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#b09457274bcb94927e289b8a9e9cd3f7"><span class="id" title="notation">\</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#b09457274bcb94927e289b8a9e9cd3f7"><span class="id" title="notation">in</span></a> <a class="idref" href="mathcomp.algebra.poly.html#poly_unit"><span class="id" title="definition">poly_unit</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Fact</span> <a name="poly_inv_out"><span class="id" title="lemma">poly_inv_out</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="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#790b887fcb3f1d578b2c7a5460f7aeb5"><span class="id" title="notation">[</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#790b887fcb3f1d578b2c7a5460f7aeb5"><span class="id" title="notation">predC</span></a> <a class="idref" href="mathcomp.algebra.poly.html#poly_unit"><span class="id" title="definition">poly_unit</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#790b887fcb3f1d578b2c7a5460f7aeb5"><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="mathcomp.algebra.poly.html#poly_inv"><span class="id" title="definition">poly_inv</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#876aa133fb3472bffd492f74ff496035"><span class="id" title="notation">=1</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrfun.html#id"><span class="id" title="abbreviation">id</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#8c08d4203604dbed63e7afa9b689d858"><span class="id" title="notation">}</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Definition</span> <a name="poly_comUnitMixin"><span class="id" title="definition">poly_comUnitMixin</span></a> :=<br/> - <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ComUnitRing.Exports.ComUnitRingMixin"><span class="id" title="abbreviation">ComUnitRingMixin</span></a> <a class="idref" href="mathcomp.algebra.poly.html#poly_mulVp"><span class="id" title="lemma">poly_mulVp</span></a> <a class="idref" href="mathcomp.algebra.poly.html#poly_intro_unit"><span class="id" title="lemma">poly_intro_unit</span></a> <a class="idref" href="mathcomp.algebra.poly.html#poly_inv_out"><span class="id" title="lemma">poly_inv_out</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Canonical</span> <span class="id" title="var">poly_unitRingType</span> :=<br/> - <span class="id" title="keyword">Eval</span> <span class="id" title="tactic">hnf</span> <span class="id" title="tactic">in</span> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.UnitRing.Exports.UnitRingType"><span class="id" title="abbreviation">UnitRingType</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.poly.html#PolynomialIdomain.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.poly.html#poly_comUnitMixin"><span class="id" title="definition">poly_comUnitMixin</span></a>.<br/> -<span class="id" title="keyword">Canonical</span> <span class="id" title="var">polynomial_unitRingType</span> :=<br/> - <span class="id" title="keyword">Eval</span> <span class="id" title="tactic">hnf</span> <span class="id" title="tactic">in</span> <a class="idref" href="mathcomp.algebra.ssralg.html#76902b774c7fc1cb3d8cfbe482949a53"><span class="id" title="notation">[</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#76902b774c7fc1cb3d8cfbe482949a53"><span class="id" title="notation">unitRingType</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#76902b774c7fc1cb3d8cfbe482949a53"><span class="id" title="notation">of</span></a> <a class="idref" href="mathcomp.algebra.poly.html#polynomial"><span class="id" title="record">polynomial</span></a> <a class="idref" href="mathcomp.algebra.poly.html#PolynomialIdomain.R"><span class="id" title="variable">R</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#76902b774c7fc1cb3d8cfbe482949a53"><span class="id" title="notation">for</span></a> <a class="idref" href="mathcomp.algebra.poly.html#poly_unitRingType"><span class="id" title="definition">poly_unitRingType</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#76902b774c7fc1cb3d8cfbe482949a53"><span class="id" title="notation">]</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Canonical</span> <span class="id" title="var">poly_unitAlgType</span> := <span class="id" title="keyword">Eval</span> <span class="id" title="tactic">hnf</span> <span class="id" title="tactic">in</span> <a class="idref" href="mathcomp.algebra.ssralg.html#53130370ad22aac4f3ee8434dbc4850d"><span class="id" title="notation">[</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#53130370ad22aac4f3ee8434dbc4850d"><span class="id" title="notation">unitAlgType</span></a> <a class="idref" href="mathcomp.algebra.poly.html#PolynomialIdomain.R"><span class="id" title="variable">R</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#53130370ad22aac4f3ee8434dbc4850d"><span class="id" title="notation">of</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.poly.html#PolynomialIdomain.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.ssralg.html#53130370ad22aac4f3ee8434dbc4850d"><span class="id" title="notation">]</span></a>.<br/> -<span class="id" title="keyword">Canonical</span> <span class="id" title="var">polynomial_unitAlgType</span> := <span class="id" title="keyword">Eval</span> <span class="id" title="tactic">hnf</span> <span class="id" title="tactic">in</span> <a class="idref" href="mathcomp.algebra.ssralg.html#53130370ad22aac4f3ee8434dbc4850d"><span class="id" title="notation">[</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#53130370ad22aac4f3ee8434dbc4850d"><span class="id" title="notation">unitAlgType</span></a> <a class="idref" href="mathcomp.algebra.poly.html#PolynomialIdomain.R"><span class="id" title="variable">R</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#53130370ad22aac4f3ee8434dbc4850d"><span class="id" title="notation">of</span></a> <a class="idref" href="mathcomp.algebra.poly.html#polynomial"><span class="id" title="record">polynomial</span></a> <a class="idref" href="mathcomp.algebra.poly.html#PolynomialIdomain.R"><span class="id" title="variable">R</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#53130370ad22aac4f3ee8434dbc4850d"><span class="id" title="notation">]</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Canonical</span> <span class="id" title="var">poly_comUnitRingType</span> := <span class="id" title="keyword">Eval</span> <span class="id" title="tactic">hnf</span> <span class="id" title="tactic">in</span> <a class="idref" href="mathcomp.algebra.ssralg.html#2dfeb3fb2088b370ad93742d4f23a0dc"><span class="id" title="notation">[</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#2dfeb3fb2088b370ad93742d4f23a0dc"><span class="id" title="notation">comUnitRingType</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#2dfeb3fb2088b370ad93742d4f23a0dc"><span class="id" title="notation">of</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.poly.html#PolynomialIdomain.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.ssralg.html#2dfeb3fb2088b370ad93742d4f23a0dc"><span class="id" title="notation">]</span></a>.<br/> -<span class="id" title="keyword">Canonical</span> <span class="id" title="var">polynomial_comUnitRingType</span> :=<br/> - <span class="id" title="keyword">Eval</span> <span class="id" title="tactic">hnf</span> <span class="id" title="tactic">in</span> <a class="idref" href="mathcomp.algebra.ssralg.html#2dfeb3fb2088b370ad93742d4f23a0dc"><span class="id" title="notation">[</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#2dfeb3fb2088b370ad93742d4f23a0dc"><span class="id" title="notation">comUnitRingType</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#2dfeb3fb2088b370ad93742d4f23a0dc"><span class="id" title="notation">of</span></a> <a class="idref" href="mathcomp.algebra.poly.html#polynomial"><span class="id" title="record">polynomial</span></a> <a class="idref" href="mathcomp.algebra.poly.html#PolynomialIdomain.R"><span class="id" title="variable">R</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#2dfeb3fb2088b370ad93742d4f23a0dc"><span class="id" title="notation">]</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Canonical</span> <span class="id" title="var">poly_idomainType</span> :=<br/> - <span class="id" title="keyword">Eval</span> <span class="id" title="tactic">hnf</span> <span class="id" title="tactic">in</span> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.IntegralDomain.Exports.IdomainType"><span class="id" title="abbreviation">IdomainType</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.poly.html#PolynomialIdomain.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.poly.html#poly_idomainAxiom"><span class="id" title="lemma">poly_idomainAxiom</span></a>.<br/> -<span class="id" title="keyword">Canonical</span> <span class="id" title="var">polynomial_idomainType</span> :=<br/> - <span class="id" title="keyword">Eval</span> <span class="id" title="tactic">hnf</span> <span class="id" title="tactic">in</span> <a class="idref" href="mathcomp.algebra.ssralg.html#d2f06a45025b5a16ce20033996a7b507"><span class="id" title="notation">[</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#d2f06a45025b5a16ce20033996a7b507"><span class="id" title="notation">idomainType</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#d2f06a45025b5a16ce20033996a7b507"><span class="id" title="notation">of</span></a> <a class="idref" href="mathcomp.algebra.poly.html#polynomial"><span class="id" title="record">polynomial</span></a> <a class="idref" href="mathcomp.algebra.poly.html#PolynomialIdomain.R"><span class="id" title="variable">R</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#d2f06a45025b5a16ce20033996a7b507"><span class="id" title="notation">for</span></a> <a class="idref" href="mathcomp.algebra.poly.html#poly_idomainType"><span class="id" title="definition">poly_idomainType</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#d2f06a45025b5a16ce20033996a7b507"><span class="id" title="notation">]</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="poly_unitE"><span class="id" title="lemma">poly_unitE</span></a> <span class="id" title="var">p</span> :<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.poly.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#b09457274bcb94927e289b8a9e9cd3f7"><span class="id" title="notation">\</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#b09457274bcb94927e289b8a9e9cd3f7"><span class="id" title="notation">in</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.unit"><span class="id" title="definition">GRing.unit</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#6cd0f7b28b6092304087c7049437bb1a"><span class="id" title="notation">)</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#6cd0f7b28b6092304087c7049437bb1a"><span class="id" title="notation">=</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Datatypes.html#9ddeac0ab66152bd1d64bedb507a795e"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.ssreflect.seq.html#size"><span class="id" title="definition">size</span></a> <a class="idref" href="mathcomp.algebra.poly.html#p"><span class="id" title="variable">p</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#df45e8c2e8370fd4f0f7c4fdaf208180"><span class="id" title="notation">==</span></a> 1%<span class="id" title="var">N</span><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Datatypes.html#9ddeac0ab66152bd1d64bedb507a795e"><span class="id" title="notation">)</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Datatypes.html#9ddeac0ab66152bd1d64bedb507a795e"><span class="id" title="notation">&&</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Datatypes.html#9ddeac0ab66152bd1d64bedb507a795e"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.poly.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">_0</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#b09457274bcb94927e289b8a9e9cd3f7"><span class="id" title="notation">\</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#b09457274bcb94927e289b8a9e9cd3f7"><span class="id" title="notation">in</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.unit"><span class="id" title="definition">GRing.unit</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Datatypes.html#9ddeac0ab66152bd1d64bedb507a795e"><span class="id" title="notation">)</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="poly_invE"><span class="id" title="lemma">poly_invE</span></a> <span class="id" title="var">p</span> : <a class="idref" href="mathcomp.algebra.poly.html#p"><span class="id" title="variable">p</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#4e5a4c91ec0aa12de06dfe1cc07ea126"><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="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssreflect.html#00a1a5b58aac8f1e3f1abff064a39f9d"><span class="id" title="notation">if</span></a> <a class="idref" href="mathcomp.algebra.poly.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#b09457274bcb94927e289b8a9e9cd3f7"><span class="id" title="notation">\</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#b09457274bcb94927e289b8a9e9cd3f7"><span class="id" title="notation">in</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.unit"><span class="id" title="definition">GRing.unit</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#4e5a4c91ec0aa12de06dfe1cc07ea126"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.poly.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">_0</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#4e5a4c91ec0aa12de06dfe1cc07ea126"><span class="id" title="notation">)^-1</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#00a1a5b58aac8f1e3f1abff064a39f9d"><span class="id" title="notation">else</span></a> <a class="idref" href="mathcomp.algebra.poly.html#p"><span class="id" title="variable">p</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="polyC_inv"><span class="id" title="lemma">polyC_inv</span></a> <span class="id" title="var">c</span> : <a class="idref" href="mathcomp.algebra.poly.html#c"><span class="id" title="variable">c</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#4e5a4c91ec0aa12de06dfe1cc07ea126"><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.poly.html#8b14e41ab5fcce2460b8672da1456d67"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.poly.html#c"><span class="id" title="variable">c</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#4e5a4c91ec0aa12de06dfe1cc07ea126"><span class="id" title="notation">^-1</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/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="rootM"><span class="id" title="lemma">rootM</span></a> <span class="id" title="var">p</span> <span class="id" title="var">q</span> <span class="id" title="var">x</span> : <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#p"><span class="id" title="variable">p</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#2d0cfb150261028f4ebd2ba355623dcc"><span class="id" title="notation">×</span></a> <a class="idref" href="mathcomp.algebra.poly.html#q"><span class="id" title="variable">q</span></a>) <a class="idref" href="mathcomp.algebra.poly.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#6cd0f7b28b6092304087c7049437bb1a"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.poly.html#root"><span class="id" title="definition">root</span></a> <a class="idref" href="mathcomp.algebra.poly.html#p"><span class="id" title="variable">p</span></a> <a class="idref" href="mathcomp.algebra.poly.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Datatypes.html#081ff67d3116402bb680e8692aa39185"><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#q"><span class="id" title="variable">q</span></a> <a class="idref" href="mathcomp.algebra.poly.html#x"><span class="id" title="variable">x</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="rootZ"><span class="id" title="lemma">rootZ</span></a> <span class="id" title="var">x</span> <span class="id" title="var">a</span> <span class="id" title="var">p</span> : <a class="idref" href="mathcomp.algebra.poly.html#a"><span class="id" title="variable">a</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.poly.html#a"><span class="id" title="variable">a</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#3b05480e39db306e67fadbc79d394529"><span class="id" title="notation">*:</span></a> <a class="idref" href="mathcomp.algebra.poly.html#p"><span class="id" title="variable">p</span></a>) <a class="idref" href="mathcomp.algebra.poly.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#6cd0f7b28b6092304087c7049437bb1a"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.poly.html#root"><span class="id" title="definition">root</span></a> <a class="idref" href="mathcomp.algebra.poly.html#p"><span class="id" title="variable">p</span></a> <a class="idref" href="mathcomp.algebra.poly.html#x"><span class="id" title="variable">x</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="size_scale"><span class="id" title="lemma">size_scale</span></a> <span class="id" title="var">a</span> <span class="id" title="var">p</span> : <a class="idref" href="mathcomp.algebra.poly.html#a"><span class="id" title="variable">a</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.ssreflect.seq.html#size"><span class="id" title="definition">size</span></a> (<a class="idref" href="mathcomp.algebra.poly.html#a"><span class="id" title="variable">a</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#3b05480e39db306e67fadbc79d394529"><span class="id" title="notation">*:</span></a> <a class="idref" href="mathcomp.algebra.poly.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.ssreflect.seq.html#size"><span class="id" title="definition">size</span></a> <a class="idref" href="mathcomp.algebra.poly.html#p"><span class="id" title="variable">p</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="size_Cmul"><span class="id" title="lemma">size_Cmul</span></a> <span class="id" title="var">a</span> <span class="id" title="var">p</span> : <a class="idref" href="mathcomp.algebra.poly.html#a"><span class="id" title="variable">a</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.ssreflect.seq.html#size"><span class="id" title="definition">size</span></a> (<a class="idref" href="mathcomp.algebra.poly.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="mathcomp.algebra.ssralg.html#2d0cfb150261028f4ebd2ba355623dcc"><span class="id" title="notation">×</span></a> <a class="idref" href="mathcomp.algebra.poly.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.ssreflect.seq.html#size"><span class="id" title="definition">size</span></a> <a class="idref" href="mathcomp.algebra.poly.html#p"><span class="id" title="variable">p</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="lead_coefM"><span class="id" title="lemma">lead_coefM</span></a> <span class="id" title="var">p</span> <span class="id" title="var">q</span> : <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.poly.html#p"><span class="id" title="variable">p</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#2d0cfb150261028f4ebd2ba355623dcc"><span class="id" title="notation">×</span></a> <a class="idref" href="mathcomp.algebra.poly.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.poly.html#lead_coef"><span class="id" title="definition">lead_coef</span></a> <a class="idref" href="mathcomp.algebra.poly.html#p"><span class="id" title="variable">p</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#2d0cfb150261028f4ebd2ba355623dcc"><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> <a class="idref" href="mathcomp.algebra.poly.html#q"><span class="id" title="variable">q</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="lead_coefZ"><span class="id" title="lemma">lead_coefZ</span></a> <span class="id" title="var">a</span> <span class="id" title="var">p</span> : <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.poly.html#a"><span class="id" title="variable">a</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#3b05480e39db306e67fadbc79d394529"><span class="id" title="notation">*:</span></a> <a class="idref" href="mathcomp.algebra.poly.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.poly.html#a"><span class="id" title="variable">a</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#2d0cfb150261028f4ebd2ba355623dcc"><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> <a class="idref" href="mathcomp.algebra.poly.html#p"><span class="id" title="variable">p</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="scale_poly_eq0"><span class="id" title="lemma">scale_poly_eq0</span></a> <span class="id" title="var">a</span> <span class="id" title="var">p</span> : <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#6cd0f7b28b6092304087c7049437bb1a"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.poly.html#a"><span class="id" title="variable">a</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#3b05480e39db306e67fadbc79d394529"><span class="id" title="notation">*:</span></a> <a class="idref" href="mathcomp.algebra.poly.html#p"><span class="id" title="variable">p</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.Datatypes.html#081ff67d3116402bb680e8692aa39185"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.poly.html#a"><span class="id" title="variable">a</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.Datatypes.html#081ff67d3116402bb680e8692aa39185"><span class="id" title="notation">)</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Datatypes.html#081ff67d3116402bb680e8692aa39185"><span class="id" title="notation">||</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Datatypes.html#081ff67d3116402bb680e8692aa39185"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.poly.html#p"><span class="id" title="variable">p</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.Datatypes.html#081ff67d3116402bb680e8692aa39185"><span class="id" title="notation">)</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="size_prod"><span class="id" title="lemma">size_prod</span></a> (<span class="id" title="var">I</span> : <a class="idref" href="mathcomp.ssreflect.fintype.html#Finite.Exports.finType"><span class="id" title="abbreviation">finType</span></a>) (<span class="id" title="var">P</span> : <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#pred"><span class="id" title="definition">pred</span></a> <a class="idref" href="mathcomp.algebra.poly.html#I"><span class="id" title="variable">I</span></a>) (<span class="id" title="var">F</span> : <a class="idref" href="mathcomp.algebra.poly.html#I"><span class="id" title="variable">I</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#1c93e43e07fbeaeb6a625cb6614beb5d"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.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.poly.html#PolynomialIdomain.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#1c93e43e07fbeaeb6a625cb6614beb5d"><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.poly.html#P"><span class="id" title="variable">P</span></a> <a class="idref" href="mathcomp.algebra.poly.html#i"><span class="id" title="variable">i</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#1c93e43e07fbeaeb6a625cb6614beb5d"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.poly.html#F"><span class="id" title="variable">F</span></a> <a class="idref" href="mathcomp.algebra.poly.html#i"><span class="id" title="variable">i</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="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.ssreflect.seq.html#size"><span class="id" title="definition">size</span></a> (<a class="idref" href="mathcomp.algebra.ssralg.html#443901d1788fc95745443c70e786b07b"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#443901d1788fc95745443c70e786b07b"><span class="id" title="notation">prod_</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#443901d1788fc95745443c70e786b07b"><span class="id" title="notation">(</span></a><span class="id" title="var">i</span> <a class="idref" href="mathcomp.algebra.ssralg.html#443901d1788fc95745443c70e786b07b"><span class="id" title="notation">|</span></a> <a class="idref" href="mathcomp.algebra.poly.html#P"><span class="id" title="variable">P</span></a> <a class="idref" href="mathcomp.algebra.poly.html#i"><span class="id" title="variable">i</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#443901d1788fc95745443c70e786b07b"><span class="id" title="notation">)</span></a> <a class="idref" href="mathcomp.algebra.poly.html#F"><span class="id" title="variable">F</span></a> <a class="idref" href="mathcomp.algebra.poly.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.ssreflect.ssrnat.html#bda89d73ec4a8f23ae92b565ffb5aaa6"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.ssreflect.bigop.html#490a7188a07350a81d958e0206419577"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.ssreflect.bigop.html#490a7188a07350a81d958e0206419577"><span class="id" title="notation">sum_</span></a><a class="idref" href="mathcomp.ssreflect.bigop.html#490a7188a07350a81d958e0206419577"><span class="id" title="notation">(</span></a><span class="id" title="var">i</span> <a class="idref" href="mathcomp.ssreflect.bigop.html#490a7188a07350a81d958e0206419577"><span class="id" title="notation">|</span></a> <a class="idref" href="mathcomp.algebra.poly.html#P"><span class="id" title="variable">P</span></a> <a class="idref" href="mathcomp.algebra.poly.html#i"><span class="id" title="variable">i</span></a><a class="idref" href="mathcomp.ssreflect.bigop.html#490a7188a07350a81d958e0206419577"><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.poly.html#F"><span class="id" title="variable">F</span></a> <a class="idref" href="mathcomp.algebra.poly.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#7825ccc99f23b0d30c9d40c317ba7af0"><span class="id" title="notation">-</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#234f50e13366f794cd6877cf832a5935"><span class="id" title="notation">#|</span></a><a class="idref" href="mathcomp.algebra.poly.html#P"><span class="id" title="variable">P</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#234f50e13366f794cd6877cf832a5935"><span class="id" title="notation">|</span></a>)%<span class="id" title="var">N</span>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="size_prod_seq"><span class="id" title="lemma">size_prod_seq</span></a> (<span class="id" title="var">I</span> : <a class="idref" href="mathcomp.ssreflect.eqtype.html#Equality.Exports.eqType"><span class="id" title="abbreviation">eqType</span></a>) (<span class="id" title="var">s</span> : <a class="idref" href="mathcomp.ssreflect.seq.html#seq"><span class="id" title="abbreviation">seq</span></a> <a class="idref" href="mathcomp.algebra.poly.html#I"><span class="id" title="variable">I</span></a>) (<span class="id" title="var">F</span> : <a class="idref" href="mathcomp.algebra.poly.html#I"><span class="id" title="variable">I</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#1c93e43e07fbeaeb6a625cb6614beb5d"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.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.poly.html#PolynomialIdomain.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#1c93e43e07fbeaeb6a625cb6614beb5d"><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.poly.html#i"><span class="id" title="variable">i</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#b09457274bcb94927e289b8a9e9cd3f7"><span class="id" title="notation">\</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#b09457274bcb94927e289b8a9e9cd3f7"><span class="id" title="notation">in</span></a> <a class="idref" href="mathcomp.algebra.poly.html#s"><span class="id" title="variable">s</span></a> <a class="idref" href="http://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#F"><span class="id" title="variable">F</span></a> <a class="idref" href="mathcomp.algebra.poly.html#i"><span class="id" title="variable">i</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="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.ssreflect.seq.html#size"><span class="id" title="definition">size</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">i</span> <a class="idref" href="mathcomp.algebra.ssralg.html#20f16c1d55d1e4ca9bb0e0513dd4b06a"><span class="id" title="notation"><-</span></a> <a class="idref" href="mathcomp.algebra.poly.html#s"><span class="id" title="variable">s</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#F"><span class="id" title="variable">F</span></a> <a class="idref" href="mathcomp.algebra.poly.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.ssreflect.ssrnat.html#bda89d73ec4a8f23ae92b565ffb5aaa6"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.ssreflect.bigop.html#3c5ded5149162c47f03c637c983c78c4"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.ssreflect.bigop.html#3c5ded5149162c47f03c637c983c78c4"><span class="id" title="notation">sum_</span></a><a class="idref" href="mathcomp.ssreflect.bigop.html#3c5ded5149162c47f03c637c983c78c4"><span class="id" title="notation">(</span></a><span class="id" title="var">i</span> <a class="idref" href="mathcomp.ssreflect.bigop.html#3c5ded5149162c47f03c637c983c78c4"><span class="id" title="notation"><-</span></a> <a class="idref" href="mathcomp.algebra.poly.html#s"><span class="id" title="variable">s</span></a><a class="idref" href="mathcomp.ssreflect.bigop.html#3c5ded5149162c47f03c637c983c78c4"><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.poly.html#F"><span class="id" title="variable">F</span></a> <a class="idref" href="mathcomp.algebra.poly.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#7825ccc99f23b0d30c9d40c317ba7af0"><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.poly.html#s"><span class="id" title="variable">s</span></a>)%<span class="id" title="var">N</span>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="size_mul_eq1"><span class="id" title="lemma">size_mul_eq1</span></a> <span class="id" title="var">p</span> <span class="id" title="var">q</span> :<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.ssreflect.seq.html#size"><span class="id" title="definition">size</span></a> (<a class="idref" href="mathcomp.algebra.poly.html#p"><span class="id" title="variable">p</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#2d0cfb150261028f4ebd2ba355623dcc"><span class="id" title="notation">×</span></a> <a class="idref" href="mathcomp.algebra.poly.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> 1%<span class="id" title="var">N</span><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#6cd0f7b28b6092304087c7049437bb1a"><span class="id" title="notation">)</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#6cd0f7b28b6092304087c7049437bb1a"><span class="id" title="notation">=</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#6cd0f7b28b6092304087c7049437bb1a"><span class="id" title="notation">(</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Datatypes.html#9ddeac0ab66152bd1d64bedb507a795e"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.ssreflect.seq.html#size"><span class="id" title="definition">size</span></a> <a class="idref" href="mathcomp.algebra.poly.html#p"><span class="id" title="variable">p</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#df45e8c2e8370fd4f0f7c4fdaf208180"><span class="id" title="notation">==</span></a> 1%<span class="id" title="var">N</span><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Datatypes.html#9ddeac0ab66152bd1d64bedb507a795e"><span class="id" title="notation">)</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Datatypes.html#9ddeac0ab66152bd1d64bedb507a795e"><span class="id" title="notation">&&</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Datatypes.html#9ddeac0ab66152bd1d64bedb507a795e"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.ssreflect.seq.html#size"><span class="id" title="definition">size</span></a> <a class="idref" href="mathcomp.algebra.poly.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> 1%<span class="id" title="var">N</span><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Datatypes.html#9ddeac0ab66152bd1d64bedb507a795e"><span class="id" title="notation">)</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#6cd0f7b28b6092304087c7049437bb1a"><span class="id" title="notation">)</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="size_prod_seq_eq1"><span class="id" title="lemma">size_prod_seq_eq1</span></a> (<span class="id" title="var">I</span> : <a class="idref" href="mathcomp.ssreflect.eqtype.html#Equality.Exports.eqType"><span class="id" title="abbreviation">eqType</span></a>) (<span class="id" title="var">s</span> : <a class="idref" href="mathcomp.ssreflect.seq.html#seq"><span class="id" title="abbreviation">seq</span></a> <a class="idref" href="mathcomp.algebra.poly.html#I"><span class="id" title="variable">I</span></a>) (<span class="id" title="var">P</span> : <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#pred"><span class="id" title="definition">pred</span></a> <a class="idref" href="mathcomp.algebra.poly.html#I"><span class="id" title="variable">I</span></a>) (<span class="id" title="var">F</span> : <a class="idref" href="mathcomp.algebra.poly.html#I"><span class="id" title="variable">I</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#1c93e43e07fbeaeb6a625cb6614beb5d"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.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.poly.html#PolynomialIdomain.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.ssr.ssrbool.html#reflect"><span class="id" title="abbreviation">reflect</span></a> (<span class="id" title="keyword">∀</span> <span class="id" title="var">i</span>, <a class="idref" href="mathcomp.algebra.poly.html#P"><span class="id" title="variable">P</span></a> <a class="idref" href="mathcomp.algebra.poly.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.Datatypes.html#9ddeac0ab66152bd1d64bedb507a795e"><span class="id" title="notation">&&</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Datatypes.html#9ddeac0ab66152bd1d64bedb507a795e"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.poly.html#i"><span class="id" title="variable">i</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#b09457274bcb94927e289b8a9e9cd3f7"><span class="id" title="notation">\</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#b09457274bcb94927e289b8a9e9cd3f7"><span class="id" title="notation">in</span></a> <a class="idref" href="mathcomp.algebra.poly.html#s"><span class="id" title="variable">s</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Datatypes.html#9ddeac0ab66152bd1d64bedb507a795e"><span class="id" title="notation">)</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#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.poly.html#F"><span class="id" title="variable">F</span></a> <a class="idref" href="mathcomp.algebra.poly.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> 1%<span class="id" title="var">N</span>)<br/> - (<a class="idref" href="mathcomp.ssreflect.seq.html#size"><span class="id" title="definition">size</span></a> (<a class="idref" href="mathcomp.algebra.ssralg.html#edca584f226f01d7a05a12e4ceba1caf"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#edca584f226f01d7a05a12e4ceba1caf"><span class="id" title="notation">prod_</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#edca584f226f01d7a05a12e4ceba1caf"><span class="id" title="notation">(</span></a><span class="id" title="var">i</span> <a class="idref" href="mathcomp.algebra.ssralg.html#edca584f226f01d7a05a12e4ceba1caf"><span class="id" title="notation"><-</span></a> <a class="idref" href="mathcomp.algebra.poly.html#s"><span class="id" title="variable">s</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#edca584f226f01d7a05a12e4ceba1caf"><span class="id" title="notation">|</span></a> <a class="idref" href="mathcomp.algebra.poly.html#P"><span class="id" title="variable">P</span></a> <a class="idref" href="mathcomp.algebra.poly.html#i"><span class="id" title="variable">i</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#edca584f226f01d7a05a12e4ceba1caf"><span class="id" title="notation">)</span></a> <a class="idref" href="mathcomp.algebra.poly.html#F"><span class="id" title="variable">F</span></a> <a class="idref" href="mathcomp.algebra.poly.html#i"><span class="id" title="variable">i</span></a>) <a class="idref" href="mathcomp.ssreflect.eqtype.html#df45e8c2e8370fd4f0f7c4fdaf208180"><span class="id" title="notation">==</span></a> 1%<span class="id" title="var">N</span>).<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="size_prod_eq1"><span class="id" title="lemma">size_prod_eq1</span></a> (<span class="id" title="var">I</span> : <a class="idref" href="mathcomp.ssreflect.fintype.html#Finite.Exports.finType"><span class="id" title="abbreviation">finType</span></a>) (<span class="id" title="var">P</span> : <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#pred"><span class="id" title="definition">pred</span></a> <a class="idref" href="mathcomp.algebra.poly.html#I"><span class="id" title="variable">I</span></a>) (<span class="id" title="var">F</span> : <a class="idref" href="mathcomp.algebra.poly.html#I"><span class="id" title="variable">I</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#1c93e43e07fbeaeb6a625cb6614beb5d"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.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.poly.html#PolynomialIdomain.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.ssr.ssrbool.html#reflect"><span class="id" title="abbreviation">reflect</span></a> (<span class="id" title="keyword">∀</span> <span class="id" title="var">i</span>, <a class="idref" href="mathcomp.algebra.poly.html#P"><span class="id" title="variable">P</span></a> <a class="idref" href="mathcomp.algebra.poly.html#i"><span class="id" title="variable">i</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#1c93e43e07fbeaeb6a625cb6614beb5d"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#size"><span class="id" title="definition">size</span></a> (<a class="idref" href="mathcomp.algebra.poly.html#F"><span class="id" title="variable">F</span></a> <a class="idref" href="mathcomp.algebra.poly.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> 1%<span class="id" title="var">N</span>)<br/> - (<a class="idref" href="mathcomp.ssreflect.seq.html#size"><span class="id" title="definition">size</span></a> (<a class="idref" href="mathcomp.algebra.ssralg.html#443901d1788fc95745443c70e786b07b"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#443901d1788fc95745443c70e786b07b"><span class="id" title="notation">prod_</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#443901d1788fc95745443c70e786b07b"><span class="id" title="notation">(</span></a><span class="id" title="var">i</span> <a class="idref" href="mathcomp.algebra.ssralg.html#443901d1788fc95745443c70e786b07b"><span class="id" title="notation">|</span></a> <a class="idref" href="mathcomp.algebra.poly.html#P"><span class="id" title="variable">P</span></a> <a class="idref" href="mathcomp.algebra.poly.html#i"><span class="id" title="variable">i</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#443901d1788fc95745443c70e786b07b"><span class="id" title="notation">)</span></a> <a class="idref" href="mathcomp.algebra.poly.html#F"><span class="id" title="variable">F</span></a> <a class="idref" href="mathcomp.algebra.poly.html#i"><span class="id" title="variable">i</span></a>) <a class="idref" href="mathcomp.ssreflect.eqtype.html#df45e8c2e8370fd4f0f7c4fdaf208180"><span class="id" title="notation">==</span></a> 1%<span class="id" title="var">N</span>).<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="size_exp"><span class="id" title="lemma">size_exp</span></a> <span class="id" title="var">p</span> <span class="id" title="var">n</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.poly.html#p"><span class="id" title="variable">p</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#663140372ac3b275aae871b74b140513"><span class="id" title="notation">^+</span></a> <a class="idref" href="mathcomp.algebra.poly.html#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> <a class="idref" href="http://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.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.poly.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> <a class="idref" href="mathcomp.ssreflect.ssrnat.html#ea2ff3d561159081cea6fb2e8113cc54"><span class="id" title="notation">×</span></a> <a class="idref" href="mathcomp.algebra.poly.html#n"><span class="id" title="variable">n</span></a>)%<span class="id" title="var">N</span>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="lead_coef_exp"><span class="id" title="lemma">lead_coef_exp</span></a> <span class="id" title="var">p</span> <span class="id" title="var">n</span> : <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.poly.html#p"><span class="id" title="variable">p</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#663140372ac3b275aae871b74b140513"><span class="id" title="notation">^+</span></a> <a class="idref" href="mathcomp.algebra.poly.html#n"><span class="id" title="variable">n</span></a>) <a class="idref" href="http://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#lead_coef"><span class="id" title="definition">lead_coef</span></a> <a class="idref" href="mathcomp.algebra.poly.html#p"><span class="id" title="variable">p</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#663140372ac3b275aae871b74b140513"><span class="id" title="notation">^+</span></a> <a class="idref" href="mathcomp.algebra.poly.html#n"><span class="id" title="variable">n</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="root_prod_XsubC"><span class="id" title="lemma">root_prod_XsubC</span></a> <span class="id" title="var">rs</span> <span class="id" title="var">x</span> :<br/> - <a class="idref" href="mathcomp.algebra.poly.html#root"><span class="id" title="definition">root</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">a</span> <a class="idref" href="mathcomp.algebra.ssralg.html#20f16c1d55d1e4ca9bb0e0513dd4b06a"><span class="id" title="notation"><-</span></a> <a class="idref" href="mathcomp.algebra.poly.html#rs"><span class="id" title="variable">rs</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.poly.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="mathcomp.algebra.ssralg.html#20f16c1d55d1e4ca9bb0e0513dd4b06a"><span class="id" title="notation">)</span></a>) <a class="idref" href="mathcomp.algebra.poly.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#6cd0f7b28b6092304087c7049437bb1a"><span class="id" title="notation">=</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#6cd0f7b28b6092304087c7049437bb1a"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.poly.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#b09457274bcb94927e289b8a9e9cd3f7"><span class="id" title="notation">\</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#b09457274bcb94927e289b8a9e9cd3f7"><span class="id" title="notation">in</span></a> <a class="idref" href="mathcomp.algebra.poly.html#rs"><span class="id" title="variable">rs</span></a><a 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="root_exp_XsubC"><span class="id" title="lemma">root_exp_XsubC</span></a> <span class="id" title="var">n</span> <span class="id" title="var">a</span> <span class="id" title="var">x</span> : <a class="idref" href="mathcomp.algebra.poly.html#root"><span class="id" title="definition">root</span></a> (<a class="idref" href="mathcomp.algebra.ssralg.html#663140372ac3b275aae871b74b140513"><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.poly.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="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.poly.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>) <a class="idref" href="mathcomp.algebra.poly.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#6cd0f7b28b6092304087c7049437bb1a"><span class="id" title="notation">=</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#6cd0f7b28b6092304087c7049437bb1a"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.poly.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#df45e8c2e8370fd4f0f7c4fdaf208180"><span class="id" title="notation">==</span></a> <a class="idref" href="mathcomp.algebra.poly.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>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="size_comp_poly"><span class="id" title="lemma">size_comp_poly</span></a> <span class="id" title="var">p</span> <span class="id" title="var">q</span> :<br/> - <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.poly.html#p"><span class="id" title="variable">p</span></a> <a class="idref" href="mathcomp.algebra.poly.html#011952147f33cb889a964c228c4ebadd"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.algebra.poly.html#011952147f33cb889a964c228c4ebadd"><span class="id" title="notation">Po</span></a> <a class="idref" href="mathcomp.algebra.poly.html#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="http://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.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.poly.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> <a class="idref" href="mathcomp.ssreflect.ssrnat.html#ea2ff3d561159081cea6fb2e8113cc54"><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.poly.html#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>)%<span class="id" title="var">N</span>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="lead_coef_comp"><span class="id" title="lemma">lead_coef_comp</span></a> <span class="id" title="var">p</span> <span class="id" title="var">q</span> : <a class="idref" href="mathcomp.ssreflect.seq.html#size"><span class="id" title="definition">size</span></a> <a class="idref" href="mathcomp.algebra.poly.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="mathcomp.algebra.poly.html#lead_coef"><span class="id" title="definition">lead_coef</span></a> (<a class="idref" href="mathcomp.algebra.poly.html#p"><span class="id" title="variable">p</span></a> <a class="idref" href="mathcomp.algebra.poly.html#011952147f33cb889a964c228c4ebadd"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.algebra.poly.html#011952147f33cb889a964c228c4ebadd"><span class="id" title="notation">Po</span></a> <a class="idref" href="mathcomp.algebra.poly.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.ssralg.html#2d0cfb150261028f4ebd2ba355623dcc"><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> <a class="idref" href="mathcomp.algebra.poly.html#p"><span class="id" title="variable">p</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#2d0cfb150261028f4ebd2ba355623dcc"><span class="id" title="notation">)</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#2d0cfb150261028f4ebd2ba355623dcc"><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> <a class="idref" href="mathcomp.algebra.poly.html#q"><span class="id" title="variable">q</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#663140372ac3b275aae871b74b140513"><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.poly.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/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="comp_poly_eq0"><span class="id" title="lemma">comp_poly_eq0</span></a> <span class="id" title="var">p</span> <span class="id" title="var">q</span> : <a class="idref" href="mathcomp.ssreflect.seq.html#size"><span class="id" title="definition">size</span></a> <a class="idref" href="mathcomp.algebra.poly.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> <a class="idref" href="http://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#p"><span class="id" title="variable">p</span></a> <a class="idref" href="mathcomp.algebra.poly.html#011952147f33cb889a964c228c4ebadd"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.algebra.poly.html#011952147f33cb889a964c228c4ebadd"><span class="id" title="notation">Po</span></a> <a class="idref" href="mathcomp.algebra.poly.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.algebra.poly.html#p"><span class="id" title="variable">p</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>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="size_comp_poly2"><span class="id" title="lemma">size_comp_poly2</span></a> <span class="id" title="var">p</span> <span class="id" title="var">q</span> : <a class="idref" href="mathcomp.ssreflect.seq.html#size"><span class="id" title="definition">size</span></a> <a class="idref" href="mathcomp.algebra.poly.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> 2 <a class="idref" href="http://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.poly.html#p"><span class="id" title="variable">p</span></a> <a class="idref" href="mathcomp.algebra.poly.html#011952147f33cb889a964c228c4ebadd"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.algebra.poly.html#011952147f33cb889a964c228c4ebadd"><span class="id" title="notation">Po</span></a> <a class="idref" href="mathcomp.algebra.poly.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.ssreflect.seq.html#size"><span class="id" title="definition">size</span></a> <a class="idref" href="mathcomp.algebra.poly.html#p"><span class="id" title="variable">p</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="comp_poly2_eq0"><span class="id" title="lemma">comp_poly2_eq0</span></a> <span class="id" title="var">p</span> <span class="id" title="var">q</span> : <a class="idref" href="mathcomp.ssreflect.seq.html#size"><span class="id" title="definition">size</span></a> <a class="idref" href="mathcomp.algebra.poly.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> 2 <a class="idref" href="http://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#6cd0f7b28b6092304087c7049437bb1a"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.poly.html#p"><span class="id" title="variable">p</span></a> <a class="idref" href="mathcomp.algebra.poly.html#011952147f33cb889a964c228c4ebadd"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.algebra.poly.html#011952147f33cb889a964c228c4ebadd"><span class="id" title="notation">Po</span></a> <a class="idref" href="mathcomp.algebra.poly.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.algebra.poly.html#p"><span class="id" title="variable">p</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>.<br/> - -<br/> -<span class="id" title="keyword">Theorem</span> <a name="max_poly_roots"><span class="id" title="lemma">max_poly_roots</span></a> <span class="id" title="var">p</span> <span class="id" title="var">rs</span> :<br/> - <a class="idref" href="mathcomp.algebra.poly.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.ssreflect.seq.html#all"><span class="id" title="definition">all</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#p"><span class="id" title="variable">p</span></a>) <a class="idref" href="mathcomp.algebra.poly.html#rs"><span class="id" title="variable">rs</span></a> <a class="idref" href="http://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#uniq"><span class="id" title="definition">uniq</span></a> <a class="idref" href="mathcomp.algebra.poly.html#rs"><span class="id" title="variable">rs</span></a> <a class="idref" href="http://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.poly.html#rs"><span class="id" title="variable">rs</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.poly.html#p"><span class="id" title="variable">p</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="roots_geq_poly_eq0"><span class="id" title="lemma">roots_geq_poly_eq0</span></a> <span class="id" title="var">p</span> (<span class="id" title="var">rs</span> : <a class="idref" href="mathcomp.ssreflect.seq.html#seq"><span class="id" title="abbreviation">seq</span></a> <a class="idref" href="mathcomp.algebra.poly.html#PolynomialIdomain.R"><span class="id" title="variable">R</span></a>) : <a class="idref" href="mathcomp.ssreflect.seq.html#all"><span class="id" title="definition">all</span></a> (<a class="idref" href="mathcomp.algebra.poly.html#root"><span class="id" title="definition">root</span></a> <a class="idref" href="mathcomp.algebra.poly.html#p"><span class="id" title="variable">p</span></a>) <a class="idref" href="mathcomp.algebra.poly.html#rs"><span class="id" title="variable">rs</span></a> <a class="idref" href="http://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#uniq"><span class="id" title="definition">uniq</span></a> <a class="idref" href="mathcomp.algebra.poly.html#rs"><span class="id" title="variable">rs</span></a> <a 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.ssreflect.seq.html#size"><span class="id" title="definition">size</span></a> <a class="idref" href="mathcomp.algebra.poly.html#rs"><span class="id" title="variable">rs</span></a> <a class="idref" href="mathcomp.ssreflect.ssrnat.html#73030c22bc0b1fa771c65aa5414c65f9"><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.poly.html#p"><span class="id" title="variable">p</span></a>)%<span class="id" title="var">N</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.poly.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.<br/> - -<br/> -<span class="id" title="keyword">End</span> <a class="idref" href="mathcomp.algebra.poly.html#PolynomialIdomain"><span class="id" title="section">PolynomialIdomain</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Canonical</span> <span class="id" title="var">polynomial_countUnitRingType</span> (<span class="id" title="var">R</span> : <a class="idref" href="mathcomp.algebra.countalg.html#CountRing.IntegralDomain.Exports.countIdomainType"><span class="id" title="abbreviation">countIdomainType</span></a>) :=<br/> - <a class="idref" href="mathcomp.algebra.countalg.html#d7279d52944865f8d2b1e61af96c64e0"><span class="id" title="notation">[</span></a><a class="idref" href="mathcomp.algebra.countalg.html#d7279d52944865f8d2b1e61af96c64e0"><span class="id" title="notation">countUnitRingType</span></a> <a class="idref" href="mathcomp.algebra.countalg.html#d7279d52944865f8d2b1e61af96c64e0"><span class="id" title="notation">of</span></a> <a class="idref" href="mathcomp.algebra.poly.html#polynomial"><span class="id" title="record">polynomial</span></a> <a class="idref" href="mathcomp.algebra.poly.html#R"><span class="id" title="variable">R</span></a><a class="idref" href="mathcomp.algebra.countalg.html#d7279d52944865f8d2b1e61af96c64e0"><span class="id" title="notation">]</span></a>.<br/> -<span class="id" title="keyword">Canonical</span> <span class="id" title="var">poly_countUnitRingType</span> (<span class="id" title="var">R</span> : <a class="idref" href="mathcomp.algebra.countalg.html#CountRing.IntegralDomain.Exports.countIdomainType"><span class="id" title="abbreviation">countIdomainType</span></a>) :=<br/> - <a class="idref" href="mathcomp.algebra.countalg.html#d7279d52944865f8d2b1e61af96c64e0"><span class="id" title="notation">[</span></a><a class="idref" href="mathcomp.algebra.countalg.html#d7279d52944865f8d2b1e61af96c64e0"><span class="id" title="notation">countUnitRingType</span></a> <a class="idref" href="mathcomp.algebra.countalg.html#d7279d52944865f8d2b1e61af96c64e0"><span class="id" title="notation">of</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.poly.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.countalg.html#d7279d52944865f8d2b1e61af96c64e0"><span class="id" title="notation">]</span></a>.<br/> -<span class="id" title="keyword">Canonical</span> <span class="id" title="var">polynomial_countComUnitRingType</span> (<span class="id" title="var">R</span> : <a class="idref" href="mathcomp.algebra.countalg.html#CountRing.IntegralDomain.Exports.countIdomainType"><span class="id" title="abbreviation">countIdomainType</span></a>) :=<br/> - <a class="idref" href="mathcomp.algebra.countalg.html#6e623071866dc1a29a10d36cc1dfa886"><span class="id" title="notation">[</span></a><a class="idref" href="mathcomp.algebra.countalg.html#6e623071866dc1a29a10d36cc1dfa886"><span class="id" title="notation">countComUnitRingType</span></a> <a class="idref" href="mathcomp.algebra.countalg.html#6e623071866dc1a29a10d36cc1dfa886"><span class="id" title="notation">of</span></a> <a class="idref" href="mathcomp.algebra.poly.html#polynomial"><span class="id" title="record">polynomial</span></a> <a class="idref" href="mathcomp.algebra.poly.html#R"><span class="id" title="variable">R</span></a><a class="idref" href="mathcomp.algebra.countalg.html#6e623071866dc1a29a10d36cc1dfa886"><span class="id" title="notation">]</span></a>.<br/> -<span class="id" title="keyword">Canonical</span> <span class="id" title="var">poly_countComUnitRingType</span> (<span class="id" title="var">R</span> : <a class="idref" href="mathcomp.algebra.countalg.html#CountRing.IntegralDomain.Exports.countIdomainType"><span class="id" title="abbreviation">countIdomainType</span></a>) :=<br/> - <a class="idref" href="mathcomp.algebra.countalg.html#6e623071866dc1a29a10d36cc1dfa886"><span class="id" title="notation">[</span></a><a class="idref" href="mathcomp.algebra.countalg.html#6e623071866dc1a29a10d36cc1dfa886"><span class="id" title="notation">countComUnitRingType</span></a> <a class="idref" href="mathcomp.algebra.countalg.html#6e623071866dc1a29a10d36cc1dfa886"><span class="id" title="notation">of</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.poly.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.countalg.html#6e623071866dc1a29a10d36cc1dfa886"><span class="id" title="notation">]</span></a>.<br/> -<span class="id" title="keyword">Canonical</span> <span class="id" title="var">polynomial_countIdomainType</span> (<span class="id" title="var">R</span> : <a class="idref" href="mathcomp.algebra.countalg.html#CountRing.IntegralDomain.Exports.countIdomainType"><span class="id" title="abbreviation">countIdomainType</span></a>) :=<br/> - <a class="idref" href="mathcomp.algebra.countalg.html#deee2c5961371227bcb71bc712dbd08f"><span class="id" title="notation">[</span></a><a class="idref" href="mathcomp.algebra.countalg.html#deee2c5961371227bcb71bc712dbd08f"><span class="id" title="notation">countIdomainType</span></a> <a class="idref" href="mathcomp.algebra.countalg.html#deee2c5961371227bcb71bc712dbd08f"><span class="id" title="notation">of</span></a> <a class="idref" href="mathcomp.algebra.poly.html#polynomial"><span class="id" title="record">polynomial</span></a> <a class="idref" href="mathcomp.algebra.poly.html#R"><span class="id" title="variable">R</span></a><a class="idref" href="mathcomp.algebra.countalg.html#deee2c5961371227bcb71bc712dbd08f"><span class="id" title="notation">]</span></a>.<br/> -<span class="id" title="keyword">Canonical</span> <span class="id" title="var">poly_countIdomainType</span> (<span class="id" title="var">R</span> : <a class="idref" href="mathcomp.algebra.countalg.html#CountRing.IntegralDomain.Exports.countIdomainType"><span class="id" title="abbreviation">countIdomainType</span></a>) :=<br/> - <a class="idref" href="mathcomp.algebra.countalg.html#deee2c5961371227bcb71bc712dbd08f"><span class="id" title="notation">[</span></a><a class="idref" href="mathcomp.algebra.countalg.html#deee2c5961371227bcb71bc712dbd08f"><span class="id" title="notation">countIdomainType</span></a> <a class="idref" href="mathcomp.algebra.countalg.html#deee2c5961371227bcb71bc712dbd08f"><span class="id" title="notation">of</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.poly.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.countalg.html#deee2c5961371227bcb71bc712dbd08f"><span class="id" title="notation">]</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Section</span> <a name="MapFieldPoly"><span class="id" title="section">MapFieldPoly</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Variables</span> (<a name="MapFieldPoly.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="MapFieldPoly.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="MapFieldPoly.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.poly.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.poly.html#R"><span class="id" title="variable">R</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#d531732ed602c7af62b88c7cfce824e5"><span class="id" title="notation">}</span></a>).<br/> - -<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="size_map_poly"><span class="id" title="lemma">size_map_poly</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.poly.html#p"><span class="id" title="variable">p</span></a><a class="idref" href="mathcomp.algebra.poly.html#972c6bc88e7a669e15352d4d2f4bf8cb"><span class="id" title="notation">^</span></a><a class="idref" href="mathcomp.algebra.poly.html#972c6bc88e7a669e15352d4d2f4bf8cb"><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.ssreflect.seq.html#size"><span class="id" title="definition">size</span></a> <a class="idref" href="mathcomp.algebra.poly.html#p"><span class="id" title="variable">p</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="lead_coef_map"><span class="id" title="lemma">lead_coef_map</span></a> <span class="id" title="var">p</span> : <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.poly.html#p"><span class="id" title="variable">p</span></a><a class="idref" href="mathcomp.algebra.poly.html#972c6bc88e7a669e15352d4d2f4bf8cb"><span class="id" title="notation">^</span></a><a class="idref" href="mathcomp.algebra.poly.html#972c6bc88e7a669e15352d4d2f4bf8cb"><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.poly.html#MapFieldPoly.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.poly.html#p"><span class="id" title="variable">p</span></a>).<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="map_poly_eq0"><span class="id" title="lemma">map_poly_eq0</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#6cd0f7b28b6092304087c7049437bb1a"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.poly.html#p"><span class="id" title="variable">p</span></a><a class="idref" href="mathcomp.algebra.poly.html#972c6bc88e7a669e15352d4d2f4bf8cb"><span class="id" title="notation">^</span></a><a class="idref" href="mathcomp.algebra.poly.html#972c6bc88e7a669e15352d4d2f4bf8cb"><span class="id" title="notation">f</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.algebra.poly.html#p"><span class="id" title="variable">p</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>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="map_poly_inj"><span class="id" title="lemma">map_poly_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.poly.html#map_poly"><span class="id" title="definition">map_poly</span></a> <a class="idref" href="mathcomp.algebra.poly.html#MapFieldPoly.f"><span class="id" title="variable">f</span></a>).<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="map_monic"><span class="id" title="lemma">map_monic</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#6cd0f7b28b6092304087c7049437bb1a"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.poly.html#p"><span class="id" title="variable">p</span></a><a class="idref" href="mathcomp.algebra.poly.html#972c6bc88e7a669e15352d4d2f4bf8cb"><span class="id" title="notation">^</span></a><a class="idref" href="mathcomp.algebra.poly.html#972c6bc88e7a669e15352d4d2f4bf8cb"><span class="id" title="notation">f</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#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.algebra.poly.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#6cd0f7b28b6092304087c7049437bb1a"><span class="id" title="notation">)</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="map_poly_com"><span class="id" title="lemma">map_poly_com</span></a> <span class="id" title="var">p</span> <span class="id" title="var">x</span> : <a class="idref" href="mathcomp.algebra.poly.html#comm_poly"><span class="id" title="definition">comm_poly</span></a> <a class="idref" href="mathcomp.algebra.poly.html#p"><span class="id" title="variable">p</span></a><a class="idref" href="mathcomp.algebra.poly.html#972c6bc88e7a669e15352d4d2f4bf8cb"><span class="id" title="notation">^</span></a><a class="idref" href="mathcomp.algebra.poly.html#972c6bc88e7a669e15352d4d2f4bf8cb"><span class="id" title="notation">f</span></a> (<a class="idref" href="mathcomp.algebra.poly.html#MapFieldPoly.f"><span class="id" title="variable">f</span></a> <a class="idref" href="mathcomp.algebra.poly.html#x"><span class="id" title="variable">x</span></a>).<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="fmorph_root"><span class="id" title="lemma">fmorph_root</span></a> <span class="id" title="var">p</span> <span class="id" title="var">x</span> : <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#p"><span class="id" title="variable">p</span></a><a class="idref" href="mathcomp.algebra.poly.html#972c6bc88e7a669e15352d4d2f4bf8cb"><span class="id" title="notation">^</span></a><a class="idref" href="mathcomp.algebra.poly.html#972c6bc88e7a669e15352d4d2f4bf8cb"><span class="id" title="notation">f</span></a> (<a class="idref" href="mathcomp.algebra.poly.html#MapFieldPoly.f"><span class="id" title="variable">f</span></a> <a class="idref" href="mathcomp.algebra.poly.html#x"><span class="id" title="variable">x</span></a>) <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#6cd0f7b28b6092304087c7049437bb1a"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.poly.html#root"><span class="id" title="definition">root</span></a> <a class="idref" href="mathcomp.algebra.poly.html#p"><span class="id" title="variable">p</span></a> <a class="idref" href="mathcomp.algebra.poly.html#x"><span class="id" title="variable">x</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="fmorph_unity_root"><span class="id" title="lemma">fmorph_unity_root</span></a> <span class="id" title="var">n</span> <span class="id" title="var">z</span> : <a class="idref" href="mathcomp.algebra.poly.html#n"><span class="id" title="variable">n</span></a><a class="idref" href="mathcomp.algebra.poly.html#acbc7bcbd85a1f81c4f65e93aa5fd967"><span class="id" title="notation">.-</span></a><a class="idref" href="mathcomp.algebra.poly.html#acbc7bcbd85a1f81c4f65e93aa5fd967"><span class="id" title="notation">unity_root</span></a> (<a class="idref" href="mathcomp.algebra.poly.html#MapFieldPoly.f"><span class="id" title="variable">f</span></a> <a class="idref" href="mathcomp.algebra.poly.html#z"><span class="id" title="variable">z</span></a>) <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#6cd0f7b28b6092304087c7049437bb1a"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.poly.html#n"><span class="id" title="variable">n</span></a><a class="idref" href="mathcomp.algebra.poly.html#acbc7bcbd85a1f81c4f65e93aa5fd967"><span class="id" title="notation">.-</span></a><a class="idref" href="mathcomp.algebra.poly.html#acbc7bcbd85a1f81c4f65e93aa5fd967"><span class="id" title="notation">unity_root</span></a> <a class="idref" href="mathcomp.algebra.poly.html#z"><span class="id" title="variable">z</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="fmorph_primitive_root"><span class="id" title="lemma">fmorph_primitive_root</span></a> <span class="id" title="var">n</span> <span class="id" title="var">z</span> :<br/> - <a class="idref" href="mathcomp.algebra.poly.html#n"><span class="id" title="variable">n</span></a><a class="idref" href="mathcomp.algebra.poly.html#ad6a7217bc47606779ec5b6d2378a1dd"><span class="id" title="notation">.-</span></a><a class="idref" href="mathcomp.algebra.poly.html#ad6a7217bc47606779ec5b6d2378a1dd"><span class="id" title="notation">primitive_root</span></a> (<a class="idref" href="mathcomp.algebra.poly.html#MapFieldPoly.f"><span class="id" title="variable">f</span></a> <a class="idref" href="mathcomp.algebra.poly.html#z"><span class="id" title="variable">z</span></a>) <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#6cd0f7b28b6092304087c7049437bb1a"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.poly.html#n"><span class="id" title="variable">n</span></a><a class="idref" href="mathcomp.algebra.poly.html#ad6a7217bc47606779ec5b6d2378a1dd"><span class="id" title="notation">.-</span></a><a class="idref" href="mathcomp.algebra.poly.html#ad6a7217bc47606779ec5b6d2378a1dd"><span class="id" title="notation">primitive_root</span></a> <a class="idref" href="mathcomp.algebra.poly.html#z"><span class="id" title="variable">z</span></a>.<br/> - -<br/> -<span class="id" title="keyword">End</span> <a class="idref" href="mathcomp.algebra.poly.html#MapFieldPoly"><span class="id" title="section">MapFieldPoly</span></a>.<br/> - -<br/> - -<br/> -<span class="id" title="keyword">Section</span> <a name="MaxRoots"><span class="id" title="section">MaxRoots</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Variable</span> <a name="MaxRoots.R"><span class="id" title="variable">R</span></a> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.UnitRing.Exports.unitRingType"><span class="id" title="abbreviation">unitRingType</span></a>.<br/> -<span class="id" title="keyword">Implicit</span> <span class="id" title="keyword">Types</span> (<span class="id" title="var">x</span> <span class="id" title="var">y</span> : <a class="idref" href="mathcomp.algebra.poly.html#MaxRoots.R"><span class="id" title="variable">R</span></a>) (<span class="id" title="var">rs</span> : <a class="idref" href="mathcomp.ssreflect.seq.html#seq"><span class="id" title="abbreviation">seq</span></a> <a class="idref" href="mathcomp.algebra.poly.html#MaxRoots.R"><span class="id" title="variable">R</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.poly.html#MaxRoots.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="diff_roots"><span class="id" title="definition">diff_roots</span></a> (<span class="id" title="var">x</span> <span class="id" title="var">y</span> : <a class="idref" href="mathcomp.algebra.poly.html#MaxRoots.R"><span class="id" title="variable">R</span></a>) := <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Datatypes.html#9ddeac0ab66152bd1d64bedb507a795e"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.poly.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.poly.html#y"><span class="id" title="variable">y</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#df45e8c2e8370fd4f0f7c4fdaf208180"><span class="id" title="notation">==</span></a> <a class="idref" href="mathcomp.algebra.poly.html#y"><span class="id" title="variable">y</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#2d0cfb150261028f4ebd2ba355623dcc"><span class="id" title="notation">×</span></a> <a class="idref" href="mathcomp.algebra.poly.html#x"><span class="id" title="variable">x</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Datatypes.html#9ddeac0ab66152bd1d64bedb507a795e"><span class="id" title="notation">)</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Datatypes.html#9ddeac0ab66152bd1d64bedb507a795e"><span class="id" title="notation">&&</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Datatypes.html#9ddeac0ab66152bd1d64bedb507a795e"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.poly.html#y"><span class="id" title="variable">y</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#51dc792c356ca1a71a3094b50d6bb2fb"><span class="id" title="notation">-</span></a> <a class="idref" href="mathcomp.algebra.poly.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#b09457274bcb94927e289b8a9e9cd3f7"><span class="id" title="notation">\</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#b09457274bcb94927e289b8a9e9cd3f7"><span class="id" title="notation">in</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.unit"><span class="id" title="definition">GRing.unit</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Datatypes.html#9ddeac0ab66152bd1d64bedb507a795e"><span class="id" title="notation">)</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Fixpoint</span> <a name="uniq_roots"><span class="id" title="definition">uniq_roots</span></a> <span class="id" title="var">rs</span> :=<br/> - <span class="id" title="keyword">if</span> <a class="idref" href="mathcomp.algebra.poly.html#rs"><span class="id" title="variable">rs</span></a> <span class="id" title="keyword">is</span> <span class="id" title="var">x</span> <a class="idref" href="mathcomp.ssreflect.seq.html#407cde5b61fbf27196d1a7c5a475e083"><span class="id" title="notation">::</span></a> <span class="id" title="var">rs'</span> <span class="id" title="keyword">then</span> <a class="idref" href="mathcomp.ssreflect.seq.html#all"><span class="id" title="definition">all</span></a> (<a class="idref" href="mathcomp.algebra.poly.html#diff_roots"><span class="id" title="definition">diff_roots</span></a> <span class="id" title="var">x</span>) <span class="id" title="var">rs'</span> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Datatypes.html#9ddeac0ab66152bd1d64bedb507a795e"><span class="id" title="notation">&&</span></a> <a class="idref" href="mathcomp.algebra.poly.html#uniq_roots"><span class="id" title="definition">uniq_roots</span></a> <span class="id" title="var">rs'</span> <span class="id" title="keyword">else</span> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Datatypes.html#true"><span class="id" title="constructor">true</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="uniq_roots_prod_XsubC"><span class="id" title="lemma">uniq_roots_prod_XsubC</span></a> <span class="id" title="var">p</span> <span class="id" title="var">rs</span> :<br/> - <a class="idref" href="mathcomp.ssreflect.seq.html#all"><span class="id" title="definition">all</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#p"><span class="id" title="variable">p</span></a>) <a class="idref" href="mathcomp.algebra.poly.html#rs"><span class="id" title="variable">rs</span></a> <a class="idref" href="http://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#uniq_roots"><span class="id" title="definition">uniq_roots</span></a> <a class="idref" href="mathcomp.algebra.poly.html#rs"><span class="id" title="variable">rs</span></a> <a 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#a883bdd010993579f99d60b3775bcf54"><span class="id" title="notation">∃</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#a883bdd010993579f99d60b3775bcf54"><span class="id" title="notation">,</span></a> <a class="idref" href="mathcomp.algebra.poly.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.poly.html#q"><span class="id" title="variable">q</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#2d0cfb150261028f4ebd2ba355623dcc"><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">z</span> <a class="idref" href="mathcomp.algebra.ssralg.html#20f16c1d55d1e4ca9bb0e0513dd4b06a"><span class="id" title="notation"><-</span></a> <a class="idref" href="mathcomp.algebra.poly.html#rs"><span class="id" title="variable">rs</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.poly.html#z"><span class="id" title="variable">z</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>.<br/> - -<br/> -<span class="id" title="keyword">Theorem</span> <a name="max_ring_poly_roots"><span class="id" title="lemma">max_ring_poly_roots</span></a> <span class="id" title="var">p</span> <span class="id" title="var">rs</span> :<br/> - <a class="idref" href="mathcomp.algebra.poly.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.ssreflect.seq.html#all"><span class="id" title="definition">all</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#p"><span class="id" title="variable">p</span></a>) <a class="idref" href="mathcomp.algebra.poly.html#rs"><span class="id" title="variable">rs</span></a> <a class="idref" href="http://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#uniq_roots"><span class="id" title="definition">uniq_roots</span></a> <a class="idref" href="mathcomp.algebra.poly.html#rs"><span class="id" title="variable">rs</span></a> <a class="idref" href="http://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.poly.html#rs"><span class="id" title="variable">rs</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.poly.html#p"><span class="id" title="variable">p</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="all_roots_prod_XsubC"><span class="id" title="lemma">all_roots_prod_XsubC</span></a> <span class="id" title="var">p</span> <span class="id" title="var">rs</span> :<br/> - <a class="idref" href="mathcomp.ssreflect.seq.html#size"><span class="id" title="definition">size</span></a> <a class="idref" href="mathcomp.algebra.poly.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.ssreflect.ssrnat.html#bda89d73ec4a8f23ae92b565ffb5aaa6"><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.poly.html#rs"><span class="id" title="variable">rs</span></a><a class="idref" href="mathcomp.ssreflect.ssrnat.html#bda89d73ec4a8f23ae92b565ffb5aaa6"><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#1c93e43e07fbeaeb6a625cb6614beb5d"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#all"><span class="id" title="definition">all</span></a> (<a class="idref" href="mathcomp.algebra.poly.html#root"><span class="id" title="definition">root</span></a> <a class="idref" href="mathcomp.algebra.poly.html#p"><span class="id" title="variable">p</span></a>) <a class="idref" href="mathcomp.algebra.poly.html#rs"><span class="id" title="variable">rs</span></a> <a class="idref" href="http://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#uniq_roots"><span class="id" title="definition">uniq_roots</span></a> <a class="idref" href="mathcomp.algebra.poly.html#rs"><span class="id" title="variable">rs</span></a> <a 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.poly.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.poly.html#lead_coef"><span class="id" title="definition">lead_coef</span></a> <a class="idref" href="mathcomp.algebra.poly.html#p"><span class="id" title="variable">p</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#3b05480e39db306e67fadbc79d394529"><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">z</span> <a class="idref" href="mathcomp.algebra.ssralg.html#20f16c1d55d1e4ca9bb0e0513dd4b06a"><span class="id" title="notation"><-</span></a> <a class="idref" href="mathcomp.algebra.poly.html#rs"><span class="id" title="variable">rs</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.poly.html#z"><span class="id" title="variable">z</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>.<br/> - -<br/> -<span class="id" title="keyword">End</span> <a class="idref" href="mathcomp.algebra.poly.html#MaxRoots"><span class="id" title="section">MaxRoots</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Section</span> <a name="FieldRoots"><span class="id" title="section">FieldRoots</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Variable</span> <a name="FieldRoots.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/> -<span class="id" title="keyword">Implicit</span> <span class="id" title="keyword">Types</span> (<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.poly.html#FieldRoots.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>) (<span class="id" title="var">rs</span> : <a class="idref" href="mathcomp.ssreflect.seq.html#seq"><span class="id" title="abbreviation">seq</span></a> <a class="idref" href="mathcomp.algebra.poly.html#FieldRoots.F"><span class="id" title="variable">F</span></a>).<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="poly2_root"><span class="id" title="lemma">poly2_root</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.poly.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> 2 <a class="idref" href="http://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.Specif.html#bc4528e836ab0e91ea7e942fb09e898f"><span class="id" title="notation">{</span></a><span class="id" title="var">r</span> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Specif.html#bc4528e836ab0e91ea7e942fb09e898f"><span class="id" title="notation">|</span></a> <a class="idref" href="mathcomp.algebra.poly.html#root"><span class="id" title="definition">root</span></a> <a class="idref" href="mathcomp.algebra.poly.html#p"><span class="id" title="variable">p</span></a> <a class="idref" href="mathcomp.algebra.poly.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.Specif.html#bc4528e836ab0e91ea7e942fb09e898f"><span class="id" title="notation">}</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="uniq_rootsE"><span class="id" title="lemma">uniq_rootsE</span></a> <span class="id" title="var">rs</span> : <a class="idref" href="mathcomp.algebra.poly.html#uniq_roots"><span class="id" title="definition">uniq_roots</span></a> <a class="idref" href="mathcomp.algebra.poly.html#rs"><span class="id" title="variable">rs</span></a> <a class="idref" href="http://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#uniq"><span class="id" title="definition">uniq</span></a> <a class="idref" href="mathcomp.algebra.poly.html#rs"><span class="id" title="variable">rs</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Section</span> <a name="FieldRoots.UnityRoots"><span class="id" title="section">UnityRoots</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Variable</span> <a name="FieldRoots.UnityRoots.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/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="max_unity_roots"><span class="id" title="lemma">max_unity_roots</span></a> <span class="id" title="var">rs</span> :<br/> - <a class="idref" href="mathcomp.algebra.poly.html#FieldRoots.UnityRoots.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.ssreflect.seq.html#all"><span class="id" title="definition">all</span></a> <a class="idref" href="mathcomp.algebra.poly.html#FieldRoots.UnityRoots.n"><span class="id" title="variable">n</span></a><a class="idref" href="mathcomp.algebra.poly.html#acbc7bcbd85a1f81c4f65e93aa5fd967"><span class="id" title="notation">.-</span></a><a class="idref" href="mathcomp.algebra.poly.html#acbc7bcbd85a1f81c4f65e93aa5fd967"><span class="id" title="notation">unity_root</span></a> <a class="idref" href="mathcomp.algebra.poly.html#rs"><span class="id" title="variable">rs</span></a> <a class="idref" href="http://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#uniq"><span class="id" title="definition">uniq</span></a> <a class="idref" href="mathcomp.algebra.poly.html#rs"><span class="id" title="variable">rs</span></a> <a class="idref" href="http://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.poly.html#rs"><span class="id" title="variable">rs</span></a> <a class="idref" href="mathcomp.ssreflect.ssrnat.html#cb53cf0ee22c036a03b4a9281c68b5a3"><span class="id" title="notation">≤</span></a> <a class="idref" href="mathcomp.algebra.poly.html#FieldRoots.UnityRoots.n"><span class="id" title="variable">n</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="mem_unity_roots"><span class="id" title="lemma">mem_unity_roots</span></a> <span class="id" title="var">rs</span> :<br/> - <a class="idref" href="mathcomp.algebra.poly.html#FieldRoots.UnityRoots.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.ssreflect.seq.html#all"><span class="id" title="definition">all</span></a> <a class="idref" href="mathcomp.algebra.poly.html#FieldRoots.UnityRoots.n"><span class="id" title="variable">n</span></a><a class="idref" href="mathcomp.algebra.poly.html#acbc7bcbd85a1f81c4f65e93aa5fd967"><span class="id" title="notation">.-</span></a><a class="idref" href="mathcomp.algebra.poly.html#acbc7bcbd85a1f81c4f65e93aa5fd967"><span class="id" title="notation">unity_root</span></a> <a class="idref" href="mathcomp.algebra.poly.html#rs"><span class="id" title="variable">rs</span></a> <a class="idref" href="http://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#uniq"><span class="id" title="definition">uniq</span></a> <a class="idref" href="mathcomp.algebra.poly.html#rs"><span class="id" title="variable">rs</span></a> <a class="idref" href="http://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.poly.html#rs"><span class="id" title="variable">rs</span></a> <a class="idref" href="http://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#FieldRoots.UnityRoots.n"><span class="id" title="variable">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><br/> - <a class="idref" href="mathcomp.algebra.poly.html#FieldRoots.UnityRoots.n"><span class="id" title="variable">n</span></a><a class="idref" href="mathcomp.algebra.poly.html#acbc7bcbd85a1f81c4f65e93aa5fd967"><span class="id" title="notation">.-</span></a><a class="idref" href="mathcomp.algebra.poly.html#acbc7bcbd85a1f81c4f65e93aa5fd967"><span class="id" title="notation">unity_root</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#1e6a438ff685c38fcd9034a94f271777"><span class="id" title="notation">=</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#1e6a438ff685c38fcd9034a94f271777"><span class="id" title="notation">i</span></a> <a class="idref" href="mathcomp.algebra.poly.html#rs"><span class="id" title="variable">rs</span></a>.<br/> - -<br/> -</div> - -<div class="doc"> - Showing the existence of a primitive root requires the theory in cyclic. -</div> -<div class="code"> - -<br/> -<span class="id" title="keyword">Variable</span> <a name="FieldRoots.UnityRoots.z"><span class="id" title="variable">z</span></a> : <a class="idref" href="mathcomp.algebra.poly.html#FieldRoots.F"><span class="id" title="variable">F</span></a>.<br/> -<span class="id" title="keyword">Hypothesis</span> <a name="FieldRoots.UnityRoots.prim_z"><span class="id" title="variable">prim_z</span></a> : <a class="idref" href="mathcomp.algebra.poly.html#FieldRoots.UnityRoots.n"><span class="id" title="variable">n</span></a><a class="idref" href="mathcomp.algebra.poly.html#ad6a7217bc47606779ec5b6d2378a1dd"><span class="id" title="notation">.-</span></a><a class="idref" href="mathcomp.algebra.poly.html#ad6a7217bc47606779ec5b6d2378a1dd"><span class="id" title="notation">primitive_root</span></a> <a class="idref" href="mathcomp.algebra.poly.html#FieldRoots.UnityRoots.z"><span class="id" title="variable">z</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Let</span> <a name="FieldRoots.UnityRoots.zn"><span class="id" title="variable">zn</span></a> := <a class="idref" href="mathcomp.ssreflect.seq.html#dcd18413b33436252c77b6c6465f02bc"><span class="id" title="notation">[</span></a><a class="idref" href="mathcomp.ssreflect.seq.html#dcd18413b33436252c77b6c6465f02bc"><span class="id" title="notation">seq</span></a> <a class="idref" href="mathcomp.algebra.poly.html#FieldRoots.UnityRoots.z"><span class="id" title="variable">z</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#663140372ac3b275aae871b74b140513"><span class="id" title="notation">^+</span></a> <a class="idref" href="mathcomp.algebra.poly.html#i"><span class="id" title="variable">i</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#dcd18413b33436252c77b6c6465f02bc"><span class="id" title="notation">|</span></a> <span class="id" title="var">i</span> <a class="idref" href="mathcomp.ssreflect.seq.html#dcd18413b33436252c77b6c6465f02bc"><span class="id" title="notation"><-</span></a> <a class="idref" href="mathcomp.ssreflect.bigop.html#index_iota"><span class="id" title="definition">index_iota</span></a> 0 <a class="idref" href="mathcomp.algebra.poly.html#FieldRoots.UnityRoots.n"><span class="id" title="variable">n</span></a><a class="idref" href="mathcomp.ssreflect.seq.html#dcd18413b33436252c77b6c6465f02bc"><span class="id" title="notation">]</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="factor_Xn_sub_1"><span class="id" title="lemma">factor_Xn_sub_1</span></a> : <a class="idref" href="mathcomp.algebra.ssralg.html#6cafae612e867daf9d52dea1bc934c24"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#6cafae612e867daf9d52dea1bc934c24"><span class="id" title="notation">prod_</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#6cafae612e867daf9d52dea1bc934c24"><span class="id" title="notation">(</span></a>0 <a class="idref" href="mathcomp.algebra.ssralg.html#6cafae612e867daf9d52dea1bc934c24"><span class="id" title="notation">≤</span></a> <span class="id" title="var">i</span> <a class="idref" href="mathcomp.algebra.ssralg.html#6cafae612e867daf9d52dea1bc934c24"><span class="id" title="notation"><</span></a> <a class="idref" href="mathcomp.algebra.poly.html#FieldRoots.UnityRoots.n"><span class="id" title="variable">n</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#6cafae612e867daf9d52dea1bc934c24"><span class="id" title="notation">)</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#6cafae612e867daf9d52dea1bc934c24"><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.poly.html#8b14e41ab5fcce2460b8672da1456d67"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.poly.html#FieldRoots.UnityRoots.z"><span class="id" title="variable">z</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#663140372ac3b275aae871b74b140513"><span class="id" title="notation">^+</span></a> <a class="idref" href="mathcomp.algebra.poly.html#i"><span class="id" title="variable">i</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#6cafae612e867daf9d52dea1bc934c24"><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.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.poly.html#FieldRoots.UnityRoots.n"><span class="id" title="variable">n</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#51dc792c356ca1a71a3094b50d6bb2fb"><span class="id" title="notation">-</span></a> 1.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="prim_rootP"><span class="id" title="lemma">prim_rootP</span></a> <span class="id" title="var">x</span> : <a class="idref" href="mathcomp.algebra.poly.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#663140372ac3b275aae871b74b140513"><span class="id" title="notation">^+</span></a> <a class="idref" href="mathcomp.algebra.poly.html#FieldRoots.UnityRoots.n"><span class="id" title="variable">n</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#6cd0f7b28b6092304087c7049437bb1a"><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="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Specif.html#6556914db359db999889decec6a4a562"><span class="id" title="notation">{</span></a><span class="id" title="var">i</span> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Specif.html#6556914db359db999889decec6a4a562"><span class="id" title="notation">:</span></a> <a class="idref" href="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="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Specif.html#6556914db359db999889decec6a4a562"><span class="id" title="notation">|</span></a> <a class="idref" href="mathcomp.algebra.poly.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#6cd0f7b28b6092304087c7049437bb1a"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.poly.html#FieldRoots.UnityRoots.z"><span class="id" title="variable">z</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#663140372ac3b275aae871b74b140513"><span class="id" title="notation">^+</span></a> <a class="idref" href="mathcomp.algebra.poly.html#i"><span class="id" title="variable">i</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Specif.html#6556914db359db999889decec6a4a562"><span class="id" title="notation">}</span></a>.<br/> - -<br/> -<span class="id" title="keyword">End</span> <a class="idref" href="mathcomp.algebra.poly.html#FieldRoots.UnityRoots"><span class="id" title="section">UnityRoots</span></a>.<br/> - -<br/> -<span class="id" title="keyword">End</span> <a class="idref" href="mathcomp.algebra.poly.html#FieldRoots"><span class="id" title="section">FieldRoots</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Section</span> <a name="MapPolyRoots"><span class="id" title="section">MapPolyRoots</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Variables</span> (<a name="MapPolyRoots.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="MapPolyRoots.R"><span class="id" title="variable">R</span></a> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.UnitRing.Exports.unitRingType"><span class="id" title="abbreviation">unitRingType</span></a>) (<a name="MapPolyRoots.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.poly.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.poly.html#R"><span class="id" title="variable">R</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="map_diff_roots"><span class="id" title="lemma">map_diff_roots</span></a> <span class="id" title="var">x</span> <span class="id" title="var">y</span> : <a class="idref" href="mathcomp.algebra.poly.html#diff_roots"><span class="id" title="definition">diff_roots</span></a> (<a class="idref" href="mathcomp.algebra.poly.html#MapPolyRoots.f"><span class="id" title="variable">f</span></a> <a class="idref" href="mathcomp.algebra.poly.html#x"><span class="id" title="variable">x</span></a>) (<a class="idref" href="mathcomp.algebra.poly.html#MapPolyRoots.f"><span class="id" title="variable">f</span></a> <a class="idref" href="mathcomp.algebra.poly.html#y"><span class="id" title="variable">y</span></a>) <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#6cd0f7b28b6092304087c7049437bb1a"><span class="id" title="notation">=</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#6cd0f7b28b6092304087c7049437bb1a"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.poly.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#c385a484ee9d1b4e0615924561a9b75e"><span class="id" title="notation">!=</span></a> <a class="idref" href="mathcomp.algebra.poly.html#y"><span class="id" title="variable">y</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#6cd0f7b28b6092304087c7049437bb1a"><span class="id" title="notation">)</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="map_uniq_roots"><span class="id" title="lemma">map_uniq_roots</span></a> <span class="id" title="var">s</span> : <a class="idref" href="mathcomp.algebra.poly.html#uniq_roots"><span class="id" title="definition">uniq_roots</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.poly.html#MapPolyRoots.f"><span class="id" title="variable">f</span></a> <a class="idref" href="mathcomp.algebra.poly.html#s"><span class="id" title="variable">s</span></a>) <a class="idref" href="http://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#uniq"><span class="id" title="definition">uniq</span></a> <a class="idref" href="mathcomp.algebra.poly.html#s"><span class="id" title="variable">s</span></a>.<br/> - -<br/> -<span class="id" title="keyword">End</span> <a class="idref" href="mathcomp.algebra.poly.html#MapPolyRoots"><span class="id" title="section">MapPolyRoots</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Section</span> <a name="AutPolyRoot"><span class="id" title="section">AutPolyRoot</span></a>.<br/> -</div> - -<div class="doc"> - The action of automorphisms on roots of unity. -</div> -<div class="code"> - -<br/> -<span class="id" title="keyword">Variable</span> <a name="AutPolyRoot.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/> -<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.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#AutPolyRoot.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.poly.html#AutPolyRoot.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>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="aut_prim_rootP"><span class="id" title="lemma">aut_prim_rootP</span></a> <span class="id" title="var">u</span> <span class="id" title="var">z</span> <span class="id" title="var">n</span> :<br/> - <a class="idref" href="mathcomp.algebra.poly.html#n"><span class="id" title="variable">n</span></a><a class="idref" href="mathcomp.algebra.poly.html#ad6a7217bc47606779ec5b6d2378a1dd"><span class="id" title="notation">.-</span></a><a class="idref" href="mathcomp.algebra.poly.html#ad6a7217bc47606779ec5b6d2378a1dd"><span class="id" title="notation">primitive_root</span></a> <a class="idref" href="mathcomp.algebra.poly.html#z"><span class="id" title="variable">z</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#1c93e43e07fbeaeb6a625cb6614beb5d"><span class="id" title="notation">→</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Specif.html#c0bbd202248f4def7aaf0c316cf2c29e"><span class="id" title="notation">{</span></a><span class="id" title="var">k</span> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Specif.html#c0bbd202248f4def7aaf0c316cf2c29e"><span class="id" title="notation">|</span></a> <a class="idref" href="mathcomp.ssreflect.div.html#coprime"><span class="id" title="definition">coprime</span></a> <a class="idref" href="mathcomp.algebra.poly.html#k"><span class="id" title="variable">k</span></a> <a class="idref" href="mathcomp.algebra.poly.html#n"><span class="id" title="variable">n</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Specif.html#c0bbd202248f4def7aaf0c316cf2c29e"><span class="id" title="notation">&</span></a> <a class="idref" href="mathcomp.algebra.poly.html#u"><span class="id" title="variable">u</span></a> <a class="idref" href="mathcomp.algebra.poly.html#z"><span class="id" title="variable">z</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#6cd0f7b28b6092304087c7049437bb1a"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.poly.html#z"><span class="id" title="variable">z</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#663140372ac3b275aae871b74b140513"><span class="id" title="notation">^+</span></a> <a class="idref" href="mathcomp.algebra.poly.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.Specif.html#c0bbd202248f4def7aaf0c316cf2c29e"><span class="id" title="notation">}</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="aut_unity_rootP"><span class="id" title="lemma">aut_unity_rootP</span></a> <span class="id" title="var">u</span> <span class="id" title="var">z</span> <span class="id" title="var">n</span> : <a class="idref" href="mathcomp.algebra.poly.html#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.poly.html#z"><span class="id" title="variable">z</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#663140372ac3b275aae871b74b140513"><span class="id" title="notation">^+</span></a> <a class="idref" href="mathcomp.algebra.poly.html#n"><span class="id" title="variable">n</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#6cd0f7b28b6092304087c7049437bb1a"><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="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Specif.html#bc4528e836ab0e91ea7e942fb09e898f"><span class="id" title="notation">{</span></a><span class="id" title="var">k</span> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Specif.html#bc4528e836ab0e91ea7e942fb09e898f"><span class="id" title="notation">|</span></a> <a class="idref" href="mathcomp.algebra.poly.html#u"><span class="id" title="variable">u</span></a> <a class="idref" href="mathcomp.algebra.poly.html#z"><span class="id" title="variable">z</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#6cd0f7b28b6092304087c7049437bb1a"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.poly.html#z"><span class="id" title="variable">z</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#663140372ac3b275aae871b74b140513"><span class="id" title="notation">^+</span></a> <a class="idref" href="mathcomp.algebra.poly.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.Specif.html#bc4528e836ab0e91ea7e942fb09e898f"><span class="id" title="notation">}</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="aut_unity_rootC"><span class="id" title="lemma">aut_unity_rootC</span></a> <span class="id" title="var">u</span> <span class="id" title="var">v</span> <span class="id" title="var">z</span> <span class="id" title="var">n</span> : <a class="idref" href="mathcomp.algebra.poly.html#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.poly.html#z"><span class="id" title="variable">z</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#663140372ac3b275aae871b74b140513"><span class="id" title="notation">^+</span></a> <a class="idref" href="mathcomp.algebra.poly.html#n"><span class="id" title="variable">n</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#6cd0f7b28b6092304087c7049437bb1a"><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.algebra.poly.html#u"><span class="id" title="variable">u</span></a> (<a class="idref" href="mathcomp.algebra.poly.html#v"><span class="id" title="variable">v</span></a> <a class="idref" href="mathcomp.algebra.poly.html#z"><span class="id" title="variable">z</span></a>) <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Logic.html#6cd0f7b28b6092304087c7049437bb1a"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.poly.html#v"><span class="id" title="variable">v</span></a> (<a class="idref" href="mathcomp.algebra.poly.html#u"><span class="id" title="variable">u</span></a> <a class="idref" href="mathcomp.algebra.poly.html#z"><span class="id" title="variable">z</span></a>).<br/> - -<br/> -<span class="id" title="keyword">End</span> <a class="idref" href="mathcomp.algebra.poly.html#AutPolyRoot"><span class="id" title="section">AutPolyRoot</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Module</span> <a name="UnityRootTheory"><span class="id" title="module">UnityRootTheory</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Notation</span> <a name="12c41747fffc25d837b3787b1417d1a2"><span class="id" title="notation">"</span></a>n .-unity_root" := (<a class="idref" href="mathcomp.algebra.poly.html#root_of_unity"><span class="id" title="definition">root_of_unity</span></a> <span class="id" title="var">n</span>) : <span class="id" title="var">unity_root_scope</span>.<br/> -<span class="id" title="keyword">Notation</span> <a name="f4705e15fa4f8b198701060f0d70a3aa"><span class="id" title="notation">"</span></a>n .-primitive_root" := (<a class="idref" href="mathcomp.algebra.poly.html#primitive_root_of_unity"><span class="id" title="definition">primitive_root_of_unity</span></a> <span class="id" title="var">n</span>) : <span class="id" title="var">unity_root_scope</span>.<br/> -<span class="id" title="keyword">Open</span> <span class="id" title="keyword">Scope</span> <span class="id" title="var">unity_root_scope</span>.<br/> - -<br/> -<span class="id" title="keyword">Definition</span> <a name="UnityRootTheory.unity_rootE"><span class="id" title="definition">unity_rootE</span></a> := <a class="idref" href="mathcomp.algebra.poly.html#unity_rootE"><span class="id" title="lemma">unity_rootE</span></a>.<br/> -<span class="id" title="keyword">Definition</span> <a name="UnityRootTheory.unity_rootP"><span class="id" title="definition">unity_rootP</span></a> := @<a class="idref" href="mathcomp.algebra.poly.html#unity_rootP"><span class="id" title="lemma">unity_rootP</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Definition</span> <a name="UnityRootTheory.prim_order_exists"><span class="id" title="definition">prim_order_exists</span></a> := <a class="idref" href="mathcomp.algebra.poly.html#prim_order_exists"><span class="id" title="lemma">prim_order_exists</span></a>.<br/> -<span class="id" title="keyword">Notation</span> <a name="UnityRootTheory.prim_order_gt0"><span class="id" title="abbreviation">prim_order_gt0</span></a> := <a class="idref" href="mathcomp.algebra.poly.html#prim_order_gt0"><span class="id" title="lemma">prim_order_gt0</span></a>.<br/> -<span class="id" title="keyword">Notation</span> <a name="UnityRootTheory.prim_expr_order"><span class="id" title="abbreviation">prim_expr_order</span></a> := <a class="idref" href="mathcomp.algebra.poly.html#prim_expr_order"><span class="id" title="lemma">prim_expr_order</span></a>.<br/> -<span class="id" title="keyword">Definition</span> <a name="UnityRootTheory.prim_expr_mod"><span class="id" title="definition">prim_expr_mod</span></a> := <a class="idref" href="mathcomp.algebra.poly.html#prim_expr_mod"><span class="id" title="lemma">prim_expr_mod</span></a>.<br/> -<span class="id" title="keyword">Definition</span> <a name="UnityRootTheory.prim_order_dvd"><span class="id" title="definition">prim_order_dvd</span></a> := <a class="idref" href="mathcomp.algebra.poly.html#prim_order_dvd"><span class="id" title="lemma">prim_order_dvd</span></a>.<br/> -<span class="id" title="keyword">Definition</span> <a name="UnityRootTheory.eq_prim_root_expr"><span class="id" title="definition">eq_prim_root_expr</span></a> := <a class="idref" href="mathcomp.algebra.poly.html#eq_prim_root_expr"><span class="id" title="lemma">eq_prim_root_expr</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Definition</span> <a name="UnityRootTheory.rmorph_unity_root"><span class="id" title="definition">rmorph_unity_root</span></a> := <a class="idref" href="mathcomp.algebra.poly.html#rmorph_unity_root"><span class="id" title="lemma">rmorph_unity_root</span></a>.<br/> -<span class="id" title="keyword">Definition</span> <a name="UnityRootTheory.fmorph_unity_root"><span class="id" title="definition">fmorph_unity_root</span></a> := <a class="idref" href="mathcomp.algebra.poly.html#fmorph_unity_root"><span class="id" title="lemma">fmorph_unity_root</span></a>.<br/> -<span class="id" title="keyword">Definition</span> <a name="UnityRootTheory.fmorph_primitive_root"><span class="id" title="definition">fmorph_primitive_root</span></a> := <a class="idref" href="mathcomp.algebra.poly.html#fmorph_primitive_root"><span class="id" title="lemma">fmorph_primitive_root</span></a>.<br/> -<span class="id" title="keyword">Definition</span> <a name="UnityRootTheory.max_unity_roots"><span class="id" title="definition">max_unity_roots</span></a> := <a class="idref" href="mathcomp.algebra.poly.html#max_unity_roots"><span class="id" title="lemma">max_unity_roots</span></a>.<br/> -<span class="id" title="keyword">Definition</span> <a name="UnityRootTheory.mem_unity_roots"><span class="id" title="definition">mem_unity_roots</span></a> := <a class="idref" href="mathcomp.algebra.poly.html#mem_unity_roots"><span class="id" title="lemma">mem_unity_roots</span></a>.<br/> -<span class="id" title="keyword">Definition</span> <a name="UnityRootTheory.prim_rootP"><span class="id" title="definition">prim_rootP</span></a> := <a class="idref" href="mathcomp.algebra.poly.html#prim_rootP"><span class="id" title="lemma">prim_rootP</span></a>.<br/> - -<br/> -<span class="id" title="keyword">End</span> <a class="idref" href="mathcomp.algebra.poly.html#UnityRootTheory"><span class="id" title="module">UnityRootTheory</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Section</span> <a name="DecField"><span class="id" title="section">DecField</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Variable</span> <a name="DecField.F"><span class="id" title="variable">F</span></a> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.DecidableField.Exports.decFieldType"><span class="id" title="abbreviation">decFieldType</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="dec_factor_theorem"><span class="id" title="lemma">dec_factor_theorem</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.poly.html#DecField.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/> - <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Specif.html#cc5e56ba3765e2d6b17e66d19b966f1d"><span class="id" title="notation">{</span></a><span class="id" title="var">s</span> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Specif.html#cc5e56ba3765e2d6b17e66d19b966f1d"><span class="id" title="notation">:</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#seq"><span class="id" title="abbreviation">seq</span></a> <a class="idref" href="mathcomp.algebra.poly.html#DecField.F"><span class="id" title="variable">F</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Specif.html#cc5e56ba3765e2d6b17e66d19b966f1d"><span class="id" title="notation">&</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Specif.html#6556914db359db999889decec6a4a562"><span class="id" title="notation">{</span></a><span class="id" title="var">q</span> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Specif.html#6556914db359db999889decec6a4a562"><span class="id" title="notation">:</span></a> <a class="idref" href="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.poly.html#DecField.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> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Specif.html#6556914db359db999889decec6a4a562"><span class="id" title="notation">|</span></a> <a class="idref" href="mathcomp.algebra.poly.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.poly.html#q"><span class="id" title="variable">q</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#2d0cfb150261028f4ebd2ba355623dcc"><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.poly.html#s"><span class="id" title="variable">s</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.poly.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><br/> - <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="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.algebra.poly.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> <span class="id" title="keyword">∀</span> <span class="id" title="var">x</span>, <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#b3ebd0deddd84fd60e149cb5ef719351"><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#q"><span class="id" title="variable">q</span></a> <a class="idref" href="mathcomp.algebra.poly.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#ba2b0e492d2b4675a0acf3ea92aabadd"><span class="id" title="notation">)</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Specif.html#6556914db359db999889decec6a4a562"><span class="id" title="notation">}</span></a><a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Specif.html#cc5e56ba3765e2d6b17e66d19b966f1d"><span class="id" title="notation">}</span></a>.<br/> - -<br/> -<span class="id" title="keyword">End</span> <a class="idref" href="mathcomp.algebra.poly.html#DecField"><span class="id" title="section">DecField</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Module</span> <a name="PreClosedField"><span class="id" title="module">PreClosedField</span></a>.<br/> -<span class="id" title="keyword">Section</span> <a name="PreClosedField.UseAxiom"><span class="id" title="section">UseAxiom</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Variable</span> <a name="PreClosedField.UseAxiom.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/> -<span class="id" title="keyword">Hypothesis</span> <a name="PreClosedField.UseAxiom.closedF"><span class="id" title="variable">closedF</span></a> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ClosedField.axiom"><span class="id" title="definition">GRing.ClosedField.axiom</span></a> <a class="idref" href="mathcomp.algebra.poly.html#PreClosedField.UseAxiom.F"><span class="id" title="variable">F</span></a>.<br/> -<span class="id" title="keyword">Implicit</span> <span class="id" title="keyword">Type</span> <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.poly.html#PreClosedField.UseAxiom.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">Lemma</span> <a name="PreClosedField.closed_rootP"><span class="id" title="lemma">closed_rootP</span></a> <span class="id" title="var">p</span> : <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#reflect"><span class="id" title="abbreviation">reflect</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">x</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.poly.html#root"><span class="id" title="definition">root</span></a> <a class="idref" href="mathcomp.algebra.poly.html#p"><span class="id" title="variable">p</span></a> <a class="idref" href="mathcomp.algebra.poly.html#x"><span class="id" title="variable">x</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.poly.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> 1%<span class="id" title="var">N</span>).<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="PreClosedField.closed_nonrootP"><span class="id" title="lemma">closed_nonrootP</span></a> <span class="id" title="var">p</span> : <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#reflect"><span class="id" title="abbreviation">reflect</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">x</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="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#b3ebd0deddd84fd60e149cb5ef719351"><span class="id" title="notation">~~</span></a> <a class="idref" href="mathcomp.algebra.poly.html#root"><span class="id" title="definition">root</span></a> <a class="idref" href="mathcomp.algebra.poly.html#p"><span class="id" title="variable">p</span></a> <a class="idref" href="mathcomp.algebra.poly.html#x"><span class="id" title="variable">x</span></a>) (<a class="idref" href="mathcomp.algebra.poly.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).<br/> - -<br/> -<span class="id" title="keyword">End</span> <a class="idref" href="mathcomp.algebra.poly.html#PreClosedField.UseAxiom"><span class="id" title="section">UseAxiom</span></a>.<br/> -<span class="id" title="keyword">End</span> <a class="idref" href="mathcomp.algebra.poly.html#PreClosedField"><span class="id" title="module">PreClosedField</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Section</span> <a name="ClosedField"><span class="id" title="section">ClosedField</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Variable</span> <a name="ClosedField.F"><span class="id" title="variable">F</span></a> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ClosedField.Exports.closedFieldType"><span class="id" title="abbreviation">closedFieldType</span></a>.<br/> -<span class="id" title="keyword">Implicit</span> <span class="id" title="keyword">Type</span> <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.poly.html#ClosedField.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">Let</span> <a name="ClosedField.closedF"><span class="id" title="variable">closedF</span></a> := @<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Theory.solve_monicpoly"><span class="id" title="definition">solve_monicpoly</span></a> <a class="idref" href="mathcomp.algebra.poly.html#ClosedField.F"><span class="id" title="variable">F</span></a>.<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="closed_rootP"><span class="id" title="lemma">closed_rootP</span></a> <span class="id" title="var">p</span> : <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#reflect"><span class="id" title="abbreviation">reflect</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">x</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.poly.html#root"><span class="id" title="definition">root</span></a> <a class="idref" href="mathcomp.algebra.poly.html#p"><span class="id" title="variable">p</span></a> <a class="idref" href="mathcomp.algebra.poly.html#x"><span class="id" title="variable">x</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.poly.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> 1%<span class="id" title="var">N</span>).<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="closed_nonrootP"><span class="id" title="lemma">closed_nonrootP</span></a> <span class="id" title="var">p</span> : <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#reflect"><span class="id" title="abbreviation">reflect</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">x</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="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.ssr.ssrbool.html#b3ebd0deddd84fd60e149cb5ef719351"><span class="id" title="notation">~~</span></a> <a class="idref" href="mathcomp.algebra.poly.html#root"><span class="id" title="definition">root</span></a> <a class="idref" href="mathcomp.algebra.poly.html#p"><span class="id" title="variable">p</span></a> <a class="idref" href="mathcomp.algebra.poly.html#x"><span class="id" title="variable">x</span></a>) (<a class="idref" href="mathcomp.algebra.poly.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).<br/> - -<br/> -<span class="id" title="keyword">Lemma</span> <a name="closed_field_poly_normal"><span class="id" title="lemma">closed_field_poly_normal</span></a> <span class="id" title="var">p</span> :<br/> - <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Specif.html#6556914db359db999889decec6a4a562"><span class="id" title="notation">{</span></a><span class="id" title="var">r</span> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Specif.html#6556914db359db999889decec6a4a562"><span class="id" title="notation">:</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#seq"><span class="id" title="abbreviation">seq</span></a> <a class="idref" href="mathcomp.algebra.poly.html#ClosedField.F"><span class="id" title="variable">F</span></a> <a class="idref" href="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Specif.html#6556914db359db999889decec6a4a562"><span class="id" title="notation">|</span></a> <a class="idref" href="mathcomp.algebra.poly.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.poly.html#lead_coef"><span class="id" title="definition">lead_coef</span></a> <a class="idref" href="mathcomp.algebra.poly.html#p"><span class="id" title="variable">p</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#3b05480e39db306e67fadbc79d394529"><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">z</span> <a class="idref" href="mathcomp.algebra.ssralg.html#20f16c1d55d1e4ca9bb0e0513dd4b06a"><span class="id" title="notation"><-</span></a> <a class="idref" href="mathcomp.algebra.poly.html#r"><span class="id" title="variable">r</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.poly.html#z"><span class="id" title="variable">z</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="http://coq.inria.fr/distrib/V8.9.0/stdlib//Coq.Init.Specif.html#6556914db359db999889decec6a4a562"><span class="id" title="notation">}</span></a>.<br/> - -<br/> -<span class="id" title="keyword">End</span> <a class="idref" href="mathcomp.algebra.poly.html#ClosedField"><span class="id" title="section">ClosedField</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 |
