diff options
| author | Enrico Tassi | 2018-04-20 10:54:22 +0200 |
|---|---|---|
| committer | Enrico Tassi | 2018-04-20 10:54:22 +0200 |
| commit | ed05182cece6bb3706e09b2ce14af4a41a2e8141 (patch) | |
| tree | e850d7314b6372d0476cf2ffaf7d3830721db7b1 /docs/htmldoc/mathcomp.algebra.vector.html | |
| parent | 3d196f44681fb3b23ff8a79fbd44e12308680531 (diff) | |
generate the documentation for 1.7
Diffstat (limited to 'docs/htmldoc/mathcomp.algebra.vector.html')
| -rw-r--r-- | docs/htmldoc/mathcomp.algebra.vector.html | 1945 |
1 files changed, 1945 insertions, 0 deletions
diff --git a/docs/htmldoc/mathcomp.algebra.vector.html b/docs/htmldoc/mathcomp.algebra.vector.html new file mode 100644 index 0000000..7a5ac82 --- /dev/null +++ b/docs/htmldoc/mathcomp.algebra.vector.html @@ -0,0 +1,1945 @@ +<!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.vector</title> +</head> + +<body> + +<div id="page"> + +<div id="header"> +</div> + +<div id="main"> + +<h1 class="libtitle">Library mathcomp.algebra.vector</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/> +<span class="id" title="keyword">Require</span> <span class="id" title="keyword">Import</span> <a class="idref" href="mathcomp.ssreflect.ssreflect.html#"><span class="id" title="library">mathcomp.ssreflect.ssreflect</span></a>.<br/> + +<br/> +</div> + +<div class="doc"> +<a name="lab29"></a><h1 class="section">Finite dimensional vector spaces</h1> + + vectType R == interface structure for finite dimensional (more + precisely, detachable) vector spaces over R, which + should be at least a ringType. + Vector.axiom n M <-> type M is linearly isomorphic to 'rV_n. + := {v2r : M -> 'rV_n| linear v2r & bijective v2r}. + VectMixin isoM == packages a proof isoV of Vector.axiom n M as the + vectType mixin for an n-dimensional R-space + structure on a type M that is an lmodType R. + VectType K M mT == packs the vectType mixin mT to into a vectType K + instance for T; T should have an lmodType K + canonical instance. + [vectType R of T for vS] == a copy of the vS : vectType R structure where + the sort is replaced by T; vS : lmodType R should + be convertible to a canonical lmodType for T. + [vectType R of V] == a clone of an existing vectType R structure on V. + {vspace vT} == the type of (detachable) subspaces of vT; vT + should have a vectType structure over a fieldType. + subvs_of U == the subtype of elements of V in the subspace U. + This is canonically a vectType. + vsval u == linear injection of u : subvs_of U into V. + vsproj U v == linear projection of v : V in subvs U. + 'Hom(aT, rT) == the type of linear functions (homomorphisms) from + aT to rT, where aT and rT ARE vectType structures. + Elements of 'Hom(aT, rT) coerce to Coq functions. +> Caveat: aT and rT must denote actual vectType structures, not their + projections on Type. + linfun f == a vector linear function in 'Hom(aT, rT) that + coincides with f : aT -> rT when f is linear. + 'End(vT) == endomorphisms of vT (:= 'Hom(vT, vT)). +> The types subvs_of U, 'Hom(aT, rT), 'End(vT), K^o, 'M[K](m, n), + vT * wT, {ffun I -> vT}, vT ^ n all have canonical vectType instances. + +<div class="paragraph"> </div> + + Functions: + < [v]>%VS == the vector space generated by v (a line if v != 0). + 0%VS == the trivial vector subspace. + fullv, {:vT} == the complete vector subspace (displays as fullv). + (U + V)%VS == the join (sum) of two subspaces U and V. + (U :&: V)%VS == intersection of vector subspaces U and V. + (U^C)%VS == a complement of the vector subspace U. + (U :\: V)%VS == a local complement to U :& V in the subspace U. + \dim U == dimension of a vector space U. + span X, <tt>X</tt>%VS == the subspace spanned by the vector sequence X. + coord X i v == i'th coordinate of v on X, when v \in <tt>X</tt>%VS and + where X : n.-tuple vT and i : 'I_n. Note that + coord X i is a scalar function. + vpick U == a nonzero element of U if U= 0%VS, or 0 if U = 0. + vbasis U == a (\dim U).-tuple that is a basis of U. + \1%VF == the identity linear function. + (f \o g)%VF == the composite of two linear functions f and g. + (f^-1)%VF == a linear function that is a right inverse to the + linear function f on the codomain of f. + (f @: U)%VS == the image of vs by the linear function f. + (f @^-1: U)%VS == the pre-image of vs by the linear function f. + lker f == the kernel of the linear function f. + limg f == the image of the linear function f. + fixedSpace f == the fixed space of a linear endomorphism f + daddv_pi U V == projection onto U along V if U and V are disjoint; + daddv_pi U V + daddv_pi V U is then a projection + onto the direct sum (U + V)%VS. + projv U == projection onto U (along U^C, := daddv_pi U U^C). + addv_pi1 U V == projection onto the subspace U :\: V of U along V. + addv_pi2 U V == projection onto V along U :\: V; note that + addv_pi1 U V and addv_pi2 U V are (asymmetrical) + complementary projections on (U + V)%VS. + sumv_pi_for defV i == for defV : V = (V \sum(j <- r | P j) Vs j)%VS, + j ranging over an eqType, this is a projection on + a subspace of Vs i, along a complement in V, such + that \sum(j <- r | P j) sumv_pi_for defV j is a + projection onto V if filter P r is duplicate-free + (e.g., when V := \sum(j | P j) Vs j). + sumv_pi V i == notation the above when defV == erefl V, and V is + convertible to \sum(j <- r | P j) Vs j)%VS. + +<div class="paragraph"> </div> + + Predicates: + v \in U == v belongs to U (:= (< [v]> <= U)%VS). + (U <= V)%VS == U is a subspace of V. + free B == B is a sequence of nonzero linearly independent + vectors. + basis_of U b == b is a basis of the subspace U. + directv S == S is the expression for a direct sum of subspaces. +</div> +<div class="code"> + +<br/> +<span class="id" title="keyword">Set Implicit Arguments</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> "{ 'vspace' T }" (<span class="id" title="tactic">at</span> <span class="id" title="keyword">level</span> 0, <span class="id" title="var">format</span> "{ 'vspace' T }").<br/> +<span class="id" title="keyword">Reserved Notation</span> "''Hom' ( T , rT )" (<span class="id" title="tactic">at</span> <span class="id" title="keyword">level</span> 8, <span class="id" title="var">format</span> "''Hom' ( T , rT )").<br/> +<span class="id" title="keyword">Reserved Notation</span> "''End' ( T )" (<span class="id" title="tactic">at</span> <span class="id" title="keyword">level</span> 8, <span class="id" title="var">format</span> "''End' ( T )").<br/> +<span class="id" title="keyword">Reserved Notation</span> "\dim A" (<span class="id" title="tactic">at</span> <span class="id" title="keyword">level</span> 10, <span class="id" title="var">A</span> <span class="id" title="tactic">at</span> <span class="id" title="keyword">level</span> 8, <span class="id" title="var">format</span> "\dim A").<br/> + +<br/> +<span class="id" title="keyword">Delimit</span> <span class="id" title="keyword">Scope</span> <span class="id" title="var">vspace_scope</span> <span class="id" title="keyword">with</span> <span class="id" title="var">VS</span>.<br/> + +<br/> +<span class="id" title="keyword">Import</span> <span class="id" title="var">GRing.Theory</span>.<br/> + +<br/> +</div> + +<div class="doc"> + Finite dimension vector space +</div> +<div class="code"> +<span class="id" title="keyword">Module</span> <a name="Vector"><span class="id" title="module">Vector</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Section</span> <a name="Vector.ClassDef"><span class="id" title="section">ClassDef</span></a>.<br/> +<span class="id" title="keyword">Variable</span> <a name="Vector.ClassDef.R"><span class="id" title="variable">R</span></a> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Ring.Exports.ringType"><span class="id" title="abbreviation">ringType</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Definition</span> <a name="Vector.axiom_def"><span class="id" title="definition">axiom_def</span></a> <span class="id" title="var">n</span> (<span class="id" title="var">V</span> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Lmodule.Exports.lmodType"><span class="id" title="abbreviation">lmodType</span></a> <a class="idref" href="mathcomp.algebra.vector.html#Vector.ClassDef.R"><span class="id" title="variable">R</span></a>) <span class="id" title="keyword">of</span> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssreflect.html#phant"><span class="id" title="inductive">phant</span></a> <a class="idref" href="mathcomp.algebra.vector.html#V"><span class="id" title="variable">V</span></a> :=<br/> + <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Specif.html#602b9943a639fb973abed6e2c7854421"><span class="id" title="notation">{</span></a><span class="id" title="var">v2r</span> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Specif.html#602b9943a639fb973abed6e2c7854421"><span class="id" title="notation">:</span></a> <a class="idref" href="mathcomp.algebra.vector.html#V"><span class="id" title="variable">V</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#d5eb23b08bc98c3329b2748a3ba944ae"><span class="id" title="notation">'</span></a><a class="idref" href="mathcomp.algebra.matrix.html#d5eb23b08bc98c3329b2748a3ba944ae"><span class="id" title="notation">rV</span></a><a class="idref" href="mathcomp.algebra.matrix.html#d5eb23b08bc98c3329b2748a3ba944ae"><span class="id" title="notation">[</span></a><a class="idref" href="mathcomp.algebra.vector.html#Vector.ClassDef.R"><span class="id" title="variable">R</span></a><a class="idref" href="mathcomp.algebra.matrix.html#d5eb23b08bc98c3329b2748a3ba944ae"><span class="id" title="notation">]</span></a><a class="idref" href="mathcomp.algebra.matrix.html#d5eb23b08bc98c3329b2748a3ba944ae"><span class="id" title="notation">_n</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Specif.html#602b9943a639fb973abed6e2c7854421"><span class="id" title="notation">|</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.vector.html#v2r"><span class="id" title="variable">v2r</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Specif.html#602b9943a639fb973abed6e2c7854421"><span class="id" title="notation">&</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#bijective"><span class="id" title="inductive">bijective</span></a> <a class="idref" href="mathcomp.algebra.vector.html#v2r"><span class="id" title="variable">v2r</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Specif.html#602b9943a639fb973abed6e2c7854421"><span class="id" title="notation">}</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Inductive</span> <a name="Vector.mixin_of"><span class="id" title="inductive">mixin_of</span></a> (<span class="id" title="var">V</span> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Lmodule.Exports.lmodType"><span class="id" title="abbreviation">lmodType</span></a> <a class="idref" href="mathcomp.algebra.vector.html#Vector.ClassDef.R"><span class="id" title="variable">R</span></a>) := <a name="Vector.Mixin"><span class="id" title="constructor">Mixin</span></a> <span class="id" title="var">dim</span> & <a class="idref" href="mathcomp.algebra.vector.html#Vector.axiom_def"><span class="id" title="definition">axiom_def</span></a> <a class="idref" href="mathcomp.algebra.vector.html#dim"><span class="id" title="variable">dim</span></a> (<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssreflect.html#Phant"><span class="id" title="constructor">Phant</span></a> <a class="idref" href="mathcomp.algebra.vector.html#V"><span class="id" title="variable">V</span></a>).<br/> + +<br/> +<span class="id" title="keyword">Structure</span> <a name="Vector.class_of"><span class="id" title="record">class_of</span></a> <span class="id" title="var">V</span> := <a name="Vector.Class"><span class="id" title="constructor">Class</span></a> {<br/> + <a name="Vector.base"><span class="id" title="projection">base</span></a> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Lmodule.class_of"><span class="id" title="record">GRing.Lmodule.class_of</span></a> <a class="idref" href="mathcomp.algebra.vector.html#Vector.ClassDef.R"><span class="id" title="variable">R</span></a> <a class="idref" href="mathcomp.algebra.vector.html#V"><span class="id" title="variable">V</span></a>;<br/> + <a name="Vector.mixin"><span class="id" title="projection">mixin</span></a> : <a class="idref" href="mathcomp.algebra.vector.html#Vector.mixin_of"><span class="id" title="inductive">mixin_of</span></a> (<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Lmodule.Pack"><span class="id" title="constructor">GRing.Lmodule.Pack</span></a> <span class="id" title="var">_</span> <a class="idref" href="mathcomp.algebra.vector.html#base"><span class="id" title="method">base</span></a> <a class="idref" href="mathcomp.algebra.vector.html#V"><span class="id" title="variable">V</span></a>)<br/> +}.<br/> + +<br/> +<span class="id" title="keyword">Structure</span> <a name="Vector.type"><span class="id" title="record">type</span></a> (<span class="id" title="var">phR</span> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssreflect.html#phant"><span class="id" title="inductive">phant</span></a> <a class="idref" href="mathcomp.algebra.vector.html#Vector.ClassDef.R"><span class="id" title="variable">R</span></a>) := <a name="Vector.Pack"><span class="id" title="constructor">Pack</span></a> {<a name="Vector.sort"><span class="id" title="projection">sort</span></a>; <span class="id" title="var">_</span> : <a class="idref" href="mathcomp.algebra.vector.html#Vector.class_of"><span class="id" title="record">class_of</span></a> <a class="idref" href="mathcomp.algebra.vector.html#sort"><span class="id" title="method">sort</span></a>; <span class="id" title="var">_</span> : <span class="id" title="keyword">Type</span>}.<br/> +<span class="id" title="keyword">Variables</span> (<a name="Vector.ClassDef.phR"><span class="id" title="variable">phR</span></a> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssreflect.html#phant"><span class="id" title="inductive">phant</span></a> <a class="idref" href="mathcomp.algebra.vector.html#Vector.ClassDef.R"><span class="id" title="variable">R</span></a>) (<a name="Vector.ClassDef.T"><span class="id" title="variable">T</span></a> : <span class="id" title="keyword">Type</span>) (<a name="Vector.ClassDef.cT"><span class="id" title="variable">cT</span></a> : <a class="idref" href="mathcomp.algebra.vector.html#Vector.type"><span class="id" title="record">type</span></a> <a class="idref" href="mathcomp.algebra.vector.html#phR"><span class="id" title="variable">phR</span></a>).<br/> +<span class="id" title="keyword">Definition</span> <a name="Vector.class"><span class="id" title="definition">class</span></a> := <span class="id" title="keyword">let</span>: <a class="idref" href="mathcomp.algebra.vector.html#Vector.Pack"><span class="id" title="constructor">Pack</span></a> <span class="id" title="var">_</span> <span class="id" title="var">c</span> <span class="id" title="var">_</span> := <a class="idref" href="mathcomp.algebra.vector.html#Vector.ClassDef.cT"><span class="id" title="variable">cT</span></a> <span class="id" title="keyword">return</span> <a class="idref" href="mathcomp.algebra.vector.html#Vector.class_of"><span class="id" title="record">class_of</span></a> <a class="idref" href="mathcomp.algebra.vector.html#cT"><span class="id" title="variable">cT</span></a> <span class="id" title="tactic">in</span> <span class="id" title="var">c</span>.<br/> +<span class="id" title="keyword">Definition</span> <a name="Vector.clone"><span class="id" title="definition">clone</span></a> <span class="id" title="var">c</span> <span class="id" title="keyword">of</span> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#phant_id"><span class="id" title="definition">phant_id</span></a> <a class="idref" href="mathcomp.algebra.vector.html#Vector.class"><span class="id" title="definition">class</span></a> <a class="idref" href="mathcomp.algebra.vector.html#c"><span class="id" title="variable">c</span></a> := @<a class="idref" href="mathcomp.algebra.vector.html#Vector.Pack"><span class="id" title="constructor">Pack</span></a> <a class="idref" href="mathcomp.algebra.vector.html#Vector.ClassDef.phR"><span class="id" title="variable">phR</span></a> <a class="idref" href="mathcomp.algebra.vector.html#Vector.ClassDef.T"><span class="id" title="variable">T</span></a> <a class="idref" href="mathcomp.algebra.vector.html#c"><span class="id" title="variable">c</span></a> <a class="idref" href="mathcomp.algebra.vector.html#Vector.ClassDef.T"><span class="id" title="variable">T</span></a>.<br/> +<span class="id" title="keyword">Let</span> <a name="Vector.ClassDef.xT"><span class="id" title="variable">xT</span></a> := <span class="id" title="keyword">let</span>: <a class="idref" href="mathcomp.algebra.vector.html#Vector.Pack"><span class="id" title="constructor">Pack</span></a> <span class="id" title="var">T</span> <span class="id" title="var">_</span> <span class="id" title="var">_</span> := <a class="idref" href="mathcomp.algebra.vector.html#Vector.ClassDef.cT"><span class="id" title="variable">cT</span></a> <span class="id" title="tactic">in</span> <span class="id" title="var">T</span>.<br/> +<span class="id" title="keyword">Notation</span> <a name="Vector.xclass"><span class="id" title="abbreviation">xclass</span></a> := (<a class="idref" href="mathcomp.algebra.vector.html#Vector.class"><span class="id" title="definition">class</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssreflect.html#4509b22bf26e3d6d771897e22bd8bc8f"><span class="id" title="notation">:</span></a> <a class="idref" href="mathcomp.algebra.vector.html#Vector.class_of"><span class="id" title="record">class_of</span></a> <a class="idref" href="mathcomp.algebra.vector.html#Vector.ClassDef.xT"><span class="id" title="variable">xT</span></a>).<br/> +<span class="id" title="keyword">Definition</span> <a name="Vector.dim"><span class="id" title="definition">dim</span></a> := <span class="id" title="keyword">let</span>: <a class="idref" href="mathcomp.algebra.vector.html#Vector.Mixin"><span class="id" title="constructor">Mixin</span></a> <span class="id" title="var">n</span> <span class="id" title="var">_</span> := <a class="idref" href="mathcomp.algebra.vector.html#Vector.mixin"><span class="id" title="projection">mixin</span></a> <a class="idref" href="mathcomp.algebra.vector.html#Vector.class"><span class="id" title="definition">class</span></a> <span class="id" title="tactic">in</span> <span class="id" title="var">n</span>.<br/> + +<br/> +<span class="id" title="keyword">Definition</span> <a name="Vector.pack"><span class="id" title="definition">pack</span></a> <span class="id" title="var">b0</span> (<span class="id" title="var">m0</span> : <a class="idref" href="mathcomp.algebra.vector.html#Vector.mixin_of"><span class="id" title="inductive">mixin_of</span></a> (@<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Lmodule.Pack"><span class="id" title="constructor">GRing.Lmodule.Pack</span></a> <a class="idref" href="mathcomp.algebra.vector.html#Vector.ClassDef.R"><span class="id" title="variable">R</span></a> <span class="id" title="var">_</span> <a class="idref" href="mathcomp.algebra.vector.html#Vector.ClassDef.T"><span class="id" title="variable">T</span></a> <a class="idref" href="mathcomp.algebra.vector.html#b0"><span class="id" title="variable">b0</span></a> <a class="idref" href="mathcomp.algebra.vector.html#Vector.ClassDef.T"><span class="id" title="variable">T</span></a>)) :=<br/> + <span class="id" title="keyword">fun</span> <span class="id" title="var">bT</span> <span class="id" title="var">b</span> & <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#phant_id"><span class="id" title="definition">phant_id</span></a> (@<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Lmodule.class"><span class="id" title="definition">GRing.Lmodule.class</span></a> <span class="id" title="var">_</span> <a class="idref" href="mathcomp.algebra.vector.html#Vector.ClassDef.phR"><span class="id" title="variable">phR</span></a> <a class="idref" href="mathcomp.algebra.vector.html#bT"><span class="id" title="variable">bT</span></a>) <a class="idref" href="mathcomp.algebra.vector.html#b"><span class="id" title="variable">b</span></a> ⇒<br/> + <span class="id" title="keyword">fun</span> <span class="id" title="var">m</span> & <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#phant_id"><span class="id" title="definition">phant_id</span></a> <a class="idref" href="mathcomp.algebra.vector.html#m0"><span class="id" title="variable">m0</span></a> <a class="idref" href="mathcomp.algebra.vector.html#m"><span class="id" title="variable">m</span></a> ⇒ <a class="idref" href="mathcomp.algebra.vector.html#Vector.Pack"><span class="id" title="constructor">Pack</span></a> <a class="idref" href="mathcomp.algebra.vector.html#Vector.ClassDef.phR"><span class="id" title="variable">phR</span></a> (@<a class="idref" href="mathcomp.algebra.vector.html#Vector.Class"><span class="id" title="constructor">Class</span></a> <a class="idref" href="mathcomp.algebra.vector.html#Vector.ClassDef.T"><span class="id" title="variable">T</span></a> <a class="idref" href="mathcomp.algebra.vector.html#b"><span class="id" title="variable">b</span></a> <a class="idref" href="mathcomp.algebra.vector.html#m"><span class="id" title="variable">m</span></a>) <a class="idref" href="mathcomp.algebra.vector.html#Vector.ClassDef.T"><span class="id" title="variable">T</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Definition</span> <a name="Vector.eqType"><span class="id" title="definition">eqType</span></a> := @<a class="idref" href="mathcomp.ssreflect.eqtype.html#Equality.Pack"><span class="id" title="constructor">Equality.Pack</span></a> <a class="idref" href="mathcomp.algebra.vector.html#Vector.ClassDef.cT"><span class="id" title="variable">cT</span></a> <a class="idref" href="mathcomp.algebra.vector.html#Vector.xclass"><span class="id" title="abbreviation">xclass</span></a> <a class="idref" href="mathcomp.algebra.vector.html#Vector.ClassDef.xT"><span class="id" title="variable">xT</span></a>.<br/> +<span class="id" title="keyword">Definition</span> <a name="Vector.choiceType"><span class="id" title="definition">choiceType</span></a> := @<a class="idref" href="mathcomp.ssreflect.choice.html#Choice.Pack"><span class="id" title="constructor">Choice.Pack</span></a> <a class="idref" href="mathcomp.algebra.vector.html#Vector.ClassDef.cT"><span class="id" title="variable">cT</span></a> <a class="idref" href="mathcomp.algebra.vector.html#Vector.xclass"><span class="id" title="abbreviation">xclass</span></a> <a class="idref" href="mathcomp.algebra.vector.html#Vector.ClassDef.xT"><span class="id" title="variable">xT</span></a>.<br/> +<span class="id" title="keyword">Definition</span> <a name="Vector.zmodType"><span class="id" title="definition">zmodType</span></a> := @<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Zmodule.Pack"><span class="id" title="constructor">GRing.Zmodule.Pack</span></a> <a class="idref" href="mathcomp.algebra.vector.html#Vector.ClassDef.cT"><span class="id" title="variable">cT</span></a> <a class="idref" href="mathcomp.algebra.vector.html#Vector.xclass"><span class="id" title="abbreviation">xclass</span></a> <a class="idref" href="mathcomp.algebra.vector.html#Vector.ClassDef.xT"><span class="id" title="variable">xT</span></a>.<br/> +<span class="id" title="keyword">Definition</span> <a name="Vector.lmodType"><span class="id" title="definition">lmodType</span></a> := @<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Lmodule.Pack"><span class="id" title="constructor">GRing.Lmodule.Pack</span></a> <a class="idref" href="mathcomp.algebra.vector.html#Vector.ClassDef.R"><span class="id" title="variable">R</span></a> <a class="idref" href="mathcomp.algebra.vector.html#Vector.ClassDef.phR"><span class="id" title="variable">phR</span></a> <a class="idref" href="mathcomp.algebra.vector.html#Vector.ClassDef.cT"><span class="id" title="variable">cT</span></a> <a class="idref" href="mathcomp.algebra.vector.html#Vector.xclass"><span class="id" title="abbreviation">xclass</span></a> <a class="idref" href="mathcomp.algebra.vector.html#Vector.ClassDef.xT"><span class="id" title="variable">xT</span></a>.<br/> + +<br/> +<span class="id" title="keyword">End</span> <a class="idref" href="mathcomp.algebra.vector.html#Vector.ClassDef"><span class="id" title="section">ClassDef</span></a>.<br/> +<span class="id" title="keyword">Notation</span> <a name="Vector.axiom"><span class="id" title="abbreviation">axiom</span></a> <span class="id" title="var">n</span> <span class="id" title="var">V</span> := (<a class="idref" href="mathcomp.algebra.vector.html#Vector.axiom_def"><span class="id" title="definition">axiom_def</span></a> <span class="id" title="var">n</span> (<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssreflect.html#Phant"><span class="id" title="constructor">Phant</span></a> <span class="id" title="var">V</span>)).<br/> + +<br/> +<span class="id" title="keyword">Section</span> <a name="Vector.OtherDefs"><span class="id" title="section">OtherDefs</span></a>.<br/> +<span class="id" title="keyword">Inductive</span> <a name="Vector.space"><span class="id" title="inductive">space</span></a> (<span class="id" title="var">K</span> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Field.Exports.fieldType"><span class="id" title="abbreviation">fieldType</span></a>) (<span class="id" title="var">vT</span> : <a class="idref" href="mathcomp.algebra.vector.html#Vector.type"><span class="id" title="record">type</span></a> (<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssreflect.html#Phant"><span class="id" title="constructor">Phant</span></a> <a class="idref" href="mathcomp.algebra.vector.html#K"><span class="id" title="variable">K</span></a>)) (<span class="id" title="var">phV</span> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssreflect.html#phant"><span class="id" title="inductive">phant</span></a> <a class="idref" href="mathcomp.algebra.vector.html#vT"><span class="id" title="variable">vT</span></a>) :=<br/> + <a name="Vector.Space"><span class="id" title="constructor">Space</span></a> (<span class="id" title="var">mx</span> : <a class="idref" href="mathcomp.algebra.matrix.html#d837c1a28d718b1ce93b8aa0ad2f20fe"><span class="id" title="notation">'</span></a><a class="idref" href="mathcomp.algebra.matrix.html#d837c1a28d718b1ce93b8aa0ad2f20fe"><span class="id" title="notation">M</span></a><a class="idref" href="mathcomp.algebra.matrix.html#d837c1a28d718b1ce93b8aa0ad2f20fe"><span class="id" title="notation">[</span></a><a class="idref" href="mathcomp.algebra.vector.html#K"><span class="id" title="variable">K</span></a><a class="idref" href="mathcomp.algebra.matrix.html#d837c1a28d718b1ce93b8aa0ad2f20fe"><span class="id" title="notation">]</span></a><a class="idref" href="mathcomp.algebra.matrix.html#d837c1a28d718b1ce93b8aa0ad2f20fe"><span class="id" title="notation">_vT</span></a>) & <a class="idref" href="mathcomp.algebra.mxalgebra.html#d5ec63f878af68490dd200946b5fc43e"><span class="id" title="notation"><<</span></a><a class="idref" href="mathcomp.algebra.vector.html#mx"><span class="id" title="variable">mx</span></a><a class="idref" href="mathcomp.algebra.mxalgebra.html#d5ec63f878af68490dd200946b5fc43e"><span class="id" title="notation">>></span></a>%<span class="id" title="var">MS</span> <a class="idref" href="mathcomp.ssreflect.eqtype.html#17d28d004d0863cb022d4ce832ddaaae"><span class="id" title="notation">==</span></a> <a class="idref" href="mathcomp.algebra.vector.html#mx"><span class="id" title="variable">mx</span></a>.<br/> +<span class="id" title="keyword">Inductive</span> <a name="Vector.hom"><span class="id" title="inductive">hom</span></a> (<span class="id" title="var">R</span> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Ring.Exports.ringType"><span class="id" title="abbreviation">ringType</span></a>) (<span class="id" title="var">vT</span> <span class="id" title="var">wT</span> : <a class="idref" href="mathcomp.algebra.vector.html#Vector.type"><span class="id" title="record">type</span></a> (<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssreflect.html#Phant"><span class="id" title="constructor">Phant</span></a> <a class="idref" href="mathcomp.algebra.vector.html#R"><span class="id" title="variable">R</span></a>)) :=<br/> + <a name="Vector.Hom"><span class="id" title="constructor">Hom</span></a> <span class="id" title="keyword">of</span> <a class="idref" href="mathcomp.algebra.matrix.html#e36c289fb249221b43b9c978a67340fb"><span class="id" title="notation">'</span></a><a class="idref" href="mathcomp.algebra.matrix.html#e36c289fb249221b43b9c978a67340fb"><span class="id" title="notation">M</span></a><a class="idref" href="mathcomp.algebra.matrix.html#e36c289fb249221b43b9c978a67340fb"><span class="id" title="notation">[</span></a><a class="idref" href="mathcomp.algebra.vector.html#R"><span class="id" title="variable">R</span></a><a class="idref" href="mathcomp.algebra.matrix.html#e36c289fb249221b43b9c978a67340fb"><span class="id" title="notation">]</span></a><a class="idref" href="mathcomp.algebra.matrix.html#e36c289fb249221b43b9c978a67340fb"><span class="id" title="notation">_</span></a><a class="idref" href="mathcomp.algebra.matrix.html#e36c289fb249221b43b9c978a67340fb"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.vector.html#vT"><span class="id" title="variable">vT</span></a><a class="idref" href="mathcomp.algebra.matrix.html#e36c289fb249221b43b9c978a67340fb"><span class="id" title="notation">,</span></a> <a class="idref" href="mathcomp.algebra.vector.html#wT"><span class="id" title="variable">wT</span></a><a class="idref" href="mathcomp.algebra.matrix.html#e36c289fb249221b43b9c978a67340fb"><span class="id" title="notation">)</span></a>.<br/> +<span class="id" title="keyword">End</span> <a class="idref" href="mathcomp.algebra.vector.html#Vector.OtherDefs"><span class="id" title="section">OtherDefs</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Module</span> <span class="id" title="keyword">Import</span> <a name="Vector.Exports"><span class="id" title="module">Exports</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Coercion</span> <a class="idref" href="mathcomp.algebra.vector.html#Vector.base"><span class="id" title="projection">base</span></a> <a class="idref" href="mathcomp.algebra.vector.html#Vector.base"><span class="id" title="projection">:</span></a> <a class="idref" href="mathcomp.algebra.vector.html#Vector.base"><span class="id" title="projection">class_of</span></a> <a class="idref" href="mathcomp.algebra.vector.html#Vector.base"><span class="id" title="projection">>-></span></a> <a class="idref" href="mathcomp.algebra.vector.html#Vector.base"><span class="id" title="projection">GRing.Lmodule.class_of</span></a>.<br/> +<span class="id" title="keyword">Coercion</span> <a class="idref" href="mathcomp.algebra.vector.html#Vector.mixin"><span class="id" title="projection">mixin</span></a> <a class="idref" href="mathcomp.algebra.vector.html#Vector.mixin"><span class="id" title="projection">:</span></a> <a class="idref" href="mathcomp.algebra.vector.html#Vector.mixin"><span class="id" title="projection">class_of</span></a> <a class="idref" href="mathcomp.algebra.vector.html#Vector.mixin"><span class="id" title="projection">>-></span></a> <a class="idref" href="mathcomp.algebra.vector.html#Vector.mixin"><span class="id" title="projection">mixin_of</span></a>.<br/> +<span class="id" title="keyword">Coercion</span> <a class="idref" href="mathcomp.algebra.vector.html#Vector.sort"><span class="id" title="projection">sort</span></a> <a class="idref" href="mathcomp.algebra.vector.html#Vector.sort"><span class="id" title="projection">:</span></a> <a class="idref" href="mathcomp.algebra.vector.html#Vector.sort"><span class="id" title="projection">type</span></a> <a class="idref" href="mathcomp.algebra.vector.html#Vector.sort"><span class="id" title="projection">>-></span></a> <a class="idref" href="mathcomp.algebra.vector.html#Vector.sort"><span class="id" title="projection">Sortclass</span></a>.<br/> +<span class="id" title="keyword">Coercion</span> <a class="idref" href="mathcomp.algebra.vector.html#Vector.eqType"><span class="id" title="definition">eqType</span></a><a class="idref" href="mathcomp.algebra.vector.html#Vector.eqType"><span class="id" title="definition">:</span></a> <a class="idref" href="mathcomp.algebra.vector.html#Vector.eqType"><span class="id" title="definition">type</span></a> <a class="idref" href="mathcomp.algebra.vector.html#Vector.eqType"><span class="id" title="definition">>-></span></a> <a class="idref" href="mathcomp.algebra.vector.html#Vector.eqType"><span class="id" title="definition">Equality.type</span></a>.<br/> +<span class="id" title="keyword">Canonical</span> <span class="id" title="var">eqType</span>.<br/> +<span class="id" title="keyword">Coercion</span> <a class="idref" href="mathcomp.algebra.vector.html#Vector.choiceType"><span class="id" title="definition">choiceType</span></a><a class="idref" href="mathcomp.algebra.vector.html#Vector.choiceType"><span class="id" title="definition">:</span></a> <a class="idref" href="mathcomp.algebra.vector.html#Vector.choiceType"><span class="id" title="definition">type</span></a> <a class="idref" href="mathcomp.algebra.vector.html#Vector.choiceType"><span class="id" title="definition">>-></span></a> <a class="idref" href="mathcomp.algebra.vector.html#Vector.choiceType"><span class="id" title="definition">Choice.type</span></a>.<br/> +<span class="id" title="keyword">Canonical</span> <span class="id" title="var">choiceType</span>.<br/> +<span class="id" title="keyword">Coercion</span> <a class="idref" href="mathcomp.algebra.vector.html#Vector.zmodType"><span class="id" title="definition">zmodType</span></a><a class="idref" href="mathcomp.algebra.vector.html#Vector.zmodType"><span class="id" title="definition">:</span></a> <a class="idref" href="mathcomp.algebra.vector.html#Vector.zmodType"><span class="id" title="definition">type</span></a> <a class="idref" href="mathcomp.algebra.vector.html#Vector.zmodType"><span class="id" title="definition">>-></span></a> <a class="idref" href="mathcomp.algebra.vector.html#Vector.zmodType"><span class="id" title="definition">GRing.Zmodule.type</span></a>.<br/> +<span class="id" title="keyword">Canonical</span> <span class="id" title="var">zmodType</span>.<br/> +<span class="id" title="keyword">Coercion</span> <a class="idref" href="mathcomp.algebra.vector.html#Vector.lmodType"><span class="id" title="definition">lmodType</span></a><a class="idref" href="mathcomp.algebra.vector.html#Vector.lmodType"><span class="id" title="definition">:</span></a> <a class="idref" href="mathcomp.algebra.vector.html#Vector.lmodType"><span class="id" title="definition">type</span></a><a class="idref" href="mathcomp.algebra.vector.html#Vector.lmodType"><span class="id" title="definition">>-></span></a> <a class="idref" href="mathcomp.algebra.vector.html#Vector.lmodType"><span class="id" title="definition">GRing.Lmodule.type</span></a>.<br/> +<span class="id" title="keyword">Canonical</span> <span class="id" title="var">lmodType</span>.<br/> +<span class="id" title="keyword">Notation</span> <a name="Vector.Exports.vectType"><span class="id" title="abbreviation">vectType</span></a> <span class="id" title="var">R</span> := (@<a class="idref" href="mathcomp.algebra.vector.html#Vector.type"><span class="id" title="record">type</span></a> <span class="id" title="var">_</span> (<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssreflect.html#Phant"><span class="id" title="constructor">Phant</span></a> <span class="id" title="var">R</span>)).<br/> +<span class="id" title="keyword">Notation</span> <a name="Vector.Exports.VectType"><span class="id" title="abbreviation">VectType</span></a> <span class="id" title="var">R</span> <span class="id" title="var">V</span> <span class="id" title="var">mV</span> :=<br/> + (@<a class="idref" href="mathcomp.algebra.vector.html#Vector.pack"><span class="id" title="definition">pack</span></a> <span class="id" title="var">_</span> (<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssreflect.html#Phant"><span class="id" title="constructor">Phant</span></a> <span class="id" title="var">R</span>) <span class="id" title="var">V</span> <span class="id" title="var">_</span> <span class="id" title="var">mV</span> <span class="id" title="var">_</span> <span class="id" title="var">_</span> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#id"><span class="id" title="abbreviation">id</span></a> <span class="id" title="var">_</span> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#id"><span class="id" title="abbreviation">id</span></a>).<br/> +<span class="id" title="keyword">Notation</span> <a name="Vector.Exports.VectMixin"><span class="id" title="abbreviation">VectMixin</span></a> := <a class="idref" href="mathcomp.algebra.vector.html#Vector.Mixin"><span class="id" title="constructor">Mixin</span></a>.<br/> +<span class="id" title="keyword">Notation</span> <a name="6a96458df670751dbf6a4ab702b25400"><span class="id" title="notation">"</span></a>[ 'vectType' R 'of' T 'for' cT ]" := (@<a class="idref" href="mathcomp.algebra.vector.html#Vector.clone"><span class="id" title="definition">clone</span></a> <span class="id" title="var">_</span> (<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssreflect.html#Phant"><span class="id" title="constructor">Phant</span></a> <span class="id" title="var">R</span>) <span class="id" title="var">T</span> <span class="id" title="var">cT</span> <span class="id" title="var">_</span> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#idfun"><span class="id" title="abbreviation">idfun</span></a>)<br/> + (<span class="id" title="tactic">at</span> <span class="id" title="keyword">level</span> 0, <span class="id" title="var">format</span> "[ 'vectType' R 'of' T 'for' cT ]") : <span class="id" title="var">form_scope</span>.<br/> +<span class="id" title="keyword">Notation</span> <a name="204b3fccda7df2b23e9d96fbf111d67d"><span class="id" title="notation">"</span></a>[ 'vectType' R 'of' T ]" := (@<a class="idref" href="mathcomp.algebra.vector.html#Vector.clone"><span class="id" title="definition">clone</span></a> <span class="id" title="var">_</span> (<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssreflect.html#Phant"><span class="id" title="constructor">Phant</span></a> <span class="id" title="var">R</span>) <span class="id" title="var">T</span> <span class="id" title="var">_</span> <span class="id" title="var">_</span> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#idfun"><span class="id" title="abbreviation">idfun</span></a>)<br/> + (<span class="id" title="tactic">at</span> <span class="id" title="keyword">level</span> 0, <span class="id" title="var">format</span> "[ 'vectType' R 'of' T ]") : <span class="id" title="var">form_scope</span>.<br/> + +<br/> +<span class="id" title="keyword">Notation</span> <a name="ca0a177f6d6581a7f5199987cd7ee21c"><span class="id" title="notation">"</span></a>{ 'vspace' vT }" := (<a class="idref" href="mathcomp.algebra.vector.html#Vector.space"><span class="id" title="inductive">space</span></a> (<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssreflect.html#Phant"><span class="id" title="constructor">Phant</span></a> <span class="id" title="var">vT</span>)) : <span class="id" title="var">type_scope</span>.<br/> +<span class="id" title="keyword">Notation</span> <a name="83f0032a38b59483260ed68e0d6a1c56"><span class="id" title="notation">"</span></a>''Hom' ( aT , rT )" := (<a class="idref" href="mathcomp.algebra.vector.html#Vector.hom"><span class="id" title="inductive">hom</span></a> <span class="id" title="var">aT</span> <span class="id" title="var">rT</span>) : <span class="id" title="var">type_scope</span>.<br/> +<span class="id" title="keyword">Notation</span> <a name="f2977b5d91be916157fc34deec16772c"><span class="id" title="notation">"</span></a>''End' ( vT )" := (<a class="idref" href="mathcomp.algebra.vector.html#Vector.hom"><span class="id" title="inductive">hom</span></a> <span class="id" title="var">vT</span> <span class="id" title="var">vT</span>) : <span class="id" title="var">type_scope</span>.<br/> + +<br/> + +<br/> +<span class="id" title="keyword">Delimit</span> <span class="id" title="keyword">Scope</span> <span class="id" title="var">vspace_scope</span> <span class="id" title="keyword">with</span> <span class="id" title="var">VS</span>.<br/> +<span class="id" title="keyword">Delimit</span> <span class="id" title="keyword">Scope</span> <span class="id" title="var">lfun_scope</span> <span class="id" title="keyword">with</span> <span class="id" title="var">VF</span>.<br/> + +<br/> +<span class="id" title="keyword">End</span> <a class="idref" href="mathcomp.algebra.vector.html#Vector.Exports"><span class="id" title="module">Exports</span></a>.<br/> + +<br/> +</div> + +<div class="doc"> + The contents of this module exposes the matrix encodings, and should + therefore not be used outside of the vector library implementation. +</div> +<div class="code"> +<span class="id" title="keyword">Module</span> <a name="Vector.InternalTheory"><span class="id" title="module">InternalTheory</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Section</span> <a name="Vector.InternalTheory.Iso"><span class="id" title="section">Iso</span></a>.<br/> +<span class="id" title="keyword">Variables</span> (<a name="Vector.InternalTheory.Iso.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="Vector.InternalTheory.Iso.vT"><span class="id" title="variable">vT</span></a> <a name="Vector.InternalTheory.Iso.rT"><span class="id" title="variable">rT</span></a> : <a class="idref" href="mathcomp.algebra.vector.html#Vector.Exports.vectType"><span class="id" title="abbreviation">vectType</span></a> <a class="idref" href="mathcomp.algebra.vector.html#R"><span class="id" title="variable">R</span></a>).<br/> + +<br/> +<span class="id" title="keyword">Fact</span> <a name="Vector.InternalTheory.v2r_subproof"><span class="id" title="lemma">v2r_subproof</span></a> : <a class="idref" href="mathcomp.algebra.vector.html#Vector.axiom"><span class="id" title="abbreviation">axiom</span></a> <a class="idref" href="mathcomp.algebra.vector.html#Vector.InternalTheory.Iso.vT"><span class="id" title="variable">vT</span></a> <a class="idref" href="mathcomp.algebra.vector.html#Vector.InternalTheory.Iso.vT"><span class="id" title="variable">vT</span></a>. <br/> +<span class="id" title="keyword">Definition</span> <a name="Vector.InternalTheory.v2r"><span class="id" title="definition">v2r</span></a> := <a class="idref" href="mathcomp.ssreflect.eqtype.html#s2val"><span class="id" title="definition">s2val</span></a> <a class="idref" href="mathcomp.algebra.vector.html#Vector.InternalTheory.v2r_subproof"><span class="id" title="lemma">v2r_subproof</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Let</span> <a name="Vector.InternalTheory.Iso.v2r_bij"><span class="id" title="variable">v2r_bij</span></a> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#bijective"><span class="id" title="inductive">bijective</span></a> <a class="idref" href="mathcomp.algebra.vector.html#Vector.InternalTheory.v2r"><span class="id" title="definition">v2r</span></a> := <a class="idref" href="mathcomp.ssreflect.eqtype.html#s2valP'"><span class="id" title="lemma">s2valP'</span></a> <a class="idref" href="mathcomp.algebra.vector.html#Vector.InternalTheory.v2r_subproof"><span class="id" title="lemma">v2r_subproof</span></a>.<br/> +<span class="id" title="keyword">Fact</span> <a name="Vector.InternalTheory.r2v_subproof"><span class="id" title="lemma">r2v_subproof</span></a> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Specif.html#5b63cb9ed0fed82566685c66e56592e4"><span class="id" title="notation">{</span></a><span class="id" title="var">r2v</span> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Specif.html#5b63cb9ed0fed82566685c66e56592e4"><span class="id" title="notation">|</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#cancel"><span class="id" title="definition">cancel</span></a> <a class="idref" href="mathcomp.algebra.vector.html#r2v"><span class="id" title="variable">r2v</span></a> <a class="idref" href="mathcomp.algebra.vector.html#Vector.InternalTheory.v2r"><span class="id" title="definition">v2r</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Specif.html#5b63cb9ed0fed82566685c66e56592e4"><span class="id" title="notation">}</span></a>.<br/> +<span class="id" title="keyword">Definition</span> <a name="Vector.InternalTheory.r2v"><span class="id" title="definition">r2v</span></a> := <a class="idref" href="mathcomp.ssreflect.eqtype.html#sval"><span class="id" title="abbreviation">sval</span></a> <a class="idref" href="mathcomp.algebra.vector.html#Vector.InternalTheory.r2v_subproof"><span class="id" title="lemma">r2v_subproof</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="Vector.InternalTheory.r2vK"><span class="id" title="lemma">r2vK</span></a> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#cancel"><span class="id" title="definition">cancel</span></a> <a class="idref" href="mathcomp.algebra.vector.html#Vector.InternalTheory.r2v"><span class="id" title="definition">r2v</span></a> <a class="idref" href="mathcomp.algebra.vector.html#Vector.InternalTheory.v2r"><span class="id" title="definition">v2r</span></a>. <br/> +<span class="id" title="keyword">Lemma</span> <a name="Vector.InternalTheory.r2v_inj"><span class="id" title="lemma">r2v_inj</span></a> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#injective"><span class="id" title="definition">injective</span></a> <a class="idref" href="mathcomp.algebra.vector.html#Vector.InternalTheory.r2v"><span class="id" title="definition">r2v</span></a>. <br/> +<span class="id" title="keyword">Lemma</span> <a name="Vector.InternalTheory.v2rK"><span class="id" title="lemma">v2rK</span></a> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#cancel"><span class="id" title="definition">cancel</span></a> <a class="idref" href="mathcomp.algebra.vector.html#Vector.InternalTheory.v2r"><span class="id" title="definition">v2r</span></a> <a class="idref" href="mathcomp.algebra.vector.html#Vector.InternalTheory.r2v"><span class="id" title="definition">r2v</span></a>. <br/> +<span class="id" title="keyword">Lemma</span> <a name="Vector.InternalTheory.v2r_inj"><span class="id" title="lemma">v2r_inj</span></a> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#injective"><span class="id" title="definition">injective</span></a> <a class="idref" href="mathcomp.algebra.vector.html#Vector.InternalTheory.v2r"><span class="id" title="definition">v2r</span></a>. <br/> + +<br/> +<span class="id" title="keyword">Canonical</span> <span class="id" title="var">v2r_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.ssreflect.eqtype.html#s2valP"><span class="id" title="lemma">s2valP</span></a> <a class="idref" href="mathcomp.algebra.vector.html#Vector.InternalTheory.v2r_subproof"><span class="id" title="lemma">v2r_subproof</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssreflect.html#4509b22bf26e3d6d771897e22bd8bc8f"><span class="id" title="notation">:</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Linear.Exports.linear"><span class="id" title="abbreviation">linear</span></a> <a class="idref" href="mathcomp.algebra.vector.html#Vector.InternalTheory.v2r"><span class="id" title="definition">v2r</span></a>).<br/> +<span class="id" title="keyword">Canonical</span> <span class="id" title="var">r2v_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.ssralg.html#GRing.Theory.can2_linear"><span class="id" title="definition">can2_linear</span></a> <a class="idref" href="mathcomp.algebra.vector.html#Vector.InternalTheory.v2rK"><span class="id" title="lemma">v2rK</span></a> <a class="idref" href="mathcomp.algebra.vector.html#Vector.InternalTheory.r2vK"><span class="id" title="lemma">r2vK</span></a>).<br/> +<span class="id" title="keyword">End</span> <a class="idref" href="mathcomp.algebra.vector.html#Vector.InternalTheory.Iso"><span class="id" title="section">Iso</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Section</span> <a name="Vector.InternalTheory.Vspace"><span class="id" title="section">Vspace</span></a>.<br/> +<span class="id" title="keyword">Variables</span> (<a name="Vector.InternalTheory.Vspace.K"><span class="id" title="variable">K</span></a> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Field.Exports.fieldType"><span class="id" title="abbreviation">fieldType</span></a>) (<a name="Vector.InternalTheory.Vspace.vT"><span class="id" title="variable">vT</span></a> : <a class="idref" href="mathcomp.algebra.vector.html#Vector.Exports.vectType"><span class="id" title="abbreviation">vectType</span></a> <a class="idref" href="mathcomp.algebra.vector.html#K"><span class="id" title="variable">K</span></a>).<br/> + +<br/> +<span class="id" title="keyword">Definition</span> <a name="Vector.InternalTheory.b2mx"><span class="id" title="definition">b2mx</span></a> <span class="id" title="var">n</span> (<span class="id" title="var">X</span> : <a class="idref" href="mathcomp.algebra.vector.html#n"><span class="id" title="variable">n</span></a><a class="idref" href="mathcomp.ssreflect.tuple.html#d8866adbd4a602b7b4cc275d73486ace"><span class="id" title="notation">.-</span></a><a class="idref" href="mathcomp.ssreflect.tuple.html#d8866adbd4a602b7b4cc275d73486ace"><span class="id" title="notation">tuple</span></a> <a class="idref" href="mathcomp.algebra.vector.html#Vector.InternalTheory.Vspace.vT"><span class="id" title="variable">vT</span></a>) := <a class="idref" href="mathcomp.algebra.matrix.html#e284a17aae67e9e1847f9d0558653fbb"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.algebra.matrix.html#e284a17aae67e9e1847f9d0558653fbb"><span class="id" title="notation">matrix_i</span></a> <a class="idref" href="mathcomp.algebra.vector.html#Vector.InternalTheory.v2r"><span class="id" title="definition">v2r</span></a> (<a class="idref" href="mathcomp.ssreflect.tuple.html#tnth"><span class="id" title="definition">tnth</span></a> <a class="idref" href="mathcomp.algebra.vector.html#X"><span class="id" title="variable">X</span></a> <a class="idref" href="mathcomp.algebra.vector.html#i"><span class="id" title="variable">i</span></a>).<br/> +<span class="id" title="keyword">Lemma</span> <a name="Vector.InternalTheory.b2mxK"><span class="id" title="lemma">b2mxK</span></a> <span class="id" title="var">n</span> (<span class="id" title="var">X</span> : <a class="idref" href="mathcomp.algebra.vector.html#n"><span class="id" title="variable">n</span></a><a class="idref" href="mathcomp.ssreflect.tuple.html#d8866adbd4a602b7b4cc275d73486ace"><span class="id" title="notation">.-</span></a><a class="idref" href="mathcomp.ssreflect.tuple.html#d8866adbd4a602b7b4cc275d73486ace"><span class="id" title="notation">tuple</span></a> <a class="idref" href="mathcomp.algebra.vector.html#Vector.InternalTheory.Vspace.vT"><span class="id" title="variable">vT</span></a>) <span class="id" title="var">i</span> : <a class="idref" href="mathcomp.algebra.vector.html#Vector.InternalTheory.r2v"><span class="id" title="definition">r2v</span></a> (<a class="idref" href="mathcomp.algebra.matrix.html#row"><span class="id" title="definition">row</span></a> <a class="idref" href="mathcomp.algebra.vector.html#i"><span class="id" title="variable">i</span></a> (<a class="idref" href="mathcomp.algebra.vector.html#Vector.InternalTheory.b2mx"><span class="id" title="definition">b2mx</span></a> <a class="idref" href="mathcomp.algebra.vector.html#X"><span class="id" title="variable">X</span></a>)) <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.vector.html#X"><span class="id" title="variable">X</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#9625b440a0052f6dbfd015f5bb8b5125"><span class="id" title="notation">`</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#9625b440a0052f6dbfd015f5bb8b5125"><span class="id" title="notation">_i</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Definition</span> <a name="Vector.InternalTheory.vs2mx"><span class="id" title="definition">vs2mx</span></a> {<span class="id" title="var">phV</span>} (<span class="id" title="var">U</span> : @<a class="idref" href="mathcomp.algebra.vector.html#Vector.space"><span class="id" title="inductive">space</span></a> <a class="idref" href="mathcomp.algebra.vector.html#Vector.InternalTheory.Vspace.K"><span class="id" title="variable">K</span></a> <a class="idref" href="mathcomp.algebra.vector.html#Vector.InternalTheory.Vspace.vT"><span class="id" title="variable">vT</span></a> <a class="idref" href="mathcomp.algebra.vector.html#phV"><span class="id" title="variable">phV</span></a>) := <span class="id" title="keyword">let</span>: <a class="idref" href="mathcomp.algebra.vector.html#Vector.Space"><span class="id" title="constructor">Space</span></a> <span class="id" title="var">mx</span> <span class="id" title="var">_</span> := <a class="idref" href="mathcomp.algebra.vector.html#U"><span class="id" title="variable">U</span></a> <span class="id" title="tactic">in</span> <span class="id" title="var">mx</span>.<br/> +<span class="id" title="keyword">Lemma</span> <a name="Vector.InternalTheory.gen_vs2mx"><span class="id" title="lemma">gen_vs2mx</span></a> (<span class="id" title="var">U</span> : <a class="idref" href="mathcomp.algebra.vector.html#ca0a177f6d6581a7f5199987cd7ee21c"><span class="id" title="notation">{</span></a><a class="idref" href="mathcomp.algebra.vector.html#ca0a177f6d6581a7f5199987cd7ee21c"><span class="id" title="notation">vspace</span></a> <a class="idref" href="mathcomp.algebra.vector.html#Vector.InternalTheory.Vspace.vT"><span class="id" title="variable">vT</span></a><a class="idref" href="mathcomp.algebra.vector.html#ca0a177f6d6581a7f5199987cd7ee21c"><span class="id" title="notation">}</span></a>) : <a class="idref" href="mathcomp.algebra.mxalgebra.html#d5ec63f878af68490dd200946b5fc43e"><span class="id" title="notation"><<</span></a><a class="idref" href="mathcomp.algebra.vector.html#Vector.InternalTheory.vs2mx"><span class="id" title="definition">vs2mx</span></a> <a class="idref" href="mathcomp.algebra.vector.html#U"><span class="id" title="variable">U</span></a><a class="idref" href="mathcomp.algebra.mxalgebra.html#d5ec63f878af68490dd200946b5fc43e"><span class="id" title="notation">>></span></a>%<span class="id" title="var">MS</span> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.vector.html#Vector.InternalTheory.vs2mx"><span class="id" title="definition">vs2mx</span></a> <a class="idref" href="mathcomp.algebra.vector.html#U"><span class="id" title="variable">U</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Fact</span> <a name="Vector.InternalTheory.mx2vs_subproof"><span class="id" title="lemma">mx2vs_subproof</span></a> <span class="id" title="var">m</span> (<span class="id" title="var">A</span> : <a class="idref" href="mathcomp.algebra.matrix.html#e36c289fb249221b43b9c978a67340fb"><span class="id" title="notation">'</span></a><a class="idref" href="mathcomp.algebra.matrix.html#e36c289fb249221b43b9c978a67340fb"><span class="id" title="notation">M</span></a><a class="idref" href="mathcomp.algebra.matrix.html#e36c289fb249221b43b9c978a67340fb"><span class="id" title="notation">[</span></a><a class="idref" href="mathcomp.algebra.vector.html#Vector.InternalTheory.Vspace.K"><span class="id" title="variable">K</span></a><a class="idref" href="mathcomp.algebra.matrix.html#e36c289fb249221b43b9c978a67340fb"><span class="id" title="notation">]</span></a><a class="idref" href="mathcomp.algebra.matrix.html#e36c289fb249221b43b9c978a67340fb"><span class="id" title="notation">_</span></a><a class="idref" href="mathcomp.algebra.matrix.html#e36c289fb249221b43b9c978a67340fb"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.vector.html#m"><span class="id" title="variable">m</span></a><a class="idref" href="mathcomp.algebra.matrix.html#e36c289fb249221b43b9c978a67340fb"><span class="id" title="notation">,</span></a> <a class="idref" href="mathcomp.algebra.vector.html#Vector.InternalTheory.Vspace.vT"><span class="id" title="variable">vT</span></a><a class="idref" href="mathcomp.algebra.matrix.html#e36c289fb249221b43b9c978a67340fb"><span class="id" title="notation">)</span></a>) : <a class="idref" href="mathcomp.algebra.mxalgebra.html#d5ec63f878af68490dd200946b5fc43e"><span class="id" title="notation"><<(<<</span></a><a class="idref" href="mathcomp.algebra.vector.html#A"><span class="id" title="variable">A</span></a><a class="idref" href="mathcomp.algebra.mxalgebra.html#d5ec63f878af68490dd200946b5fc43e"><span class="id" title="notation">>>)>></span></a>%<span class="id" title="var">MS</span> <a class="idref" href="mathcomp.ssreflect.eqtype.html#17d28d004d0863cb022d4ce832ddaaae"><span class="id" title="notation">==</span></a> <a class="idref" href="mathcomp.algebra.mxalgebra.html#d5ec63f878af68490dd200946b5fc43e"><span class="id" title="notation"><<</span></a><a class="idref" href="mathcomp.algebra.vector.html#A"><span class="id" title="variable">A</span></a><a class="idref" href="mathcomp.algebra.mxalgebra.html#d5ec63f878af68490dd200946b5fc43e"><span class="id" title="notation">>></span></a>%<span class="id" title="var">MS</span>.<br/> + <span class="id" title="keyword">Definition</span> <a name="Vector.InternalTheory.mx2vs"><span class="id" title="definition">mx2vs</span></a> {<span class="id" title="var">m</span>} <span class="id" title="var">A</span> : <a class="idref" href="mathcomp.algebra.vector.html#ca0a177f6d6581a7f5199987cd7ee21c"><span class="id" title="notation">{</span></a><a class="idref" href="mathcomp.algebra.vector.html#ca0a177f6d6581a7f5199987cd7ee21c"><span class="id" title="notation">vspace</span></a> <a class="idref" href="mathcomp.algebra.vector.html#Vector.InternalTheory.Vspace.vT"><span class="id" title="variable">vT</span></a><a class="idref" href="mathcomp.algebra.vector.html#ca0a177f6d6581a7f5199987cd7ee21c"><span class="id" title="notation">}</span></a> := <a class="idref" href="mathcomp.algebra.vector.html#Vector.Space"><span class="id" title="constructor">Space</span></a> <span class="id" title="var">_</span> (@<a class="idref" href="mathcomp.algebra.vector.html#Vector.InternalTheory.mx2vs_subproof"><span class="id" title="lemma">mx2vs_subproof</span></a> <a class="idref" href="mathcomp.algebra.vector.html#m"><span class="id" title="variable">m</span></a> <a class="idref" href="mathcomp.algebra.vector.html#A"><span class="id" title="variable">A</span></a>).<br/> + +<br/> +<span class="id" title="keyword">Canonical</span> <span class="id" title="var">space_subType</span> := <a class="idref" href="mathcomp.ssreflect.eqtype.html#341c160c3e7b20d967b85d1852a7f89f"><span class="id" title="notation">[</span></a><a class="idref" href="mathcomp.ssreflect.eqtype.html#341c160c3e7b20d967b85d1852a7f89f"><span class="id" title="notation">subType</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#341c160c3e7b20d967b85d1852a7f89f"><span class="id" title="notation">for</span></a> @<a class="idref" href="mathcomp.algebra.vector.html#Vector.InternalTheory.vs2mx"><span class="id" title="definition">vs2mx</span></a> (<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssreflect.html#Phant"><span class="id" title="constructor">Phant</span></a> <a class="idref" href="mathcomp.algebra.vector.html#Vector.InternalTheory.Vspace.vT"><span class="id" title="variable">vT</span></a>)<a class="idref" href="mathcomp.ssreflect.eqtype.html#341c160c3e7b20d967b85d1852a7f89f"><span class="id" title="notation">]</span></a>.<br/> +<span class="id" title="keyword">Lemma</span> <a name="Vector.InternalTheory.vs2mxK"><span class="id" title="lemma">vs2mxK</span></a> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#cancel"><span class="id" title="definition">cancel</span></a> <a class="idref" href="mathcomp.algebra.vector.html#Vector.InternalTheory.vs2mx"><span class="id" title="definition">vs2mx</span></a> <a class="idref" href="mathcomp.algebra.vector.html#Vector.InternalTheory.mx2vs"><span class="id" title="definition">mx2vs</span></a>.<br/> + <span class="id" title="keyword">Lemma</span> <a name="Vector.InternalTheory.mx2vsK"><span class="id" title="lemma">mx2vsK</span></a> <span class="id" title="var">m</span> (<span class="id" title="var">M</span> : <a class="idref" href="mathcomp.algebra.matrix.html#cb37620352ad6b90a047a361359e2f04"><span class="id" title="notation">'</span></a><a class="idref" href="mathcomp.algebra.matrix.html#cb37620352ad6b90a047a361359e2f04"><span class="id" title="notation">M_</span></a><a class="idref" href="mathcomp.algebra.matrix.html#cb37620352ad6b90a047a361359e2f04"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.vector.html#m"><span class="id" title="variable">m</span></a><a class="idref" href="mathcomp.algebra.matrix.html#cb37620352ad6b90a047a361359e2f04"><span class="id" title="notation">,</span></a> <a class="idref" href="mathcomp.algebra.vector.html#Vector.InternalTheory.Vspace.vT"><span class="id" title="variable">vT</span></a><a class="idref" href="mathcomp.algebra.matrix.html#cb37620352ad6b90a047a361359e2f04"><span class="id" title="notation">)</span></a>) : (<a class="idref" href="mathcomp.algebra.vector.html#Vector.InternalTheory.vs2mx"><span class="id" title="definition">vs2mx</span></a> (<a class="idref" href="mathcomp.algebra.vector.html#Vector.InternalTheory.mx2vs"><span class="id" title="definition">mx2vs</span></a> <a class="idref" href="mathcomp.algebra.vector.html#M"><span class="id" title="variable">M</span></a>) <a class="idref" href="mathcomp.algebra.mxalgebra.html#996fe23bb3b2a56fc494fe9a0a3c2cd1"><span class="id" title="notation">:=:</span></a> <a class="idref" href="mathcomp.algebra.vector.html#M"><span class="id" title="variable">M</span></a>)%<span class="id" title="var">MS</span>.<br/> + <span class="id" title="keyword">End</span> <a class="idref" href="mathcomp.algebra.vector.html#Vector.InternalTheory.Vspace"><span class="id" title="section">Vspace</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Section</span> <a name="Vector.InternalTheory.Hom"><span class="id" title="section">Hom</span></a>.<br/> +<span class="id" title="keyword">Variables</span> (<a name="Vector.InternalTheory.Hom.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="Vector.InternalTheory.Hom.aT"><span class="id" title="variable">aT</span></a> <a name="Vector.InternalTheory.Hom.rT"><span class="id" title="variable">rT</span></a> : <a class="idref" href="mathcomp.algebra.vector.html#Vector.Exports.vectType"><span class="id" title="abbreviation">vectType</span></a> <a class="idref" href="mathcomp.algebra.vector.html#R"><span class="id" title="variable">R</span></a>).<br/> +<span class="id" title="keyword">Definition</span> <a name="Vector.InternalTheory.f2mx"><span class="id" title="definition">f2mx</span></a> (<span class="id" title="var">f</span> : <a class="idref" href="mathcomp.algebra.vector.html#83f0032a38b59483260ed68e0d6a1c56"><span class="id" title="notation">'</span></a><a class="idref" href="mathcomp.algebra.vector.html#83f0032a38b59483260ed68e0d6a1c56"><span class="id" title="notation">Hom</span></a><a class="idref" href="mathcomp.algebra.vector.html#83f0032a38b59483260ed68e0d6a1c56"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.vector.html#Vector.InternalTheory.Hom.aT"><span class="id" title="variable">aT</span></a><a class="idref" href="mathcomp.algebra.vector.html#83f0032a38b59483260ed68e0d6a1c56"><span class="id" title="notation">,</span></a> <a class="idref" href="mathcomp.algebra.vector.html#Vector.InternalTheory.Hom.rT"><span class="id" title="variable">rT</span></a><a class="idref" href="mathcomp.algebra.vector.html#83f0032a38b59483260ed68e0d6a1c56"><span class="id" title="notation">)</span></a>) := <span class="id" title="keyword">let</span>: <a class="idref" href="mathcomp.algebra.vector.html#Vector.Hom"><span class="id" title="constructor">Hom</span></a> <span class="id" title="var">A</span> := <a class="idref" href="mathcomp.algebra.vector.html#f"><span class="id" title="variable">f</span></a> <span class="id" title="tactic">in</span> <span class="id" title="var">A</span>.<br/> +<span class="id" title="keyword">Canonical</span> <span class="id" title="var">hom_subType</span> := <a class="idref" href="mathcomp.ssreflect.eqtype.html#d716e206e5129c6b3a60f0f640eaaeb0"><span class="id" title="notation">[</span></a><a class="idref" href="mathcomp.ssreflect.eqtype.html#d716e206e5129c6b3a60f0f640eaaeb0"><span class="id" title="notation">newType</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#d716e206e5129c6b3a60f0f640eaaeb0"><span class="id" title="notation">for</span></a> <a class="idref" href="mathcomp.algebra.vector.html#Vector.InternalTheory.f2mx"><span class="id" title="definition">f2mx</span></a><a class="idref" href="mathcomp.ssreflect.eqtype.html#d716e206e5129c6b3a60f0f640eaaeb0"><span class="id" title="notation">]</span></a>.<br/> +<span class="id" title="keyword">End</span> <a class="idref" href="mathcomp.algebra.vector.html#Vector.InternalTheory.Hom"><span class="id" title="section">Hom</span></a>.<br/> + +<br/> + +<br/> +<span class="id" title="keyword">End</span> <a class="idref" href="mathcomp.algebra.vector.html#Vector.InternalTheory"><span class="id" title="module">InternalTheory</span></a>.<br/> + +<br/> +<span class="id" title="keyword">End</span> <a class="idref" href="mathcomp.algebra.vector.html#Vector"><span class="id" title="module">Vector</span></a>.<br/> +<span class="id" title="keyword">Export</span> <span class="id" title="var">Vector.Exports</span>.<br/> +<span class="id" title="keyword">Import</span> <span class="id" title="var">Vector.InternalTheory</span>.<br/> + +<br/> +<span class="id" title="keyword">Section</span> <a name="VspaceDefs"><span class="id" title="section">VspaceDefs</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Variables</span> (<a name="VspaceDefs.K"><span class="id" title="variable">K</span></a> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Field.Exports.fieldType"><span class="id" title="abbreviation">fieldType</span></a>) (<a name="VspaceDefs.vT"><span class="id" title="variable">vT</span></a> : <a class="idref" href="mathcomp.algebra.vector.html#vectType"><span class="id" title="abbreviation">vectType</span></a> <a class="idref" href="mathcomp.algebra.vector.html#K"><span class="id" title="variable">K</span></a>).<br/> +<span class="id" title="keyword">Implicit</span> <span class="id" title="keyword">Types</span> (<span class="id" title="var">u</span> : <a class="idref" href="mathcomp.algebra.vector.html#VspaceDefs.vT"><span class="id" title="variable">vT</span></a>) (<span class="id" title="var">X</span> : <a class="idref" href="mathcomp.ssreflect.seq.html#seq"><span class="id" title="abbreviation">seq</span></a> <a class="idref" href="mathcomp.algebra.vector.html#VspaceDefs.vT"><span class="id" title="variable">vT</span></a>) (<span class="id" title="var">U</span> <span class="id" title="var">V</span> : <a class="idref" href="mathcomp.algebra.vector.html#ca0a177f6d6581a7f5199987cd7ee21c"><span class="id" title="notation">{</span></a><a class="idref" href="mathcomp.algebra.vector.html#ca0a177f6d6581a7f5199987cd7ee21c"><span class="id" title="notation">vspace</span></a> <a class="idref" href="mathcomp.algebra.vector.html#VspaceDefs.vT"><span class="id" title="variable">vT</span></a><a class="idref" href="mathcomp.algebra.vector.html#ca0a177f6d6581a7f5199987cd7ee21c"><span class="id" title="notation">}</span></a>).<br/> + +<br/> +<span class="id" title="keyword">Definition</span> <a name="space_eqMixin"><span class="id" title="definition">space_eqMixin</span></a> := <span class="id" title="keyword">Eval</span> <span class="id" title="tactic">hnf</span> <span class="id" title="tactic">in</span> <a class="idref" href="mathcomp.ssreflect.eqtype.html#4bc2d2dce12edef0fb9c71d4a902ae5d"><span class="id" title="notation">[</span></a><a class="idref" href="mathcomp.ssreflect.eqtype.html#4bc2d2dce12edef0fb9c71d4a902ae5d"><span class="id" title="notation">eqMixin</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#4bc2d2dce12edef0fb9c71d4a902ae5d"><span class="id" title="notation">of</span></a> <a class="idref" href="mathcomp.algebra.vector.html#ca0a177f6d6581a7f5199987cd7ee21c"><span class="id" title="notation">{</span></a><a class="idref" href="mathcomp.algebra.vector.html#ca0a177f6d6581a7f5199987cd7ee21c"><span class="id" title="notation">vspace</span></a> <a class="idref" href="mathcomp.algebra.vector.html#VspaceDefs.vT"><span class="id" title="variable">vT</span></a><a class="idref" href="mathcomp.algebra.vector.html#ca0a177f6d6581a7f5199987cd7ee21c"><span class="id" title="notation">}</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#4bc2d2dce12edef0fb9c71d4a902ae5d"><span class="id" title="notation">by</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#4bc2d2dce12edef0fb9c71d4a902ae5d"><span class="id" title="notation"><:]</span></a>.<br/> +<span class="id" title="keyword">Canonical</span> <span class="id" title="var">space_eqType</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.vector.html#ca0a177f6d6581a7f5199987cd7ee21c"><span class="id" title="notation">{</span></a><a class="idref" href="mathcomp.algebra.vector.html#ca0a177f6d6581a7f5199987cd7ee21c"><span class="id" title="notation">vspace</span></a> <a class="idref" href="mathcomp.algebra.vector.html#VspaceDefs.vT"><span class="id" title="variable">vT</span></a><a class="idref" href="mathcomp.algebra.vector.html#ca0a177f6d6581a7f5199987cd7ee21c"><span class="id" title="notation">}</span></a> <a class="idref" href="mathcomp.algebra.vector.html#space_eqMixin"><span class="id" title="definition">space_eqMixin</span></a>.<br/> +<span class="id" title="keyword">Definition</span> <a name="space_choiceMixin"><span class="id" title="definition">space_choiceMixin</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.choice.html#6c8b2d90ff1fbb8e9926bbf12495cb70"><span class="id" title="notation">[</span></a><a class="idref" href="mathcomp.ssreflect.choice.html#6c8b2d90ff1fbb8e9926bbf12495cb70"><span class="id" title="notation">choiceMixin</span></a> <a class="idref" href="mathcomp.ssreflect.choice.html#6c8b2d90ff1fbb8e9926bbf12495cb70"><span class="id" title="notation">of</span></a> <a class="idref" href="mathcomp.algebra.vector.html#ca0a177f6d6581a7f5199987cd7ee21c"><span class="id" title="notation">{</span></a><a class="idref" href="mathcomp.algebra.vector.html#ca0a177f6d6581a7f5199987cd7ee21c"><span class="id" title="notation">vspace</span></a> <a class="idref" href="mathcomp.algebra.vector.html#VspaceDefs.vT"><span class="id" title="variable">vT</span></a><a class="idref" href="mathcomp.algebra.vector.html#ca0a177f6d6581a7f5199987cd7ee21c"><span class="id" title="notation">}</span></a> <a class="idref" href="mathcomp.ssreflect.choice.html#6c8b2d90ff1fbb8e9926bbf12495cb70"><span class="id" title="notation">by</span></a> <a class="idref" href="mathcomp.ssreflect.choice.html#6c8b2d90ff1fbb8e9926bbf12495cb70"><span class="id" title="notation"><:]</span></a>.<br/> +<span class="id" title="keyword">Canonical</span> <span class="id" title="var">space_choiceType</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.vector.html#ca0a177f6d6581a7f5199987cd7ee21c"><span class="id" title="notation">{</span></a><a class="idref" href="mathcomp.algebra.vector.html#ca0a177f6d6581a7f5199987cd7ee21c"><span class="id" title="notation">vspace</span></a> <a class="idref" href="mathcomp.algebra.vector.html#VspaceDefs.vT"><span class="id" title="variable">vT</span></a><a class="idref" href="mathcomp.algebra.vector.html#ca0a177f6d6581a7f5199987cd7ee21c"><span class="id" title="notation">}</span></a> <a class="idref" href="mathcomp.algebra.vector.html#space_choiceMixin"><span class="id" title="definition">space_choiceMixin</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Definition</span> <a name="dimv"><span class="id" title="definition">dimv</span></a> <span class="id" title="var">U</span> := <a class="idref" href="mathcomp.algebra.mxalgebra.html#2841ad707bf668c5fe86250d8f31a3f6"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.algebra.mxalgebra.html#2841ad707bf668c5fe86250d8f31a3f6"><span class="id" title="notation">rank</span></a> <a class="idref" href="mathcomp.algebra.mxalgebra.html#2841ad707bf668c5fe86250d8f31a3f6"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.vector.html#vs2mx"><span class="id" title="definition">vs2mx</span></a> <a class="idref" href="mathcomp.algebra.vector.html#U"><span class="id" title="variable">U</span></a><a class="idref" href="mathcomp.algebra.mxalgebra.html#2841ad707bf668c5fe86250d8f31a3f6"><span class="id" title="notation">)</span></a>.<br/> +<span class="id" title="keyword">Definition</span> <a name="subsetv"><span class="id" title="definition">subsetv</span></a> <span class="id" title="var">U</span> <span class="id" title="var">V</span> := (<a class="idref" href="mathcomp.algebra.vector.html#vs2mx"><span class="id" title="definition">vs2mx</span></a> <a class="idref" href="mathcomp.algebra.vector.html#U"><span class="id" title="variable">U</span></a> <a class="idref" href="mathcomp.algebra.mxalgebra.html#a83de2bef5d483337931b658f4451b59"><span class="id" title="notation">≤</span></a> <a class="idref" href="mathcomp.algebra.vector.html#vs2mx"><span class="id" title="definition">vs2mx</span></a> <a class="idref" href="mathcomp.algebra.vector.html#V"><span class="id" title="variable">V</span></a>)%<span class="id" title="var">MS</span>.<br/> +<span class="id" title="keyword">Definition</span> <a name="vline"><span class="id" title="definition">vline</span></a> <span class="id" title="var">u</span> := <a class="idref" href="mathcomp.algebra.vector.html#mx2vs"><span class="id" title="definition">mx2vs</span></a> (<a class="idref" href="mathcomp.algebra.vector.html#v2r"><span class="id" title="definition">v2r</span></a> <a class="idref" href="mathcomp.algebra.vector.html#u"><span class="id" title="variable">u</span></a>).<br/> + +<br/> +</div> + +<div class="doc"> + Vspace membership is defined as line inclusion. +</div> +<div class="code"> +<span class="id" title="keyword">Definition</span> <a name="pred_of_vspace"><span class="id" title="definition">pred_of_vspace</span></a> <span class="id" title="var">phV</span> (<span class="id" title="var">U</span> : <a class="idref" href="mathcomp.algebra.vector.html#space"><span class="id" title="inductive">Vector.space</span></a> <a class="idref" href="mathcomp.algebra.vector.html#phV"><span class="id" title="variable">phV</span></a>) : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#pred_class"><span class="id" title="abbreviation">pred_class</span></a> :=<br/> + <span class="id" title="keyword">fun</span> <span class="id" title="var">v</span> ⇒ (<a class="idref" href="mathcomp.algebra.vector.html#vs2mx"><span class="id" title="definition">vs2mx</span></a> (<a class="idref" href="mathcomp.algebra.vector.html#vline"><span class="id" title="definition">vline</span></a> <a class="idref" href="mathcomp.algebra.vector.html#v"><span class="id" title="variable">v</span></a>) <a class="idref" href="mathcomp.algebra.mxalgebra.html#a83de2bef5d483337931b658f4451b59"><span class="id" title="notation">≤</span></a> <a class="idref" href="mathcomp.algebra.vector.html#vs2mx"><span class="id" title="definition">vs2mx</span></a> <a class="idref" href="mathcomp.algebra.vector.html#U"><span class="id" title="variable">U</span></a>)%<span class="id" title="var">MS</span>.<br/> +<span class="id" title="keyword">Canonical</span> <span class="id" title="var">vspace_predType</span> :=<br/> + @<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#mkPredType"><span class="id" title="definition">mkPredType</span></a> <span class="id" title="var">_</span> (<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssreflect.html#unkeyed"><span class="id" title="abbreviation">unkeyed</span></a> <a class="idref" href="mathcomp.algebra.vector.html#ca0a177f6d6581a7f5199987cd7ee21c"><span class="id" title="notation">{</span></a><a class="idref" href="mathcomp.algebra.vector.html#ca0a177f6d6581a7f5199987cd7ee21c"><span class="id" title="notation">vspace</span></a> <a class="idref" href="mathcomp.algebra.vector.html#VspaceDefs.vT"><span class="id" title="variable">vT</span></a><a class="idref" href="mathcomp.algebra.vector.html#ca0a177f6d6581a7f5199987cd7ee21c"><span class="id" title="notation">}</span></a>) (@<a class="idref" href="mathcomp.algebra.vector.html#pred_of_vspace"><span class="id" title="definition">pred_of_vspace</span></a> <span class="id" title="var">_</span>).<br/> + +<br/> +<span class="id" title="keyword">Definition</span> <a name="fullv"><span class="id" title="definition">fullv</span></a> : <a class="idref" href="mathcomp.algebra.vector.html#ca0a177f6d6581a7f5199987cd7ee21c"><span class="id" title="notation">{</span></a><a class="idref" href="mathcomp.algebra.vector.html#ca0a177f6d6581a7f5199987cd7ee21c"><span class="id" title="notation">vspace</span></a> <a class="idref" href="mathcomp.algebra.vector.html#VspaceDefs.vT"><span class="id" title="variable">vT</span></a><a class="idref" href="mathcomp.algebra.vector.html#ca0a177f6d6581a7f5199987cd7ee21c"><span class="id" title="notation">}</span></a> := <a class="idref" href="mathcomp.algebra.vector.html#mx2vs"><span class="id" title="definition">mx2vs</span></a> 1<a class="idref" href="mathcomp.algebra.matrix.html#6bc5aad53caab585f4bb088e10501342"><span class="id" title="notation">%:</span></a><a class="idref" href="mathcomp.algebra.matrix.html#6bc5aad53caab585f4bb088e10501342"><span class="id" title="notation">M</span></a>.<br/> +<span class="id" title="keyword">Definition</span> <a name="addv"><span class="id" title="definition">addv</span></a> <span class="id" title="var">U</span> <span class="id" title="var">V</span> := <a class="idref" href="mathcomp.algebra.vector.html#mx2vs"><span class="id" title="definition">mx2vs</span></a> (<a class="idref" href="mathcomp.algebra.vector.html#vs2mx"><span class="id" title="definition">vs2mx</span></a> <a class="idref" href="mathcomp.algebra.vector.html#U"><span class="id" title="variable">U</span></a> <a class="idref" href="mathcomp.algebra.mxalgebra.html#3aa1e041eb0c3f581bd44ed53c8f7182"><span class="id" title="notation">+</span></a> <a class="idref" href="mathcomp.algebra.vector.html#vs2mx"><span class="id" title="definition">vs2mx</span></a> <a class="idref" href="mathcomp.algebra.vector.html#V"><span class="id" title="variable">V</span></a>).<br/> +<span class="id" title="keyword">Definition</span> <a name="capv"><span class="id" title="definition">capv</span></a> <span class="id" title="var">U</span> <span class="id" title="var">V</span> := <a class="idref" href="mathcomp.algebra.vector.html#mx2vs"><span class="id" title="definition">mx2vs</span></a> (<a class="idref" href="mathcomp.algebra.vector.html#vs2mx"><span class="id" title="definition">vs2mx</span></a> <a class="idref" href="mathcomp.algebra.vector.html#U"><span class="id" title="variable">U</span></a> <a class="idref" href="mathcomp.algebra.mxalgebra.html#bce3bcafad88bdee58acbfcd89899a28"><span class="id" title="notation">:&:</span></a> <a class="idref" href="mathcomp.algebra.vector.html#vs2mx"><span class="id" title="definition">vs2mx</span></a> <a class="idref" href="mathcomp.algebra.vector.html#V"><span class="id" title="variable">V</span></a>).<br/> +<span class="id" title="keyword">Definition</span> <a name="complv"><span class="id" title="definition">complv</span></a> <span class="id" title="var">U</span> := <a class="idref" href="mathcomp.algebra.vector.html#mx2vs"><span class="id" title="definition">mx2vs</span></a> <a class="idref" href="mathcomp.algebra.mxalgebra.html#56c42908e63b585e8406ab6296f5d2e9"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.vector.html#vs2mx"><span class="id" title="definition">vs2mx</span></a> <a class="idref" href="mathcomp.algebra.vector.html#U"><span class="id" title="variable">U</span></a><a class="idref" href="mathcomp.algebra.mxalgebra.html#56c42908e63b585e8406ab6296f5d2e9"><span class="id" title="notation">)^</span></a><a class="idref" href="mathcomp.algebra.mxalgebra.html#56c42908e63b585e8406ab6296f5d2e9"><span class="id" title="notation">C</span></a>.<br/> +<span class="id" title="keyword">Definition</span> <a name="diffv"><span class="id" title="definition">diffv</span></a> <span class="id" title="var">U</span> <span class="id" title="var">V</span> := <a class="idref" href="mathcomp.algebra.vector.html#mx2vs"><span class="id" title="definition">mx2vs</span></a> (<a class="idref" href="mathcomp.algebra.vector.html#vs2mx"><span class="id" title="definition">vs2mx</span></a> <a class="idref" href="mathcomp.algebra.vector.html#U"><span class="id" title="variable">U</span></a> <a class="idref" href="mathcomp.algebra.mxalgebra.html#09728f32fede5dee4dfccad9739422e8"><span class="id" title="notation">:\:</span></a> <a class="idref" href="mathcomp.algebra.vector.html#vs2mx"><span class="id" title="definition">vs2mx</span></a> <a class="idref" href="mathcomp.algebra.vector.html#V"><span class="id" title="variable">V</span></a>).<br/> +<span class="id" title="keyword">Definition</span> <a name="vpick"><span class="id" title="definition">vpick</span></a> <span class="id" title="var">U</span> := <a class="idref" href="mathcomp.algebra.vector.html#r2v"><span class="id" title="definition">r2v</span></a> (<a class="idref" href="mathcomp.algebra.matrix.html#nz_row"><span class="id" title="definition">nz_row</span></a> (<a class="idref" href="mathcomp.algebra.vector.html#vs2mx"><span class="id" title="definition">vs2mx</span></a> <a class="idref" href="mathcomp.algebra.vector.html#U"><span class="id" title="variable">U</span></a>)).<br/> +<span class="id" title="keyword">Fact</span> <a name="span_key"><span class="id" title="lemma">span_key</span></a> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#unit"><span class="id" title="inductive">unit</span></a>. <br/> +<span class="id" title="keyword">Definition</span> <a name="span_expanded_def"><span class="id" title="definition">span_expanded_def</span></a> <span class="id" title="var">X</span> := <a class="idref" href="mathcomp.algebra.vector.html#mx2vs"><span class="id" title="definition">mx2vs</span></a> (<a class="idref" href="mathcomp.algebra.vector.html#b2mx"><span class="id" title="definition">b2mx</span></a> (<a class="idref" href="mathcomp.ssreflect.tuple.html#in_tuple"><span class="id" title="definition">in_tuple</span></a> <a class="idref" href="mathcomp.algebra.vector.html#X"><span class="id" title="variable">X</span></a>)).<br/> +<span class="id" title="keyword">Definition</span> <a name="span"><span class="id" title="definition">span</span></a> := <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssreflect.html#locked_with"><span class="id" title="definition">locked_with</span></a> <a class="idref" href="mathcomp.algebra.vector.html#span_key"><span class="id" title="lemma">span_key</span></a> <a class="idref" href="mathcomp.algebra.vector.html#span_expanded_def"><span class="id" title="definition">span_expanded_def</span></a>.<br/> +<span class="id" title="keyword">Canonical</span> <span class="id" title="var">span_unlockable</span> := <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssreflect.html#58f94351327943cd874eb55da8e0ca14"><span class="id" title="notation">[</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssreflect.html#58f94351327943cd874eb55da8e0ca14"><span class="id" title="notation">unlockable</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssreflect.html#58f94351327943cd874eb55da8e0ca14"><span class="id" title="notation">fun</span></a> <a class="idref" href="mathcomp.algebra.vector.html#span"><span class="id" title="definition">span</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssreflect.html#58f94351327943cd874eb55da8e0ca14"><span class="id" title="notation">]</span></a>.<br/> +<span class="id" title="keyword">Definition</span> <a name="vbasis_def"><span class="id" title="definition">vbasis_def</span></a> <span class="id" title="var">U</span> :=<br/> + <a class="idref" href="mathcomp.ssreflect.tuple.html#1bdc3d6f63dc0019ce17772415ee5798"><span class="id" title="notation">[</span></a><a class="idref" href="mathcomp.ssreflect.tuple.html#1bdc3d6f63dc0019ce17772415ee5798"><span class="id" title="notation">tuple</span></a> <a class="idref" href="mathcomp.algebra.vector.html#r2v"><span class="id" title="definition">r2v</span></a> (<a class="idref" href="mathcomp.algebra.matrix.html#row"><span class="id" title="definition">row</span></a> <a class="idref" href="mathcomp.algebra.vector.html#i"><span class="id" title="variable">i</span></a> (<a class="idref" href="mathcomp.algebra.mxalgebra.html#row_base"><span class="id" title="definition">row_base</span></a> (<a class="idref" href="mathcomp.algebra.vector.html#vs2mx"><span class="id" title="definition">vs2mx</span></a> <a class="idref" href="mathcomp.algebra.vector.html#U"><span class="id" title="variable">U</span></a>))) <a class="idref" href="mathcomp.ssreflect.tuple.html#1bdc3d6f63dc0019ce17772415ee5798"><span class="id" title="notation">|</span></a> <span class="id" title="var">i</span> <a class="idref" href="mathcomp.ssreflect.tuple.html#1bdc3d6f63dc0019ce17772415ee5798"><span class="id" title="notation"><</span></a> <a class="idref" href="mathcomp.algebra.vector.html#dimv"><span class="id" title="definition">dimv</span></a> <a class="idref" href="mathcomp.algebra.vector.html#U"><span class="id" title="variable">U</span></a><a class="idref" href="mathcomp.ssreflect.tuple.html#1bdc3d6f63dc0019ce17772415ee5798"><span class="id" title="notation">]</span></a>.<br/> +<span class="id" title="keyword">Definition</span> <a name="vbasis"><span class="id" title="definition">vbasis</span></a> := <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssreflect.html#locked_with"><span class="id" title="definition">locked_with</span></a> <a class="idref" href="mathcomp.algebra.vector.html#span_key"><span class="id" title="lemma">span_key</span></a> <a class="idref" href="mathcomp.algebra.vector.html#vbasis_def"><span class="id" title="definition">vbasis_def</span></a>.<br/> +<span class="id" title="keyword">Canonical</span> <span class="id" title="var">vbasis_unlockable</span> := <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssreflect.html#58f94351327943cd874eb55da8e0ca14"><span class="id" title="notation">[</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssreflect.html#58f94351327943cd874eb55da8e0ca14"><span class="id" title="notation">unlockable</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssreflect.html#58f94351327943cd874eb55da8e0ca14"><span class="id" title="notation">fun</span></a> <a class="idref" href="mathcomp.algebra.vector.html#vbasis"><span class="id" title="definition">vbasis</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssreflect.html#58f94351327943cd874eb55da8e0ca14"><span class="id" title="notation">]</span></a>.<br/> + +<br/> +</div> + +<div class="doc"> + coord and directv are defined in the VectorTheory section. +</div> +<div class="code"> + +<br/> +<span class="id" title="keyword">Definition</span> <a name="free"><span class="id" title="definition">free</span></a> <span class="id" title="var">X</span> := <a class="idref" href="mathcomp.algebra.vector.html#dimv"><span class="id" title="definition">dimv</span></a> (<a class="idref" href="mathcomp.algebra.vector.html#span"><span class="id" title="definition">span</span></a> <a class="idref" href="mathcomp.algebra.vector.html#X"><span class="id" title="variable">X</span></a>) <a class="idref" href="mathcomp.ssreflect.eqtype.html#17d28d004d0863cb022d4ce832ddaaae"><span class="id" title="notation">==</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#size"><span class="id" title="definition">size</span></a> <a class="idref" href="mathcomp.algebra.vector.html#X"><span class="id" title="variable">X</span></a>.<br/> +<span class="id" title="keyword">Definition</span> <a name="basis_of"><span class="id" title="definition">basis_of</span></a> <span class="id" title="var">U</span> <span class="id" title="var">X</span> := <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#49ac24efa716d8b0ee8943bc1d1769a9"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.vector.html#span"><span class="id" title="definition">span</span></a> <a class="idref" href="mathcomp.algebra.vector.html#X"><span class="id" title="variable">X</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#17d28d004d0863cb022d4ce832ddaaae"><span class="id" title="notation">==</span></a> <a class="idref" href="mathcomp.algebra.vector.html#U"><span class="id" title="variable">U</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#49ac24efa716d8b0ee8943bc1d1769a9"><span class="id" title="notation">)</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#49ac24efa716d8b0ee8943bc1d1769a9"><span class="id" title="notation">&&</span></a> <a class="idref" href="mathcomp.algebra.vector.html#free"><span class="id" title="definition">free</span></a> <a class="idref" href="mathcomp.algebra.vector.html#X"><span class="id" title="variable">X</span></a>.<br/> + +<br/> +<span class="id" title="keyword">End</span> <a class="idref" href="mathcomp.algebra.vector.html#VspaceDefs"><span class="id" title="section">VspaceDefs</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Coercion</span> <a class="idref" href="mathcomp.algebra.vector.html#pred_of_vspace"><span class="id" title="definition">pred_of_vspace</span></a> <a class="idref" href="mathcomp.algebra.vector.html#pred_of_vspace"><span class="id" title="definition">:</span></a> <a class="idref" href="mathcomp.algebra.vector.html#pred_of_vspace"><span class="id" title="definition">Vector.space</span></a> <a class="idref" href="mathcomp.algebra.vector.html#pred_of_vspace"><span class="id" title="definition">>-></span></a> <a class="idref" href="mathcomp.algebra.vector.html#pred_of_vspace"><span class="id" title="definition">pred_class</span></a>.<br/> +<span class="id" title="keyword">Notation</span> <a name="ee35a6780ccd60155a3be89dcb5fdb30"><span class="id" title="notation">"</span></a>\dim U" := (<a class="idref" href="mathcomp.algebra.vector.html#dimv"><span class="id" title="definition">dimv</span></a> <span class="id" title="var">U</span>) : <span class="id" title="var">nat_scope</span>.<br/> +<span class="id" title="keyword">Notation</span> <a name="755d11a7d5629bce3486e7cbadc915e7"><span class="id" title="notation">"</span></a>U <= V" := (<a class="idref" href="mathcomp.algebra.vector.html#subsetv"><span class="id" title="definition">subsetv</span></a> <span class="id" title="var">U</span> <span class="id" title="var">V</span>) : <span class="id" title="var">vspace_scope</span>.<br/> +<span class="id" title="keyword">Notation</span> <a name="279d21686ddbb39e1c3b4eb5ad283d06"><span class="id" title="notation">"</span></a>U <= V <= W" := (<a class="idref" href="mathcomp.algebra.vector.html#subsetv"><span class="id" title="definition">subsetv</span></a> <span class="id" title="var">U</span> <span class="id" title="var">V</span> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#49ac24efa716d8b0ee8943bc1d1769a9"><span class="id" title="notation">&&</span></a> <a class="idref" href="mathcomp.algebra.vector.html#subsetv"><span class="id" title="definition">subsetv</span></a> <span class="id" title="var">V</span> <span class="id" title="var">W</span>) : <span class="id" title="var">vspace_scope</span>.<br/> +<span class="id" title="keyword">Notation</span> <a name="c7e74c229bedc2f20e80f4f2f96cee78"><span class="id" title="notation">"</span></a><[ v ] >" := (<a class="idref" href="mathcomp.algebra.vector.html#vline"><span class="id" title="definition">vline</span></a> <span class="id" title="var">v</span>) : <span class="id" title="var">vspace_scope</span>.<br/> +<span class="id" title="keyword">Notation</span> <a name="dd838ef568fa7ae0628a7427a23d7215"><span class="id" title="notation">"</span></a><< X >>" := (<a class="idref" href="mathcomp.algebra.vector.html#span"><span class="id" title="definition">span</span></a> <span class="id" title="var">X</span>) : <span class="id" title="var">vspace_scope</span>.<br/> +<span class="id" title="keyword">Notation</span> <a name="5fd8884bce52b97734c5c9a3dfeb405c"><span class="id" title="notation">"</span></a>0" := (<a class="idref" href="mathcomp.algebra.vector.html#vline"><span class="id" title="definition">vline</span></a> 0) : <span class="id" title="var">vspace_scope</span>.<br/> + +<br/> +<span class="id" title="keyword">Notation</span> <a name="706deac9766015ea164a28957c46a7b4"><span class="id" title="notation">"</span></a>U + V" := (<a class="idref" href="mathcomp.algebra.vector.html#addv"><span class="id" title="definition">addv</span></a> <span class="id" title="var">U</span> <span class="id" title="var">V</span>) : <span class="id" title="var">vspace_scope</span>.<br/> +<span class="id" title="keyword">Notation</span> <a name="585f47de65e0d6c6ecedb971203eafab"><span class="id" title="notation">"</span></a>U :&: V" := (<a class="idref" href="mathcomp.algebra.vector.html#capv"><span class="id" title="definition">capv</span></a> <span class="id" title="var">U</span> <span class="id" title="var">V</span>) : <span class="id" title="var">vspace_scope</span>.<br/> +<span class="id" title="keyword">Notation</span> <a name="071d56fbd1000a21b48af9aadab34351"><span class="id" title="notation">"</span></a>U ^C" := (<a class="idref" href="mathcomp.algebra.vector.html#complv"><span class="id" title="definition">complv</span></a> <span class="id" title="var">U</span>) (<span class="id" title="tactic">at</span> <span class="id" title="keyword">level</span> 8, <span class="id" title="var">format</span> "U ^C") : <span class="id" title="var">vspace_scope</span>.<br/> +<span class="id" title="keyword">Notation</span> <a name="946bddca9671fead9ed6e5aece130780"><span class="id" title="notation">"</span></a>U :\: V" := (<a class="idref" href="mathcomp.algebra.vector.html#diffv"><span class="id" title="definition">diffv</span></a> <span class="id" title="var">U</span> <span class="id" title="var">V</span>) : <span class="id" title="var">vspace_scope</span>.<br/> +<span class="id" title="keyword">Notation</span> <a name="899a5fd19c4f3564d9757a9ac446b1dc"><span class="id" title="notation">"</span></a>{ : vT }" := (@<a class="idref" href="mathcomp.algebra.vector.html#fullv"><span class="id" title="definition">fullv</span></a> <span class="id" title="var">_</span> <span class="id" title="var">vT</span>) (<span class="id" title="var">only</span> <span class="id" title="var">parsing</span>) : <span class="id" title="var">vspace_scope</span>.<br/> + +<br/> +<span class="id" title="keyword">Notation</span> <a name="ab83237670c8eecadafc9524ff9fc50e"><span class="id" title="notation">"</span></a>\sum_ ( i <- r | P ) U" :=<br/> + (<a class="idref" href="mathcomp.ssreflect.bigop.html#52c4d552b36d01307b4a33177122d4d1"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.ssreflect.bigop.html#52c4d552b36d01307b4a33177122d4d1"><span class="id" title="notation">big</span></a><a class="idref" href="mathcomp.ssreflect.bigop.html#52c4d552b36d01307b4a33177122d4d1"><span class="id" title="notation">[</span></a><a class="idref" href="mathcomp.algebra.vector.html#addv"><span class="id" title="definition">addv</span></a><a class="idref" href="mathcomp.ssreflect.bigop.html#52c4d552b36d01307b4a33177122d4d1"><span class="id" title="notation">/</span></a>0%<span class="id" title="var">VS</span><a class="idref" href="mathcomp.ssreflect.bigop.html#52c4d552b36d01307b4a33177122d4d1"><span class="id" title="notation">]</span></a><a class="idref" href="mathcomp.ssreflect.bigop.html#52c4d552b36d01307b4a33177122d4d1"><span class="id" title="notation">_</span></a><a class="idref" href="mathcomp.ssreflect.bigop.html#52c4d552b36d01307b4a33177122d4d1"><span class="id" title="notation">(</span></a><span class="id" title="var">i</span> <a class="idref" href="mathcomp.ssreflect.bigop.html#52c4d552b36d01307b4a33177122d4d1"><span class="id" title="notation"><-</span></a> <span class="id" title="var">r</span> <a class="idref" href="mathcomp.ssreflect.bigop.html#52c4d552b36d01307b4a33177122d4d1"><span class="id" title="notation">|</span></a> <span class="id" title="var">P</span>%<span class="id" title="var">B</span><a class="idref" href="mathcomp.ssreflect.bigop.html#52c4d552b36d01307b4a33177122d4d1"><span class="id" title="notation">)</span></a> <span class="id" title="var">U</span>%<span class="id" title="var">VS</span>) : <span class="id" title="var">vspace_scope</span>.<br/> +<span class="id" title="keyword">Notation</span> <a name="a0cc109dcb3354cdc641c4ee52a2f4cb"><span class="id" title="notation">"</span></a>\sum_ ( i <- r ) U" :=<br/> + (<a class="idref" href="mathcomp.ssreflect.bigop.html#30705c25db0a97e8b1b08168f9199b27"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.ssreflect.bigop.html#30705c25db0a97e8b1b08168f9199b27"><span class="id" title="notation">big</span></a><a class="idref" href="mathcomp.ssreflect.bigop.html#30705c25db0a97e8b1b08168f9199b27"><span class="id" title="notation">[</span></a><a class="idref" href="mathcomp.algebra.vector.html#addv"><span class="id" title="definition">addv</span></a><a class="idref" href="mathcomp.ssreflect.bigop.html#30705c25db0a97e8b1b08168f9199b27"><span class="id" title="notation">/</span></a>0%<span class="id" title="var">VS</span><a class="idref" href="mathcomp.ssreflect.bigop.html#30705c25db0a97e8b1b08168f9199b27"><span class="id" title="notation">]</span></a><a class="idref" href="mathcomp.ssreflect.bigop.html#30705c25db0a97e8b1b08168f9199b27"><span class="id" title="notation">_</span></a><a class="idref" href="mathcomp.ssreflect.bigop.html#30705c25db0a97e8b1b08168f9199b27"><span class="id" title="notation">(</span></a><span class="id" title="var">i</span> <a class="idref" href="mathcomp.ssreflect.bigop.html#30705c25db0a97e8b1b08168f9199b27"><span class="id" title="notation"><-</span></a> <span class="id" title="var">r</span><a class="idref" href="mathcomp.ssreflect.bigop.html#30705c25db0a97e8b1b08168f9199b27"><span class="id" title="notation">)</span></a> <span class="id" title="var">U</span>%<span class="id" title="var">VS</span>) : <span class="id" title="var">vspace_scope</span>.<br/> +<span class="id" title="keyword">Notation</span> <a name="c39e266eae2b9d16deeec803fc46fe8c"><span class="id" title="notation">"</span></a>\sum_ ( m <= i < n | P ) U" :=<br/> + (<a class="idref" href="mathcomp.ssreflect.bigop.html#f420cd67a470642ef8830577affa92e5"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.ssreflect.bigop.html#f420cd67a470642ef8830577affa92e5"><span class="id" title="notation">big</span></a><a class="idref" href="mathcomp.ssreflect.bigop.html#f420cd67a470642ef8830577affa92e5"><span class="id" title="notation">[</span></a><a class="idref" href="mathcomp.algebra.vector.html#addv"><span class="id" title="definition">addv</span></a><a class="idref" href="mathcomp.ssreflect.bigop.html#f420cd67a470642ef8830577affa92e5"><span class="id" title="notation">/</span></a>0%<span class="id" title="var">VS</span><a class="idref" href="mathcomp.ssreflect.bigop.html#f420cd67a470642ef8830577affa92e5"><span class="id" title="notation">]</span></a><a class="idref" href="mathcomp.ssreflect.bigop.html#f420cd67a470642ef8830577affa92e5"><span class="id" title="notation">_</span></a><a class="idref" href="mathcomp.ssreflect.bigop.html#f420cd67a470642ef8830577affa92e5"><span class="id" title="notation">(</span></a><span class="id" title="var">m</span> <a class="idref" href="mathcomp.ssreflect.bigop.html#f420cd67a470642ef8830577affa92e5"><span class="id" title="notation">≤</span></a> <span class="id" title="var">i</span> <a class="idref" href="mathcomp.ssreflect.bigop.html#f420cd67a470642ef8830577affa92e5"><span class="id" title="notation"><</span></a> <span class="id" title="var">n</span> <a class="idref" href="mathcomp.ssreflect.bigop.html#f420cd67a470642ef8830577affa92e5"><span class="id" title="notation">|</span></a> <span class="id" title="var">P</span>%<span class="id" title="var">B</span><a class="idref" href="mathcomp.ssreflect.bigop.html#f420cd67a470642ef8830577affa92e5"><span class="id" title="notation">)</span></a> <span class="id" title="var">U</span>%<span class="id" title="var">VS</span>) : <span class="id" title="var">vspace_scope</span>.<br/> +<span class="id" title="keyword">Notation</span> <a name="d4336a1a89b320ae38df449a0ace1195"><span class="id" title="notation">"</span></a>\sum_ ( m <= i < n ) U" :=<br/> + (<a class="idref" href="mathcomp.ssreflect.bigop.html#db346c83cc8192751cf56eb8b0029d40"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.ssreflect.bigop.html#db346c83cc8192751cf56eb8b0029d40"><span class="id" title="notation">big</span></a><a class="idref" href="mathcomp.ssreflect.bigop.html#db346c83cc8192751cf56eb8b0029d40"><span class="id" title="notation">[</span></a><a class="idref" href="mathcomp.algebra.vector.html#addv"><span class="id" title="definition">addv</span></a><a class="idref" href="mathcomp.ssreflect.bigop.html#db346c83cc8192751cf56eb8b0029d40"><span class="id" title="notation">/</span></a>0%<span class="id" title="var">VS</span><a class="idref" href="mathcomp.ssreflect.bigop.html#db346c83cc8192751cf56eb8b0029d40"><span class="id" title="notation">]</span></a><a class="idref" href="mathcomp.ssreflect.bigop.html#db346c83cc8192751cf56eb8b0029d40"><span class="id" title="notation">_</span></a><a class="idref" href="mathcomp.ssreflect.bigop.html#db346c83cc8192751cf56eb8b0029d40"><span class="id" title="notation">(</span></a><span class="id" title="var">m</span> <a class="idref" href="mathcomp.ssreflect.bigop.html#db346c83cc8192751cf56eb8b0029d40"><span class="id" title="notation">≤</span></a> <span class="id" title="var">i</span> <a class="idref" href="mathcomp.ssreflect.bigop.html#db346c83cc8192751cf56eb8b0029d40"><span class="id" title="notation"><</span></a> <span class="id" title="var">n</span><a class="idref" href="mathcomp.ssreflect.bigop.html#db346c83cc8192751cf56eb8b0029d40"><span class="id" title="notation">)</span></a> <span class="id" title="var">U</span>%<span class="id" title="var">VS</span>) : <span class="id" title="var">vspace_scope</span>.<br/> +<span class="id" title="keyword">Notation</span> <a name="d977f5115f4427a1c821b49789732de6"><span class="id" title="notation">"</span></a>\sum_ ( i | P ) U" :=<br/> + (<a class="idref" href="mathcomp.ssreflect.bigop.html#8850ee6edf9a388b1213678f3d3ee856"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.ssreflect.bigop.html#8850ee6edf9a388b1213678f3d3ee856"><span class="id" title="notation">big</span></a><a class="idref" href="mathcomp.ssreflect.bigop.html#8850ee6edf9a388b1213678f3d3ee856"><span class="id" title="notation">[</span></a><a class="idref" href="mathcomp.algebra.vector.html#addv"><span class="id" title="definition">addv</span></a><a class="idref" href="mathcomp.ssreflect.bigop.html#8850ee6edf9a388b1213678f3d3ee856"><span class="id" title="notation">/</span></a>0%<span class="id" title="var">VS</span><a class="idref" href="mathcomp.ssreflect.bigop.html#8850ee6edf9a388b1213678f3d3ee856"><span class="id" title="notation">]</span></a><a class="idref" href="mathcomp.ssreflect.bigop.html#8850ee6edf9a388b1213678f3d3ee856"><span class="id" title="notation">_</span></a><a class="idref" href="mathcomp.ssreflect.bigop.html#8850ee6edf9a388b1213678f3d3ee856"><span class="id" title="notation">(</span></a><span class="id" title="var">i</span> <a class="idref" href="mathcomp.ssreflect.bigop.html#8850ee6edf9a388b1213678f3d3ee856"><span class="id" title="notation">|</span></a> <span class="id" title="var">P</span>%<span class="id" title="var">B</span><a class="idref" href="mathcomp.ssreflect.bigop.html#8850ee6edf9a388b1213678f3d3ee856"><span class="id" title="notation">)</span></a> <span class="id" title="var">U</span>%<span class="id" title="var">VS</span>) : <span class="id" title="var">vspace_scope</span>.<br/> +<span class="id" title="keyword">Notation</span> <a name="97d0054903e1c4921898847e53133998"><span class="id" title="notation">"</span></a>\sum_ i U" :=<br/> + (<a class="idref" href="mathcomp.ssreflect.bigop.html#a0ddbff8fbef0617dd5dab072904e591"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.ssreflect.bigop.html#a0ddbff8fbef0617dd5dab072904e591"><span class="id" title="notation">big</span></a><a class="idref" href="mathcomp.ssreflect.bigop.html#a0ddbff8fbef0617dd5dab072904e591"><span class="id" title="notation">[</span></a><a class="idref" href="mathcomp.algebra.vector.html#addv"><span class="id" title="definition">addv</span></a><a class="idref" href="mathcomp.ssreflect.bigop.html#a0ddbff8fbef0617dd5dab072904e591"><span class="id" title="notation">/</span></a>0%<span class="id" title="var">VS</span><a class="idref" href="mathcomp.ssreflect.bigop.html#a0ddbff8fbef0617dd5dab072904e591"><span class="id" title="notation">]</span></a><a class="idref" href="mathcomp.ssreflect.bigop.html#a0ddbff8fbef0617dd5dab072904e591"><span class="id" title="notation">_i</span></a> <span class="id" title="var">U</span>%<span class="id" title="var">VS</span>) : <span class="id" title="var">vspace_scope</span>.<br/> +<span class="id" title="keyword">Notation</span> <a name="caab1011cfc69c643d0326957303c1e5"><span class="id" title="notation">"</span></a>\sum_ ( i : t | P ) U" :=<br/> + (<a class="idref" href="mathcomp.ssreflect.bigop.html#ec673a52d55e56af63579baa68d352ee"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.ssreflect.bigop.html#ec673a52d55e56af63579baa68d352ee"><span class="id" title="notation">big</span></a><a class="idref" href="mathcomp.ssreflect.bigop.html#ec673a52d55e56af63579baa68d352ee"><span class="id" title="notation">[</span></a><a class="idref" href="mathcomp.algebra.vector.html#addv"><span class="id" title="definition">addv</span></a><a class="idref" href="mathcomp.ssreflect.bigop.html#ec673a52d55e56af63579baa68d352ee"><span class="id" title="notation">/</span></a>0%<span class="id" title="var">VS</span><a class="idref" href="mathcomp.ssreflect.bigop.html#ec673a52d55e56af63579baa68d352ee"><span class="id" title="notation">]</span></a><a class="idref" href="mathcomp.ssreflect.bigop.html#ec673a52d55e56af63579baa68d352ee"><span class="id" title="notation">_</span></a><a class="idref" href="mathcomp.ssreflect.bigop.html#ec673a52d55e56af63579baa68d352ee"><span class="id" title="notation">(</span></a><span class="id" title="var">i</span> <a class="idref" href="mathcomp.ssreflect.bigop.html#ec673a52d55e56af63579baa68d352ee"><span class="id" title="notation">:</span></a> <span class="id" title="var">t</span> <a class="idref" href="mathcomp.ssreflect.bigop.html#ec673a52d55e56af63579baa68d352ee"><span class="id" title="notation">|</span></a> <span class="id" title="var">P</span>%<span class="id" title="var">B</span><a class="idref" href="mathcomp.ssreflect.bigop.html#ec673a52d55e56af63579baa68d352ee"><span class="id" title="notation">)</span></a> <span class="id" title="var">U</span>%<span class="id" title="var">VS</span>) (<span class="id" title="var">only</span> <span class="id" title="var">parsing</span>) : <span class="id" title="var">vspace_scope</span>.<br/> +<span class="id" title="keyword">Notation</span> <a name="128b4c5c6b8fe7c01f977b4bc567d8de"><span class="id" title="notation">"</span></a>\sum_ ( i : t ) U" :=<br/> + (<a class="idref" href="mathcomp.ssreflect.bigop.html#7c24ccda1da6510c0183e6d456463b39"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.ssreflect.bigop.html#7c24ccda1da6510c0183e6d456463b39"><span class="id" title="notation">big</span></a><a class="idref" href="mathcomp.ssreflect.bigop.html#7c24ccda1da6510c0183e6d456463b39"><span class="id" title="notation">[</span></a><a class="idref" href="mathcomp.algebra.vector.html#addv"><span class="id" title="definition">addv</span></a><a class="idref" href="mathcomp.ssreflect.bigop.html#7c24ccda1da6510c0183e6d456463b39"><span class="id" title="notation">/</span></a>0%<span class="id" title="var">VS</span><a class="idref" href="mathcomp.ssreflect.bigop.html#7c24ccda1da6510c0183e6d456463b39"><span class="id" title="notation">]</span></a><a class="idref" href="mathcomp.ssreflect.bigop.html#7c24ccda1da6510c0183e6d456463b39"><span class="id" title="notation">_</span></a><a class="idref" href="mathcomp.ssreflect.bigop.html#7c24ccda1da6510c0183e6d456463b39"><span class="id" title="notation">(</span></a><span class="id" title="var">i</span> <a class="idref" href="mathcomp.ssreflect.bigop.html#7c24ccda1da6510c0183e6d456463b39"><span class="id" title="notation">:</span></a> <span class="id" title="var">t</span><a class="idref" href="mathcomp.ssreflect.bigop.html#7c24ccda1da6510c0183e6d456463b39"><span class="id" title="notation">)</span></a> <span class="id" title="var">U</span>%<span class="id" title="var">VS</span>) (<span class="id" title="var">only</span> <span class="id" title="var">parsing</span>) : <span class="id" title="var">vspace_scope</span>.<br/> +<span class="id" title="keyword">Notation</span> <a name="4937e0a578940a49f37750c5c6335213"><span class="id" title="notation">"</span></a>\sum_ ( i < n | P ) U" :=<br/> + (<a class="idref" href="mathcomp.ssreflect.bigop.html#dc42c7ad0ea9096c0f795649807315df"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.ssreflect.bigop.html#dc42c7ad0ea9096c0f795649807315df"><span class="id" title="notation">big</span></a><a class="idref" href="mathcomp.ssreflect.bigop.html#dc42c7ad0ea9096c0f795649807315df"><span class="id" title="notation">[</span></a><a class="idref" href="mathcomp.algebra.vector.html#addv"><span class="id" title="definition">addv</span></a><a class="idref" href="mathcomp.ssreflect.bigop.html#dc42c7ad0ea9096c0f795649807315df"><span class="id" title="notation">/</span></a>0%<span class="id" title="var">VS</span><a class="idref" href="mathcomp.ssreflect.bigop.html#dc42c7ad0ea9096c0f795649807315df"><span class="id" title="notation">]</span></a><a class="idref" href="mathcomp.ssreflect.bigop.html#dc42c7ad0ea9096c0f795649807315df"><span class="id" title="notation">_</span></a><a class="idref" href="mathcomp.ssreflect.bigop.html#dc42c7ad0ea9096c0f795649807315df"><span class="id" title="notation">(</span></a><span class="id" title="var">i</span> <a class="idref" href="mathcomp.ssreflect.bigop.html#dc42c7ad0ea9096c0f795649807315df"><span class="id" title="notation"><</span></a> <span class="id" title="var">n</span> <a class="idref" href="mathcomp.ssreflect.bigop.html#dc42c7ad0ea9096c0f795649807315df"><span class="id" title="notation">|</span></a> <span class="id" title="var">P</span>%<span class="id" title="var">B</span><a class="idref" href="mathcomp.ssreflect.bigop.html#dc42c7ad0ea9096c0f795649807315df"><span class="id" title="notation">)</span></a> <span class="id" title="var">U</span>%<span class="id" title="var">VS</span>) : <span class="id" title="var">vspace_scope</span>.<br/> +<span class="id" title="keyword">Notation</span> <a name="c590ac35f1a5b43781169f103c46d6e5"><span class="id" title="notation">"</span></a>\sum_ ( i < n ) U" :=<br/> + (<a class="idref" href="mathcomp.ssreflect.bigop.html#567079cee6eb2eba482323c7e8d08df5"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.ssreflect.bigop.html#567079cee6eb2eba482323c7e8d08df5"><span class="id" title="notation">big</span></a><a class="idref" href="mathcomp.ssreflect.bigop.html#567079cee6eb2eba482323c7e8d08df5"><span class="id" title="notation">[</span></a><a class="idref" href="mathcomp.algebra.vector.html#addv"><span class="id" title="definition">addv</span></a><a class="idref" href="mathcomp.ssreflect.bigop.html#567079cee6eb2eba482323c7e8d08df5"><span class="id" title="notation">/</span></a>0%<span class="id" title="var">VS</span><a class="idref" href="mathcomp.ssreflect.bigop.html#567079cee6eb2eba482323c7e8d08df5"><span class="id" title="notation">]</span></a><a class="idref" href="mathcomp.ssreflect.bigop.html#567079cee6eb2eba482323c7e8d08df5"><span class="id" title="notation">_</span></a><a class="idref" href="mathcomp.ssreflect.bigop.html#567079cee6eb2eba482323c7e8d08df5"><span class="id" title="notation">(</span></a><span class="id" title="var">i</span> <a class="idref" href="mathcomp.ssreflect.bigop.html#567079cee6eb2eba482323c7e8d08df5"><span class="id" title="notation"><</span></a> <span class="id" title="var">n</span><a class="idref" href="mathcomp.ssreflect.bigop.html#567079cee6eb2eba482323c7e8d08df5"><span class="id" title="notation">)</span></a> <span class="id" title="var">U</span>%<span class="id" title="var">VS</span>) : <span class="id" title="var">vspace_scope</span>.<br/> +<span class="id" title="keyword">Notation</span> <a name="b498783332edc3e3ea79e152764033f3"><span class="id" title="notation">"</span></a>\sum_ ( i 'in' A | P ) U" :=<br/> + (<a class="idref" href="mathcomp.ssreflect.bigop.html#a9a46078b76c2e36303d504b8fb5bbb3"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.ssreflect.bigop.html#a9a46078b76c2e36303d504b8fb5bbb3"><span class="id" title="notation">big</span></a><a class="idref" href="mathcomp.ssreflect.bigop.html#a9a46078b76c2e36303d504b8fb5bbb3"><span class="id" title="notation">[</span></a><a class="idref" href="mathcomp.algebra.vector.html#addv"><span class="id" title="definition">addv</span></a><a class="idref" href="mathcomp.ssreflect.bigop.html#a9a46078b76c2e36303d504b8fb5bbb3"><span class="id" title="notation">/</span></a>0%<span class="id" title="var">VS</span><a class="idref" href="mathcomp.ssreflect.bigop.html#a9a46078b76c2e36303d504b8fb5bbb3"><span class="id" title="notation">]</span></a><a class="idref" href="mathcomp.ssreflect.bigop.html#a9a46078b76c2e36303d504b8fb5bbb3"><span class="id" title="notation">_</span></a><a class="idref" href="mathcomp.ssreflect.bigop.html#a9a46078b76c2e36303d504b8fb5bbb3"><span class="id" title="notation">(</span></a><span class="id" title="var">i</span> <a class="idref" href="mathcomp.ssreflect.bigop.html#a9a46078b76c2e36303d504b8fb5bbb3"><span class="id" title="notation">in</span></a> <span class="id" title="var">A</span> <a class="idref" href="mathcomp.ssreflect.bigop.html#a9a46078b76c2e36303d504b8fb5bbb3"><span class="id" title="notation">|</span></a> <span class="id" title="var">P</span>%<span class="id" title="var">B</span><a class="idref" href="mathcomp.ssreflect.bigop.html#a9a46078b76c2e36303d504b8fb5bbb3"><span class="id" title="notation">)</span></a> <span class="id" title="var">U</span>%<span class="id" title="var">VS</span>) : <span class="id" title="var">vspace_scope</span>.<br/> +<span class="id" title="keyword">Notation</span> <a name="f26a0cda7d3c14d9621b2cfa2a7f3924"><span class="id" title="notation">"</span></a>\sum_ ( i 'in' A ) U" :=<br/> + (<a class="idref" href="mathcomp.ssreflect.bigop.html#9b4515ceb280b6b5a2638c4e28ba3f31"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.ssreflect.bigop.html#9b4515ceb280b6b5a2638c4e28ba3f31"><span class="id" title="notation">big</span></a><a class="idref" href="mathcomp.ssreflect.bigop.html#9b4515ceb280b6b5a2638c4e28ba3f31"><span class="id" title="notation">[</span></a><a class="idref" href="mathcomp.algebra.vector.html#addv"><span class="id" title="definition">addv</span></a><a class="idref" href="mathcomp.ssreflect.bigop.html#9b4515ceb280b6b5a2638c4e28ba3f31"><span class="id" title="notation">/</span></a>0%<span class="id" title="var">VS</span><a class="idref" href="mathcomp.ssreflect.bigop.html#9b4515ceb280b6b5a2638c4e28ba3f31"><span class="id" title="notation">]</span></a><a class="idref" href="mathcomp.ssreflect.bigop.html#9b4515ceb280b6b5a2638c4e28ba3f31"><span class="id" title="notation">_</span></a><a class="idref" href="mathcomp.ssreflect.bigop.html#9b4515ceb280b6b5a2638c4e28ba3f31"><span class="id" title="notation">(</span></a><span class="id" title="var">i</span> <a class="idref" href="mathcomp.ssreflect.bigop.html#9b4515ceb280b6b5a2638c4e28ba3f31"><span class="id" title="notation">in</span></a> <span class="id" title="var">A</span><a class="idref" href="mathcomp.ssreflect.bigop.html#9b4515ceb280b6b5a2638c4e28ba3f31"><span class="id" title="notation">)</span></a> <span class="id" title="var">U</span>%<span class="id" title="var">VS</span>) : <span class="id" title="var">vspace_scope</span>.<br/> + +<br/> +<span class="id" title="keyword">Notation</span> <a name="3c22b9be9efec34a36f75983de9297bd"><span class="id" title="notation">"</span></a>\bigcap_ ( i <- r | P ) U" :=<br/> + (<a class="idref" href="mathcomp.ssreflect.bigop.html#52c4d552b36d01307b4a33177122d4d1"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.ssreflect.bigop.html#52c4d552b36d01307b4a33177122d4d1"><span class="id" title="notation">big</span></a><a class="idref" href="mathcomp.ssreflect.bigop.html#52c4d552b36d01307b4a33177122d4d1"><span class="id" title="notation">[</span></a><a class="idref" href="mathcomp.algebra.vector.html#capv"><span class="id" title="definition">capv</span></a><a class="idref" href="mathcomp.ssreflect.bigop.html#52c4d552b36d01307b4a33177122d4d1"><span class="id" title="notation">/</span></a><a class="idref" href="mathcomp.algebra.vector.html#fullv"><span class="id" title="definition">fullv</span></a><a class="idref" href="mathcomp.ssreflect.bigop.html#52c4d552b36d01307b4a33177122d4d1"><span class="id" title="notation">]</span></a><a class="idref" href="mathcomp.ssreflect.bigop.html#52c4d552b36d01307b4a33177122d4d1"><span class="id" title="notation">_</span></a><a class="idref" href="mathcomp.ssreflect.bigop.html#52c4d552b36d01307b4a33177122d4d1"><span class="id" title="notation">(</span></a><span class="id" title="var">i</span> <a class="idref" href="mathcomp.ssreflect.bigop.html#52c4d552b36d01307b4a33177122d4d1"><span class="id" title="notation"><-</span></a> <span class="id" title="var">r</span> <a class="idref" href="mathcomp.ssreflect.bigop.html#52c4d552b36d01307b4a33177122d4d1"><span class="id" title="notation">|</span></a> <span class="id" title="var">P</span>%<span class="id" title="var">B</span><a class="idref" href="mathcomp.ssreflect.bigop.html#52c4d552b36d01307b4a33177122d4d1"><span class="id" title="notation">)</span></a> <span class="id" title="var">U</span>%<span class="id" title="var">VS</span>) : <span class="id" title="var">vspace_scope</span>.<br/> +<span class="id" title="keyword">Notation</span> <a name="fa4242b86d3efdad31014ccd203eb19c"><span class="id" title="notation">"</span></a>\bigcap_ ( i <- r ) U" :=<br/> + (<a class="idref" href="mathcomp.ssreflect.bigop.html#30705c25db0a97e8b1b08168f9199b27"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.ssreflect.bigop.html#30705c25db0a97e8b1b08168f9199b27"><span class="id" title="notation">big</span></a><a class="idref" href="mathcomp.ssreflect.bigop.html#30705c25db0a97e8b1b08168f9199b27"><span class="id" title="notation">[</span></a><a class="idref" href="mathcomp.algebra.vector.html#capv"><span class="id" title="definition">capv</span></a><a class="idref" href="mathcomp.ssreflect.bigop.html#30705c25db0a97e8b1b08168f9199b27"><span class="id" title="notation">/</span></a><a class="idref" href="mathcomp.algebra.vector.html#fullv"><span class="id" title="definition">fullv</span></a><a class="idref" href="mathcomp.ssreflect.bigop.html#30705c25db0a97e8b1b08168f9199b27"><span class="id" title="notation">]</span></a><a class="idref" href="mathcomp.ssreflect.bigop.html#30705c25db0a97e8b1b08168f9199b27"><span class="id" title="notation">_</span></a><a class="idref" href="mathcomp.ssreflect.bigop.html#30705c25db0a97e8b1b08168f9199b27"><span class="id" title="notation">(</span></a><span class="id" title="var">i</span> <a class="idref" href="mathcomp.ssreflect.bigop.html#30705c25db0a97e8b1b08168f9199b27"><span class="id" title="notation"><-</span></a> <span class="id" title="var">r</span><a class="idref" href="mathcomp.ssreflect.bigop.html#30705c25db0a97e8b1b08168f9199b27"><span class="id" title="notation">)</span></a> <span class="id" title="var">U</span>%<span class="id" title="var">VS</span>) : <span class="id" title="var">vspace_scope</span>.<br/> +<span class="id" title="keyword">Notation</span> <a name="74142157c1f014e0c9c3a26f4b79c424"><span class="id" title="notation">"</span></a>\bigcap_ ( m <= i < n | P ) U" :=<br/> + (<a class="idref" href="mathcomp.ssreflect.bigop.html#f420cd67a470642ef8830577affa92e5"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.ssreflect.bigop.html#f420cd67a470642ef8830577affa92e5"><span class="id" title="notation">big</span></a><a class="idref" href="mathcomp.ssreflect.bigop.html#f420cd67a470642ef8830577affa92e5"><span class="id" title="notation">[</span></a><a class="idref" href="mathcomp.algebra.vector.html#capv"><span class="id" title="definition">capv</span></a><a class="idref" href="mathcomp.ssreflect.bigop.html#f420cd67a470642ef8830577affa92e5"><span class="id" title="notation">/</span></a><a class="idref" href="mathcomp.algebra.vector.html#fullv"><span class="id" title="definition">fullv</span></a><a class="idref" href="mathcomp.ssreflect.bigop.html#f420cd67a470642ef8830577affa92e5"><span class="id" title="notation">]</span></a><a class="idref" href="mathcomp.ssreflect.bigop.html#f420cd67a470642ef8830577affa92e5"><span class="id" title="notation">_</span></a><a class="idref" href="mathcomp.ssreflect.bigop.html#f420cd67a470642ef8830577affa92e5"><span class="id" title="notation">(</span></a><span class="id" title="var">m</span> <a class="idref" href="mathcomp.ssreflect.bigop.html#f420cd67a470642ef8830577affa92e5"><span class="id" title="notation">≤</span></a> <span class="id" title="var">i</span> <a class="idref" href="mathcomp.ssreflect.bigop.html#f420cd67a470642ef8830577affa92e5"><span class="id" title="notation"><</span></a> <span class="id" title="var">n</span> <a class="idref" href="mathcomp.ssreflect.bigop.html#f420cd67a470642ef8830577affa92e5"><span class="id" title="notation">|</span></a> <span class="id" title="var">P</span>%<span class="id" title="var">B</span><a class="idref" href="mathcomp.ssreflect.bigop.html#f420cd67a470642ef8830577affa92e5"><span class="id" title="notation">)</span></a> <span class="id" title="var">U</span>%<span class="id" title="var">VS</span>) : <span class="id" title="var">vspace_scope</span>.<br/> +<span class="id" title="keyword">Notation</span> <a name="c01fdac2bec60b87e12040d6e3cf6342"><span class="id" title="notation">"</span></a>\bigcap_ ( m <= i < n ) U" :=<br/> + (<a class="idref" href="mathcomp.ssreflect.bigop.html#db346c83cc8192751cf56eb8b0029d40"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.ssreflect.bigop.html#db346c83cc8192751cf56eb8b0029d40"><span class="id" title="notation">big</span></a><a class="idref" href="mathcomp.ssreflect.bigop.html#db346c83cc8192751cf56eb8b0029d40"><span class="id" title="notation">[</span></a><a class="idref" href="mathcomp.algebra.vector.html#capv"><span class="id" title="definition">capv</span></a><a class="idref" href="mathcomp.ssreflect.bigop.html#db346c83cc8192751cf56eb8b0029d40"><span class="id" title="notation">/</span></a><a class="idref" href="mathcomp.algebra.vector.html#fullv"><span class="id" title="definition">fullv</span></a><a class="idref" href="mathcomp.ssreflect.bigop.html#db346c83cc8192751cf56eb8b0029d40"><span class="id" title="notation">]</span></a><a class="idref" href="mathcomp.ssreflect.bigop.html#db346c83cc8192751cf56eb8b0029d40"><span class="id" title="notation">_</span></a><a class="idref" href="mathcomp.ssreflect.bigop.html#db346c83cc8192751cf56eb8b0029d40"><span class="id" title="notation">(</span></a><span class="id" title="var">m</span> <a class="idref" href="mathcomp.ssreflect.bigop.html#db346c83cc8192751cf56eb8b0029d40"><span class="id" title="notation">≤</span></a> <span class="id" title="var">i</span> <a class="idref" href="mathcomp.ssreflect.bigop.html#db346c83cc8192751cf56eb8b0029d40"><span class="id" title="notation"><</span></a> <span class="id" title="var">n</span><a class="idref" href="mathcomp.ssreflect.bigop.html#db346c83cc8192751cf56eb8b0029d40"><span class="id" title="notation">)</span></a> <span class="id" title="var">U</span>%<span class="id" title="var">VS</span>) : <span class="id" title="var">vspace_scope</span>.<br/> +<span class="id" title="keyword">Notation</span> <a name="20793aa95353fced22b75b1022e9ab39"><span class="id" title="notation">"</span></a>\bigcap_ ( i | P ) U" :=<br/> + (<a class="idref" href="mathcomp.ssreflect.bigop.html#8850ee6edf9a388b1213678f3d3ee856"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.ssreflect.bigop.html#8850ee6edf9a388b1213678f3d3ee856"><span class="id" title="notation">big</span></a><a class="idref" href="mathcomp.ssreflect.bigop.html#8850ee6edf9a388b1213678f3d3ee856"><span class="id" title="notation">[</span></a><a class="idref" href="mathcomp.algebra.vector.html#capv"><span class="id" title="definition">capv</span></a><a class="idref" href="mathcomp.ssreflect.bigop.html#8850ee6edf9a388b1213678f3d3ee856"><span class="id" title="notation">/</span></a><a class="idref" href="mathcomp.algebra.vector.html#fullv"><span class="id" title="definition">fullv</span></a><a class="idref" href="mathcomp.ssreflect.bigop.html#8850ee6edf9a388b1213678f3d3ee856"><span class="id" title="notation">]</span></a><a class="idref" href="mathcomp.ssreflect.bigop.html#8850ee6edf9a388b1213678f3d3ee856"><span class="id" title="notation">_</span></a><a class="idref" href="mathcomp.ssreflect.bigop.html#8850ee6edf9a388b1213678f3d3ee856"><span class="id" title="notation">(</span></a><span class="id" title="var">i</span> <a class="idref" href="mathcomp.ssreflect.bigop.html#8850ee6edf9a388b1213678f3d3ee856"><span class="id" title="notation">|</span></a> <span class="id" title="var">P</span>%<span class="id" title="var">B</span><a class="idref" href="mathcomp.ssreflect.bigop.html#8850ee6edf9a388b1213678f3d3ee856"><span class="id" title="notation">)</span></a> <span class="id" title="var">U</span>%<span class="id" title="var">VS</span>) : <span class="id" title="var">vspace_scope</span>.<br/> +<span class="id" title="keyword">Notation</span> <a name="dd40ab226983f07c4a30bcbf3757587f"><span class="id" title="notation">"</span></a>\bigcap_ i U" :=<br/> + (<a class="idref" href="mathcomp.ssreflect.bigop.html#a0ddbff8fbef0617dd5dab072904e591"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.ssreflect.bigop.html#a0ddbff8fbef0617dd5dab072904e591"><span class="id" title="notation">big</span></a><a class="idref" href="mathcomp.ssreflect.bigop.html#a0ddbff8fbef0617dd5dab072904e591"><span class="id" title="notation">[</span></a><a class="idref" href="mathcomp.algebra.vector.html#capv"><span class="id" title="definition">capv</span></a><a class="idref" href="mathcomp.ssreflect.bigop.html#a0ddbff8fbef0617dd5dab072904e591"><span class="id" title="notation">/</span></a><a class="idref" href="mathcomp.algebra.vector.html#fullv"><span class="id" title="definition">fullv</span></a><a class="idref" href="mathcomp.ssreflect.bigop.html#a0ddbff8fbef0617dd5dab072904e591"><span class="id" title="notation">]</span></a><a class="idref" href="mathcomp.ssreflect.bigop.html#a0ddbff8fbef0617dd5dab072904e591"><span class="id" title="notation">_i</span></a> <span class="id" title="var">U</span>%<span class="id" title="var">VS</span>) : <span class="id" title="var">vspace_scope</span>.<br/> +<span class="id" title="keyword">Notation</span> <a name="4023de86c058b7139afbc56eb155c273"><span class="id" title="notation">"</span></a>\bigcap_ ( i : t | P ) U" :=<br/> + (<a class="idref" href="mathcomp.ssreflect.bigop.html#ec673a52d55e56af63579baa68d352ee"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.ssreflect.bigop.html#ec673a52d55e56af63579baa68d352ee"><span class="id" title="notation">big</span></a><a class="idref" href="mathcomp.ssreflect.bigop.html#ec673a52d55e56af63579baa68d352ee"><span class="id" title="notation">[</span></a><a class="idref" href="mathcomp.algebra.vector.html#capv"><span class="id" title="definition">capv</span></a><a class="idref" href="mathcomp.ssreflect.bigop.html#ec673a52d55e56af63579baa68d352ee"><span class="id" title="notation">/</span></a><a class="idref" href="mathcomp.algebra.vector.html#fullv"><span class="id" title="definition">fullv</span></a><a class="idref" href="mathcomp.ssreflect.bigop.html#ec673a52d55e56af63579baa68d352ee"><span class="id" title="notation">]</span></a><a class="idref" href="mathcomp.ssreflect.bigop.html#ec673a52d55e56af63579baa68d352ee"><span class="id" title="notation">_</span></a><a class="idref" href="mathcomp.ssreflect.bigop.html#ec673a52d55e56af63579baa68d352ee"><span class="id" title="notation">(</span></a><span class="id" title="var">i</span> <a class="idref" href="mathcomp.ssreflect.bigop.html#ec673a52d55e56af63579baa68d352ee"><span class="id" title="notation">:</span></a> <span class="id" title="var">t</span> <a class="idref" href="mathcomp.ssreflect.bigop.html#ec673a52d55e56af63579baa68d352ee"><span class="id" title="notation">|</span></a> <span class="id" title="var">P</span>%<span class="id" title="var">B</span><a class="idref" href="mathcomp.ssreflect.bigop.html#ec673a52d55e56af63579baa68d352ee"><span class="id" title="notation">)</span></a> <span class="id" title="var">U</span>%<span class="id" title="var">VS</span>) (<span class="id" title="var">only</span> <span class="id" title="var">parsing</span>) : <span class="id" title="var">vspace_scope</span>.<br/> +<span class="id" title="keyword">Notation</span> <a name="62a748b4178fb0a0c3fd43370f38561e"><span class="id" title="notation">"</span></a>\bigcap_ ( i : t ) U" :=<br/> + (<a class="idref" href="mathcomp.ssreflect.bigop.html#7c24ccda1da6510c0183e6d456463b39"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.ssreflect.bigop.html#7c24ccda1da6510c0183e6d456463b39"><span class="id" title="notation">big</span></a><a class="idref" href="mathcomp.ssreflect.bigop.html#7c24ccda1da6510c0183e6d456463b39"><span class="id" title="notation">[</span></a><a class="idref" href="mathcomp.algebra.vector.html#capv"><span class="id" title="definition">capv</span></a><a class="idref" href="mathcomp.ssreflect.bigop.html#7c24ccda1da6510c0183e6d456463b39"><span class="id" title="notation">/</span></a><a class="idref" href="mathcomp.algebra.vector.html#fullv"><span class="id" title="definition">fullv</span></a><a class="idref" href="mathcomp.ssreflect.bigop.html#7c24ccda1da6510c0183e6d456463b39"><span class="id" title="notation">]</span></a><a class="idref" href="mathcomp.ssreflect.bigop.html#7c24ccda1da6510c0183e6d456463b39"><span class="id" title="notation">_</span></a><a class="idref" href="mathcomp.ssreflect.bigop.html#7c24ccda1da6510c0183e6d456463b39"><span class="id" title="notation">(</span></a><span class="id" title="var">i</span> <a class="idref" href="mathcomp.ssreflect.bigop.html#7c24ccda1da6510c0183e6d456463b39"><span class="id" title="notation">:</span></a> <span class="id" title="var">t</span><a class="idref" href="mathcomp.ssreflect.bigop.html#7c24ccda1da6510c0183e6d456463b39"><span class="id" title="notation">)</span></a> <span class="id" title="var">U</span>%<span class="id" title="var">VS</span>) (<span class="id" title="var">only</span> <span class="id" title="var">parsing</span>) : <span class="id" title="var">vspace_scope</span>.<br/> +<span class="id" title="keyword">Notation</span> <a name="30cfd57d3055f02b279eae7d4a1626ec"><span class="id" title="notation">"</span></a>\bigcap_ ( i < n | P ) U" :=<br/> + (<a class="idref" href="mathcomp.ssreflect.bigop.html#dc42c7ad0ea9096c0f795649807315df"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.ssreflect.bigop.html#dc42c7ad0ea9096c0f795649807315df"><span class="id" title="notation">big</span></a><a class="idref" href="mathcomp.ssreflect.bigop.html#dc42c7ad0ea9096c0f795649807315df"><span class="id" title="notation">[</span></a><a class="idref" href="mathcomp.algebra.vector.html#capv"><span class="id" title="definition">capv</span></a><a class="idref" href="mathcomp.ssreflect.bigop.html#dc42c7ad0ea9096c0f795649807315df"><span class="id" title="notation">/</span></a><a class="idref" href="mathcomp.algebra.vector.html#fullv"><span class="id" title="definition">fullv</span></a><a class="idref" href="mathcomp.ssreflect.bigop.html#dc42c7ad0ea9096c0f795649807315df"><span class="id" title="notation">]</span></a><a class="idref" href="mathcomp.ssreflect.bigop.html#dc42c7ad0ea9096c0f795649807315df"><span class="id" title="notation">_</span></a><a class="idref" href="mathcomp.ssreflect.bigop.html#dc42c7ad0ea9096c0f795649807315df"><span class="id" title="notation">(</span></a><span class="id" title="var">i</span> <a class="idref" href="mathcomp.ssreflect.bigop.html#dc42c7ad0ea9096c0f795649807315df"><span class="id" title="notation"><</span></a> <span class="id" title="var">n</span> <a class="idref" href="mathcomp.ssreflect.bigop.html#dc42c7ad0ea9096c0f795649807315df"><span class="id" title="notation">|</span></a> <span class="id" title="var">P</span>%<span class="id" title="var">B</span><a class="idref" href="mathcomp.ssreflect.bigop.html#dc42c7ad0ea9096c0f795649807315df"><span class="id" title="notation">)</span></a> <span class="id" title="var">U</span>%<span class="id" title="var">VS</span>) : <span class="id" title="var">vspace_scope</span>.<br/> +<span class="id" title="keyword">Notation</span> <a name="ab6a1ac23c8bf6240a3fb641da136f5a"><span class="id" title="notation">"</span></a>\bigcap_ ( i < n ) U" :=<br/> + (<a class="idref" href="mathcomp.ssreflect.bigop.html#567079cee6eb2eba482323c7e8d08df5"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.ssreflect.bigop.html#567079cee6eb2eba482323c7e8d08df5"><span class="id" title="notation">big</span></a><a class="idref" href="mathcomp.ssreflect.bigop.html#567079cee6eb2eba482323c7e8d08df5"><span class="id" title="notation">[</span></a><a class="idref" href="mathcomp.algebra.vector.html#capv"><span class="id" title="definition">capv</span></a><a class="idref" href="mathcomp.ssreflect.bigop.html#567079cee6eb2eba482323c7e8d08df5"><span class="id" title="notation">/</span></a><a class="idref" href="mathcomp.algebra.vector.html#fullv"><span class="id" title="definition">fullv</span></a><a class="idref" href="mathcomp.ssreflect.bigop.html#567079cee6eb2eba482323c7e8d08df5"><span class="id" title="notation">]</span></a><a class="idref" href="mathcomp.ssreflect.bigop.html#567079cee6eb2eba482323c7e8d08df5"><span class="id" title="notation">_</span></a><a class="idref" href="mathcomp.ssreflect.bigop.html#567079cee6eb2eba482323c7e8d08df5"><span class="id" title="notation">(</span></a><span class="id" title="var">i</span> <a class="idref" href="mathcomp.ssreflect.bigop.html#567079cee6eb2eba482323c7e8d08df5"><span class="id" title="notation"><</span></a> <span class="id" title="var">n</span><a class="idref" href="mathcomp.ssreflect.bigop.html#567079cee6eb2eba482323c7e8d08df5"><span class="id" title="notation">)</span></a> <span class="id" title="var">U</span>%<span class="id" title="var">VS</span>) : <span class="id" title="var">vspace_scope</span>.<br/> +<span class="id" title="keyword">Notation</span> <a name="92c8932eab2d0d25641b64e49077b7e2"><span class="id" title="notation">"</span></a>\bigcap_ ( i 'in' A | P ) U" :=<br/> + (<a class="idref" href="mathcomp.ssreflect.bigop.html#a9a46078b76c2e36303d504b8fb5bbb3"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.ssreflect.bigop.html#a9a46078b76c2e36303d504b8fb5bbb3"><span class="id" title="notation">big</span></a><a class="idref" href="mathcomp.ssreflect.bigop.html#a9a46078b76c2e36303d504b8fb5bbb3"><span class="id" title="notation">[</span></a><a class="idref" href="mathcomp.algebra.vector.html#capv"><span class="id" title="definition">capv</span></a><a class="idref" href="mathcomp.ssreflect.bigop.html#a9a46078b76c2e36303d504b8fb5bbb3"><span class="id" title="notation">/</span></a><a class="idref" href="mathcomp.algebra.vector.html#fullv"><span class="id" title="definition">fullv</span></a><a class="idref" href="mathcomp.ssreflect.bigop.html#a9a46078b76c2e36303d504b8fb5bbb3"><span class="id" title="notation">]</span></a><a class="idref" href="mathcomp.ssreflect.bigop.html#a9a46078b76c2e36303d504b8fb5bbb3"><span class="id" title="notation">_</span></a><a class="idref" href="mathcomp.ssreflect.bigop.html#a9a46078b76c2e36303d504b8fb5bbb3"><span class="id" title="notation">(</span></a><span class="id" title="var">i</span> <a class="idref" href="mathcomp.ssreflect.bigop.html#a9a46078b76c2e36303d504b8fb5bbb3"><span class="id" title="notation">in</span></a> <span class="id" title="var">A</span> <a class="idref" href="mathcomp.ssreflect.bigop.html#a9a46078b76c2e36303d504b8fb5bbb3"><span class="id" title="notation">|</span></a> <span class="id" title="var">P</span>%<span class="id" title="var">B</span><a class="idref" href="mathcomp.ssreflect.bigop.html#a9a46078b76c2e36303d504b8fb5bbb3"><span class="id" title="notation">)</span></a> <span class="id" title="var">U</span>%<span class="id" title="var">VS</span>) : <span class="id" title="var">vspace_scope</span>.<br/> +<span class="id" title="keyword">Notation</span> <a name="7c5030bc981658afca05e49c41e7b4ee"><span class="id" title="notation">"</span></a>\bigcap_ ( i 'in' A ) U" :=<br/> + (<a class="idref" href="mathcomp.ssreflect.bigop.html#9b4515ceb280b6b5a2638c4e28ba3f31"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.ssreflect.bigop.html#9b4515ceb280b6b5a2638c4e28ba3f31"><span class="id" title="notation">big</span></a><a class="idref" href="mathcomp.ssreflect.bigop.html#9b4515ceb280b6b5a2638c4e28ba3f31"><span class="id" title="notation">[</span></a><a class="idref" href="mathcomp.algebra.vector.html#capv"><span class="id" title="definition">capv</span></a><a class="idref" href="mathcomp.ssreflect.bigop.html#9b4515ceb280b6b5a2638c4e28ba3f31"><span class="id" title="notation">/</span></a><a class="idref" href="mathcomp.algebra.vector.html#fullv"><span class="id" title="definition">fullv</span></a><a class="idref" href="mathcomp.ssreflect.bigop.html#9b4515ceb280b6b5a2638c4e28ba3f31"><span class="id" title="notation">]</span></a><a class="idref" href="mathcomp.ssreflect.bigop.html#9b4515ceb280b6b5a2638c4e28ba3f31"><span class="id" title="notation">_</span></a><a class="idref" href="mathcomp.ssreflect.bigop.html#9b4515ceb280b6b5a2638c4e28ba3f31"><span class="id" title="notation">(</span></a><span class="id" title="var">i</span> <a class="idref" href="mathcomp.ssreflect.bigop.html#9b4515ceb280b6b5a2638c4e28ba3f31"><span class="id" title="notation">in</span></a> <span class="id" title="var">A</span><a class="idref" href="mathcomp.ssreflect.bigop.html#9b4515ceb280b6b5a2638c4e28ba3f31"><span class="id" title="notation">)</span></a> <span class="id" title="var">U</span>%<span class="id" title="var">VS</span>) : <span class="id" title="var">vspace_scope</span>.<br/> + +<br/> +<span class="id" title="keyword">Section</span> <a name="VectorTheory"><span class="id" title="section">VectorTheory</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Variables</span> (<a name="VectorTheory.K"><span class="id" title="variable">K</span></a> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Field.Exports.fieldType"><span class="id" title="abbreviation">fieldType</span></a>) (<a name="VectorTheory.vT"><span class="id" title="variable">vT</span></a> : <a class="idref" href="mathcomp.algebra.vector.html#vectType"><span class="id" title="abbreviation">vectType</span></a> <a class="idref" href="mathcomp.algebra.vector.html#K"><span class="id" title="variable">K</span></a>).<br/> +<span class="id" title="keyword">Implicit</span> <span class="id" title="keyword">Types</span> (<span class="id" title="var">a</span> : <a class="idref" href="mathcomp.algebra.vector.html#VectorTheory.K"><span class="id" title="variable">K</span></a>) (<span class="id" title="var">u</span> <span class="id" title="var">v</span> <span class="id" title="var">w</span> : <a class="idref" href="mathcomp.algebra.vector.html#VectorTheory.vT"><span class="id" title="variable">vT</span></a>) (<span class="id" title="var">X</span> <span class="id" title="var">Y</span> : <a class="idref" href="mathcomp.ssreflect.seq.html#seq"><span class="id" title="abbreviation">seq</span></a> <a class="idref" href="mathcomp.algebra.vector.html#VectorTheory.vT"><span class="id" title="variable">vT</span></a>) (<span class="id" title="var">U</span> <span class="id" title="var">V</span> <span class="id" title="var">W</span> : <a class="idref" href="mathcomp.algebra.vector.html#ca0a177f6d6581a7f5199987cd7ee21c"><span class="id" title="notation">{</span></a><a class="idref" href="mathcomp.algebra.vector.html#ca0a177f6d6581a7f5199987cd7ee21c"><span class="id" title="notation">vspace</span></a> <a class="idref" href="mathcomp.algebra.vector.html#VectorTheory.vT"><span class="id" title="variable">vT</span></a><a class="idref" href="mathcomp.algebra.vector.html#ca0a177f6d6581a7f5199987cd7ee21c"><span class="id" title="notation">}</span></a>).<br/> + +<br/> + +<br/> + +<br/> +<span class="id" title="keyword">Fact</span> <a name="vspace_key"><span class="id" title="lemma">vspace_key</span></a> <span class="id" title="var">U</span> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#pred_key"><span class="id" title="inductive">pred_key</span></a> <a class="idref" href="mathcomp.algebra.vector.html#U"><span class="id" title="variable">U</span></a>. <br/> +<span class="id" title="keyword">Canonical</span> <span class="id" title="var">vspace_keyed</span> <span class="id" title="var">U</span> := <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#KeyedPred"><span class="id" title="definition">KeyedPred</span></a> (<a class="idref" href="mathcomp.algebra.vector.html#vspace_key"><span class="id" title="lemma">vspace_key</span></a> <a class="idref" href="mathcomp.algebra.vector.html#U"><span class="id" title="variable">U</span></a>).<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="memvE"><span class="id" title="lemma">memvE</span></a> <span class="id" title="var">v</span> <span class="id" title="var">U</span> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.vector.html#v"><span class="id" title="variable">v</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">\</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">in</span></a> <a class="idref" href="mathcomp.algebra.vector.html#U"><span class="id" title="variable">U</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">)</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> (<a class="idref" href="mathcomp.algebra.vector.html#c7e74c229bedc2f20e80f4f2f96cee78"><span class="id" title="notation"><[</span></a><a class="idref" href="mathcomp.algebra.vector.html#v"><span class="id" title="variable">v</span></a><a class="idref" href="mathcomp.algebra.vector.html#c7e74c229bedc2f20e80f4f2f96cee78"><span class="id" title="notation">]></span></a> <a class="idref" href="mathcomp.algebra.vector.html#755d11a7d5629bce3486e7cbadc915e7"><span class="id" title="notation">≤</span></a> <a class="idref" href="mathcomp.algebra.vector.html#U"><span class="id" title="variable">U</span></a>)%<span class="id" title="var">VS</span>. <br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="vlineP"><span class="id" title="lemma">vlineP</span></a> <span class="id" title="var">v1</span> <span class="id" title="var">v2</span> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#reflect"><span class="id" title="abbreviation">reflect</span></a> (<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#84eb6d2849dbf3581b1c0c05add5f2d8"><span class="id" title="notation">∃</span></a> <span class="id" title="var">k</span><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#84eb6d2849dbf3581b1c0c05add5f2d8"><span class="id" title="notation">,</span></a> <a class="idref" href="mathcomp.algebra.vector.html#v1"><span class="id" title="variable">v1</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.vector.html#k"><span class="id" title="variable">k</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#81f8078534dcbb7e13a32d292f766525"><span class="id" title="notation">*:</span></a> <a class="idref" href="mathcomp.algebra.vector.html#v2"><span class="id" title="variable">v2</span></a>) (<a class="idref" href="mathcomp.algebra.vector.html#v1"><span class="id" title="variable">v1</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">\</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">in</span></a> <a class="idref" href="mathcomp.algebra.vector.html#c7e74c229bedc2f20e80f4f2f96cee78"><span class="id" title="notation"><[</span></a><a class="idref" href="mathcomp.algebra.vector.html#v2"><span class="id" title="variable">v2</span></a><a class="idref" href="mathcomp.algebra.vector.html#c7e74c229bedc2f20e80f4f2f96cee78"><span class="id" title="notation">]></span></a>)%<span class="id" title="var">VS</span>.<br/> + +<br/> +<span class="id" title="keyword">Fact</span> <a name="memv_submod_closed"><span class="id" title="lemma">memv_submod_closed</span></a> <span class="id" title="var">U</span> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Pred.Exports.submod_closed"><span class="id" title="abbreviation">submod_closed</span></a> <a class="idref" href="mathcomp.algebra.vector.html#U"><span class="id" title="variable">U</span></a>.<br/> +<span class="id" title="keyword">Canonical</span> <span class="id" title="var">memv_opprPred</span> <span class="id" title="var">U</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.vector.html#memv_submod_closed"><span class="id" title="lemma">memv_submod_closed</span></a> <a class="idref" href="mathcomp.algebra.vector.html#U"><span class="id" title="variable">U</span></a>).<br/> +<span class="id" title="keyword">Canonical</span> <span class="id" title="var">memv_addrPred</span> <span class="id" title="var">U</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.vector.html#memv_submod_closed"><span class="id" title="lemma">memv_submod_closed</span></a> <a class="idref" href="mathcomp.algebra.vector.html#U"><span class="id" title="variable">U</span></a>).<br/> +<span class="id" title="keyword">Canonical</span> <span class="id" title="var">memv_zmodPred</span> <span class="id" title="var">U</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.vector.html#memv_submod_closed"><span class="id" title="lemma">memv_submod_closed</span></a> <a class="idref" href="mathcomp.algebra.vector.html#U"><span class="id" title="variable">U</span></a>).<br/> +<span class="id" title="keyword">Canonical</span> <span class="id" title="var">memv_submodPred</span> <span class="id" title="var">U</span> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Pred.Exports.SubmodPred"><span class="id" title="definition">SubmodPred</span></a> (<a class="idref" href="mathcomp.algebra.vector.html#memv_submod_closed"><span class="id" title="lemma">memv_submod_closed</span></a> <a class="idref" href="mathcomp.algebra.vector.html#U"><span class="id" title="variable">U</span></a>).<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="mem0v"><span class="id" title="lemma">mem0v</span></a> <span class="id" title="var">U</span> : 0 <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">\</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">in</span></a> <a class="idref" href="mathcomp.algebra.vector.html#U"><span class="id" title="variable">U</span></a>. <br/> +<span class="id" title="keyword">Lemma</span> <a name="memvN"><span class="id" title="lemma">memvN</span></a> <span class="id" title="var">U</span> <span class="id" title="var">v</span> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#941c6d086004545bd62614d0213e75e5"><span class="id" title="notation">-</span></a> <a class="idref" href="mathcomp.algebra.vector.html#v"><span class="id" title="variable">v</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">\</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">in</span></a> <a class="idref" href="mathcomp.algebra.vector.html#U"><span class="id" title="variable">U</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">)</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.vector.html#v"><span class="id" title="variable">v</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">\</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">in</span></a> <a class="idref" href="mathcomp.algebra.vector.html#U"><span class="id" title="variable">U</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">)</span></a>. <br/> +<span class="id" title="keyword">Lemma</span> <a name="memvD"><span class="id" title="lemma">memvD</span></a> <span class="id" title="var">U</span> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#2bba53854f326a714d377124cccec593"><span class="id" title="notation">{</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#2bba53854f326a714d377124cccec593"><span class="id" title="notation">in</span></a> <a class="idref" href="mathcomp.algebra.vector.html#U"><span class="id" title="variable">U</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#2bba53854f326a714d377124cccec593"><span class="id" title="notation">&,</span></a> <span class="id" title="keyword">∀</span> <span class="id" title="var">u</span> <span class="id" title="var">v</span>, <a class="idref" href="mathcomp.algebra.vector.html#u"><span class="id" title="variable">u</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#ae4d81913e6239182a9ac7467ffde8cd"><span class="id" title="notation">+</span></a> <a class="idref" href="mathcomp.algebra.vector.html#v"><span class="id" title="variable">v</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">\</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">in</span></a> <a class="idref" href="mathcomp.algebra.vector.html#U"><span class="id" title="variable">U</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#2bba53854f326a714d377124cccec593"><span class="id" title="notation">}</span></a>. <br/> +<span class="id" title="keyword">Lemma</span> <a name="memvB"><span class="id" title="lemma">memvB</span></a> <span class="id" title="var">U</span> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#2bba53854f326a714d377124cccec593"><span class="id" title="notation">{</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#2bba53854f326a714d377124cccec593"><span class="id" title="notation">in</span></a> <a class="idref" href="mathcomp.algebra.vector.html#U"><span class="id" title="variable">U</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#2bba53854f326a714d377124cccec593"><span class="id" title="notation">&,</span></a> <span class="id" title="keyword">∀</span> <span class="id" title="var">u</span> <span class="id" title="var">v</span>, <a class="idref" href="mathcomp.algebra.vector.html#u"><span class="id" title="variable">u</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#d70623330b2787db6b196e37db7d8f45"><span class="id" title="notation">-</span></a> <a class="idref" href="mathcomp.algebra.vector.html#v"><span class="id" title="variable">v</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">\</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">in</span></a> <a class="idref" href="mathcomp.algebra.vector.html#U"><span class="id" title="variable">U</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#2bba53854f326a714d377124cccec593"><span class="id" title="notation">}</span></a>. <br/> +<span class="id" title="keyword">Lemma</span> <a name="memvZ"><span class="id" title="lemma">memvZ</span></a> <span class="id" title="var">U</span> <span class="id" title="var">k</span> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#5c59b35a0b51db520cf1fba473ecf127"><span class="id" title="notation">{</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#5c59b35a0b51db520cf1fba473ecf127"><span class="id" title="notation">in</span></a> <a class="idref" href="mathcomp.algebra.vector.html#U"><span class="id" title="variable">U</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#5c59b35a0b51db520cf1fba473ecf127"><span class="id" title="notation">,</span></a> <span class="id" title="keyword">∀</span> <span class="id" title="var">v</span>, <a class="idref" href="mathcomp.algebra.vector.html#k"><span class="id" title="variable">k</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#81f8078534dcbb7e13a32d292f766525"><span class="id" title="notation">*:</span></a> <a class="idref" href="mathcomp.algebra.vector.html#v"><span class="id" title="variable">v</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">\</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">in</span></a> <a class="idref" href="mathcomp.algebra.vector.html#U"><span class="id" title="variable">U</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#5c59b35a0b51db520cf1fba473ecf127"><span class="id" title="notation">}</span></a>. <br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="memv_suml"><span class="id" title="lemma">memv_suml</span></a> <span class="id" title="var">I</span> <span class="id" title="var">r</span> (<span class="id" title="var">P</span> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#pred"><span class="id" title="definition">pred</span></a> <a class="idref" href="mathcomp.algebra.vector.html#I"><span class="id" title="variable">I</span></a>) <span class="id" title="var">vs</span> <span class="id" title="var">U</span> :<br/> + <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">(</span></a><span class="id" title="keyword">∀</span> <span class="id" title="var">i</span>, <a class="idref" href="mathcomp.algebra.vector.html#P"><span class="id" title="variable">P</span></a> <a class="idref" href="mathcomp.algebra.vector.html#i"><span class="id" title="variable">i</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.vector.html#vs"><span class="id" title="variable">vs</span></a> <a class="idref" href="mathcomp.algebra.vector.html#i"><span class="id" title="variable">i</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">\</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">in</span></a> <a class="idref" href="mathcomp.algebra.vector.html#U"><span class="id" title="variable">U</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">)</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#cbc2f2ab11c1c376b5c4511d28b14d74"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#cbc2f2ab11c1c376b5c4511d28b14d74"><span class="id" title="notation">sum_</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#cbc2f2ab11c1c376b5c4511d28b14d74"><span class="id" title="notation">(</span></a><span class="id" title="var">i</span> <a class="idref" href="mathcomp.algebra.ssralg.html#cbc2f2ab11c1c376b5c4511d28b14d74"><span class="id" title="notation"><-</span></a> <a class="idref" href="mathcomp.algebra.vector.html#r"><span class="id" title="variable">r</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#cbc2f2ab11c1c376b5c4511d28b14d74"><span class="id" title="notation">|</span></a> <a class="idref" href="mathcomp.algebra.vector.html#P"><span class="id" title="variable">P</span></a> <a class="idref" href="mathcomp.algebra.vector.html#i"><span class="id" title="variable">i</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#cbc2f2ab11c1c376b5c4511d28b14d74"><span class="id" title="notation">)</span></a> <a class="idref" href="mathcomp.algebra.vector.html#vs"><span class="id" title="variable">vs</span></a> <a class="idref" href="mathcomp.algebra.vector.html#i"><span class="id" title="variable">i</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">\</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">in</span></a> <a class="idref" href="mathcomp.algebra.vector.html#U"><span class="id" title="variable">U</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="memv_line"><span class="id" title="lemma">memv_line</span></a> <span class="id" title="var">u</span> : <a class="idref" href="mathcomp.algebra.vector.html#u"><span class="id" title="variable">u</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">\</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">in</span></a> <a class="idref" href="mathcomp.algebra.vector.html#c7e74c229bedc2f20e80f4f2f96cee78"><span class="id" title="notation"><[</span></a><a class="idref" href="mathcomp.algebra.vector.html#u"><span class="id" title="variable">u</span></a><a class="idref" href="mathcomp.algebra.vector.html#c7e74c229bedc2f20e80f4f2f96cee78"><span class="id" title="notation">]></span></a>%<span class="id" title="var">VS</span>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="subvP"><span class="id" title="lemma">subvP</span></a> <span class="id" title="var">U</span> <span class="id" title="var">V</span> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#reflect"><span class="id" title="abbreviation">reflect</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#53295d8f18390300c5a24f66e0bcda98"><span class="id" title="notation">{</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#53295d8f18390300c5a24f66e0bcda98"><span class="id" title="notation">subset</span></a> <a class="idref" href="mathcomp.algebra.vector.html#U"><span class="id" title="variable">U</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#53295d8f18390300c5a24f66e0bcda98"><span class="id" title="notation">≤</span></a> <a class="idref" href="mathcomp.algebra.vector.html#V"><span class="id" title="variable">V</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#53295d8f18390300c5a24f66e0bcda98"><span class="id" title="notation">}</span></a> (<a class="idref" href="mathcomp.algebra.vector.html#U"><span class="id" title="variable">U</span></a> <a class="idref" href="mathcomp.algebra.vector.html#755d11a7d5629bce3486e7cbadc915e7"><span class="id" title="notation">≤</span></a> <a class="idref" href="mathcomp.algebra.vector.html#V"><span class="id" title="variable">V</span></a>)%<span class="id" title="var">VS</span>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="subvv"><span class="id" title="lemma">subvv</span></a> <span class="id" title="var">U</span> : (<a class="idref" href="mathcomp.algebra.vector.html#U"><span class="id" title="variable">U</span></a> <a class="idref" href="mathcomp.algebra.vector.html#755d11a7d5629bce3486e7cbadc915e7"><span class="id" title="notation">≤</span></a> <a class="idref" href="mathcomp.algebra.vector.html#U"><span class="id" title="variable">U</span></a>)%<span class="id" title="var">VS</span>. <br/> +<span class="id" title="keyword">Hint Resolve</span> <span class="id" title="var">subvv</span>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="subv_trans"><span class="id" title="lemma">subv_trans</span></a> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#transitive"><span class="id" title="definition">transitive</span></a> <a class="idref" href="mathcomp.algebra.vector.html#subV"><span class="id" title="abbreviation">subV</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="subv_anti"><span class="id" title="lemma">subv_anti</span></a> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#antisymmetric"><span class="id" title="definition">antisymmetric</span></a> <a class="idref" href="mathcomp.algebra.vector.html#subV"><span class="id" title="abbreviation">subV</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="eqEsubv"><span class="id" title="lemma">eqEsubv</span></a> <span class="id" title="var">U</span> <span class="id" title="var">V</span> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.vector.html#U"><span class="id" title="variable">U</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#17d28d004d0863cb022d4ce832ddaaae"><span class="id" title="notation">==</span></a> <a class="idref" href="mathcomp.algebra.vector.html#V"><span class="id" title="variable">V</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">)</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> (<a class="idref" href="mathcomp.algebra.vector.html#U"><span class="id" title="variable">U</span></a> <a class="idref" href="mathcomp.algebra.vector.html#279d21686ddbb39e1c3b4eb5ad283d06"><span class="id" title="notation">≤</span></a> <a class="idref" href="mathcomp.algebra.vector.html#V"><span class="id" title="variable">V</span></a> <a class="idref" href="mathcomp.algebra.vector.html#279d21686ddbb39e1c3b4eb5ad283d06"><span class="id" title="notation">≤</span></a> <a class="idref" href="mathcomp.algebra.vector.html#U"><span class="id" title="variable">U</span></a>)%<span class="id" title="var">VS</span>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="vspaceP"><span class="id" title="lemma">vspaceP</span></a> <span class="id" title="var">U</span> <span class="id" title="var">V</span> : <a class="idref" href="mathcomp.algebra.vector.html#U"><span class="id" title="variable">U</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#20bf07099d6d8cf369383b22fd37862e"><span class="id" title="notation">=</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#20bf07099d6d8cf369383b22fd37862e"><span class="id" title="notation">i</span></a> <a class="idref" href="mathcomp.algebra.vector.html#V"><span class="id" title="variable">V</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#df1ced36fc33ce188051218bca314374"><span class="id" title="notation">↔</span></a> <a class="idref" href="mathcomp.algebra.vector.html#U"><span class="id" title="variable">U</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.vector.html#V"><span class="id" title="variable">V</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="subvPn"><span class="id" title="lemma">subvPn</span></a> {<span class="id" title="var">U</span> <span class="id" title="var">V</span>} : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#reflect"><span class="id" title="abbreviation">reflect</span></a> (<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#28b18e493f7cb0bd8447607bdc385ff8"><span class="id" title="notation">exists2</span></a> <span class="id" title="var">u</span><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#28b18e493f7cb0bd8447607bdc385ff8"><span class="id" title="notation">,</span></a> <a class="idref" href="mathcomp.algebra.vector.html#u"><span class="id" title="variable">u</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">\</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">in</span></a> <a class="idref" href="mathcomp.algebra.vector.html#U"><span class="id" title="variable">U</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#28b18e493f7cb0bd8447607bdc385ff8"><span class="id" title="notation">&</span></a> <a class="idref" href="mathcomp.algebra.vector.html#u"><span class="id" title="variable">u</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#ad6d23746eb1a3b62e52010d3945a1db"><span class="id" title="notation">\</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#ad6d23746eb1a3b62e52010d3945a1db"><span class="id" title="notation">notin</span></a> <a class="idref" href="mathcomp.algebra.vector.html#V"><span class="id" title="variable">V</span></a>) (<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#4b80c70cdb231351c5e129ba61f7f956"><span class="id" title="notation">~~</span></a> (<a class="idref" href="mathcomp.algebra.vector.html#U"><span class="id" title="variable">U</span></a> <a class="idref" href="mathcomp.algebra.vector.html#755d11a7d5629bce3486e7cbadc915e7"><span class="id" title="notation">≤</span></a> <a class="idref" href="mathcomp.algebra.vector.html#V"><span class="id" title="variable">V</span></a>)%<span class="id" title="var">VS</span>).<br/> + +<br/> +</div> + +<div class="doc"> + Empty space. +</div> +<div class="code"> +<span class="id" title="keyword">Lemma</span> <a name="sub0v"><span class="id" title="lemma">sub0v</span></a> <span class="id" title="var">U</span> : (0 <a class="idref" href="mathcomp.algebra.vector.html#755d11a7d5629bce3486e7cbadc915e7"><span class="id" title="notation">≤</span></a> <a class="idref" href="mathcomp.algebra.vector.html#U"><span class="id" title="variable">U</span></a>)%<span class="id" title="var">VS</span>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="subv0"><span class="id" title="lemma">subv0</span></a> <span class="id" title="var">U</span> : (<a class="idref" href="mathcomp.algebra.vector.html#U"><span class="id" title="variable">U</span></a> <a class="idref" href="mathcomp.algebra.vector.html#755d11a7d5629bce3486e7cbadc915e7"><span class="id" title="notation">≤</span></a> 0)%<span class="id" title="var">VS</span> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.vector.html#U"><span class="id" title="variable">U</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#17d28d004d0863cb022d4ce832ddaaae"><span class="id" title="notation">==</span></a> 0%<span class="id" title="var">VS</span><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">)</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="memv0"><span class="id" title="lemma">memv0</span></a> <span class="id" title="var">v</span> : <a class="idref" href="mathcomp.algebra.vector.html#v"><span class="id" title="variable">v</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">\</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">in</span></a> 0%<span class="id" title="var">VS</span> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.vector.html#v"><span class="id" title="variable">v</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#17d28d004d0863cb022d4ce832ddaaae"><span class="id" title="notation">==</span></a> 0<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">)</span></a>.<br/> + +<br/> +</div> + +<div class="doc"> + Full space +</div> +<div class="code"> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="subvf"><span class="id" title="lemma">subvf</span></a> <span class="id" title="var">U</span> : (<a class="idref" href="mathcomp.algebra.vector.html#U"><span class="id" title="variable">U</span></a> <a class="idref" href="mathcomp.algebra.vector.html#755d11a7d5629bce3486e7cbadc915e7"><span class="id" title="notation">≤</span></a> <a class="idref" href="mathcomp.algebra.vector.html#fullv"><span class="id" title="definition">fullv</span></a>)%<span class="id" title="var">VS</span>. <br/> +<span class="id" title="keyword">Lemma</span> <a name="memvf"><span class="id" title="lemma">memvf</span></a> <span class="id" title="var">v</span> : <a class="idref" href="mathcomp.algebra.vector.html#v"><span class="id" title="variable">v</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">\</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">in</span></a> <a class="idref" href="mathcomp.algebra.vector.html#fullv"><span class="id" title="definition">fullv</span></a>. <br/> + +<br/> +</div> + +<div class="doc"> + Picking a non-zero vector in a subspace. +</div> +<div class="code"> +<span class="id" title="keyword">Lemma</span> <a name="memv_pick"><span class="id" title="lemma">memv_pick</span></a> <span class="id" title="var">U</span> : <a class="idref" href="mathcomp.algebra.vector.html#vpick"><span class="id" title="definition">vpick</span></a> <a class="idref" href="mathcomp.algebra.vector.html#U"><span class="id" title="variable">U</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">\</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">in</span></a> <a class="idref" href="mathcomp.algebra.vector.html#U"><span class="id" title="variable">U</span></a>. <br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="vpick0"><span class="id" title="lemma">vpick0</span></a> <span class="id" title="var">U</span> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.vector.html#vpick"><span class="id" title="definition">vpick</span></a> <a class="idref" href="mathcomp.algebra.vector.html#U"><span class="id" title="variable">U</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#17d28d004d0863cb022d4ce832ddaaae"><span class="id" title="notation">==</span></a> 0<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">)</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.vector.html#U"><span class="id" title="variable">U</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#17d28d004d0863cb022d4ce832ddaaae"><span class="id" title="notation">==</span></a> 0%<span class="id" title="var">VS</span><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">)</span></a>.<br/> + +<br/> +</div> + +<div class="doc"> + Sum of subspaces. +</div> +<div class="code"> +<span class="id" title="keyword">Lemma</span> <a name="subv_add"><span class="id" title="lemma">subv_add</span></a> <span class="id" title="var">U</span> <span class="id" title="var">V</span> <span class="id" title="var">W</span> : (<a class="idref" href="mathcomp.algebra.vector.html#U"><span class="id" title="variable">U</span></a> <a class="idref" href="mathcomp.algebra.vector.html#706deac9766015ea164a28957c46a7b4"><span class="id" title="notation">+</span></a> <a class="idref" href="mathcomp.algebra.vector.html#V"><span class="id" title="variable">V</span></a> <a class="idref" href="mathcomp.algebra.vector.html#755d11a7d5629bce3486e7cbadc915e7"><span class="id" title="notation">≤</span></a> <a class="idref" href="mathcomp.algebra.vector.html#W"><span class="id" title="variable">W</span></a>)%<span class="id" title="var">VS</span> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> (<a class="idref" href="mathcomp.algebra.vector.html#U"><span class="id" title="variable">U</span></a> <a class="idref" href="mathcomp.algebra.vector.html#755d11a7d5629bce3486e7cbadc915e7"><span class="id" title="notation">≤</span></a> <a class="idref" href="mathcomp.algebra.vector.html#W"><span class="id" title="variable">W</span></a>)%<span class="id" title="var">VS</span> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#49ac24efa716d8b0ee8943bc1d1769a9"><span class="id" title="notation">&&</span></a> (<a class="idref" href="mathcomp.algebra.vector.html#V"><span class="id" title="variable">V</span></a> <a class="idref" href="mathcomp.algebra.vector.html#755d11a7d5629bce3486e7cbadc915e7"><span class="id" title="notation">≤</span></a> <a class="idref" href="mathcomp.algebra.vector.html#W"><span class="id" title="variable">W</span></a>)%<span class="id" title="var">VS</span>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="addvS"><span class="id" title="lemma">addvS</span></a> <span class="id" title="var">U1</span> <span class="id" title="var">U2</span> <span class="id" title="var">V1</span> <span class="id" title="var">V2</span> : (<a class="idref" href="mathcomp.algebra.vector.html#U1"><span class="id" title="variable">U1</span></a> <a class="idref" href="mathcomp.algebra.vector.html#755d11a7d5629bce3486e7cbadc915e7"><span class="id" title="notation">≤</span></a> <a class="idref" href="mathcomp.algebra.vector.html#U2"><span class="id" title="variable">U2</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.vector.html#V1"><span class="id" title="variable">V1</span></a> <a class="idref" href="mathcomp.algebra.vector.html#755d11a7d5629bce3486e7cbadc915e7"><span class="id" title="notation">≤</span></a> <a class="idref" href="mathcomp.algebra.vector.html#V2"><span class="id" title="variable">V2</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.vector.html#U1"><span class="id" title="variable">U1</span></a> <a class="idref" href="mathcomp.algebra.vector.html#706deac9766015ea164a28957c46a7b4"><span class="id" title="notation">+</span></a> <a class="idref" href="mathcomp.algebra.vector.html#V1"><span class="id" title="variable">V1</span></a> <a class="idref" href="mathcomp.algebra.vector.html#755d11a7d5629bce3486e7cbadc915e7"><span class="id" title="notation">≤</span></a> <a class="idref" href="mathcomp.algebra.vector.html#U2"><span class="id" title="variable">U2</span></a> <a class="idref" href="mathcomp.algebra.vector.html#706deac9766015ea164a28957c46a7b4"><span class="id" title="notation">+</span></a> <a class="idref" href="mathcomp.algebra.vector.html#V2"><span class="id" title="variable">V2</span></a>)%<span class="id" title="var">VS</span>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="addvSl"><span class="id" title="lemma">addvSl</span></a> <span class="id" title="var">U</span> <span class="id" title="var">V</span> : (<a class="idref" href="mathcomp.algebra.vector.html#U"><span class="id" title="variable">U</span></a> <a class="idref" href="mathcomp.algebra.vector.html#755d11a7d5629bce3486e7cbadc915e7"><span class="id" title="notation">≤</span></a> <a class="idref" href="mathcomp.algebra.vector.html#U"><span class="id" title="variable">U</span></a> <a class="idref" href="mathcomp.algebra.vector.html#706deac9766015ea164a28957c46a7b4"><span class="id" title="notation">+</span></a> <a class="idref" href="mathcomp.algebra.vector.html#V"><span class="id" title="variable">V</span></a>)%<span class="id" title="var">VS</span>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="addvSr"><span class="id" title="lemma">addvSr</span></a> <span class="id" title="var">U</span> <span class="id" title="var">V</span> : (<a class="idref" href="mathcomp.algebra.vector.html#V"><span class="id" title="variable">V</span></a> <a class="idref" href="mathcomp.algebra.vector.html#755d11a7d5629bce3486e7cbadc915e7"><span class="id" title="notation">≤</span></a> <a class="idref" href="mathcomp.algebra.vector.html#U"><span class="id" title="variable">U</span></a> <a class="idref" href="mathcomp.algebra.vector.html#706deac9766015ea164a28957c46a7b4"><span class="id" title="notation">+</span></a> <a class="idref" href="mathcomp.algebra.vector.html#V"><span class="id" title="variable">V</span></a>)%<span class="id" title="var">VS</span>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="addvC"><span class="id" title="lemma">addvC</span></a> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#commutative"><span class="id" title="definition">commutative</span></a> <a class="idref" href="mathcomp.algebra.vector.html#addV"><span class="id" title="abbreviation">addV</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="addvA"><span class="id" title="lemma">addvA</span></a> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#associative"><span class="id" title="definition">associative</span></a> <a class="idref" href="mathcomp.algebra.vector.html#addV"><span class="id" title="abbreviation">addV</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="addv_idPl"><span class="id" title="lemma">addv_idPl</span></a> {<span class="id" title="var">U</span> <span class="id" title="var">V</span>}: <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#reflect"><span class="id" title="abbreviation">reflect</span></a> (<a class="idref" href="mathcomp.algebra.vector.html#U"><span class="id" title="variable">U</span></a> <a class="idref" href="mathcomp.algebra.vector.html#706deac9766015ea164a28957c46a7b4"><span class="id" title="notation">+</span></a> <a class="idref" href="mathcomp.algebra.vector.html#V"><span class="id" title="variable">V</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.vector.html#U"><span class="id" title="variable">U</span></a>)%<span class="id" title="var">VS</span> (<a class="idref" href="mathcomp.algebra.vector.html#V"><span class="id" title="variable">V</span></a> <a class="idref" href="mathcomp.algebra.vector.html#755d11a7d5629bce3486e7cbadc915e7"><span class="id" title="notation">≤</span></a> <a class="idref" href="mathcomp.algebra.vector.html#U"><span class="id" title="variable">U</span></a>)%<span class="id" title="var">VS</span>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="addv_idPr"><span class="id" title="lemma">addv_idPr</span></a> {<span class="id" title="var">U</span> <span class="id" title="var">V</span>} : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#reflect"><span class="id" title="abbreviation">reflect</span></a> (<a class="idref" href="mathcomp.algebra.vector.html#U"><span class="id" title="variable">U</span></a> <a class="idref" href="mathcomp.algebra.vector.html#706deac9766015ea164a28957c46a7b4"><span class="id" title="notation">+</span></a> <a class="idref" href="mathcomp.algebra.vector.html#V"><span class="id" title="variable">V</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.vector.html#V"><span class="id" title="variable">V</span></a>)%<span class="id" title="var">VS</span> (<a class="idref" href="mathcomp.algebra.vector.html#U"><span class="id" title="variable">U</span></a> <a class="idref" href="mathcomp.algebra.vector.html#755d11a7d5629bce3486e7cbadc915e7"><span class="id" title="notation">≤</span></a> <a class="idref" href="mathcomp.algebra.vector.html#V"><span class="id" title="variable">V</span></a>)%<span class="id" title="var">VS</span>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="addvv"><span class="id" title="lemma">addvv</span></a> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#idempotent"><span class="id" title="definition">idempotent</span></a> <a class="idref" href="mathcomp.algebra.vector.html#addV"><span class="id" title="abbreviation">addV</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="add0v"><span class="id" title="lemma">add0v</span></a> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#left_id"><span class="id" title="definition">left_id</span></a> 0%<span class="id" title="var">VS</span> <a class="idref" href="mathcomp.algebra.vector.html#addV"><span class="id" title="abbreviation">addV</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="addv0"><span class="id" title="lemma">addv0</span></a> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#right_id"><span class="id" title="definition">right_id</span></a> 0%<span class="id" title="var">VS</span> <a class="idref" href="mathcomp.algebra.vector.html#addV"><span class="id" title="abbreviation">addV</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="sumfv"><span class="id" title="lemma">sumfv</span></a> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#left_zero"><span class="id" title="definition">left_zero</span></a> <a class="idref" href="mathcomp.algebra.vector.html#fullv"><span class="id" title="definition">fullv</span></a> <a class="idref" href="mathcomp.algebra.vector.html#addV"><span class="id" title="abbreviation">addV</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="addvf"><span class="id" title="lemma">addvf</span></a> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#right_zero"><span class="id" title="definition">right_zero</span></a> <a class="idref" href="mathcomp.algebra.vector.html#fullv"><span class="id" title="definition">fullv</span></a> <a class="idref" href="mathcomp.algebra.vector.html#addV"><span class="id" title="abbreviation">addV</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Canonical</span> <span class="id" title="var">addv_monoid</span> := <a class="idref" href="mathcomp.ssreflect.bigop.html#Monoid.Law"><span class="id" title="constructor">Monoid.Law</span></a> <a class="idref" href="mathcomp.algebra.vector.html#addvA"><span class="id" title="lemma">addvA</span></a> <a class="idref" href="mathcomp.algebra.vector.html#add0v"><span class="id" title="lemma">add0v</span></a> <a class="idref" href="mathcomp.algebra.vector.html#addv0"><span class="id" title="lemma">addv0</span></a>.<br/> +<span class="id" title="keyword">Canonical</span> <span class="id" title="var">addv_comoid</span> := <a class="idref" href="mathcomp.ssreflect.bigop.html#Monoid.ComLaw"><span class="id" title="constructor">Monoid.ComLaw</span></a> <a class="idref" href="mathcomp.algebra.vector.html#addvC"><span class="id" title="lemma">addvC</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="memv_add"><span class="id" title="lemma">memv_add</span></a> <span class="id" title="var">u</span> <span class="id" title="var">v</span> <span class="id" title="var">U</span> <span class="id" title="var">V</span> : <a class="idref" href="mathcomp.algebra.vector.html#u"><span class="id" title="variable">u</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">\</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">in</span></a> <a class="idref" href="mathcomp.algebra.vector.html#U"><span class="id" title="variable">U</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.vector.html#v"><span class="id" title="variable">v</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">\</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">in</span></a> <a class="idref" href="mathcomp.algebra.vector.html#V"><span class="id" title="variable">V</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.vector.html#u"><span class="id" title="variable">u</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#ae4d81913e6239182a9ac7467ffde8cd"><span class="id" title="notation">+</span></a> <a class="idref" href="mathcomp.algebra.vector.html#v"><span class="id" title="variable">v</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">\</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">in</span></a> (<a class="idref" href="mathcomp.algebra.vector.html#U"><span class="id" title="variable">U</span></a> <a class="idref" href="mathcomp.algebra.vector.html#706deac9766015ea164a28957c46a7b4"><span class="id" title="notation">+</span></a> <a class="idref" href="mathcomp.algebra.vector.html#V"><span class="id" title="variable">V</span></a>)%<span class="id" title="var">VS</span>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="memv_addP"><span class="id" title="lemma">memv_addP</span></a> {<span class="id" title="var">w</span> <span class="id" title="var">U</span> <span class="id" title="var">V</span>} :<br/> + <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#reflect"><span class="id" title="abbreviation">reflect</span></a> (<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#28b18e493f7cb0bd8447607bdc385ff8"><span class="id" title="notation">exists2</span></a> <span class="id" title="var">u</span><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#28b18e493f7cb0bd8447607bdc385ff8"><span class="id" title="notation">,</span></a> <a class="idref" href="mathcomp.algebra.vector.html#u"><span class="id" title="variable">u</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">\</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">in</span></a> <a class="idref" href="mathcomp.algebra.vector.html#U"><span class="id" title="variable">U</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#28b18e493f7cb0bd8447607bdc385ff8"><span class="id" title="notation">&</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#28b18e493f7cb0bd8447607bdc385ff8"><span class="id" title="notation">exists2</span></a> <span class="id" title="var">v</span><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#28b18e493f7cb0bd8447607bdc385ff8"><span class="id" title="notation">,</span></a> <a class="idref" href="mathcomp.algebra.vector.html#v"><span class="id" title="variable">v</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">\</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">in</span></a> <a class="idref" href="mathcomp.algebra.vector.html#V"><span class="id" title="variable">V</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#28b18e493f7cb0bd8447607bdc385ff8"><span class="id" title="notation">&</span></a> <a class="idref" href="mathcomp.algebra.vector.html#w"><span class="id" title="variable">w</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.vector.html#u"><span class="id" title="variable">u</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#ae4d81913e6239182a9ac7467ffde8cd"><span class="id" title="notation">+</span></a> <a class="idref" href="mathcomp.algebra.vector.html#v"><span class="id" title="variable">v</span></a>)<br/> + (<a class="idref" href="mathcomp.algebra.vector.html#w"><span class="id" title="variable">w</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">\</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">in</span></a> <a class="idref" href="mathcomp.algebra.vector.html#U"><span class="id" title="variable">U</span></a> <a class="idref" href="mathcomp.algebra.vector.html#706deac9766015ea164a28957c46a7b4"><span class="id" title="notation">+</span></a> <a class="idref" href="mathcomp.algebra.vector.html#V"><span class="id" title="variable">V</span></a>)%<span class="id" title="var">VS</span>.<br/> + +<br/> +<span class="id" title="keyword">Section</span> <a name="VectorTheory.BigSum"><span class="id" title="section">BigSum</span></a>.<br/> +<span class="id" title="keyword">Variable</span> <a name="VectorTheory.BigSum.I"><span class="id" title="variable">I</span></a> : <a class="idref" href="mathcomp.ssreflect.fintype.html#Finite.Exports.finType"><span class="id" title="abbreviation">finType</span></a>.<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="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#pred"><span class="id" title="definition">pred</span></a> <a class="idref" href="mathcomp.algebra.vector.html#VectorTheory.BigSum.I"><span class="id" title="variable">I</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="sumv_sup"><span class="id" title="lemma">sumv_sup</span></a> <span class="id" title="var">i0</span> <span class="id" title="var">P</span> <span class="id" title="var">U</span> <span class="id" title="var">Vs</span> :<br/> + <a class="idref" href="mathcomp.algebra.vector.html#P"><span class="id" title="variable">P</span></a> <a class="idref" href="mathcomp.algebra.vector.html#i0"><span class="id" title="variable">i0</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> (<a class="idref" href="mathcomp.algebra.vector.html#U"><span class="id" title="variable">U</span></a> <a class="idref" href="mathcomp.algebra.vector.html#755d11a7d5629bce3486e7cbadc915e7"><span class="id" title="notation">≤</span></a> <a class="idref" href="mathcomp.algebra.vector.html#Vs"><span class="id" title="variable">Vs</span></a> <a class="idref" href="mathcomp.algebra.vector.html#i0"><span class="id" title="variable">i0</span></a>)%<span class="id" title="var">VS</span> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> (<a class="idref" href="mathcomp.algebra.vector.html#U"><span class="id" title="variable">U</span></a> <a class="idref" href="mathcomp.algebra.vector.html#755d11a7d5629bce3486e7cbadc915e7"><span class="id" title="notation">≤</span></a> <a class="idref" href="mathcomp.algebra.vector.html#d977f5115f4427a1c821b49789732de6"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.algebra.vector.html#d977f5115f4427a1c821b49789732de6"><span class="id" title="notation">sum_</span></a><a class="idref" href="mathcomp.algebra.vector.html#d977f5115f4427a1c821b49789732de6"><span class="id" title="notation">(</span></a><span class="id" title="var">i</span> <a class="idref" href="mathcomp.algebra.vector.html#d977f5115f4427a1c821b49789732de6"><span class="id" title="notation">|</span></a> <a class="idref" href="mathcomp.algebra.vector.html#P"><span class="id" title="variable">P</span></a> <a class="idref" href="mathcomp.algebra.vector.html#i"><span class="id" title="variable">i</span></a><a class="idref" href="mathcomp.algebra.vector.html#d977f5115f4427a1c821b49789732de6"><span class="id" title="notation">)</span></a> <a class="idref" href="mathcomp.algebra.vector.html#Vs"><span class="id" title="variable">Vs</span></a> <a class="idref" href="mathcomp.algebra.vector.html#i"><span class="id" title="variable">i</span></a>)%<span class="id" title="var">VS</span>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="subv_sumP"><span class="id" title="lemma">subv_sumP</span></a> {<span class="id" title="var">P</span> <span class="id" title="var">Us</span> <span class="id" title="var">V</span>} :<br/> + <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#reflect"><span class="id" title="abbreviation">reflect</span></a> (<span class="id" title="keyword">∀</span> <span class="id" title="var">i</span>, <a class="idref" href="mathcomp.algebra.vector.html#P"><span class="id" title="variable">P</span></a> <a class="idref" href="mathcomp.algebra.vector.html#i"><span class="id" title="variable">i</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.vector.html#Us"><span class="id" title="variable">Us</span></a> <a class="idref" href="mathcomp.algebra.vector.html#i"><span class="id" title="variable">i</span></a> <a class="idref" href="mathcomp.algebra.vector.html#755d11a7d5629bce3486e7cbadc915e7"><span class="id" title="notation">≤</span></a> <a class="idref" href="mathcomp.algebra.vector.html#V"><span class="id" title="variable">V</span></a>)%<span class="id" title="var">VS</span> (<a class="idref" href="mathcomp.algebra.vector.html#d977f5115f4427a1c821b49789732de6"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.algebra.vector.html#d977f5115f4427a1c821b49789732de6"><span class="id" title="notation">sum_</span></a><a class="idref" href="mathcomp.algebra.vector.html#d977f5115f4427a1c821b49789732de6"><span class="id" title="notation">(</span></a><span class="id" title="var">i</span> <a class="idref" href="mathcomp.algebra.vector.html#d977f5115f4427a1c821b49789732de6"><span class="id" title="notation">|</span></a> <a class="idref" href="mathcomp.algebra.vector.html#P"><span class="id" title="variable">P</span></a> <a class="idref" href="mathcomp.algebra.vector.html#i"><span class="id" title="variable">i</span></a><a class="idref" href="mathcomp.algebra.vector.html#d977f5115f4427a1c821b49789732de6"><span class="id" title="notation">)</span></a> <a class="idref" href="mathcomp.algebra.vector.html#Us"><span class="id" title="variable">Us</span></a> <a class="idref" href="mathcomp.algebra.vector.html#i"><span class="id" title="variable">i</span></a> <a class="idref" href="mathcomp.algebra.vector.html#755d11a7d5629bce3486e7cbadc915e7"><span class="id" title="notation">≤</span></a> <a class="idref" href="mathcomp.algebra.vector.html#V"><span class="id" title="variable">V</span></a>)%<span class="id" title="var">VS</span>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="memv_sumr"><span class="id" title="lemma">memv_sumr</span></a> <span class="id" title="var">P</span> <span class="id" title="var">vs</span> (<span class="id" title="var">Us</span> : <a class="idref" href="mathcomp.algebra.vector.html#VectorTheory.BigSum.I"><span class="id" title="variable">I</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.vector.html#ca0a177f6d6581a7f5199987cd7ee21c"><span class="id" title="notation">{</span></a><a class="idref" href="mathcomp.algebra.vector.html#ca0a177f6d6581a7f5199987cd7ee21c"><span class="id" title="notation">vspace</span></a> <a class="idref" href="mathcomp.algebra.vector.html#VectorTheory.vT"><span class="id" title="variable">vT</span></a><a class="idref" href="mathcomp.algebra.vector.html#ca0a177f6d6581a7f5199987cd7ee21c"><span class="id" title="notation">}</span></a>) :<br/> + <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">(</span></a><span class="id" title="keyword">∀</span> <span class="id" title="var">i</span>, <a class="idref" href="mathcomp.algebra.vector.html#P"><span class="id" title="variable">P</span></a> <a class="idref" href="mathcomp.algebra.vector.html#i"><span class="id" title="variable">i</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.vector.html#vs"><span class="id" title="variable">vs</span></a> <a class="idref" href="mathcomp.algebra.vector.html#i"><span class="id" title="variable">i</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">\</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">in</span></a> <a class="idref" href="mathcomp.algebra.vector.html#Us"><span class="id" title="variable">Us</span></a> <a class="idref" href="mathcomp.algebra.vector.html#i"><span class="id" title="variable">i</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">)</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a><br/> + <a class="idref" href="mathcomp.algebra.ssralg.html#622398b62523a74328f94700e42198d0"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#622398b62523a74328f94700e42198d0"><span class="id" title="notation">sum_</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#622398b62523a74328f94700e42198d0"><span class="id" title="notation">(</span></a><span class="id" title="var">i</span> <a class="idref" href="mathcomp.algebra.ssralg.html#622398b62523a74328f94700e42198d0"><span class="id" title="notation">|</span></a> <a class="idref" href="mathcomp.algebra.vector.html#P"><span class="id" title="variable">P</span></a> <a class="idref" href="mathcomp.algebra.vector.html#i"><span class="id" title="variable">i</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#622398b62523a74328f94700e42198d0"><span class="id" title="notation">)</span></a> <a class="idref" href="mathcomp.algebra.vector.html#vs"><span class="id" title="variable">vs</span></a> <a class="idref" href="mathcomp.algebra.vector.html#i"><span class="id" title="variable">i</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">\</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">in</span></a> (<a class="idref" href="mathcomp.algebra.vector.html#d977f5115f4427a1c821b49789732de6"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.algebra.vector.html#d977f5115f4427a1c821b49789732de6"><span class="id" title="notation">sum_</span></a><a class="idref" href="mathcomp.algebra.vector.html#d977f5115f4427a1c821b49789732de6"><span class="id" title="notation">(</span></a><span class="id" title="var">i</span> <a class="idref" href="mathcomp.algebra.vector.html#d977f5115f4427a1c821b49789732de6"><span class="id" title="notation">|</span></a> <a class="idref" href="mathcomp.algebra.vector.html#P"><span class="id" title="variable">P</span></a> <a class="idref" href="mathcomp.algebra.vector.html#i"><span class="id" title="variable">i</span></a><a class="idref" href="mathcomp.algebra.vector.html#d977f5115f4427a1c821b49789732de6"><span class="id" title="notation">)</span></a> <a class="idref" href="mathcomp.algebra.vector.html#Us"><span class="id" title="variable">Us</span></a> <a class="idref" href="mathcomp.algebra.vector.html#i"><span class="id" title="variable">i</span></a>)%<span class="id" title="var">VS</span>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="memv_sumP"><span class="id" title="lemma">memv_sumP</span></a> {<span class="id" title="var">P</span>} {<span class="id" title="var">Us</span> : <a class="idref" href="mathcomp.algebra.vector.html#VectorTheory.BigSum.I"><span class="id" title="variable">I</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.vector.html#ca0a177f6d6581a7f5199987cd7ee21c"><span class="id" title="notation">{</span></a><a class="idref" href="mathcomp.algebra.vector.html#ca0a177f6d6581a7f5199987cd7ee21c"><span class="id" title="notation">vspace</span></a> <a class="idref" href="mathcomp.algebra.vector.html#VectorTheory.vT"><span class="id" title="variable">vT</span></a><a class="idref" href="mathcomp.algebra.vector.html#ca0a177f6d6581a7f5199987cd7ee21c"><span class="id" title="notation">}</span></a>} {<span class="id" title="var">v</span>} : <br/> + <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#reflect"><span class="id" title="abbreviation">reflect</span></a> (<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#28b18e493f7cb0bd8447607bdc385ff8"><span class="id" title="notation">exists2</span></a> <span class="id" title="var">vs</span><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#28b18e493f7cb0bd8447607bdc385ff8"><span class="id" title="notation">,</span></a> <span class="id" title="keyword">∀</span> <span class="id" title="var">i</span>, <a class="idref" href="mathcomp.algebra.vector.html#P"><span class="id" title="variable">P</span></a> <a class="idref" href="mathcomp.algebra.vector.html#i"><span class="id" title="variable">i</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.vector.html#vs"><span class="id" title="variable">vs</span></a> <a class="idref" href="mathcomp.algebra.vector.html#i"><span class="id" title="variable">i</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">\</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">in</span></a> <a class="idref" href="mathcomp.algebra.vector.html#Us"><span class="id" title="variable">Us</span></a> <a class="idref" href="mathcomp.algebra.vector.html#i"><span class="id" title="variable">i</span></a><br/> + <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#28b18e493f7cb0bd8447607bdc385ff8"><span class="id" title="notation">&</span></a> <a class="idref" href="mathcomp.algebra.vector.html#v"><span class="id" title="variable">v</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#622398b62523a74328f94700e42198d0"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#622398b62523a74328f94700e42198d0"><span class="id" title="notation">sum_</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#622398b62523a74328f94700e42198d0"><span class="id" title="notation">(</span></a><span class="id" title="var">i</span> <a class="idref" href="mathcomp.algebra.ssralg.html#622398b62523a74328f94700e42198d0"><span class="id" title="notation">|</span></a> <a class="idref" href="mathcomp.algebra.vector.html#P"><span class="id" title="variable">P</span></a> <a class="idref" href="mathcomp.algebra.vector.html#i"><span class="id" title="variable">i</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#622398b62523a74328f94700e42198d0"><span class="id" title="notation">)</span></a> <a class="idref" href="mathcomp.algebra.vector.html#vs"><span class="id" title="variable">vs</span></a> <a class="idref" href="mathcomp.algebra.vector.html#i"><span class="id" title="variable">i</span></a>)<br/> + (<a class="idref" href="mathcomp.algebra.vector.html#v"><span class="id" title="variable">v</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">\</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">in</span></a> <a class="idref" href="mathcomp.algebra.vector.html#d977f5115f4427a1c821b49789732de6"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.algebra.vector.html#d977f5115f4427a1c821b49789732de6"><span class="id" title="notation">sum_</span></a><a class="idref" href="mathcomp.algebra.vector.html#d977f5115f4427a1c821b49789732de6"><span class="id" title="notation">(</span></a><span class="id" title="var">i</span> <a class="idref" href="mathcomp.algebra.vector.html#d977f5115f4427a1c821b49789732de6"><span class="id" title="notation">|</span></a> <a class="idref" href="mathcomp.algebra.vector.html#P"><span class="id" title="variable">P</span></a> <a class="idref" href="mathcomp.algebra.vector.html#i"><span class="id" title="variable">i</span></a><a class="idref" href="mathcomp.algebra.vector.html#d977f5115f4427a1c821b49789732de6"><span class="id" title="notation">)</span></a> <a class="idref" href="mathcomp.algebra.vector.html#Us"><span class="id" title="variable">Us</span></a> <a class="idref" href="mathcomp.algebra.vector.html#i"><span class="id" title="variable">i</span></a>)%<span class="id" title="var">VS</span>.<br/> + +<br/> +<span class="id" title="keyword">End</span> <a class="idref" href="mathcomp.algebra.vector.html#VectorTheory.BigSum"><span class="id" title="section">BigSum</span></a>.<br/> + +<br/> +</div> + +<div class="doc"> + Intersection +</div> +<div class="code"> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="subv_cap"><span class="id" title="lemma">subv_cap</span></a> <span class="id" title="var">U</span> <span class="id" title="var">V</span> <span class="id" title="var">W</span> : (<a class="idref" href="mathcomp.algebra.vector.html#U"><span class="id" title="variable">U</span></a> <a class="idref" href="mathcomp.algebra.vector.html#755d11a7d5629bce3486e7cbadc915e7"><span class="id" title="notation">≤</span></a> <a class="idref" href="mathcomp.algebra.vector.html#V"><span class="id" title="variable">V</span></a> <a class="idref" href="mathcomp.algebra.vector.html#585f47de65e0d6c6ecedb971203eafab"><span class="id" title="notation">:&:</span></a> <a class="idref" href="mathcomp.algebra.vector.html#W"><span class="id" title="variable">W</span></a>)%<span class="id" title="var">VS</span> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> (<a class="idref" href="mathcomp.algebra.vector.html#U"><span class="id" title="variable">U</span></a> <a class="idref" href="mathcomp.algebra.vector.html#755d11a7d5629bce3486e7cbadc915e7"><span class="id" title="notation">≤</span></a> <a class="idref" href="mathcomp.algebra.vector.html#V"><span class="id" title="variable">V</span></a>)%<span class="id" title="var">VS</span> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#49ac24efa716d8b0ee8943bc1d1769a9"><span class="id" title="notation">&&</span></a> (<a class="idref" href="mathcomp.algebra.vector.html#U"><span class="id" title="variable">U</span></a> <a class="idref" href="mathcomp.algebra.vector.html#755d11a7d5629bce3486e7cbadc915e7"><span class="id" title="notation">≤</span></a> <a class="idref" href="mathcomp.algebra.vector.html#W"><span class="id" title="variable">W</span></a>)%<span class="id" title="var">VS</span>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="capvS"><span class="id" title="lemma">capvS</span></a> <span class="id" title="var">U1</span> <span class="id" title="var">U2</span> <span class="id" title="var">V1</span> <span class="id" title="var">V2</span> : (<a class="idref" href="mathcomp.algebra.vector.html#U1"><span class="id" title="variable">U1</span></a> <a class="idref" href="mathcomp.algebra.vector.html#755d11a7d5629bce3486e7cbadc915e7"><span class="id" title="notation">≤</span></a> <a class="idref" href="mathcomp.algebra.vector.html#U2"><span class="id" title="variable">U2</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.vector.html#V1"><span class="id" title="variable">V1</span></a> <a class="idref" href="mathcomp.algebra.vector.html#755d11a7d5629bce3486e7cbadc915e7"><span class="id" title="notation">≤</span></a> <a class="idref" href="mathcomp.algebra.vector.html#V2"><span class="id" title="variable">V2</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.vector.html#U1"><span class="id" title="variable">U1</span></a> <a class="idref" href="mathcomp.algebra.vector.html#585f47de65e0d6c6ecedb971203eafab"><span class="id" title="notation">:&:</span></a> <a class="idref" href="mathcomp.algebra.vector.html#V1"><span class="id" title="variable">V1</span></a> <a class="idref" href="mathcomp.algebra.vector.html#755d11a7d5629bce3486e7cbadc915e7"><span class="id" title="notation">≤</span></a> <a class="idref" href="mathcomp.algebra.vector.html#U2"><span class="id" title="variable">U2</span></a> <a class="idref" href="mathcomp.algebra.vector.html#585f47de65e0d6c6ecedb971203eafab"><span class="id" title="notation">:&:</span></a> <a class="idref" href="mathcomp.algebra.vector.html#V2"><span class="id" title="variable">V2</span></a>)%<span class="id" title="var">VS</span>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="capvSl"><span class="id" title="lemma">capvSl</span></a> <span class="id" title="var">U</span> <span class="id" title="var">V</span> : (<a class="idref" href="mathcomp.algebra.vector.html#U"><span class="id" title="variable">U</span></a> <a class="idref" href="mathcomp.algebra.vector.html#585f47de65e0d6c6ecedb971203eafab"><span class="id" title="notation">:&:</span></a> <a class="idref" href="mathcomp.algebra.vector.html#V"><span class="id" title="variable">V</span></a> <a class="idref" href="mathcomp.algebra.vector.html#755d11a7d5629bce3486e7cbadc915e7"><span class="id" title="notation">≤</span></a> <a class="idref" href="mathcomp.algebra.vector.html#U"><span class="id" title="variable">U</span></a>)%<span class="id" title="var">VS</span>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="capvSr"><span class="id" title="lemma">capvSr</span></a> <span class="id" title="var">U</span> <span class="id" title="var">V</span> : (<a class="idref" href="mathcomp.algebra.vector.html#U"><span class="id" title="variable">U</span></a> <a class="idref" href="mathcomp.algebra.vector.html#585f47de65e0d6c6ecedb971203eafab"><span class="id" title="notation">:&:</span></a> <a class="idref" href="mathcomp.algebra.vector.html#V"><span class="id" title="variable">V</span></a> <a class="idref" href="mathcomp.algebra.vector.html#755d11a7d5629bce3486e7cbadc915e7"><span class="id" title="notation">≤</span></a> <a class="idref" href="mathcomp.algebra.vector.html#V"><span class="id" title="variable">V</span></a>)%<span class="id" title="var">VS</span>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="capvC"><span class="id" title="lemma">capvC</span></a> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#commutative"><span class="id" title="definition">commutative</span></a> <a class="idref" href="mathcomp.algebra.vector.html#capV"><span class="id" title="abbreviation">capV</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="capvA"><span class="id" title="lemma">capvA</span></a> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#associative"><span class="id" title="definition">associative</span></a> <a class="idref" href="mathcomp.algebra.vector.html#capV"><span class="id" title="abbreviation">capV</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="capv_idPl"><span class="id" title="lemma">capv_idPl</span></a> {<span class="id" title="var">U</span> <span class="id" title="var">V</span>} : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#reflect"><span class="id" title="abbreviation">reflect</span></a> (<a class="idref" href="mathcomp.algebra.vector.html#U"><span class="id" title="variable">U</span></a> <a class="idref" href="mathcomp.algebra.vector.html#585f47de65e0d6c6ecedb971203eafab"><span class="id" title="notation">:&:</span></a> <a class="idref" href="mathcomp.algebra.vector.html#V"><span class="id" title="variable">V</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.vector.html#U"><span class="id" title="variable">U</span></a>)%<span class="id" title="var">VS</span> (<a class="idref" href="mathcomp.algebra.vector.html#U"><span class="id" title="variable">U</span></a> <a class="idref" href="mathcomp.algebra.vector.html#755d11a7d5629bce3486e7cbadc915e7"><span class="id" title="notation">≤</span></a> <a class="idref" href="mathcomp.algebra.vector.html#V"><span class="id" title="variable">V</span></a>)%<span class="id" title="var">VS</span>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="capv_idPr"><span class="id" title="lemma">capv_idPr</span></a> {<span class="id" title="var">U</span> <span class="id" title="var">V</span>} : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#reflect"><span class="id" title="abbreviation">reflect</span></a> (<a class="idref" href="mathcomp.algebra.vector.html#U"><span class="id" title="variable">U</span></a> <a class="idref" href="mathcomp.algebra.vector.html#585f47de65e0d6c6ecedb971203eafab"><span class="id" title="notation">:&:</span></a> <a class="idref" href="mathcomp.algebra.vector.html#V"><span class="id" title="variable">V</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.vector.html#V"><span class="id" title="variable">V</span></a>)%<span class="id" title="var">VS</span> (<a class="idref" href="mathcomp.algebra.vector.html#V"><span class="id" title="variable">V</span></a> <a class="idref" href="mathcomp.algebra.vector.html#755d11a7d5629bce3486e7cbadc915e7"><span class="id" title="notation">≤</span></a> <a class="idref" href="mathcomp.algebra.vector.html#U"><span class="id" title="variable">U</span></a>)%<span class="id" title="var">VS</span>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="capvv"><span class="id" title="lemma">capvv</span></a> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#idempotent"><span class="id" title="definition">idempotent</span></a> <a class="idref" href="mathcomp.algebra.vector.html#capV"><span class="id" title="abbreviation">capV</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="cap0v"><span class="id" title="lemma">cap0v</span></a> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#left_zero"><span class="id" title="definition">left_zero</span></a> 0%<span class="id" title="var">VS</span> <a class="idref" href="mathcomp.algebra.vector.html#capV"><span class="id" title="abbreviation">capV</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="capv0"><span class="id" title="lemma">capv0</span></a> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#right_zero"><span class="id" title="definition">right_zero</span></a> 0%<span class="id" title="var">VS</span> <a class="idref" href="mathcomp.algebra.vector.html#capV"><span class="id" title="abbreviation">capV</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="capfv"><span class="id" title="lemma">capfv</span></a> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#left_id"><span class="id" title="definition">left_id</span></a> <a class="idref" href="mathcomp.algebra.vector.html#fullv"><span class="id" title="definition">fullv</span></a> <a class="idref" href="mathcomp.algebra.vector.html#capV"><span class="id" title="abbreviation">capV</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="capvf"><span class="id" title="lemma">capvf</span></a> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#right_id"><span class="id" title="definition">right_id</span></a> <a class="idref" href="mathcomp.algebra.vector.html#fullv"><span class="id" title="definition">fullv</span></a> <a class="idref" href="mathcomp.algebra.vector.html#capV"><span class="id" title="abbreviation">capV</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Canonical</span> <span class="id" title="var">capv_monoid</span> := <a class="idref" href="mathcomp.ssreflect.bigop.html#Monoid.Law"><span class="id" title="constructor">Monoid.Law</span></a> <a class="idref" href="mathcomp.algebra.vector.html#capvA"><span class="id" title="lemma">capvA</span></a> <a class="idref" href="mathcomp.algebra.vector.html#capfv"><span class="id" title="lemma">capfv</span></a> <a class="idref" href="mathcomp.algebra.vector.html#capvf"><span class="id" title="lemma">capvf</span></a>.<br/> +<span class="id" title="keyword">Canonical</span> <span class="id" title="var">capv_comoid</span> := <a class="idref" href="mathcomp.ssreflect.bigop.html#Monoid.ComLaw"><span class="id" title="constructor">Monoid.ComLaw</span></a> <a class="idref" href="mathcomp.algebra.vector.html#capvC"><span class="id" title="lemma">capvC</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="memv_cap"><span class="id" title="lemma">memv_cap</span></a> <span class="id" title="var">w</span> <span class="id" title="var">U</span> <span class="id" title="var">V</span> : (<a class="idref" href="mathcomp.algebra.vector.html#w"><span class="id" title="variable">w</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">\</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">in</span></a> <a class="idref" href="mathcomp.algebra.vector.html#U"><span class="id" title="variable">U</span></a> <a class="idref" href="mathcomp.algebra.vector.html#585f47de65e0d6c6ecedb971203eafab"><span class="id" title="notation">:&:</span></a> <a class="idref" href="mathcomp.algebra.vector.html#V"><span class="id" title="variable">V</span></a>)%<span class="id" title="var">VS</span> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#49ac24efa716d8b0ee8943bc1d1769a9"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.vector.html#w"><span class="id" title="variable">w</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">\</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">in</span></a> <a class="idref" href="mathcomp.algebra.vector.html#U"><span class="id" title="variable">U</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#49ac24efa716d8b0ee8943bc1d1769a9"><span class="id" title="notation">)</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#49ac24efa716d8b0ee8943bc1d1769a9"><span class="id" title="notation">&&</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#49ac24efa716d8b0ee8943bc1d1769a9"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.vector.html#w"><span class="id" title="variable">w</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">\</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">in</span></a> <a class="idref" href="mathcomp.algebra.vector.html#V"><span class="id" title="variable">V</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#49ac24efa716d8b0ee8943bc1d1769a9"><span class="id" title="notation">)</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="memv_capP"><span class="id" title="lemma">memv_capP</span></a> {<span class="id" title="var">w</span> <span class="id" title="var">U</span> <span class="id" title="var">V</span>} : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#reflect"><span class="id" title="abbreviation">reflect</span></a> (<a class="idref" href="mathcomp.algebra.vector.html#w"><span class="id" title="variable">w</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">\</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">in</span></a> <a class="idref" href="mathcomp.algebra.vector.html#U"><span class="id" title="variable">U</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d82a7d96d3659d805ffe732283716822"><span class="id" title="notation">∧</span></a> <a class="idref" href="mathcomp.algebra.vector.html#w"><span class="id" title="variable">w</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">\</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">in</span></a> <a class="idref" href="mathcomp.algebra.vector.html#V"><span class="id" title="variable">V</span></a>) (<a class="idref" href="mathcomp.algebra.vector.html#w"><span class="id" title="variable">w</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">\</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">in</span></a> <a class="idref" href="mathcomp.algebra.vector.html#U"><span class="id" title="variable">U</span></a> <a class="idref" href="mathcomp.algebra.vector.html#585f47de65e0d6c6ecedb971203eafab"><span class="id" title="notation">:&:</span></a> <a class="idref" href="mathcomp.algebra.vector.html#V"><span class="id" title="variable">V</span></a>)%<span class="id" title="var">VS</span>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="vspace_modl"><span class="id" title="lemma">vspace_modl</span></a> <span class="id" title="var">U</span> <span class="id" title="var">V</span> <span class="id" title="var">W</span> : (<a class="idref" href="mathcomp.algebra.vector.html#U"><span class="id" title="variable">U</span></a> <a class="idref" href="mathcomp.algebra.vector.html#755d11a7d5629bce3486e7cbadc915e7"><span class="id" title="notation">≤</span></a> <a class="idref" href="mathcomp.algebra.vector.html#W"><span class="id" title="variable">W</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.vector.html#U"><span class="id" title="variable">U</span></a> <a class="idref" href="mathcomp.algebra.vector.html#706deac9766015ea164a28957c46a7b4"><span class="id" title="notation">+</span></a> <a class="idref" href="mathcomp.algebra.vector.html#706deac9766015ea164a28957c46a7b4"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.vector.html#V"><span class="id" title="variable">V</span></a> <a class="idref" href="mathcomp.algebra.vector.html#585f47de65e0d6c6ecedb971203eafab"><span class="id" title="notation">:&:</span></a> <a class="idref" href="mathcomp.algebra.vector.html#W"><span class="id" title="variable">W</span></a><a class="idref" href="mathcomp.algebra.vector.html#706deac9766015ea164a28957c46a7b4"><span class="id" title="notation">)</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.vector.html#585f47de65e0d6c6ecedb971203eafab"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.vector.html#U"><span class="id" title="variable">U</span></a> <a class="idref" href="mathcomp.algebra.vector.html#706deac9766015ea164a28957c46a7b4"><span class="id" title="notation">+</span></a> <a class="idref" href="mathcomp.algebra.vector.html#V"><span class="id" title="variable">V</span></a><a class="idref" href="mathcomp.algebra.vector.html#585f47de65e0d6c6ecedb971203eafab"><span class="id" title="notation">)</span></a> <a class="idref" href="mathcomp.algebra.vector.html#585f47de65e0d6c6ecedb971203eafab"><span class="id" title="notation">:&:</span></a> <a class="idref" href="mathcomp.algebra.vector.html#W"><span class="id" title="variable">W</span></a>)%<span class="id" title="var">VS</span>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="vspace_modr"><span class="id" title="lemma">vspace_modr</span></a> <span class="id" title="var">U</span> <span class="id" title="var">V</span> <span class="id" title="var">W</span> : (<a class="idref" href="mathcomp.algebra.vector.html#W"><span class="id" title="variable">W</span></a> <a class="idref" href="mathcomp.algebra.vector.html#755d11a7d5629bce3486e7cbadc915e7"><span class="id" title="notation">≤</span></a> <a class="idref" href="mathcomp.algebra.vector.html#U"><span class="id" title="variable">U</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.vector.html#706deac9766015ea164a28957c46a7b4"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.vector.html#U"><span class="id" title="variable">U</span></a> <a class="idref" href="mathcomp.algebra.vector.html#585f47de65e0d6c6ecedb971203eafab"><span class="id" title="notation">:&:</span></a> <a class="idref" href="mathcomp.algebra.vector.html#V"><span class="id" title="variable">V</span></a><a class="idref" href="mathcomp.algebra.vector.html#706deac9766015ea164a28957c46a7b4"><span class="id" title="notation">)</span></a> <a class="idref" href="mathcomp.algebra.vector.html#706deac9766015ea164a28957c46a7b4"><span class="id" title="notation">+</span></a> <a class="idref" href="mathcomp.algebra.vector.html#W"><span class="id" title="variable">W</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.vector.html#U"><span class="id" title="variable">U</span></a> <a class="idref" href="mathcomp.algebra.vector.html#585f47de65e0d6c6ecedb971203eafab"><span class="id" title="notation">:&:</span></a> <a class="idref" href="mathcomp.algebra.vector.html#585f47de65e0d6c6ecedb971203eafab"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.vector.html#V"><span class="id" title="variable">V</span></a> <a class="idref" href="mathcomp.algebra.vector.html#706deac9766015ea164a28957c46a7b4"><span class="id" title="notation">+</span></a> <a class="idref" href="mathcomp.algebra.vector.html#W"><span class="id" title="variable">W</span></a><a class="idref" href="mathcomp.algebra.vector.html#585f47de65e0d6c6ecedb971203eafab"><span class="id" title="notation">)</span></a>)%<span class="id" title="var">VS</span>.<br/> + +<br/> +<span class="id" title="keyword">Section</span> <a name="VectorTheory.BigCap"><span class="id" title="section">BigCap</span></a>.<br/> +<span class="id" title="keyword">Variable</span> <a name="VectorTheory.BigCap.I"><span class="id" title="variable">I</span></a> : <a class="idref" href="mathcomp.ssreflect.fintype.html#Finite.Exports.finType"><span class="id" title="abbreviation">finType</span></a>.<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="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#pred"><span class="id" title="definition">pred</span></a> <a class="idref" href="mathcomp.algebra.vector.html#VectorTheory.BigCap.I"><span class="id" title="variable">I</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="bigcapv_inf"><span class="id" title="lemma">bigcapv_inf</span></a> <span class="id" title="var">i0</span> <span class="id" title="var">P</span> <span class="id" title="var">Us</span> <span class="id" title="var">V</span> :<br/> + <a class="idref" href="mathcomp.algebra.vector.html#P"><span class="id" title="variable">P</span></a> <a class="idref" href="mathcomp.algebra.vector.html#i0"><span class="id" title="variable">i0</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> (<a class="idref" href="mathcomp.algebra.vector.html#Us"><span class="id" title="variable">Us</span></a> <a class="idref" href="mathcomp.algebra.vector.html#i0"><span class="id" title="variable">i0</span></a> <a class="idref" href="mathcomp.algebra.vector.html#755d11a7d5629bce3486e7cbadc915e7"><span class="id" title="notation">≤</span></a> <a class="idref" href="mathcomp.algebra.vector.html#V"><span class="id" title="variable">V</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.vector.html#20793aa95353fced22b75b1022e9ab39"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.algebra.vector.html#20793aa95353fced22b75b1022e9ab39"><span class="id" title="notation">bigcap_</span></a><a class="idref" href="mathcomp.algebra.vector.html#20793aa95353fced22b75b1022e9ab39"><span class="id" title="notation">(</span></a><span class="id" title="var">i</span> <a class="idref" href="mathcomp.algebra.vector.html#20793aa95353fced22b75b1022e9ab39"><span class="id" title="notation">|</span></a> <a class="idref" href="mathcomp.algebra.vector.html#P"><span class="id" title="variable">P</span></a> <a class="idref" href="mathcomp.algebra.vector.html#i"><span class="id" title="variable">i</span></a><a class="idref" href="mathcomp.algebra.vector.html#20793aa95353fced22b75b1022e9ab39"><span class="id" title="notation">)</span></a> <a class="idref" href="mathcomp.algebra.vector.html#Us"><span class="id" title="variable">Us</span></a> <a class="idref" href="mathcomp.algebra.vector.html#i"><span class="id" title="variable">i</span></a> <a class="idref" href="mathcomp.algebra.vector.html#755d11a7d5629bce3486e7cbadc915e7"><span class="id" title="notation">≤</span></a> <a class="idref" href="mathcomp.algebra.vector.html#V"><span class="id" title="variable">V</span></a>)%<span class="id" title="var">VS</span>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="subv_bigcapP"><span class="id" title="lemma">subv_bigcapP</span></a> {<span class="id" title="var">P</span> <span class="id" title="var">U</span> <span class="id" title="var">Vs</span>} :<br/> + <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#reflect"><span class="id" title="abbreviation">reflect</span></a> (<span class="id" title="keyword">∀</span> <span class="id" title="var">i</span>, <a class="idref" href="mathcomp.algebra.vector.html#P"><span class="id" title="variable">P</span></a> <a class="idref" href="mathcomp.algebra.vector.html#i"><span class="id" title="variable">i</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.vector.html#U"><span class="id" title="variable">U</span></a> <a class="idref" href="mathcomp.algebra.vector.html#755d11a7d5629bce3486e7cbadc915e7"><span class="id" title="notation">≤</span></a> <a class="idref" href="mathcomp.algebra.vector.html#Vs"><span class="id" title="variable">Vs</span></a> <a class="idref" href="mathcomp.algebra.vector.html#i"><span class="id" title="variable">i</span></a>)%<span class="id" title="var">VS</span> (<a class="idref" href="mathcomp.algebra.vector.html#U"><span class="id" title="variable">U</span></a> <a class="idref" href="mathcomp.algebra.vector.html#755d11a7d5629bce3486e7cbadc915e7"><span class="id" title="notation">≤</span></a> <a class="idref" href="mathcomp.algebra.vector.html#20793aa95353fced22b75b1022e9ab39"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.algebra.vector.html#20793aa95353fced22b75b1022e9ab39"><span class="id" title="notation">bigcap_</span></a><a class="idref" href="mathcomp.algebra.vector.html#20793aa95353fced22b75b1022e9ab39"><span class="id" title="notation">(</span></a><span class="id" title="var">i</span> <a class="idref" href="mathcomp.algebra.vector.html#20793aa95353fced22b75b1022e9ab39"><span class="id" title="notation">|</span></a> <a class="idref" href="mathcomp.algebra.vector.html#P"><span class="id" title="variable">P</span></a> <a class="idref" href="mathcomp.algebra.vector.html#i"><span class="id" title="variable">i</span></a><a class="idref" href="mathcomp.algebra.vector.html#20793aa95353fced22b75b1022e9ab39"><span class="id" title="notation">)</span></a> <a class="idref" href="mathcomp.algebra.vector.html#Vs"><span class="id" title="variable">Vs</span></a> <a class="idref" href="mathcomp.algebra.vector.html#i"><span class="id" title="variable">i</span></a>)%<span class="id" title="var">VS</span>.<br/> + +<br/> +<span class="id" title="keyword">End</span> <a class="idref" href="mathcomp.algebra.vector.html#VectorTheory.BigCap"><span class="id" title="section">BigCap</span></a>.<br/> + +<br/> +</div> + +<div class="doc"> + Complement +</div> +<div class="code"> +<span class="id" title="keyword">Lemma</span> <a name="addv_complf"><span class="id" title="lemma">addv_complf</span></a> <span class="id" title="var">U</span> : (<a class="idref" href="mathcomp.algebra.vector.html#U"><span class="id" title="variable">U</span></a> <a class="idref" href="mathcomp.algebra.vector.html#706deac9766015ea164a28957c46a7b4"><span class="id" title="notation">+</span></a> <a class="idref" href="mathcomp.algebra.vector.html#U"><span class="id" title="variable">U</span></a><a class="idref" href="mathcomp.algebra.vector.html#071d56fbd1000a21b48af9aadab34351"><span class="id" title="notation">^</span></a><a class="idref" href="mathcomp.algebra.vector.html#071d56fbd1000a21b48af9aadab34351"><span class="id" title="notation">C</span></a>)%<span class="id" title="var">VS</span> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.vector.html#fullv"><span class="id" title="definition">fullv</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="capv_compl"><span class="id" title="lemma">capv_compl</span></a> <span class="id" title="var">U</span> : (<a class="idref" href="mathcomp.algebra.vector.html#U"><span class="id" title="variable">U</span></a> <a class="idref" href="mathcomp.algebra.vector.html#585f47de65e0d6c6ecedb971203eafab"><span class="id" title="notation">:&:</span></a> <a class="idref" href="mathcomp.algebra.vector.html#U"><span class="id" title="variable">U</span></a><a class="idref" href="mathcomp.algebra.vector.html#071d56fbd1000a21b48af9aadab34351"><span class="id" title="notation">^</span></a><a class="idref" href="mathcomp.algebra.vector.html#071d56fbd1000a21b48af9aadab34351"><span class="id" title="notation">C</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> 0)%<span class="id" title="var">VS</span>.<br/> + +<br/> +</div> + +<div class="doc"> + Difference +</div> +<div class="code"> +<span class="id" title="keyword">Lemma</span> <a name="diffvSl"><span class="id" title="lemma">diffvSl</span></a> <span class="id" title="var">U</span> <span class="id" title="var">V</span> : (<a class="idref" href="mathcomp.algebra.vector.html#U"><span class="id" title="variable">U</span></a> <a class="idref" href="mathcomp.algebra.vector.html#946bddca9671fead9ed6e5aece130780"><span class="id" title="notation">:\:</span></a> <a class="idref" href="mathcomp.algebra.vector.html#V"><span class="id" title="variable">V</span></a> <a class="idref" href="mathcomp.algebra.vector.html#755d11a7d5629bce3486e7cbadc915e7"><span class="id" title="notation">≤</span></a> <a class="idref" href="mathcomp.algebra.vector.html#U"><span class="id" title="variable">U</span></a>)%<span class="id" title="var">VS</span>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="capv_diff"><span class="id" title="lemma">capv_diff</span></a> <span class="id" title="var">U</span> <span class="id" title="var">V</span> : (<a class="idref" href="mathcomp.algebra.vector.html#585f47de65e0d6c6ecedb971203eafab"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.vector.html#U"><span class="id" title="variable">U</span></a> <a class="idref" href="mathcomp.algebra.vector.html#946bddca9671fead9ed6e5aece130780"><span class="id" title="notation">:\:</span></a> <a class="idref" href="mathcomp.algebra.vector.html#V"><span class="id" title="variable">V</span></a><a class="idref" href="mathcomp.algebra.vector.html#585f47de65e0d6c6ecedb971203eafab"><span class="id" title="notation">)</span></a> <a class="idref" href="mathcomp.algebra.vector.html#585f47de65e0d6c6ecedb971203eafab"><span class="id" title="notation">:&:</span></a> <a class="idref" href="mathcomp.algebra.vector.html#V"><span class="id" title="variable">V</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> 0)%<span class="id" title="var">VS</span>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="addv_diff_cap"><span class="id" title="lemma">addv_diff_cap</span></a> <span class="id" title="var">U</span> <span class="id" title="var">V</span> : (<a class="idref" href="mathcomp.algebra.vector.html#U"><span class="id" title="variable">U</span></a> <a class="idref" href="mathcomp.algebra.vector.html#946bddca9671fead9ed6e5aece130780"><span class="id" title="notation">:\:</span></a> <a class="idref" href="mathcomp.algebra.vector.html#V"><span class="id" title="variable">V</span></a> <a class="idref" href="mathcomp.algebra.vector.html#706deac9766015ea164a28957c46a7b4"><span class="id" title="notation">+</span></a> <a class="idref" href="mathcomp.algebra.vector.html#U"><span class="id" title="variable">U</span></a> <a class="idref" href="mathcomp.algebra.vector.html#585f47de65e0d6c6ecedb971203eafab"><span class="id" title="notation">:&:</span></a> <a class="idref" href="mathcomp.algebra.vector.html#V"><span class="id" title="variable">V</span></a>)%<span class="id" title="var">VS</span> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.vector.html#U"><span class="id" title="variable">U</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="addv_diff"><span class="id" title="lemma">addv_diff</span></a> <span class="id" title="var">U</span> <span class="id" title="var">V</span> : (<a class="idref" href="mathcomp.algebra.vector.html#U"><span class="id" title="variable">U</span></a> <a class="idref" href="mathcomp.algebra.vector.html#946bddca9671fead9ed6e5aece130780"><span class="id" title="notation">:\:</span></a> <a class="idref" href="mathcomp.algebra.vector.html#V"><span class="id" title="variable">V</span></a> <a class="idref" href="mathcomp.algebra.vector.html#706deac9766015ea164a28957c46a7b4"><span class="id" title="notation">+</span></a> <a class="idref" href="mathcomp.algebra.vector.html#V"><span class="id" title="variable">V</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.vector.html#U"><span class="id" title="variable">U</span></a> <a class="idref" href="mathcomp.algebra.vector.html#706deac9766015ea164a28957c46a7b4"><span class="id" title="notation">+</span></a> <a class="idref" href="mathcomp.algebra.vector.html#V"><span class="id" title="variable">V</span></a>)%<span class="id" title="var">VS</span>.<br/> + +<br/> +</div> + +<div class="doc"> + Subspace dimension. +</div> +<div class="code"> +<span class="id" title="keyword">Lemma</span> <a name="dimv0"><span class="id" title="lemma">dimv0</span></a> : <a class="idref" href="mathcomp.algebra.vector.html#ee35a6780ccd60155a3be89dcb5fdb30"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.algebra.vector.html#ee35a6780ccd60155a3be89dcb5fdb30"><span class="id" title="notation">dim</span></a> <a class="idref" href="mathcomp.algebra.vector.html#ee35a6780ccd60155a3be89dcb5fdb30"><span class="id" title="notation">(</span></a>0%<span class="id" title="var">VS</span> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssreflect.html#4509b22bf26e3d6d771897e22bd8bc8f"><span class="id" title="notation">:</span></a> <a class="idref" href="mathcomp.algebra.vector.html#ca0a177f6d6581a7f5199987cd7ee21c"><span class="id" title="notation">{</span></a><a class="idref" href="mathcomp.algebra.vector.html#ca0a177f6d6581a7f5199987cd7ee21c"><span class="id" title="notation">vspace</span></a> <a class="idref" href="mathcomp.algebra.vector.html#VectorTheory.vT"><span class="id" title="variable">vT</span></a><a class="idref" href="mathcomp.algebra.vector.html#ca0a177f6d6581a7f5199987cd7ee21c"><span class="id" title="notation">}</span></a><a class="idref" href="mathcomp.algebra.vector.html#ee35a6780ccd60155a3be89dcb5fdb30"><span class="id" title="notation">)</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> 0%<span class="id" title="var">N</span>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="dimv_eq0"><span class="id" title="lemma">dimv_eq0</span></a> <span class="id" title="var">U</span> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.vector.html#ee35a6780ccd60155a3be89dcb5fdb30"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.algebra.vector.html#ee35a6780ccd60155a3be89dcb5fdb30"><span class="id" title="notation">dim</span></a> <a class="idref" href="mathcomp.algebra.vector.html#U"><span class="id" title="variable">U</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#17d28d004d0863cb022d4ce832ddaaae"><span class="id" title="notation">==</span></a> 0%<span class="id" title="var">N</span><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">)</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.vector.html#U"><span class="id" title="variable">U</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#17d28d004d0863cb022d4ce832ddaaae"><span class="id" title="notation">==</span></a> 0%<span class="id" title="var">VS</span><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">)</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="dimvf"><span class="id" title="lemma">dimvf</span></a> : <a class="idref" href="mathcomp.algebra.vector.html#ee35a6780ccd60155a3be89dcb5fdb30"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.algebra.vector.html#ee35a6780ccd60155a3be89dcb5fdb30"><span class="id" title="notation">dim</span></a> <a class="idref" href="mathcomp.algebra.vector.html#899a5fd19c4f3564d9757a9ac446b1dc"><span class="id" title="notation">{:</span></a><a class="idref" href="mathcomp.algebra.vector.html#VectorTheory.vT"><span class="id" title="variable">vT</span></a><a class="idref" href="mathcomp.algebra.vector.html#899a5fd19c4f3564d9757a9ac446b1dc"><span class="id" title="notation">}</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.vector.html#dim"><span class="id" title="definition">Vector.dim</span></a> <a class="idref" href="mathcomp.algebra.vector.html#VectorTheory.vT"><span class="id" title="variable">vT</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="dim_vline"><span class="id" title="lemma">dim_vline</span></a> <span class="id" title="var">v</span> : <a class="idref" href="mathcomp.algebra.vector.html#ee35a6780ccd60155a3be89dcb5fdb30"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.algebra.vector.html#ee35a6780ccd60155a3be89dcb5fdb30"><span class="id" title="notation">dim</span></a> <a class="idref" href="mathcomp.algebra.vector.html#c7e74c229bedc2f20e80f4f2f96cee78"><span class="id" title="notation"><[</span></a><a class="idref" href="mathcomp.algebra.vector.html#v"><span class="id" title="variable">v</span></a><a class="idref" href="mathcomp.algebra.vector.html#c7e74c229bedc2f20e80f4f2f96cee78"><span class="id" title="notation">]></span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.vector.html#v"><span class="id" title="variable">v</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#b1eeadc2feabc7422252baa895418c7b"><span class="id" title="notation">!=</span></a> 0<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">)</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="dimvS"><span class="id" title="lemma">dimvS</span></a> <span class="id" title="var">U</span> <span class="id" title="var">V</span> : (<a class="idref" href="mathcomp.algebra.vector.html#U"><span class="id" title="variable">U</span></a> <a class="idref" href="mathcomp.algebra.vector.html#755d11a7d5629bce3486e7cbadc915e7"><span class="id" title="notation">≤</span></a> <a class="idref" href="mathcomp.algebra.vector.html#V"><span class="id" title="variable">V</span></a>)%<span class="id" title="var">VS</span> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.vector.html#ee35a6780ccd60155a3be89dcb5fdb30"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.algebra.vector.html#ee35a6780ccd60155a3be89dcb5fdb30"><span class="id" title="notation">dim</span></a> <a class="idref" href="mathcomp.algebra.vector.html#U"><span class="id" title="variable">U</span></a> <a class="idref" href="mathcomp.ssreflect.ssrnat.html#9b077c369e19739ef880736ba34623ff"><span class="id" title="notation">≤</span></a> <a class="idref" href="mathcomp.algebra.vector.html#ee35a6780ccd60155a3be89dcb5fdb30"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.algebra.vector.html#ee35a6780ccd60155a3be89dcb5fdb30"><span class="id" title="notation">dim</span></a> <a class="idref" href="mathcomp.algebra.vector.html#V"><span class="id" title="variable">V</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="dimv_leqif_sup"><span class="id" title="lemma">dimv_leqif_sup</span></a> <span class="id" title="var">U</span> <span class="id" title="var">V</span> : (<a class="idref" href="mathcomp.algebra.vector.html#U"><span class="id" title="variable">U</span></a> <a class="idref" href="mathcomp.algebra.vector.html#755d11a7d5629bce3486e7cbadc915e7"><span class="id" title="notation">≤</span></a> <a class="idref" href="mathcomp.algebra.vector.html#V"><span class="id" title="variable">V</span></a>)%<span class="id" title="var">VS</span> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.vector.html#ee35a6780ccd60155a3be89dcb5fdb30"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.algebra.vector.html#ee35a6780ccd60155a3be89dcb5fdb30"><span class="id" title="notation">dim</span></a> <a class="idref" href="mathcomp.algebra.vector.html#U"><span class="id" title="variable">U</span></a> <a class="idref" href="mathcomp.ssreflect.ssrnat.html#f0472472bc7977d4afb419d87444a23b"><span class="id" title="notation">≤</span></a> <a class="idref" href="mathcomp.algebra.vector.html#ee35a6780ccd60155a3be89dcb5fdb30"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.algebra.vector.html#ee35a6780ccd60155a3be89dcb5fdb30"><span class="id" title="notation">dim</span></a> <a class="idref" href="mathcomp.algebra.vector.html#V"><span class="id" title="variable">V</span></a> <a class="idref" href="mathcomp.ssreflect.ssrnat.html#f0472472bc7977d4afb419d87444a23b"><span class="id" title="notation">?=</span></a> <a class="idref" href="mathcomp.ssreflect.ssrnat.html#f0472472bc7977d4afb419d87444a23b"><span class="id" title="notation">iff</span></a> (<a class="idref" href="mathcomp.algebra.vector.html#V"><span class="id" title="variable">V</span></a> <a class="idref" href="mathcomp.algebra.vector.html#755d11a7d5629bce3486e7cbadc915e7"><span class="id" title="notation">≤</span></a> <a class="idref" href="mathcomp.algebra.vector.html#U"><span class="id" title="variable">U</span></a>)%<span class="id" title="var">VS</span>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="dimv_leqif_eq"><span class="id" title="lemma">dimv_leqif_eq</span></a> <span class="id" title="var">U</span> <span class="id" title="var">V</span> : (<a class="idref" href="mathcomp.algebra.vector.html#U"><span class="id" title="variable">U</span></a> <a class="idref" href="mathcomp.algebra.vector.html#755d11a7d5629bce3486e7cbadc915e7"><span class="id" title="notation">≤</span></a> <a class="idref" href="mathcomp.algebra.vector.html#V"><span class="id" title="variable">V</span></a>)%<span class="id" title="var">VS</span> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.vector.html#ee35a6780ccd60155a3be89dcb5fdb30"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.algebra.vector.html#ee35a6780ccd60155a3be89dcb5fdb30"><span class="id" title="notation">dim</span></a> <a class="idref" href="mathcomp.algebra.vector.html#U"><span class="id" title="variable">U</span></a> <a class="idref" href="mathcomp.ssreflect.ssrnat.html#f0472472bc7977d4afb419d87444a23b"><span class="id" title="notation">≤</span></a> <a class="idref" href="mathcomp.algebra.vector.html#ee35a6780ccd60155a3be89dcb5fdb30"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.algebra.vector.html#ee35a6780ccd60155a3be89dcb5fdb30"><span class="id" title="notation">dim</span></a> <a class="idref" href="mathcomp.algebra.vector.html#V"><span class="id" title="variable">V</span></a> <a class="idref" href="mathcomp.ssreflect.ssrnat.html#f0472472bc7977d4afb419d87444a23b"><span class="id" title="notation">?=</span></a> <a class="idref" href="mathcomp.ssreflect.ssrnat.html#f0472472bc7977d4afb419d87444a23b"><span class="id" title="notation">iff</span></a> <a class="idref" href="mathcomp.ssreflect.ssrnat.html#f0472472bc7977d4afb419d87444a23b"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.vector.html#U"><span class="id" title="variable">U</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#17d28d004d0863cb022d4ce832ddaaae"><span class="id" title="notation">==</span></a> <a class="idref" href="mathcomp.algebra.vector.html#V"><span class="id" title="variable">V</span></a><a class="idref" href="mathcomp.ssreflect.ssrnat.html#f0472472bc7977d4afb419d87444a23b"><span class="id" title="notation">)</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="eqEdim"><span class="id" title="lemma">eqEdim</span></a> <span class="id" title="var">U</span> <span class="id" title="var">V</span> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.vector.html#U"><span class="id" title="variable">U</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#17d28d004d0863cb022d4ce832ddaaae"><span class="id" title="notation">==</span></a> <a class="idref" href="mathcomp.algebra.vector.html#V"><span class="id" title="variable">V</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">)</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> (<a class="idref" href="mathcomp.algebra.vector.html#U"><span class="id" title="variable">U</span></a> <a class="idref" href="mathcomp.algebra.vector.html#755d11a7d5629bce3486e7cbadc915e7"><span class="id" title="notation">≤</span></a> <a class="idref" href="mathcomp.algebra.vector.html#V"><span class="id" title="variable">V</span></a>)%<span class="id" title="var">VS</span> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#49ac24efa716d8b0ee8943bc1d1769a9"><span class="id" title="notation">&&</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#49ac24efa716d8b0ee8943bc1d1769a9"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.vector.html#ee35a6780ccd60155a3be89dcb5fdb30"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.algebra.vector.html#ee35a6780ccd60155a3be89dcb5fdb30"><span class="id" title="notation">dim</span></a> <a class="idref" href="mathcomp.algebra.vector.html#V"><span class="id" title="variable">V</span></a> <a class="idref" href="mathcomp.ssreflect.ssrnat.html#9b077c369e19739ef880736ba34623ff"><span class="id" title="notation">≤</span></a> <a class="idref" href="mathcomp.algebra.vector.html#ee35a6780ccd60155a3be89dcb5fdb30"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.algebra.vector.html#ee35a6780ccd60155a3be89dcb5fdb30"><span class="id" title="notation">dim</span></a> <a class="idref" href="mathcomp.algebra.vector.html#U"><span class="id" title="variable">U</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#49ac24efa716d8b0ee8943bc1d1769a9"><span class="id" title="notation">)</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="dimv_compl"><span class="id" title="lemma">dimv_compl</span></a> <span class="id" title="var">U</span> : <a class="idref" href="mathcomp.algebra.vector.html#ee35a6780ccd60155a3be89dcb5fdb30"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.algebra.vector.html#ee35a6780ccd60155a3be89dcb5fdb30"><span class="id" title="notation">dim</span></a> <a class="idref" href="mathcomp.algebra.vector.html#U"><span class="id" title="variable">U</span></a><a class="idref" href="mathcomp.algebra.vector.html#071d56fbd1000a21b48af9aadab34351"><span class="id" title="notation">^</span></a><a class="idref" href="mathcomp.algebra.vector.html#071d56fbd1000a21b48af9aadab34351"><span class="id" title="notation">C</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> (<a class="idref" href="mathcomp.algebra.vector.html#ee35a6780ccd60155a3be89dcb5fdb30"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.algebra.vector.html#ee35a6780ccd60155a3be89dcb5fdb30"><span class="id" title="notation">dim</span></a> <a class="idref" href="mathcomp.algebra.vector.html#899a5fd19c4f3564d9757a9ac446b1dc"><span class="id" title="notation">{:</span></a><a class="idref" href="mathcomp.algebra.vector.html#VectorTheory.vT"><span class="id" title="variable">vT</span></a><a class="idref" href="mathcomp.algebra.vector.html#899a5fd19c4f3564d9757a9ac446b1dc"><span class="id" title="notation">}</span></a> <a class="idref" href="mathcomp.ssreflect.ssrnat.html#9482aae3d3b06e249765c1225dbb8cbb"><span class="id" title="notation">-</span></a> <a class="idref" href="mathcomp.algebra.vector.html#ee35a6780ccd60155a3be89dcb5fdb30"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.algebra.vector.html#ee35a6780ccd60155a3be89dcb5fdb30"><span class="id" title="notation">dim</span></a> <a class="idref" href="mathcomp.algebra.vector.html#U"><span class="id" title="variable">U</span></a>)%<span class="id" title="var">N</span>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="dimv_cap_compl"><span class="id" title="lemma">dimv_cap_compl</span></a> <span class="id" title="var">U</span> <span class="id" title="var">V</span> : (<a class="idref" href="mathcomp.algebra.vector.html#ee35a6780ccd60155a3be89dcb5fdb30"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.algebra.vector.html#ee35a6780ccd60155a3be89dcb5fdb30"><span class="id" title="notation">dim</span></a> <a class="idref" href="mathcomp.algebra.vector.html#ee35a6780ccd60155a3be89dcb5fdb30"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.vector.html#U"><span class="id" title="variable">U</span></a> <a class="idref" href="mathcomp.algebra.vector.html#585f47de65e0d6c6ecedb971203eafab"><span class="id" title="notation">:&:</span></a> <a class="idref" href="mathcomp.algebra.vector.html#V"><span class="id" title="variable">V</span></a><a class="idref" href="mathcomp.algebra.vector.html#ee35a6780ccd60155a3be89dcb5fdb30"><span class="id" title="notation">)</span></a> <a class="idref" href="mathcomp.ssreflect.ssrnat.html#b3eea360671e1b32b18a26e15b3aace3"><span class="id" title="notation">+</span></a> <a class="idref" href="mathcomp.algebra.vector.html#ee35a6780ccd60155a3be89dcb5fdb30"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.algebra.vector.html#ee35a6780ccd60155a3be89dcb5fdb30"><span class="id" title="notation">dim</span></a> <a class="idref" href="mathcomp.algebra.vector.html#ee35a6780ccd60155a3be89dcb5fdb30"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.vector.html#U"><span class="id" title="variable">U</span></a> <a class="idref" href="mathcomp.algebra.vector.html#946bddca9671fead9ed6e5aece130780"><span class="id" title="notation">:\:</span></a> <a class="idref" href="mathcomp.algebra.vector.html#V"><span class="id" title="variable">V</span></a><a class="idref" href="mathcomp.algebra.vector.html#ee35a6780ccd60155a3be89dcb5fdb30"><span class="id" title="notation">)</span></a>)%<span class="id" title="var">N</span> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.vector.html#ee35a6780ccd60155a3be89dcb5fdb30"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.algebra.vector.html#ee35a6780ccd60155a3be89dcb5fdb30"><span class="id" title="notation">dim</span></a> <a class="idref" href="mathcomp.algebra.vector.html#U"><span class="id" title="variable">U</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="dimv_sum_cap"><span class="id" title="lemma">dimv_sum_cap</span></a> <span class="id" title="var">U</span> <span class="id" title="var">V</span> : (<a class="idref" href="mathcomp.algebra.vector.html#ee35a6780ccd60155a3be89dcb5fdb30"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.algebra.vector.html#ee35a6780ccd60155a3be89dcb5fdb30"><span class="id" title="notation">dim</span></a> <a class="idref" href="mathcomp.algebra.vector.html#ee35a6780ccd60155a3be89dcb5fdb30"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.vector.html#U"><span class="id" title="variable">U</span></a> <a class="idref" href="mathcomp.algebra.vector.html#706deac9766015ea164a28957c46a7b4"><span class="id" title="notation">+</span></a> <a class="idref" href="mathcomp.algebra.vector.html#V"><span class="id" title="variable">V</span></a><a class="idref" href="mathcomp.algebra.vector.html#ee35a6780ccd60155a3be89dcb5fdb30"><span class="id" title="notation">)</span></a> <a class="idref" href="mathcomp.ssreflect.ssrnat.html#b3eea360671e1b32b18a26e15b3aace3"><span class="id" title="notation">+</span></a> <a class="idref" href="mathcomp.algebra.vector.html#ee35a6780ccd60155a3be89dcb5fdb30"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.algebra.vector.html#ee35a6780ccd60155a3be89dcb5fdb30"><span class="id" title="notation">dim</span></a> <a class="idref" href="mathcomp.algebra.vector.html#ee35a6780ccd60155a3be89dcb5fdb30"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.vector.html#U"><span class="id" title="variable">U</span></a> <a class="idref" href="mathcomp.algebra.vector.html#585f47de65e0d6c6ecedb971203eafab"><span class="id" title="notation">:&:</span></a> <a class="idref" href="mathcomp.algebra.vector.html#V"><span class="id" title="variable">V</span></a><a class="idref" href="mathcomp.algebra.vector.html#ee35a6780ccd60155a3be89dcb5fdb30"><span class="id" title="notation">)</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.vector.html#ee35a6780ccd60155a3be89dcb5fdb30"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.algebra.vector.html#ee35a6780ccd60155a3be89dcb5fdb30"><span class="id" title="notation">dim</span></a> <a class="idref" href="mathcomp.algebra.vector.html#U"><span class="id" title="variable">U</span></a> <a class="idref" href="mathcomp.ssreflect.ssrnat.html#b3eea360671e1b32b18a26e15b3aace3"><span class="id" title="notation">+</span></a> <a class="idref" href="mathcomp.algebra.vector.html#ee35a6780ccd60155a3be89dcb5fdb30"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.algebra.vector.html#ee35a6780ccd60155a3be89dcb5fdb30"><span class="id" title="notation">dim</span></a> <a class="idref" href="mathcomp.algebra.vector.html#V"><span class="id" title="variable">V</span></a>)%<span class="id" title="var">N</span>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="dimv_disjoint_sum"><span class="id" title="lemma">dimv_disjoint_sum</span></a> <span class="id" title="var">U</span> <span class="id" title="var">V</span> :<br/> + (<a class="idref" href="mathcomp.algebra.vector.html#U"><span class="id" title="variable">U</span></a> <a class="idref" href="mathcomp.algebra.vector.html#585f47de65e0d6c6ecedb971203eafab"><span class="id" title="notation">:&:</span></a> <a class="idref" href="mathcomp.algebra.vector.html#V"><span class="id" title="variable">V</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> 0)%<span class="id" title="var">VS</span> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.vector.html#ee35a6780ccd60155a3be89dcb5fdb30"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.algebra.vector.html#ee35a6780ccd60155a3be89dcb5fdb30"><span class="id" title="notation">dim</span></a> <a class="idref" href="mathcomp.algebra.vector.html#ee35a6780ccd60155a3be89dcb5fdb30"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.vector.html#U"><span class="id" title="variable">U</span></a> <a class="idref" href="mathcomp.algebra.vector.html#706deac9766015ea164a28957c46a7b4"><span class="id" title="notation">+</span></a> <a class="idref" href="mathcomp.algebra.vector.html#V"><span class="id" title="variable">V</span></a><a class="idref" href="mathcomp.algebra.vector.html#ee35a6780ccd60155a3be89dcb5fdb30"><span class="id" title="notation">)</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> (<a class="idref" href="mathcomp.algebra.vector.html#ee35a6780ccd60155a3be89dcb5fdb30"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.algebra.vector.html#ee35a6780ccd60155a3be89dcb5fdb30"><span class="id" title="notation">dim</span></a> <a class="idref" href="mathcomp.algebra.vector.html#U"><span class="id" title="variable">U</span></a> <a class="idref" href="mathcomp.ssreflect.ssrnat.html#b3eea360671e1b32b18a26e15b3aace3"><span class="id" title="notation">+</span></a> <a class="idref" href="mathcomp.algebra.vector.html#ee35a6780ccd60155a3be89dcb5fdb30"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.algebra.vector.html#ee35a6780ccd60155a3be89dcb5fdb30"><span class="id" title="notation">dim</span></a> <a class="idref" href="mathcomp.algebra.vector.html#V"><span class="id" title="variable">V</span></a>)%<span class="id" title="var">N</span>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="dimv_add_leqif"><span class="id" title="lemma">dimv_add_leqif</span></a> <span class="id" title="var">U</span> <span class="id" title="var">V</span> :<br/> + <a class="idref" href="mathcomp.algebra.vector.html#ee35a6780ccd60155a3be89dcb5fdb30"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.algebra.vector.html#ee35a6780ccd60155a3be89dcb5fdb30"><span class="id" title="notation">dim</span></a> <a class="idref" href="mathcomp.algebra.vector.html#ee35a6780ccd60155a3be89dcb5fdb30"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.vector.html#U"><span class="id" title="variable">U</span></a> <a class="idref" href="mathcomp.algebra.vector.html#706deac9766015ea164a28957c46a7b4"><span class="id" title="notation">+</span></a> <a class="idref" href="mathcomp.algebra.vector.html#V"><span class="id" title="variable">V</span></a><a class="idref" href="mathcomp.algebra.vector.html#ee35a6780ccd60155a3be89dcb5fdb30"><span class="id" title="notation">)</span></a> <a class="idref" href="mathcomp.ssreflect.ssrnat.html#f0472472bc7977d4afb419d87444a23b"><span class="id" title="notation">≤</span></a> <a class="idref" href="mathcomp.algebra.vector.html#ee35a6780ccd60155a3be89dcb5fdb30"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.algebra.vector.html#ee35a6780ccd60155a3be89dcb5fdb30"><span class="id" title="notation">dim</span></a> <a class="idref" href="mathcomp.algebra.vector.html#U"><span class="id" title="variable">U</span></a> <a class="idref" href="mathcomp.ssreflect.ssrnat.html#b3eea360671e1b32b18a26e15b3aace3"><span class="id" title="notation">+</span></a> <a class="idref" href="mathcomp.algebra.vector.html#ee35a6780ccd60155a3be89dcb5fdb30"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.algebra.vector.html#ee35a6780ccd60155a3be89dcb5fdb30"><span class="id" title="notation">dim</span></a> <a class="idref" href="mathcomp.algebra.vector.html#V"><span class="id" title="variable">V</span></a> <a class="idref" href="mathcomp.ssreflect.ssrnat.html#f0472472bc7977d4afb419d87444a23b"><span class="id" title="notation">?=</span></a> <a class="idref" href="mathcomp.ssreflect.ssrnat.html#f0472472bc7977d4afb419d87444a23b"><span class="id" title="notation">iff</span></a> (<a class="idref" href="mathcomp.algebra.vector.html#U"><span class="id" title="variable">U</span></a> <a class="idref" href="mathcomp.algebra.vector.html#585f47de65e0d6c6ecedb971203eafab"><span class="id" title="notation">:&:</span></a> <a class="idref" href="mathcomp.algebra.vector.html#V"><span class="id" title="variable">V</span></a> <a class="idref" href="mathcomp.algebra.vector.html#755d11a7d5629bce3486e7cbadc915e7"><span class="id" title="notation">≤</span></a> 0)%<span class="id" title="var">VS</span>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="diffv_eq0"><span class="id" title="lemma">diffv_eq0</span></a> <span class="id" title="var">U</span> <span class="id" title="var">V</span> : (<a class="idref" href="mathcomp.algebra.vector.html#U"><span class="id" title="variable">U</span></a> <a class="idref" href="mathcomp.algebra.vector.html#946bddca9671fead9ed6e5aece130780"><span class="id" title="notation">:\:</span></a> <a class="idref" href="mathcomp.algebra.vector.html#V"><span class="id" title="variable">V</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#17d28d004d0863cb022d4ce832ddaaae"><span class="id" title="notation">==</span></a> 0)%<span class="id" title="var">VS</span> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> (<a class="idref" href="mathcomp.algebra.vector.html#U"><span class="id" title="variable">U</span></a> <a class="idref" href="mathcomp.algebra.vector.html#755d11a7d5629bce3486e7cbadc915e7"><span class="id" title="notation">≤</span></a> <a class="idref" href="mathcomp.algebra.vector.html#V"><span class="id" title="variable">V</span></a>)%<span class="id" title="var">VS</span>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="dimv_leq_sum"><span class="id" title="lemma">dimv_leq_sum</span></a> <span class="id" title="var">I</span> <span class="id" title="var">r</span> (<span class="id" title="var">P</span> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#pred"><span class="id" title="definition">pred</span></a> <a class="idref" href="mathcomp.algebra.vector.html#I"><span class="id" title="variable">I</span></a>) (<span class="id" title="var">Us</span> : <a class="idref" href="mathcomp.algebra.vector.html#I"><span class="id" title="variable">I</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.vector.html#ca0a177f6d6581a7f5199987cd7ee21c"><span class="id" title="notation">{</span></a><a class="idref" href="mathcomp.algebra.vector.html#ca0a177f6d6581a7f5199987cd7ee21c"><span class="id" title="notation">vspace</span></a> <a class="idref" href="mathcomp.algebra.vector.html#VectorTheory.vT"><span class="id" title="variable">vT</span></a><a class="idref" href="mathcomp.algebra.vector.html#ca0a177f6d6581a7f5199987cd7ee21c"><span class="id" title="notation">}</span></a>) : <br/> + <a class="idref" href="mathcomp.algebra.vector.html#ee35a6780ccd60155a3be89dcb5fdb30"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.algebra.vector.html#ee35a6780ccd60155a3be89dcb5fdb30"><span class="id" title="notation">dim</span></a> <a class="idref" href="mathcomp.algebra.vector.html#ee35a6780ccd60155a3be89dcb5fdb30"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.vector.html#ab83237670c8eecadafc9524ff9fc50e"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.algebra.vector.html#ab83237670c8eecadafc9524ff9fc50e"><span class="id" title="notation">sum_</span></a><a class="idref" href="mathcomp.algebra.vector.html#ab83237670c8eecadafc9524ff9fc50e"><span class="id" title="notation">(</span></a><span class="id" title="var">i</span> <a class="idref" href="mathcomp.algebra.vector.html#ab83237670c8eecadafc9524ff9fc50e"><span class="id" title="notation"><-</span></a> <a class="idref" href="mathcomp.algebra.vector.html#r"><span class="id" title="variable">r</span></a> <a class="idref" href="mathcomp.algebra.vector.html#ab83237670c8eecadafc9524ff9fc50e"><span class="id" title="notation">|</span></a> <a class="idref" href="mathcomp.algebra.vector.html#P"><span class="id" title="variable">P</span></a> <a class="idref" href="mathcomp.algebra.vector.html#i"><span class="id" title="variable">i</span></a><a class="idref" href="mathcomp.algebra.vector.html#ab83237670c8eecadafc9524ff9fc50e"><span class="id" title="notation">)</span></a> <a class="idref" href="mathcomp.algebra.vector.html#Us"><span class="id" title="variable">Us</span></a> <a class="idref" href="mathcomp.algebra.vector.html#i"><span class="id" title="variable">i</span></a><a class="idref" href="mathcomp.algebra.vector.html#ee35a6780ccd60155a3be89dcb5fdb30"><span class="id" title="notation">)</span></a> <a class="idref" href="mathcomp.ssreflect.ssrnat.html#9b077c369e19739ef880736ba34623ff"><span class="id" title="notation">≤</span></a> <a class="idref" href="mathcomp.ssreflect.bigop.html#ea7e35bae15685d5cd3430a8e48be02b"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.ssreflect.bigop.html#ea7e35bae15685d5cd3430a8e48be02b"><span class="id" title="notation">sum_</span></a><a class="idref" href="mathcomp.ssreflect.bigop.html#ea7e35bae15685d5cd3430a8e48be02b"><span class="id" title="notation">(</span></a><span class="id" title="var">i</span> <a class="idref" href="mathcomp.ssreflect.bigop.html#ea7e35bae15685d5cd3430a8e48be02b"><span class="id" title="notation"><-</span></a> <a class="idref" href="mathcomp.algebra.vector.html#r"><span class="id" title="variable">r</span></a> <a class="idref" href="mathcomp.ssreflect.bigop.html#ea7e35bae15685d5cd3430a8e48be02b"><span class="id" title="notation">|</span></a> <a class="idref" href="mathcomp.algebra.vector.html#P"><span class="id" title="variable">P</span></a> <a class="idref" href="mathcomp.algebra.vector.html#i"><span class="id" title="variable">i</span></a><a class="idref" href="mathcomp.ssreflect.bigop.html#ea7e35bae15685d5cd3430a8e48be02b"><span class="id" title="notation">)</span></a> <a class="idref" href="mathcomp.algebra.vector.html#ee35a6780ccd60155a3be89dcb5fdb30"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.algebra.vector.html#ee35a6780ccd60155a3be89dcb5fdb30"><span class="id" title="notation">dim</span></a> <a class="idref" href="mathcomp.algebra.vector.html#ee35a6780ccd60155a3be89dcb5fdb30"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.vector.html#Us"><span class="id" title="variable">Us</span></a> <a class="idref" href="mathcomp.algebra.vector.html#i"><span class="id" title="variable">i</span></a><a class="idref" href="mathcomp.algebra.vector.html#ee35a6780ccd60155a3be89dcb5fdb30"><span class="id" title="notation">)</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Section</span> <a name="VectorTheory.SumExpr"><span class="id" title="section">SumExpr</span></a>.<br/> + +<br/> +</div> + +<div class="doc"> + The vector direct sum theory clones the interface types of the matrix + direct sum theory (see mxalgebra for the technical details), but + nevetheless reuses much of the matrix theory. +</div> +<div class="code"> +<span class="id" title="keyword">Structure</span> <a name="addv_expr"><span class="id" title="record">addv_expr</span></a> := <a name="Sumv"><span class="id" title="constructor">Sumv</span></a> {<br/> + <a name="addv_val"><span class="id" title="projection">addv_val</span></a> :> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#wrapped"><span class="id" title="record">wrapped</span></a> <a class="idref" href="mathcomp.algebra.vector.html#ca0a177f6d6581a7f5199987cd7ee21c"><span class="id" title="notation">{</span></a><a class="idref" href="mathcomp.algebra.vector.html#ca0a177f6d6581a7f5199987cd7ee21c"><span class="id" title="notation">vspace</span></a> <a class="idref" href="mathcomp.algebra.vector.html#VectorTheory.vT"><span class="id" title="variable">vT</span></a><a class="idref" href="mathcomp.algebra.vector.html#ca0a177f6d6581a7f5199987cd7ee21c"><span class="id" title="notation">}</span></a>;<br/> + <a name="addv_dim"><span class="id" title="projection">addv_dim</span></a> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#wrapped"><span class="id" title="record">wrapped</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#nat"><span class="id" title="inductive">nat</span></a>;<br/> + <span class="id" title="var">_</span> : <a class="idref" href="mathcomp.algebra.mxalgebra.html#mxsum_spec"><span class="id" title="inductive">mxsum_spec</span></a> (<a class="idref" href="mathcomp.algebra.vector.html#vs2mx"><span class="id" title="definition">vs2mx</span></a> (<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#unwrap"><span class="id" title="projection">unwrap</span></a> <a class="idref" href="mathcomp.algebra.vector.html#addv_val"><span class="id" title="method">addv_val</span></a>)) (<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#unwrap"><span class="id" title="projection">unwrap</span></a> <a class="idref" href="mathcomp.algebra.vector.html#addv_dim"><span class="id" title="method">addv_dim</span></a>)<br/> +}.<br/> + +<br/> +</div> + +<div class="doc"> + Piggyback on mxalgebra theory. +</div> +<div class="code"> +<span class="id" title="keyword">Definition</span> <a name="vs2mx_sum_expr_subproof"><span class="id" title="definition">vs2mx_sum_expr_subproof</span></a> (<span class="id" title="var">S</span> : <a class="idref" href="mathcomp.algebra.vector.html#addv_expr"><span class="id" title="record">addv_expr</span></a>) :<br/> + <a class="idref" href="mathcomp.algebra.mxalgebra.html#mxsum_spec"><span class="id" title="inductive">mxsum_spec</span></a> (<a class="idref" href="mathcomp.algebra.vector.html#vs2mx"><span class="id" title="definition">vs2mx</span></a> (<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#unwrap"><span class="id" title="projection">unwrap</span></a> <a class="idref" href="mathcomp.algebra.vector.html#S"><span class="id" title="variable">S</span></a>)) (<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#unwrap"><span class="id" title="projection">unwrap</span></a> (<a class="idref" href="mathcomp.algebra.vector.html#addv_dim"><span class="id" title="projection">addv_dim</span></a> <a class="idref" href="mathcomp.algebra.vector.html#S"><span class="id" title="variable">S</span></a>)).<br/> + <span class="id" title="keyword">Canonical</span> <span class="id" title="var">vs2mx_sum_expr</span> <span class="id" title="var">S</span> := <a class="idref" href="mathcomp.algebra.mxalgebra.html#ProperMxsumExpr"><span class="id" title="constructor">ProperMxsumExpr</span></a> (<a class="idref" href="mathcomp.algebra.vector.html#vs2mx_sum_expr_subproof"><span class="id" title="definition">vs2mx_sum_expr_subproof</span></a> <a class="idref" href="mathcomp.algebra.vector.html#S"><span class="id" title="variable">S</span></a>).<br/> + +<br/> +<span class="id" title="keyword">Canonical</span> <span class="id" title="var">trivial_addv</span> <span class="id" title="var">U</span> := @<a class="idref" href="mathcomp.algebra.vector.html#Sumv"><span class="id" title="constructor">Sumv</span></a> (<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#Wrap"><span class="id" title="constructor">Wrap</span></a> <a class="idref" href="mathcomp.algebra.vector.html#U"><span class="id" title="variable">U</span></a>) (<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#Wrap"><span class="id" title="constructor">Wrap</span></a> (<a class="idref" href="mathcomp.algebra.vector.html#ee35a6780ccd60155a3be89dcb5fdb30"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.algebra.vector.html#ee35a6780ccd60155a3be89dcb5fdb30"><span class="id" title="notation">dim</span></a> <a class="idref" href="mathcomp.algebra.vector.html#U"><span class="id" title="variable">U</span></a>)) (<a class="idref" href="mathcomp.algebra.mxalgebra.html#TrivialMxsum"><span class="id" title="constructor">TrivialMxsum</span></a> <span class="id" title="var">_</span>).<br/> + +<br/> +<span class="id" title="keyword">Structure</span> <a name="proper_addv_expr"><span class="id" title="record">proper_addv_expr</span></a> := <a name="ProperSumvExpr"><span class="id" title="constructor">ProperSumvExpr</span></a> {<br/> + <a name="proper_addv_val"><span class="id" title="projection">proper_addv_val</span></a> :> <a class="idref" href="mathcomp.algebra.vector.html#ca0a177f6d6581a7f5199987cd7ee21c"><span class="id" title="notation">{</span></a><a class="idref" href="mathcomp.algebra.vector.html#ca0a177f6d6581a7f5199987cd7ee21c"><span class="id" title="notation">vspace</span></a> <a class="idref" href="mathcomp.algebra.vector.html#VectorTheory.vT"><span class="id" title="variable">vT</span></a><a class="idref" href="mathcomp.algebra.vector.html#ca0a177f6d6581a7f5199987cd7ee21c"><span class="id" title="notation">}</span></a>;<br/> + <a name="proper_addv_dim"><span class="id" title="projection">proper_addv_dim</span></a> :> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#nat"><span class="id" title="inductive">nat</span></a>;<br/> + <span class="id" title="var">_</span> : <a class="idref" href="mathcomp.algebra.mxalgebra.html#mxsum_spec"><span class="id" title="inductive">mxsum_spec</span></a> (<a class="idref" href="mathcomp.algebra.vector.html#vs2mx"><span class="id" title="definition">vs2mx</span></a> <a class="idref" href="mathcomp.algebra.vector.html#proper_addv_val"><span class="id" title="method">proper_addv_val</span></a>) <a class="idref" href="mathcomp.algebra.vector.html#proper_addv_dim"><span class="id" title="method">proper_addv_dim</span></a><br/> +}.<br/> + +<br/> +<span class="id" title="keyword">Definition</span> <a name="proper_addvP"><span class="id" title="definition">proper_addvP</span></a> (<span class="id" title="var">S</span> : <a class="idref" href="mathcomp.algebra.vector.html#proper_addv_expr"><span class="id" title="record">proper_addv_expr</span></a>) :=<br/> + <span class="id" title="keyword">let</span>: <a class="idref" href="mathcomp.algebra.vector.html#ProperSumvExpr"><span class="id" title="constructor">ProperSumvExpr</span></a> <span class="id" title="var">_</span> <span class="id" title="var">_</span> <span class="id" title="var">termS</span> := <a class="idref" href="mathcomp.algebra.vector.html#S"><span class="id" title="variable">S</span></a> <span class="id" title="keyword">return</span> <a class="idref" href="mathcomp.algebra.mxalgebra.html#mxsum_spec"><span class="id" title="inductive">mxsum_spec</span></a> (<a class="idref" href="mathcomp.algebra.vector.html#vs2mx"><span class="id" title="definition">vs2mx</span></a> <a class="idref" href="mathcomp.algebra.vector.html#S"><span class="id" title="variable">S</span></a>) <a class="idref" href="mathcomp.algebra.vector.html#S"><span class="id" title="variable">S</span></a> <span class="id" title="tactic">in</span> <span class="id" title="var">termS</span>.<br/> + +<br/> +<span class="id" title="keyword">Canonical</span> <span class="id" title="var">proper_addv</span> (<span class="id" title="var">S</span> : <a class="idref" href="mathcomp.algebra.vector.html#proper_addv_expr"><span class="id" title="record">proper_addv_expr</span></a>) :=<br/> + @<a class="idref" href="mathcomp.algebra.vector.html#Sumv"><span class="id" title="constructor">Sumv</span></a> (<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#wrap"><span class="id" title="definition">wrap</span></a> (<a class="idref" href="mathcomp.algebra.vector.html#S"><span class="id" title="variable">S</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssreflect.html#4509b22bf26e3d6d771897e22bd8bc8f"><span class="id" title="notation">:</span></a> <a class="idref" href="mathcomp.algebra.vector.html#ca0a177f6d6581a7f5199987cd7ee21c"><span class="id" title="notation">{</span></a><a class="idref" href="mathcomp.algebra.vector.html#ca0a177f6d6581a7f5199987cd7ee21c"><span class="id" title="notation">vspace</span></a> <a class="idref" href="mathcomp.algebra.vector.html#VectorTheory.vT"><span class="id" title="variable">vT</span></a><a class="idref" href="mathcomp.algebra.vector.html#ca0a177f6d6581a7f5199987cd7ee21c"><span class="id" title="notation">}</span></a>)) (<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#wrap"><span class="id" title="definition">wrap</span></a> (<a class="idref" href="mathcomp.algebra.vector.html#S"><span class="id" title="variable">S</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssreflect.html#4509b22bf26e3d6d771897e22bd8bc8f"><span class="id" title="notation">:</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#nat"><span class="id" title="inductive">nat</span></a>)) (<a class="idref" href="mathcomp.algebra.vector.html#proper_addvP"><span class="id" title="definition">proper_addvP</span></a> <a class="idref" href="mathcomp.algebra.vector.html#S"><span class="id" title="variable">S</span></a>).<br/> + +<br/> +<span class="id" title="keyword">Section</span> <a name="VectorTheory.SumExpr.Binary"><span class="id" title="section">Binary</span></a>.<br/> +<span class="id" title="keyword">Variables</span> <a name="VectorTheory.SumExpr.Binary.S1"><span class="id" title="variable">S1</span></a> <a name="VectorTheory.SumExpr.Binary.S2"><span class="id" title="variable">S2</span></a> : <a class="idref" href="mathcomp.algebra.vector.html#addv_expr"><span class="id" title="record">addv_expr</span></a>.<br/> +<span class="id" title="keyword">Fact</span> <a name="binary_addv_subproof"><span class="id" title="lemma">binary_addv_subproof</span></a> :<br/> + <a class="idref" href="mathcomp.algebra.mxalgebra.html#mxsum_spec"><span class="id" title="inductive">mxsum_spec</span></a> (<a class="idref" href="mathcomp.algebra.vector.html#vs2mx"><span class="id" title="definition">vs2mx</span></a> (<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#unwrap"><span class="id" title="projection">unwrap</span></a> <a class="idref" href="mathcomp.algebra.vector.html#VectorTheory.SumExpr.Binary.S1"><span class="id" title="variable">S1</span></a> <a class="idref" href="mathcomp.algebra.vector.html#706deac9766015ea164a28957c46a7b4"><span class="id" title="notation">+</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#unwrap"><span class="id" title="projection">unwrap</span></a> <a class="idref" href="mathcomp.algebra.vector.html#VectorTheory.SumExpr.Binary.S2"><span class="id" title="variable">S2</span></a>))<br/> + (<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#unwrap"><span class="id" title="projection">unwrap</span></a> (<a class="idref" href="mathcomp.algebra.vector.html#addv_dim"><span class="id" title="projection">addv_dim</span></a> <a class="idref" href="mathcomp.algebra.vector.html#VectorTheory.SumExpr.Binary.S1"><span class="id" title="variable">S1</span></a>) <a class="idref" href="mathcomp.ssreflect.ssrnat.html#b3eea360671e1b32b18a26e15b3aace3"><span class="id" title="notation">+</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#unwrap"><span class="id" title="projection">unwrap</span></a> (<a class="idref" href="mathcomp.algebra.vector.html#addv_dim"><span class="id" title="projection">addv_dim</span></a> <a class="idref" href="mathcomp.algebra.vector.html#VectorTheory.SumExpr.Binary.S2"><span class="id" title="variable">S2</span></a>)).<br/> + <span class="id" title="keyword">Canonical</span> <span class="id" title="var">binary_addv_expr</span> := <a class="idref" href="mathcomp.algebra.vector.html#ProperSumvExpr"><span class="id" title="constructor">ProperSumvExpr</span></a> <a class="idref" href="mathcomp.algebra.vector.html#binary_addv_subproof"><span class="id" title="lemma">binary_addv_subproof</span></a>.<br/> +<span class="id" title="keyword">End</span> <a class="idref" href="mathcomp.algebra.vector.html#VectorTheory.SumExpr.Binary"><span class="id" title="section">Binary</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Section</span> <a name="VectorTheory.SumExpr.Nary"><span class="id" title="section">Nary</span></a>.<br/> +<span class="id" title="keyword">Variables</span> (<a name="VectorTheory.SumExpr.Nary.I"><span class="id" title="variable">I</span></a> : <span class="id" title="keyword">Type</span>) (<a name="VectorTheory.SumExpr.Nary.r"><span class="id" title="variable">r</span></a> : <a class="idref" href="mathcomp.ssreflect.seq.html#seq"><span class="id" title="abbreviation">seq</span></a> <a class="idref" href="mathcomp.algebra.vector.html#I"><span class="id" title="variable">I</span></a>) (<a name="VectorTheory.SumExpr.Nary.P"><span class="id" title="variable">P</span></a> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#pred"><span class="id" title="definition">pred</span></a> <a class="idref" href="mathcomp.algebra.vector.html#I"><span class="id" title="variable">I</span></a>) (<a name="VectorTheory.SumExpr.Nary.S_"><span class="id" title="variable">S_</span></a> : <a class="idref" href="mathcomp.algebra.vector.html#I"><span class="id" title="variable">I</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.vector.html#addv_expr"><span class="id" title="record">addv_expr</span></a>).<br/> +<span class="id" title="keyword">Fact</span> <a name="nary_addv_subproof"><span class="id" title="lemma">nary_addv_subproof</span></a> :<br/> + <a class="idref" href="mathcomp.algebra.mxalgebra.html#mxsum_spec"><span class="id" title="inductive">mxsum_spec</span></a> (<a class="idref" href="mathcomp.algebra.vector.html#vs2mx"><span class="id" title="definition">vs2mx</span></a> (<a class="idref" href="mathcomp.algebra.vector.html#ab83237670c8eecadafc9524ff9fc50e"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.algebra.vector.html#ab83237670c8eecadafc9524ff9fc50e"><span class="id" title="notation">sum_</span></a><a class="idref" href="mathcomp.algebra.vector.html#ab83237670c8eecadafc9524ff9fc50e"><span class="id" title="notation">(</span></a><span class="id" title="var">i</span> <a class="idref" href="mathcomp.algebra.vector.html#ab83237670c8eecadafc9524ff9fc50e"><span class="id" title="notation"><-</span></a> <a class="idref" href="mathcomp.algebra.vector.html#VectorTheory.SumExpr.Nary.r"><span class="id" title="variable">r</span></a> <a class="idref" href="mathcomp.algebra.vector.html#ab83237670c8eecadafc9524ff9fc50e"><span class="id" title="notation">|</span></a> <a class="idref" href="mathcomp.algebra.vector.html#VectorTheory.SumExpr.Nary.P"><span class="id" title="variable">P</span></a> <a class="idref" href="mathcomp.algebra.vector.html#i"><span class="id" title="variable">i</span></a><a class="idref" href="mathcomp.algebra.vector.html#ab83237670c8eecadafc9524ff9fc50e"><span class="id" title="notation">)</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#unwrap"><span class="id" title="projection">unwrap</span></a> (<a class="idref" href="mathcomp.algebra.vector.html#VectorTheory.SumExpr.Nary.S_"><span class="id" title="variable">S_</span></a> <a class="idref" href="mathcomp.algebra.vector.html#i"><span class="id" title="variable">i</span></a>)))<br/> + (<a class="idref" href="mathcomp.ssreflect.bigop.html#ea7e35bae15685d5cd3430a8e48be02b"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.ssreflect.bigop.html#ea7e35bae15685d5cd3430a8e48be02b"><span class="id" title="notation">sum_</span></a><a class="idref" href="mathcomp.ssreflect.bigop.html#ea7e35bae15685d5cd3430a8e48be02b"><span class="id" title="notation">(</span></a><span class="id" title="var">i</span> <a class="idref" href="mathcomp.ssreflect.bigop.html#ea7e35bae15685d5cd3430a8e48be02b"><span class="id" title="notation"><-</span></a> <a class="idref" href="mathcomp.algebra.vector.html#VectorTheory.SumExpr.Nary.r"><span class="id" title="variable">r</span></a> <a class="idref" href="mathcomp.ssreflect.bigop.html#ea7e35bae15685d5cd3430a8e48be02b"><span class="id" title="notation">|</span></a> <a class="idref" href="mathcomp.algebra.vector.html#VectorTheory.SumExpr.Nary.P"><span class="id" title="variable">P</span></a> <a class="idref" href="mathcomp.algebra.vector.html#i"><span class="id" title="variable">i</span></a><a class="idref" href="mathcomp.ssreflect.bigop.html#ea7e35bae15685d5cd3430a8e48be02b"><span class="id" title="notation">)</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#unwrap"><span class="id" title="projection">unwrap</span></a> (<a class="idref" href="mathcomp.algebra.vector.html#addv_dim"><span class="id" title="projection">addv_dim</span></a> (<a class="idref" href="mathcomp.algebra.vector.html#VectorTheory.SumExpr.Nary.S_"><span class="id" title="variable">S_</span></a> <a class="idref" href="mathcomp.algebra.vector.html#i"><span class="id" title="variable">i</span></a>))).<br/> + <span class="id" title="keyword">Canonical</span> <span class="id" title="var">nary_addv_expr</span> := <a class="idref" href="mathcomp.algebra.vector.html#ProperSumvExpr"><span class="id" title="constructor">ProperSumvExpr</span></a> <a class="idref" href="mathcomp.algebra.vector.html#nary_addv_subproof"><span class="id" title="lemma">nary_addv_subproof</span></a>.<br/> +<span class="id" title="keyword">End</span> <a class="idref" href="mathcomp.algebra.vector.html#VectorTheory.SumExpr.Nary"><span class="id" title="section">Nary</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Definition</span> <a name="directv_def"><span class="id" title="definition">directv_def</span></a> <span class="id" title="var">S</span> <span class="id" title="keyword">of</span> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssreflect.html#phantom"><span class="id" title="inductive">phantom</span></a> <a class="idref" href="mathcomp.algebra.vector.html#ca0a177f6d6581a7f5199987cd7ee21c"><span class="id" title="notation">{</span></a><a class="idref" href="mathcomp.algebra.vector.html#ca0a177f6d6581a7f5199987cd7ee21c"><span class="id" title="notation">vspace</span></a> <a class="idref" href="mathcomp.algebra.vector.html#VectorTheory.vT"><span class="id" title="variable">vT</span></a><a class="idref" href="mathcomp.algebra.vector.html#ca0a177f6d6581a7f5199987cd7ee21c"><span class="id" title="notation">}</span></a> (<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#unwrap"><span class="id" title="projection">unwrap</span></a> (<a class="idref" href="mathcomp.algebra.vector.html#addv_val"><span class="id" title="projection">addv_val</span></a> <a class="idref" href="mathcomp.algebra.vector.html#S"><span class="id" title="variable">S</span></a>)) :=<br/> + <a class="idref" href="mathcomp.algebra.vector.html#ee35a6780ccd60155a3be89dcb5fdb30"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.algebra.vector.html#ee35a6780ccd60155a3be89dcb5fdb30"><span class="id" title="notation">dim</span></a> <a class="idref" href="mathcomp.algebra.vector.html#ee35a6780ccd60155a3be89dcb5fdb30"><span class="id" title="notation">(</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#unwrap"><span class="id" title="projection">unwrap</span></a> <a class="idref" href="mathcomp.algebra.vector.html#S"><span class="id" title="variable">S</span></a><a class="idref" href="mathcomp.algebra.vector.html#ee35a6780ccd60155a3be89dcb5fdb30"><span class="id" title="notation">)</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#17d28d004d0863cb022d4ce832ddaaae"><span class="id" title="notation">==</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#unwrap"><span class="id" title="projection">unwrap</span></a> (<a class="idref" href="mathcomp.algebra.vector.html#addv_dim"><span class="id" title="projection">addv_dim</span></a> <a class="idref" href="mathcomp.algebra.vector.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.vector.html#VectorTheory.SumExpr"><span class="id" title="section">SumExpr</span></a>.<br/> + +<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="directvE"><span class="id" title="lemma">directvE</span></a> (<span class="id" title="var">S</span> : <a class="idref" href="mathcomp.algebra.vector.html#addv_expr"><span class="id" title="record">addv_expr</span></a>) :<br/> + <a class="idref" href="mathcomp.algebra.vector.html#directv"><span class="id" title="abbreviation">directv</span></a> (<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#unwrap"><span class="id" title="projection">unwrap</span></a> <a class="idref" href="mathcomp.algebra.vector.html#S"><span class="id" title="variable">S</span></a>) <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.vector.html#ee35a6780ccd60155a3be89dcb5fdb30"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.algebra.vector.html#ee35a6780ccd60155a3be89dcb5fdb30"><span class="id" title="notation">dim</span></a> <a class="idref" href="mathcomp.algebra.vector.html#ee35a6780ccd60155a3be89dcb5fdb30"><span class="id" title="notation">(</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#unwrap"><span class="id" title="projection">unwrap</span></a> <a class="idref" href="mathcomp.algebra.vector.html#S"><span class="id" title="variable">S</span></a><a class="idref" href="mathcomp.algebra.vector.html#ee35a6780ccd60155a3be89dcb5fdb30"><span class="id" title="notation">)</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#17d28d004d0863cb022d4ce832ddaaae"><span class="id" title="notation">==</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#unwrap"><span class="id" title="projection">unwrap</span></a> (<a class="idref" href="mathcomp.algebra.vector.html#addv_dim"><span class="id" title="projection">addv_dim</span></a> <a class="idref" href="mathcomp.algebra.vector.html#S"><span class="id" title="variable">S</span></a>)<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">)</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="directvP"><span class="id" title="lemma">directvP</span></a> {<span class="id" title="var">S</span> : <a class="idref" href="mathcomp.algebra.vector.html#proper_addv_expr"><span class="id" title="record">proper_addv_expr</span></a>} : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#reflect"><span class="id" title="abbreviation">reflect</span></a> (<a class="idref" href="mathcomp.algebra.vector.html#ee35a6780ccd60155a3be89dcb5fdb30"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.algebra.vector.html#ee35a6780ccd60155a3be89dcb5fdb30"><span class="id" title="notation">dim</span></a> <a class="idref" href="mathcomp.algebra.vector.html#S"><span class="id" title="variable">S</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#8f9364556521ebb498093f28eea2240f"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.vector.html#S"><span class="id" title="variable">S</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#8f9364556521ebb498093f28eea2240f"><span class="id" title="notation">:></span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#nat"><span class="id" title="inductive">nat</span></a>) (<a class="idref" href="mathcomp.algebra.vector.html#directv"><span class="id" title="abbreviation">directv</span></a> <a class="idref" href="mathcomp.algebra.vector.html#S"><span class="id" title="variable">S</span></a>).<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="directv_trivial"><span class="id" title="lemma">directv_trivial</span></a> <span class="id" title="var">U</span> : <a class="idref" href="mathcomp.algebra.vector.html#directv"><span class="id" title="abbreviation">directv</span></a> (<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#unwrap"><span class="id" title="projection">unwrap</span></a> (@<a class="idref" href="mathcomp.algebra.vector.html#trivial_addv"><span class="id" title="definition">trivial_addv</span></a> <a class="idref" href="mathcomp.algebra.vector.html#U"><span class="id" title="variable">U</span></a>)).<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="dimv_sum_leqif"><span class="id" title="lemma">dimv_sum_leqif</span></a> (<span class="id" title="var">S</span> : <a class="idref" href="mathcomp.algebra.vector.html#addv_expr"><span class="id" title="record">addv_expr</span></a>) :<br/> + <a class="idref" href="mathcomp.algebra.vector.html#ee35a6780ccd60155a3be89dcb5fdb30"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.algebra.vector.html#ee35a6780ccd60155a3be89dcb5fdb30"><span class="id" title="notation">dim</span></a> <a class="idref" href="mathcomp.algebra.vector.html#ee35a6780ccd60155a3be89dcb5fdb30"><span class="id" title="notation">(</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#unwrap"><span class="id" title="projection">unwrap</span></a> <a class="idref" href="mathcomp.algebra.vector.html#S"><span class="id" title="variable">S</span></a><a class="idref" href="mathcomp.algebra.vector.html#ee35a6780ccd60155a3be89dcb5fdb30"><span class="id" title="notation">)</span></a> <a class="idref" href="mathcomp.ssreflect.ssrnat.html#f0472472bc7977d4afb419d87444a23b"><span class="id" title="notation">≤</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#unwrap"><span class="id" title="projection">unwrap</span></a> (<a class="idref" href="mathcomp.algebra.vector.html#addv_dim"><span class="id" title="projection">addv_dim</span></a> <a class="idref" href="mathcomp.algebra.vector.html#S"><span class="id" title="variable">S</span></a>) <a class="idref" href="mathcomp.ssreflect.ssrnat.html#f0472472bc7977d4afb419d87444a23b"><span class="id" title="notation">?=</span></a> <a class="idref" href="mathcomp.ssreflect.ssrnat.html#f0472472bc7977d4afb419d87444a23b"><span class="id" title="notation">iff</span></a> <a class="idref" href="mathcomp.algebra.vector.html#directv"><span class="id" title="abbreviation">directv</span></a> (<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#unwrap"><span class="id" title="projection">unwrap</span></a> <a class="idref" href="mathcomp.algebra.vector.html#S"><span class="id" title="variable">S</span></a>).<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="directvEgeq"><span class="id" title="lemma">directvEgeq</span></a> (<span class="id" title="var">S</span> : <a class="idref" href="mathcomp.algebra.vector.html#addv_expr"><span class="id" title="record">addv_expr</span></a>) :<br/> + <a class="idref" href="mathcomp.algebra.vector.html#directv"><span class="id" title="abbreviation">directv</span></a> (<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#unwrap"><span class="id" title="projection">unwrap</span></a> <a class="idref" href="mathcomp.algebra.vector.html#S"><span class="id" title="variable">S</span></a>) <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.vector.html#ee35a6780ccd60155a3be89dcb5fdb30"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.algebra.vector.html#ee35a6780ccd60155a3be89dcb5fdb30"><span class="id" title="notation">dim</span></a> <a class="idref" href="mathcomp.algebra.vector.html#ee35a6780ccd60155a3be89dcb5fdb30"><span class="id" title="notation">(</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#unwrap"><span class="id" title="projection">unwrap</span></a> <a class="idref" href="mathcomp.algebra.vector.html#S"><span class="id" title="variable">S</span></a><a class="idref" href="mathcomp.algebra.vector.html#ee35a6780ccd60155a3be89dcb5fdb30"><span class="id" title="notation">)</span></a> <a class="idref" href="mathcomp.ssreflect.ssrnat.html#08fe8636f4b45ae6787c490d19de1366"><span class="id" title="notation">≥</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#unwrap"><span class="id" title="projection">unwrap</span></a> (<a class="idref" href="mathcomp.algebra.vector.html#addv_dim"><span class="id" title="projection">addv_dim</span></a> <a class="idref" href="mathcomp.algebra.vector.html#S"><span class="id" title="variable">S</span></a>)<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">)</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Section</span> <a name="VectorTheory.BinaryDirect"><span class="id" title="section">BinaryDirect</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="directv_addE"><span class="id" title="lemma">directv_addE</span></a> (<span class="id" title="var">S1</span> <span class="id" title="var">S2</span> : <a class="idref" href="mathcomp.algebra.vector.html#addv_expr"><span class="id" title="record">addv_expr</span></a>) :<br/> + <a class="idref" href="mathcomp.algebra.vector.html#directv"><span class="id" title="abbreviation">directv</span></a> (<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#unwrap"><span class="id" title="projection">unwrap</span></a> <a class="idref" href="mathcomp.algebra.vector.html#S1"><span class="id" title="variable">S1</span></a> <a class="idref" href="mathcomp.algebra.vector.html#706deac9766015ea164a28957c46a7b4"><span class="id" title="notation">+</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#unwrap"><span class="id" title="projection">unwrap</span></a> <a class="idref" href="mathcomp.algebra.vector.html#S2"><span class="id" title="variable">S2</span></a>)<br/> + <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#2e9317c5f71a1305fb695cdc49716482"><span class="id" title="notation">[&&</span></a> <a class="idref" href="mathcomp.algebra.vector.html#directv"><span class="id" title="abbreviation">directv</span></a> (<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#unwrap"><span class="id" title="projection">unwrap</span></a> <a class="idref" href="mathcomp.algebra.vector.html#S1"><span class="id" title="variable">S1</span></a>)<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#2e9317c5f71a1305fb695cdc49716482"><span class="id" title="notation">,</span></a> <a class="idref" href="mathcomp.algebra.vector.html#directv"><span class="id" title="abbreviation">directv</span></a> (<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#unwrap"><span class="id" title="projection">unwrap</span></a> <a class="idref" href="mathcomp.algebra.vector.html#S2"><span class="id" title="variable">S2</span></a>)<br/> + <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#2e9317c5f71a1305fb695cdc49716482"><span class="id" title="notation">&</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#unwrap"><span class="id" title="projection">unwrap</span></a> <a class="idref" href="mathcomp.algebra.vector.html#S1"><span class="id" title="variable">S1</span></a> <a class="idref" href="mathcomp.algebra.vector.html#585f47de65e0d6c6ecedb971203eafab"><span class="id" title="notation">:&:</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#unwrap"><span class="id" title="projection">unwrap</span></a> <a class="idref" href="mathcomp.algebra.vector.html#S2"><span class="id" title="variable">S2</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#17d28d004d0863cb022d4ce832ddaaae"><span class="id" title="notation">==</span></a> 0<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#2e9317c5f71a1305fb695cdc49716482"><span class="id" title="notation">]</span></a>%<span class="id" title="var">VS</span>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="directv_addP"><span class="id" title="lemma">directv_addP</span></a> {<span class="id" title="var">U</span> <span class="id" title="var">V</span>} : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#reflect"><span class="id" title="abbreviation">reflect</span></a> (<a class="idref" href="mathcomp.algebra.vector.html#U"><span class="id" title="variable">U</span></a> <a class="idref" href="mathcomp.algebra.vector.html#585f47de65e0d6c6ecedb971203eafab"><span class="id" title="notation">:&:</span></a> <a class="idref" href="mathcomp.algebra.vector.html#V"><span class="id" title="variable">V</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> 0)%<span class="id" title="var">VS</span> (<a class="idref" href="mathcomp.algebra.vector.html#directv"><span class="id" title="abbreviation">directv</span></a> (<a class="idref" href="mathcomp.algebra.vector.html#U"><span class="id" title="variable">U</span></a> <a class="idref" href="mathcomp.algebra.vector.html#706deac9766015ea164a28957c46a7b4"><span class="id" title="notation">+</span></a> <a class="idref" href="mathcomp.algebra.vector.html#V"><span class="id" title="variable">V</span></a>)).<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="directv_add_unique"><span class="id" title="lemma">directv_add_unique</span></a> {<span class="id" title="var">U</span> <span class="id" title="var">V</span>} :<br/> + <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#reflect"><span class="id" title="abbreviation">reflect</span></a> (<span class="id" title="keyword">∀</span> <span class="id" title="var">u1</span> <span class="id" title="var">u2</span> <span class="id" title="var">v1</span> <span class="id" title="var">v2</span>, <a class="idref" href="mathcomp.algebra.vector.html#u1"><span class="id" title="variable">u1</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">\</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">in</span></a> <a class="idref" href="mathcomp.algebra.vector.html#U"><span class="id" title="variable">U</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.vector.html#u2"><span class="id" title="variable">u2</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">\</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">in</span></a> <a class="idref" href="mathcomp.algebra.vector.html#U"><span class="id" title="variable">U</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.vector.html#v1"><span class="id" title="variable">v1</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">\</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">in</span></a> <a class="idref" href="mathcomp.algebra.vector.html#V"><span class="id" title="variable">V</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.vector.html#v2"><span class="id" title="variable">v2</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">\</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">in</span></a> <a class="idref" href="mathcomp.algebra.vector.html#V"><span class="id" title="variable">V</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a><br/> + <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.vector.html#u1"><span class="id" title="variable">u1</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#ae4d81913e6239182a9ac7467ffde8cd"><span class="id" title="notation">+</span></a> <a class="idref" href="mathcomp.algebra.vector.html#v1"><span class="id" title="variable">v1</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#17d28d004d0863cb022d4ce832ddaaae"><span class="id" title="notation">==</span></a> <a class="idref" href="mathcomp.algebra.vector.html#u2"><span class="id" title="variable">u2</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#ae4d81913e6239182a9ac7467ffde8cd"><span class="id" title="notation">+</span></a> <a class="idref" href="mathcomp.algebra.vector.html#v2"><span class="id" title="variable">v2</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">)</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">(</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#44400027531d4bc3f586a1997dc874c0"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.vector.html#u1"><span class="id" title="variable">u1</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#44400027531d4bc3f586a1997dc874c0"><span class="id" title="notation">,</span></a> <a class="idref" href="mathcomp.algebra.vector.html#v1"><span class="id" title="variable">v1</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#44400027531d4bc3f586a1997dc874c0"><span class="id" title="notation">)</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#17d28d004d0863cb022d4ce832ddaaae"><span class="id" title="notation">==</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#44400027531d4bc3f586a1997dc874c0"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.vector.html#u2"><span class="id" title="variable">u2</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#44400027531d4bc3f586a1997dc874c0"><span class="id" title="notation">,</span></a> <a class="idref" href="mathcomp.algebra.vector.html#v2"><span class="id" title="variable">v2</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#44400027531d4bc3f586a1997dc874c0"><span class="id" title="notation">)</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">)</span></a>)<br/> + (<a class="idref" href="mathcomp.algebra.vector.html#directv"><span class="id" title="abbreviation">directv</span></a> (<a class="idref" href="mathcomp.algebra.vector.html#U"><span class="id" title="variable">U</span></a> <a class="idref" href="mathcomp.algebra.vector.html#706deac9766015ea164a28957c46a7b4"><span class="id" title="notation">+</span></a> <a class="idref" href="mathcomp.algebra.vector.html#V"><span class="id" title="variable">V</span></a>)).<br/> + +<br/> +<span class="id" title="keyword">End</span> <a class="idref" href="mathcomp.algebra.vector.html#VectorTheory.BinaryDirect"><span class="id" title="section">BinaryDirect</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Section</span> <a name="VectorTheory.NaryDirect"><span class="id" title="section">NaryDirect</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Context</span> {<span class="id" title="var">I</span> : <a class="idref" href="mathcomp.ssreflect.fintype.html#Finite.Exports.finType"><span class="id" title="abbreviation">finType</span></a>} {<span class="id" title="var">P</span> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#pred"><span class="id" title="definition">pred</span></a> <a class="idref" href="mathcomp.algebra.vector.html#I"><span class="id" title="variable">I</span></a>}.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="directv_sumP"><span class="id" title="lemma">directv_sumP</span></a> {<span class="id" title="var">Us</span> : <a class="idref" href="mathcomp.algebra.vector.html#VectorTheory.NaryDirect.I"><span class="id" title="variable">I</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.vector.html#ca0a177f6d6581a7f5199987cd7ee21c"><span class="id" title="notation">{</span></a><a class="idref" href="mathcomp.algebra.vector.html#ca0a177f6d6581a7f5199987cd7ee21c"><span class="id" title="notation">vspace</span></a> <a class="idref" href="mathcomp.algebra.vector.html#VectorTheory.vT"><span class="id" title="variable">vT</span></a><a class="idref" href="mathcomp.algebra.vector.html#ca0a177f6d6581a7f5199987cd7ee21c"><span class="id" title="notation">}</span></a>} :<br/> + <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#reflect"><span class="id" title="abbreviation">reflect</span></a> (<span class="id" title="keyword">∀</span> <span class="id" title="var">i</span>, <a class="idref" href="mathcomp.algebra.vector.html#VectorTheory.NaryDirect.P"><span class="id" title="variable">P</span></a> <a class="idref" href="mathcomp.algebra.vector.html#i"><span class="id" title="variable">i</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.vector.html#Us"><span class="id" title="variable">Us</span></a> <a class="idref" href="mathcomp.algebra.vector.html#i"><span class="id" title="variable">i</span></a> <a class="idref" href="mathcomp.algebra.vector.html#585f47de65e0d6c6ecedb971203eafab"><span class="id" title="notation">:&:</span></a> <a class="idref" href="mathcomp.algebra.vector.html#585f47de65e0d6c6ecedb971203eafab"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.vector.html#d977f5115f4427a1c821b49789732de6"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.algebra.vector.html#d977f5115f4427a1c821b49789732de6"><span class="id" title="notation">sum_</span></a><a class="idref" href="mathcomp.algebra.vector.html#d977f5115f4427a1c821b49789732de6"><span class="id" title="notation">(</span></a><span class="id" title="var">j</span> <a class="idref" href="mathcomp.algebra.vector.html#d977f5115f4427a1c821b49789732de6"><span class="id" title="notation">|</span></a> <a class="idref" href="mathcomp.algebra.vector.html#VectorTheory.NaryDirect.P"><span class="id" title="variable">P</span></a> <a class="idref" href="mathcomp.algebra.vector.html#j"><span class="id" title="variable">j</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#49ac24efa716d8b0ee8943bc1d1769a9"><span class="id" title="notation">&&</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#49ac24efa716d8b0ee8943bc1d1769a9"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.vector.html#j"><span class="id" title="variable">j</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#b1eeadc2feabc7422252baa895418c7b"><span class="id" title="notation">!=</span></a> <a class="idref" href="mathcomp.algebra.vector.html#i"><span class="id" title="variable">i</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#49ac24efa716d8b0ee8943bc1d1769a9"><span class="id" title="notation">)</span></a><a class="idref" href="mathcomp.algebra.vector.html#d977f5115f4427a1c821b49789732de6"><span class="id" title="notation">)</span></a> <a class="idref" href="mathcomp.algebra.vector.html#Us"><span class="id" title="variable">Us</span></a> <a class="idref" href="mathcomp.algebra.vector.html#j"><span class="id" title="variable">j</span></a><a class="idref" href="mathcomp.algebra.vector.html#585f47de65e0d6c6ecedb971203eafab"><span class="id" title="notation">)</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> 0)%<span class="id" title="var">VS</span><br/> + (<a class="idref" href="mathcomp.algebra.vector.html#directv"><span class="id" title="abbreviation">directv</span></a> (<a class="idref" href="mathcomp.algebra.vector.html#d977f5115f4427a1c821b49789732de6"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.algebra.vector.html#d977f5115f4427a1c821b49789732de6"><span class="id" title="notation">sum_</span></a><a class="idref" href="mathcomp.algebra.vector.html#d977f5115f4427a1c821b49789732de6"><span class="id" title="notation">(</span></a><span class="id" title="var">i</span> <a class="idref" href="mathcomp.algebra.vector.html#d977f5115f4427a1c821b49789732de6"><span class="id" title="notation">|</span></a> <a class="idref" href="mathcomp.algebra.vector.html#VectorTheory.NaryDirect.P"><span class="id" title="variable">P</span></a> <a class="idref" href="mathcomp.algebra.vector.html#i"><span class="id" title="variable">i</span></a><a class="idref" href="mathcomp.algebra.vector.html#d977f5115f4427a1c821b49789732de6"><span class="id" title="notation">)</span></a> <a class="idref" href="mathcomp.algebra.vector.html#Us"><span class="id" title="variable">Us</span></a> <a class="idref" href="mathcomp.algebra.vector.html#i"><span class="id" title="variable">i</span></a>)).<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="directv_sumE"><span class="id" title="lemma">directv_sumE</span></a> {<span class="id" title="var">Ss</span> : <a class="idref" href="mathcomp.algebra.vector.html#VectorTheory.NaryDirect.I"><span class="id" title="variable">I</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.vector.html#addv_expr"><span class="id" title="record">addv_expr</span></a>} (<span class="id" title="var">xunwrap</span> := <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#unwrap"><span class="id" title="projection">unwrap</span></a>) :<br/> + <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#reflect"><span class="id" title="abbreviation">reflect</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#4d70beb460e783df2b7b2ad387c00194"><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.vector.html#VectorTheory.NaryDirect.P"><span class="id" title="variable">P</span></a> <a class="idref" href="mathcomp.algebra.vector.html#i"><span class="id" title="variable">i</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.vector.html#directv"><span class="id" title="abbreviation">directv</span></a> (<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#unwrap"><span class="id" title="projection">unwrap</span></a> (<a class="idref" href="mathcomp.algebra.vector.html#Ss"><span class="id" title="variable">Ss</span></a> <a class="idref" href="mathcomp.algebra.vector.html#i"><span class="id" title="variable">i</span></a>))<br/> + <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#4d70beb460e783df2b7b2ad387c00194"><span class="id" title="notation">&</span></a> <a class="idref" href="mathcomp.algebra.vector.html#directv"><span class="id" title="abbreviation">directv</span></a> (<a class="idref" href="mathcomp.algebra.vector.html#d977f5115f4427a1c821b49789732de6"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.algebra.vector.html#d977f5115f4427a1c821b49789732de6"><span class="id" title="notation">sum_</span></a><a class="idref" href="mathcomp.algebra.vector.html#d977f5115f4427a1c821b49789732de6"><span class="id" title="notation">(</span></a><span class="id" title="var">i</span> <a class="idref" href="mathcomp.algebra.vector.html#d977f5115f4427a1c821b49789732de6"><span class="id" title="notation">|</span></a> <a class="idref" href="mathcomp.algebra.vector.html#VectorTheory.NaryDirect.P"><span class="id" title="variable">P</span></a> <a class="idref" href="mathcomp.algebra.vector.html#i"><span class="id" title="variable">i</span></a><a class="idref" href="mathcomp.algebra.vector.html#d977f5115f4427a1c821b49789732de6"><span class="id" title="notation">)</span></a> <a class="idref" href="mathcomp.algebra.vector.html#xunwrap"><span class="id" title="variable">xunwrap</span></a> (<a class="idref" href="mathcomp.algebra.vector.html#Ss"><span class="id" title="variable">Ss</span></a> <a class="idref" href="mathcomp.algebra.vector.html#i"><span class="id" title="variable">i</span></a>))<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#4d70beb460e783df2b7b2ad387c00194"><span class="id" title="notation">]</span></a><br/> + (<a class="idref" href="mathcomp.algebra.vector.html#directv"><span class="id" title="abbreviation">directv</span></a> (<a class="idref" href="mathcomp.algebra.vector.html#d977f5115f4427a1c821b49789732de6"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.algebra.vector.html#d977f5115f4427a1c821b49789732de6"><span class="id" title="notation">sum_</span></a><a class="idref" href="mathcomp.algebra.vector.html#d977f5115f4427a1c821b49789732de6"><span class="id" title="notation">(</span></a><span class="id" title="var">i</span> <a class="idref" href="mathcomp.algebra.vector.html#d977f5115f4427a1c821b49789732de6"><span class="id" title="notation">|</span></a> <a class="idref" href="mathcomp.algebra.vector.html#VectorTheory.NaryDirect.P"><span class="id" title="variable">P</span></a> <a class="idref" href="mathcomp.algebra.vector.html#i"><span class="id" title="variable">i</span></a><a class="idref" href="mathcomp.algebra.vector.html#d977f5115f4427a1c821b49789732de6"><span class="id" title="notation">)</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#unwrap"><span class="id" title="projection">unwrap</span></a> (<a class="idref" href="mathcomp.algebra.vector.html#Ss"><span class="id" title="variable">Ss</span></a> <a class="idref" href="mathcomp.algebra.vector.html#i"><span class="id" title="variable">i</span></a>))).<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="directv_sum_independent"><span class="id" title="lemma">directv_sum_independent</span></a> {<span class="id" title="var">Us</span> : <a class="idref" href="mathcomp.algebra.vector.html#VectorTheory.NaryDirect.I"><span class="id" title="variable">I</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.vector.html#ca0a177f6d6581a7f5199987cd7ee21c"><span class="id" title="notation">{</span></a><a class="idref" href="mathcomp.algebra.vector.html#ca0a177f6d6581a7f5199987cd7ee21c"><span class="id" title="notation">vspace</span></a> <a class="idref" href="mathcomp.algebra.vector.html#VectorTheory.vT"><span class="id" title="variable">vT</span></a><a class="idref" href="mathcomp.algebra.vector.html#ca0a177f6d6581a7f5199987cd7ee21c"><span class="id" title="notation">}</span></a>} :<br/> + <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#reflect"><span class="id" title="abbreviation">reflect</span></a> (<span class="id" title="keyword">∀</span> <span class="id" title="var">us</span>,<br/> + <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">(</span></a><span class="id" title="keyword">∀</span> <span class="id" title="var">i</span>, <a class="idref" href="mathcomp.algebra.vector.html#VectorTheory.NaryDirect.P"><span class="id" title="variable">P</span></a> <a class="idref" href="mathcomp.algebra.vector.html#i"><span class="id" title="variable">i</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.vector.html#us"><span class="id" title="variable">us</span></a> <a class="idref" href="mathcomp.algebra.vector.html#i"><span class="id" title="variable">i</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">\</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">in</span></a> <a class="idref" href="mathcomp.algebra.vector.html#Us"><span class="id" title="variable">Us</span></a> <a class="idref" href="mathcomp.algebra.vector.html#i"><span class="id" title="variable">i</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">)</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#622398b62523a74328f94700e42198d0"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#622398b62523a74328f94700e42198d0"><span class="id" title="notation">sum_</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#622398b62523a74328f94700e42198d0"><span class="id" title="notation">(</span></a><span class="id" title="var">i</span> <a class="idref" href="mathcomp.algebra.ssralg.html#622398b62523a74328f94700e42198d0"><span class="id" title="notation">|</span></a> <a class="idref" href="mathcomp.algebra.vector.html#VectorTheory.NaryDirect.P"><span class="id" title="variable">P</span></a> <a class="idref" href="mathcomp.algebra.vector.html#i"><span class="id" title="variable">i</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#622398b62523a74328f94700e42198d0"><span class="id" title="notation">)</span></a> <a class="idref" href="mathcomp.algebra.vector.html#us"><span class="id" title="variable">us</span></a> <a class="idref" href="mathcomp.algebra.vector.html#i"><span class="id" title="variable">i</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> 0 <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a><br/> + <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">(</span></a><span class="id" title="keyword">∀</span> <span class="id" title="var">i</span>, <a class="idref" href="mathcomp.algebra.vector.html#VectorTheory.NaryDirect.P"><span class="id" title="variable">P</span></a> <a class="idref" href="mathcomp.algebra.vector.html#i"><span class="id" title="variable">i</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.vector.html#us"><span class="id" title="variable">us</span></a> <a class="idref" href="mathcomp.algebra.vector.html#i"><span class="id" title="variable">i</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> 0<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">)</span></a>)<br/> + (<a class="idref" href="mathcomp.algebra.vector.html#directv"><span class="id" title="abbreviation">directv</span></a> (<a class="idref" href="mathcomp.algebra.vector.html#d977f5115f4427a1c821b49789732de6"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.algebra.vector.html#d977f5115f4427a1c821b49789732de6"><span class="id" title="notation">sum_</span></a><a class="idref" href="mathcomp.algebra.vector.html#d977f5115f4427a1c821b49789732de6"><span class="id" title="notation">(</span></a><span class="id" title="var">i</span> <a class="idref" href="mathcomp.algebra.vector.html#d977f5115f4427a1c821b49789732de6"><span class="id" title="notation">|</span></a> <a class="idref" href="mathcomp.algebra.vector.html#VectorTheory.NaryDirect.P"><span class="id" title="variable">P</span></a> <a class="idref" href="mathcomp.algebra.vector.html#i"><span class="id" title="variable">i</span></a><a class="idref" href="mathcomp.algebra.vector.html#d977f5115f4427a1c821b49789732de6"><span class="id" title="notation">)</span></a> <a class="idref" href="mathcomp.algebra.vector.html#Us"><span class="id" title="variable">Us</span></a> <a class="idref" href="mathcomp.algebra.vector.html#i"><span class="id" title="variable">i</span></a>)).<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="directv_sum_unique"><span class="id" title="lemma">directv_sum_unique</span></a> {<span class="id" title="var">Us</span> : <a class="idref" href="mathcomp.algebra.vector.html#VectorTheory.NaryDirect.I"><span class="id" title="variable">I</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.vector.html#ca0a177f6d6581a7f5199987cd7ee21c"><span class="id" title="notation">{</span></a><a class="idref" href="mathcomp.algebra.vector.html#ca0a177f6d6581a7f5199987cd7ee21c"><span class="id" title="notation">vspace</span></a> <a class="idref" href="mathcomp.algebra.vector.html#VectorTheory.vT"><span class="id" title="variable">vT</span></a><a class="idref" href="mathcomp.algebra.vector.html#ca0a177f6d6581a7f5199987cd7ee21c"><span class="id" title="notation">}</span></a>} :<br/> + <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#reflect"><span class="id" title="abbreviation">reflect</span></a> (<span class="id" title="keyword">∀</span> <span class="id" title="var">us</span> <span class="id" title="var">vs</span>,<br/> + <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">(</span></a><span class="id" title="keyword">∀</span> <span class="id" title="var">i</span>, <a class="idref" href="mathcomp.algebra.vector.html#VectorTheory.NaryDirect.P"><span class="id" title="variable">P</span></a> <a class="idref" href="mathcomp.algebra.vector.html#i"><span class="id" title="variable">i</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.vector.html#us"><span class="id" title="variable">us</span></a> <a class="idref" href="mathcomp.algebra.vector.html#i"><span class="id" title="variable">i</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">\</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">in</span></a> <a class="idref" href="mathcomp.algebra.vector.html#Us"><span class="id" title="variable">Us</span></a> <a class="idref" href="mathcomp.algebra.vector.html#i"><span class="id" title="variable">i</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">)</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a><br/> + <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">(</span></a><span class="id" title="keyword">∀</span> <span class="id" title="var">i</span>, <a class="idref" href="mathcomp.algebra.vector.html#VectorTheory.NaryDirect.P"><span class="id" title="variable">P</span></a> <a class="idref" href="mathcomp.algebra.vector.html#i"><span class="id" title="variable">i</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.vector.html#vs"><span class="id" title="variable">vs</span></a> <a class="idref" href="mathcomp.algebra.vector.html#i"><span class="id" title="variable">i</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">\</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">in</span></a> <a class="idref" href="mathcomp.algebra.vector.html#Us"><span class="id" title="variable">Us</span></a> <a class="idref" href="mathcomp.algebra.vector.html#i"><span class="id" title="variable">i</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">)</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a><br/> + <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#622398b62523a74328f94700e42198d0"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#622398b62523a74328f94700e42198d0"><span class="id" title="notation">sum_</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#622398b62523a74328f94700e42198d0"><span class="id" title="notation">(</span></a><span class="id" title="var">i</span> <a class="idref" href="mathcomp.algebra.ssralg.html#622398b62523a74328f94700e42198d0"><span class="id" title="notation">|</span></a> <a class="idref" href="mathcomp.algebra.vector.html#VectorTheory.NaryDirect.P"><span class="id" title="variable">P</span></a> <a class="idref" href="mathcomp.algebra.vector.html#i"><span class="id" title="variable">i</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#622398b62523a74328f94700e42198d0"><span class="id" title="notation">)</span></a> <a class="idref" href="mathcomp.algebra.vector.html#us"><span class="id" title="variable">us</span></a> <a class="idref" href="mathcomp.algebra.vector.html#i"><span class="id" title="variable">i</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#17d28d004d0863cb022d4ce832ddaaae"><span class="id" title="notation">==</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#622398b62523a74328f94700e42198d0"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#622398b62523a74328f94700e42198d0"><span class="id" title="notation">sum_</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#622398b62523a74328f94700e42198d0"><span class="id" title="notation">(</span></a><span class="id" title="var">i</span> <a class="idref" href="mathcomp.algebra.ssralg.html#622398b62523a74328f94700e42198d0"><span class="id" title="notation">|</span></a> <a class="idref" href="mathcomp.algebra.vector.html#VectorTheory.NaryDirect.P"><span class="id" title="variable">P</span></a> <a class="idref" href="mathcomp.algebra.vector.html#i"><span class="id" title="variable">i</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#622398b62523a74328f94700e42198d0"><span class="id" title="notation">)</span></a> <a class="idref" href="mathcomp.algebra.vector.html#vs"><span class="id" title="variable">vs</span></a> <a class="idref" href="mathcomp.algebra.vector.html#i"><span class="id" title="variable">i</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">)</span></a><br/> + <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#71aa9b4d33ee64c2b31b6cd545727657"><span class="id" title="notation">[</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#71aa9b4d33ee64c2b31b6cd545727657"><span class="id" title="notation">∀</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#71aa9b4d33ee64c2b31b6cd545727657"><span class="id" title="notation">(</span></a><span class="id" title="var">i</span> <a class="idref" href="mathcomp.ssreflect.fintype.html#71aa9b4d33ee64c2b31b6cd545727657"><span class="id" title="notation">|</span></a> <a class="idref" href="mathcomp.algebra.vector.html#VectorTheory.NaryDirect.P"><span class="id" title="variable">P</span></a> <a class="idref" href="mathcomp.algebra.vector.html#i"><span class="id" title="variable">i</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#71aa9b4d33ee64c2b31b6cd545727657"><span class="id" title="notation">)</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#46e5a4123d46e6b126f7788a77176785"><span class="id" title="notation">,</span></a> <a class="idref" href="mathcomp.algebra.vector.html#us"><span class="id" title="variable">us</span></a> <a class="idref" href="mathcomp.algebra.vector.html#i"><span class="id" title="variable">i</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#17d28d004d0863cb022d4ce832ddaaae"><span class="id" title="notation">==</span></a> <a class="idref" href="mathcomp.algebra.vector.html#vs"><span class="id" title="variable">vs</span></a> <a class="idref" href="mathcomp.algebra.vector.html#i"><span class="id" title="variable">i</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#71aa9b4d33ee64c2b31b6cd545727657"><span class="id" title="notation">]</span></a>)<br/> + (<a class="idref" href="mathcomp.algebra.vector.html#directv"><span class="id" title="abbreviation">directv</span></a> (<a class="idref" href="mathcomp.algebra.vector.html#d977f5115f4427a1c821b49789732de6"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.algebra.vector.html#d977f5115f4427a1c821b49789732de6"><span class="id" title="notation">sum_</span></a><a class="idref" href="mathcomp.algebra.vector.html#d977f5115f4427a1c821b49789732de6"><span class="id" title="notation">(</span></a><span class="id" title="var">i</span> <a class="idref" href="mathcomp.algebra.vector.html#d977f5115f4427a1c821b49789732de6"><span class="id" title="notation">|</span></a> <a class="idref" href="mathcomp.algebra.vector.html#VectorTheory.NaryDirect.P"><span class="id" title="variable">P</span></a> <a class="idref" href="mathcomp.algebra.vector.html#i"><span class="id" title="variable">i</span></a><a class="idref" href="mathcomp.algebra.vector.html#d977f5115f4427a1c821b49789732de6"><span class="id" title="notation">)</span></a> <a class="idref" href="mathcomp.algebra.vector.html#Us"><span class="id" title="variable">Us</span></a> <a class="idref" href="mathcomp.algebra.vector.html#i"><span class="id" title="variable">i</span></a>)).<br/> + +<br/> +<span class="id" title="keyword">End</span> <a class="idref" href="mathcomp.algebra.vector.html#VectorTheory.NaryDirect"><span class="id" title="section">NaryDirect</span></a>.<br/> + +<br/> +</div> + +<div class="doc"> + Linear span generated by a list of vectors +</div> +<div class="code"> +<span class="id" title="keyword">Lemma</span> <a name="memv_span"><span class="id" title="lemma">memv_span</span></a> <span class="id" title="var">X</span> <span class="id" title="var">v</span> : <a class="idref" href="mathcomp.algebra.vector.html#v"><span class="id" title="variable">v</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">\</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">in</span></a> <a class="idref" href="mathcomp.algebra.vector.html#X"><span class="id" title="variable">X</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.vector.html#v"><span class="id" title="variable">v</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">\</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">in</span></a> <a class="idref" href="mathcomp.algebra.vector.html#dd838ef568fa7ae0628a7427a23d7215"><span class="id" title="notation"><<</span></a><a class="idref" href="mathcomp.algebra.vector.html#X"><span class="id" title="variable">X</span></a><a class="idref" href="mathcomp.algebra.vector.html#dd838ef568fa7ae0628a7427a23d7215"><span class="id" title="notation">>></span></a>%<span class="id" title="var">VS</span>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="memv_span1"><span class="id" title="lemma">memv_span1</span></a> <span class="id" title="var">v</span> : <a class="idref" href="mathcomp.algebra.vector.html#v"><span class="id" title="variable">v</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">\</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">in</span></a> <a class="idref" href="mathcomp.algebra.vector.html#dd838ef568fa7ae0628a7427a23d7215"><span class="id" title="notation"><<</span></a><a class="idref" href="mathcomp.ssreflect.seq.html#36229928b54642a4a7da943ccf8f9612"><span class="id" title="notation">[::</span></a> <a class="idref" href="mathcomp.algebra.vector.html#v"><span class="id" title="variable">v</span></a><a class="idref" href="mathcomp.ssreflect.seq.html#36229928b54642a4a7da943ccf8f9612"><span class="id" title="notation">]</span></a><a class="idref" href="mathcomp.algebra.vector.html#dd838ef568fa7ae0628a7427a23d7215"><span class="id" title="notation">>></span></a>%<span class="id" title="var">VS</span>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="dim_span"><span class="id" title="lemma">dim_span</span></a> <span class="id" title="var">X</span> : <a class="idref" href="mathcomp.algebra.vector.html#ee35a6780ccd60155a3be89dcb5fdb30"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.algebra.vector.html#ee35a6780ccd60155a3be89dcb5fdb30"><span class="id" title="notation">dim</span></a> <a class="idref" href="mathcomp.algebra.vector.html#dd838ef568fa7ae0628a7427a23d7215"><span class="id" title="notation"><<</span></a><a class="idref" href="mathcomp.algebra.vector.html#X"><span class="id" title="variable">X</span></a><a class="idref" href="mathcomp.algebra.vector.html#dd838ef568fa7ae0628a7427a23d7215"><span class="id" title="notation">>></span></a> <a class="idref" href="mathcomp.ssreflect.ssrnat.html#9b077c369e19739ef880736ba34623ff"><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.vector.html#X"><span class="id" title="variable">X</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="span_subvP"><span class="id" title="lemma">span_subvP</span></a> {<span class="id" title="var">X</span> <span class="id" title="var">U</span>} : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#reflect"><span class="id" title="abbreviation">reflect</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#53295d8f18390300c5a24f66e0bcda98"><span class="id" title="notation">{</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#53295d8f18390300c5a24f66e0bcda98"><span class="id" title="notation">subset</span></a> <a class="idref" href="mathcomp.algebra.vector.html#X"><span class="id" title="variable">X</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#53295d8f18390300c5a24f66e0bcda98"><span class="id" title="notation">≤</span></a> <a class="idref" href="mathcomp.algebra.vector.html#U"><span class="id" title="variable">U</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#53295d8f18390300c5a24f66e0bcda98"><span class="id" title="notation">}</span></a> (<a class="idref" href="mathcomp.algebra.vector.html#dd838ef568fa7ae0628a7427a23d7215"><span class="id" title="notation"><<</span></a><a class="idref" href="mathcomp.algebra.vector.html#X"><span class="id" title="variable">X</span></a><a class="idref" href="mathcomp.algebra.vector.html#dd838ef568fa7ae0628a7427a23d7215"><span class="id" title="notation">>></span></a> <a class="idref" href="mathcomp.algebra.vector.html#755d11a7d5629bce3486e7cbadc915e7"><span class="id" title="notation">≤</span></a> <a class="idref" href="mathcomp.algebra.vector.html#U"><span class="id" title="variable">U</span></a>)%<span class="id" title="var">VS</span>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="sub_span"><span class="id" title="lemma">sub_span</span></a> <span class="id" title="var">X</span> <span class="id" title="var">Y</span> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#53295d8f18390300c5a24f66e0bcda98"><span class="id" title="notation">{</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#53295d8f18390300c5a24f66e0bcda98"><span class="id" title="notation">subset</span></a> <a class="idref" href="mathcomp.algebra.vector.html#X"><span class="id" title="variable">X</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#53295d8f18390300c5a24f66e0bcda98"><span class="id" title="notation">≤</span></a> <a class="idref" href="mathcomp.algebra.vector.html#Y"><span class="id" title="variable">Y</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#53295d8f18390300c5a24f66e0bcda98"><span class="id" title="notation">}</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> (<a class="idref" href="mathcomp.algebra.vector.html#dd838ef568fa7ae0628a7427a23d7215"><span class="id" title="notation"><<</span></a><a class="idref" href="mathcomp.algebra.vector.html#X"><span class="id" title="variable">X</span></a><a class="idref" href="mathcomp.algebra.vector.html#dd838ef568fa7ae0628a7427a23d7215"><span class="id" title="notation">>></span></a> <a class="idref" href="mathcomp.algebra.vector.html#755d11a7d5629bce3486e7cbadc915e7"><span class="id" title="notation">≤</span></a> <a class="idref" href="mathcomp.algebra.vector.html#dd838ef568fa7ae0628a7427a23d7215"><span class="id" title="notation"><<</span></a><a class="idref" href="mathcomp.algebra.vector.html#Y"><span class="id" title="variable">Y</span></a><a class="idref" href="mathcomp.algebra.vector.html#dd838ef568fa7ae0628a7427a23d7215"><span class="id" title="notation">>></span></a>)%<span class="id" title="var">VS</span>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="eq_span"><span class="id" title="lemma">eq_span</span></a> <span class="id" title="var">X</span> <span class="id" title="var">Y</span> : <a class="idref" href="mathcomp.algebra.vector.html#X"><span class="id" title="variable">X</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#20bf07099d6d8cf369383b22fd37862e"><span class="id" title="notation">=</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#20bf07099d6d8cf369383b22fd37862e"><span class="id" title="notation">i</span></a> <a class="idref" href="mathcomp.algebra.vector.html#Y"><span class="id" title="variable">Y</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> (<a class="idref" href="mathcomp.algebra.vector.html#dd838ef568fa7ae0628a7427a23d7215"><span class="id" title="notation"><<</span></a><a class="idref" href="mathcomp.algebra.vector.html#X"><span class="id" title="variable">X</span></a><a class="idref" href="mathcomp.algebra.vector.html#dd838ef568fa7ae0628a7427a23d7215"><span class="id" title="notation">>></span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.vector.html#dd838ef568fa7ae0628a7427a23d7215"><span class="id" title="notation"><<</span></a><a class="idref" href="mathcomp.algebra.vector.html#Y"><span class="id" title="variable">Y</span></a><a class="idref" href="mathcomp.algebra.vector.html#dd838ef568fa7ae0628a7427a23d7215"><span class="id" title="notation">>></span></a>)%<span class="id" title="var">VS</span>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="span_def"><span class="id" title="lemma">span_def</span></a> <span class="id" title="var">X</span> : <a class="idref" href="mathcomp.algebra.vector.html#span"><span class="id" title="definition">span</span></a> <a class="idref" href="mathcomp.algebra.vector.html#X"><span class="id" title="variable">X</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> (<a class="idref" href="mathcomp.algebra.vector.html#a0cc109dcb3354cdc641c4ee52a2f4cb"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.algebra.vector.html#a0cc109dcb3354cdc641c4ee52a2f4cb"><span class="id" title="notation">sum_</span></a><a class="idref" href="mathcomp.algebra.vector.html#a0cc109dcb3354cdc641c4ee52a2f4cb"><span class="id" title="notation">(</span></a><span class="id" title="var">u</span> <a class="idref" href="mathcomp.algebra.vector.html#a0cc109dcb3354cdc641c4ee52a2f4cb"><span class="id" title="notation"><-</span></a> <a class="idref" href="mathcomp.algebra.vector.html#X"><span class="id" title="variable">X</span></a><a class="idref" href="mathcomp.algebra.vector.html#a0cc109dcb3354cdc641c4ee52a2f4cb"><span class="id" title="notation">)</span></a> <a class="idref" href="mathcomp.algebra.vector.html#c7e74c229bedc2f20e80f4f2f96cee78"><span class="id" title="notation"><[</span></a><a class="idref" href="mathcomp.algebra.vector.html#u"><span class="id" title="variable">u</span></a><a class="idref" href="mathcomp.algebra.vector.html#c7e74c229bedc2f20e80f4f2f96cee78"><span class="id" title="notation">]></span></a>)%<span class="id" title="var">VS</span>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="span_nil"><span class="id" title="lemma">span_nil</span></a> : (<a class="idref" href="mathcomp.algebra.vector.html#dd838ef568fa7ae0628a7427a23d7215"><span class="id" title="notation"><<</span></a><a class="idref" href="mathcomp.ssreflect.seq.html#Nil"><span class="id" title="abbreviation">Nil</span></a> <a class="idref" href="mathcomp.algebra.vector.html#VectorTheory.vT"><span class="id" title="variable">vT</span></a><a class="idref" href="mathcomp.algebra.vector.html#dd838ef568fa7ae0628a7427a23d7215"><span class="id" title="notation">>></span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> 0)%<span class="id" title="var">VS</span>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="span_seq1"><span class="id" title="lemma">span_seq1</span></a> <span class="id" title="var">v</span> : (<a class="idref" href="mathcomp.algebra.vector.html#dd838ef568fa7ae0628a7427a23d7215"><span class="id" title="notation"><<</span></a><a class="idref" href="mathcomp.ssreflect.seq.html#36229928b54642a4a7da943ccf8f9612"><span class="id" title="notation">[::</span></a> <a class="idref" href="mathcomp.algebra.vector.html#v"><span class="id" title="variable">v</span></a><a class="idref" href="mathcomp.ssreflect.seq.html#36229928b54642a4a7da943ccf8f9612"><span class="id" title="notation">]</span></a><a class="idref" href="mathcomp.algebra.vector.html#dd838ef568fa7ae0628a7427a23d7215"><span class="id" title="notation">>></span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.vector.html#c7e74c229bedc2f20e80f4f2f96cee78"><span class="id" title="notation"><[</span></a><a class="idref" href="mathcomp.algebra.vector.html#v"><span class="id" title="variable">v</span></a><a class="idref" href="mathcomp.algebra.vector.html#c7e74c229bedc2f20e80f4f2f96cee78"><span class="id" title="notation">]></span></a>)%<span class="id" title="var">VS</span>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="span_cons"><span class="id" title="lemma">span_cons</span></a> <span class="id" title="var">v</span> <span class="id" title="var">X</span> : (<a class="idref" href="mathcomp.algebra.vector.html#dd838ef568fa7ae0628a7427a23d7215"><span class="id" title="notation"><<</span></a><a class="idref" href="mathcomp.algebra.vector.html#v"><span class="id" title="variable">v</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#d7fed0909a58e41c49e3ee117361b0a5"><span class="id" title="notation">::</span></a> <a class="idref" href="mathcomp.algebra.vector.html#X"><span class="id" title="variable">X</span></a><a class="idref" href="mathcomp.algebra.vector.html#dd838ef568fa7ae0628a7427a23d7215"><span class="id" title="notation">>></span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.vector.html#c7e74c229bedc2f20e80f4f2f96cee78"><span class="id" title="notation"><[</span></a><a class="idref" href="mathcomp.algebra.vector.html#v"><span class="id" title="variable">v</span></a><a class="idref" href="mathcomp.algebra.vector.html#c7e74c229bedc2f20e80f4f2f96cee78"><span class="id" title="notation">]></span></a> <a class="idref" href="mathcomp.algebra.vector.html#706deac9766015ea164a28957c46a7b4"><span class="id" title="notation">+</span></a> <a class="idref" href="mathcomp.algebra.vector.html#dd838ef568fa7ae0628a7427a23d7215"><span class="id" title="notation"><<</span></a><a class="idref" href="mathcomp.algebra.vector.html#X"><span class="id" title="variable">X</span></a><a class="idref" href="mathcomp.algebra.vector.html#dd838ef568fa7ae0628a7427a23d7215"><span class="id" title="notation">>></span></a>)%<span class="id" title="var">VS</span>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="span_cat"><span class="id" title="lemma">span_cat</span></a> <span class="id" title="var">X</span> <span class="id" title="var">Y</span> : (<a class="idref" href="mathcomp.algebra.vector.html#dd838ef568fa7ae0628a7427a23d7215"><span class="id" title="notation"><<</span></a><a class="idref" href="mathcomp.algebra.vector.html#X"><span class="id" title="variable">X</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#2ac9001c05ad5bd2f6d5f68e59f48fbb"><span class="id" title="notation">++</span></a> <a class="idref" href="mathcomp.algebra.vector.html#Y"><span class="id" title="variable">Y</span></a><a class="idref" href="mathcomp.algebra.vector.html#dd838ef568fa7ae0628a7427a23d7215"><span class="id" title="notation">>></span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.vector.html#dd838ef568fa7ae0628a7427a23d7215"><span class="id" title="notation"><<</span></a><a class="idref" href="mathcomp.algebra.vector.html#X"><span class="id" title="variable">X</span></a><a class="idref" href="mathcomp.algebra.vector.html#dd838ef568fa7ae0628a7427a23d7215"><span class="id" title="notation">>></span></a> <a class="idref" href="mathcomp.algebra.vector.html#706deac9766015ea164a28957c46a7b4"><span class="id" title="notation">+</span></a> <a class="idref" href="mathcomp.algebra.vector.html#dd838ef568fa7ae0628a7427a23d7215"><span class="id" title="notation"><<</span></a><a class="idref" href="mathcomp.algebra.vector.html#Y"><span class="id" title="variable">Y</span></a><a class="idref" href="mathcomp.algebra.vector.html#dd838ef568fa7ae0628a7427a23d7215"><span class="id" title="notation">>></span></a>)%<span class="id" title="var">VS</span>.<br/> + +<br/> +</div> + +<div class="doc"> + Coordinates function; should perhaps be generalized to nat indices. +</div> +<div class="code"> + +<br/> +<span class="id" title="keyword">Definition</span> <a name="coord_expanded_def"><span class="id" title="definition">coord_expanded_def</span></a> <span class="id" title="var">n</span> (<span class="id" title="var">X</span> : <a class="idref" href="mathcomp.algebra.vector.html#n"><span class="id" title="variable">n</span></a><a class="idref" href="mathcomp.ssreflect.tuple.html#d8866adbd4a602b7b4cc275d73486ace"><span class="id" title="notation">.-</span></a><a class="idref" href="mathcomp.ssreflect.tuple.html#d8866adbd4a602b7b4cc275d73486ace"><span class="id" title="notation">tuple</span></a> <a class="idref" href="mathcomp.algebra.vector.html#VectorTheory.vT"><span class="id" title="variable">vT</span></a>) <span class="id" title="var">i</span> <span class="id" title="var">v</span> :=<br/> + (<a class="idref" href="mathcomp.algebra.vector.html#v2r"><span class="id" title="definition">v2r</span></a> <a class="idref" href="mathcomp.algebra.vector.html#v"><span class="id" title="variable">v</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#9c6b777e699b0b93592b907e7450465e"><span class="id" title="notation">×</span></a><a class="idref" href="mathcomp.algebra.matrix.html#9c6b777e699b0b93592b907e7450465e"><span class="id" title="notation">m</span></a> <a class="idref" href="mathcomp.algebra.mxalgebra.html#pinvmx"><span class="id" title="definition">pinvmx</span></a> (<a class="idref" href="mathcomp.algebra.vector.html#b2mx"><span class="id" title="definition">b2mx</span></a> <a class="idref" href="mathcomp.algebra.vector.html#X"><span class="id" title="variable">X</span></a>)) 0 <a class="idref" href="mathcomp.algebra.vector.html#i"><span class="id" title="variable">i</span></a>.<br/> +<span class="id" title="keyword">Definition</span> <a name="coord"><span class="id" title="definition">coord</span></a> := <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssreflect.html#locked_with"><span class="id" title="definition">locked_with</span></a> <a class="idref" href="mathcomp.algebra.vector.html#span_key"><span class="id" title="lemma">span_key</span></a> <a class="idref" href="mathcomp.algebra.vector.html#coord_expanded_def"><span class="id" title="definition">coord_expanded_def</span></a>.<br/> +<span class="id" title="keyword">Canonical</span> <span class="id" title="var">coord_unlockable</span> := <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssreflect.html#58f94351327943cd874eb55da8e0ca14"><span class="id" title="notation">[</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssreflect.html#58f94351327943cd874eb55da8e0ca14"><span class="id" title="notation">unlockable</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssreflect.html#58f94351327943cd874eb55da8e0ca14"><span class="id" title="notation">fun</span></a> <a class="idref" href="mathcomp.algebra.vector.html#coord"><span class="id" title="definition">coord</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssreflect.html#58f94351327943cd874eb55da8e0ca14"><span class="id" title="notation">]</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Fact</span> <a name="coord_is_scalar"><span class="id" title="lemma">coord_is_scalar</span></a> <span class="id" title="var">n</span> (<span class="id" title="var">X</span> : <a class="idref" href="mathcomp.algebra.vector.html#n"><span class="id" title="variable">n</span></a><a class="idref" href="mathcomp.ssreflect.tuple.html#d8866adbd4a602b7b4cc275d73486ace"><span class="id" title="notation">.-</span></a><a class="idref" href="mathcomp.ssreflect.tuple.html#d8866adbd4a602b7b4cc275d73486ace"><span class="id" title="notation">tuple</span></a> <a class="idref" href="mathcomp.algebra.vector.html#VectorTheory.vT"><span class="id" title="variable">vT</span></a>) <span class="id" title="var">i</span> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Linear.Exports.scalar"><span class="id" title="abbreviation">scalar</span></a> (<a class="idref" href="mathcomp.algebra.vector.html#coord"><span class="id" title="definition">coord</span></a> <a class="idref" href="mathcomp.algebra.vector.html#X"><span class="id" title="variable">X</span></a> <a class="idref" href="mathcomp.algebra.vector.html#i"><span class="id" title="variable">i</span></a>).<br/> + <span class="id" title="keyword">Canonical</span> <span class="id" title="var">coord_addidive</span> <span class="id" title="var">n</span> <span class="id" title="var">Xn</span> <span class="id" title="var">i</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.vector.html#coord_is_scalar"><span class="id" title="lemma">coord_is_scalar</span></a> <a class="idref" href="mathcomp.algebra.vector.html#n"><span class="id" title="variable">n</span></a> <a class="idref" href="mathcomp.algebra.vector.html#Xn"><span class="id" title="variable">Xn</span></a> <a class="idref" href="mathcomp.algebra.vector.html#i"><span class="id" title="variable">i</span></a>).<br/> +<span class="id" title="keyword">Canonical</span> <span class="id" title="var">coord_linear</span> <span class="id" title="var">n</span> <span class="id" title="var">Xn</span> <span class="id" title="var">i</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.vector.html#coord_is_scalar"><span class="id" title="lemma">coord_is_scalar</span></a> <a class="idref" href="mathcomp.algebra.vector.html#n"><span class="id" title="variable">n</span></a> <a class="idref" href="mathcomp.algebra.vector.html#Xn"><span class="id" title="variable">Xn</span></a> <a class="idref" href="mathcomp.algebra.vector.html#i"><span class="id" title="variable">i</span></a>).<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="coord_span"><span class="id" title="lemma">coord_span</span></a> <span class="id" title="var">n</span> (<span class="id" title="var">X</span> : <a class="idref" href="mathcomp.algebra.vector.html#n"><span class="id" title="variable">n</span></a><a class="idref" href="mathcomp.ssreflect.tuple.html#d8866adbd4a602b7b4cc275d73486ace"><span class="id" title="notation">.-</span></a><a class="idref" href="mathcomp.ssreflect.tuple.html#d8866adbd4a602b7b4cc275d73486ace"><span class="id" title="notation">tuple</span></a> <a class="idref" href="mathcomp.algebra.vector.html#VectorTheory.vT"><span class="id" title="variable">vT</span></a>) <span class="id" title="var">v</span> :<br/> + <a class="idref" href="mathcomp.algebra.vector.html#v"><span class="id" title="variable">v</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">\</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">in</span></a> <a class="idref" href="mathcomp.algebra.vector.html#span"><span class="id" title="definition">span</span></a> <a class="idref" href="mathcomp.algebra.vector.html#X"><span class="id" title="variable">X</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.vector.html#v"><span class="id" title="variable">v</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#640778742e86daa97d31c9911c679af3"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#640778742e86daa97d31c9911c679af3"><span class="id" title="notation">sum_i</span></a> <a class="idref" href="mathcomp.algebra.vector.html#coord"><span class="id" title="definition">coord</span></a> <a class="idref" href="mathcomp.algebra.vector.html#X"><span class="id" title="variable">X</span></a> <a class="idref" href="mathcomp.algebra.vector.html#i"><span class="id" title="variable">i</span></a> <a class="idref" href="mathcomp.algebra.vector.html#v"><span class="id" title="variable">v</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#81f8078534dcbb7e13a32d292f766525"><span class="id" title="notation">*:</span></a> <a class="idref" href="mathcomp.algebra.vector.html#X"><span class="id" title="variable">X</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#9625b440a0052f6dbfd015f5bb8b5125"><span class="id" title="notation">`</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#9625b440a0052f6dbfd015f5bb8b5125"><span class="id" title="notation">_i</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="coord0"><span class="id" title="lemma">coord0</span></a> <span class="id" title="var">i</span> <span class="id" title="var">v</span> : <a class="idref" href="mathcomp.algebra.vector.html#coord"><span class="id" title="definition">coord</span></a> <a class="idref" href="mathcomp.ssreflect.tuple.html#b96c5fac4ea7ac478a42dc9d76e9dbb3"><span class="id" title="notation">[</span></a><a class="idref" href="mathcomp.ssreflect.tuple.html#b96c5fac4ea7ac478a42dc9d76e9dbb3"><span class="id" title="notation">tuple</span></a> 0<a class="idref" href="mathcomp.ssreflect.tuple.html#b96c5fac4ea7ac478a42dc9d76e9dbb3"><span class="id" title="notation">]</span></a> <a class="idref" href="mathcomp.algebra.vector.html#i"><span class="id" title="variable">i</span></a> <a class="idref" href="mathcomp.algebra.vector.html#v"><span class="id" title="variable">v</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> 0.<br/> + +<br/> +</div> + +<div class="doc"> + Free generator sequences. +</div> +<div class="code"> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="nil_free"><span class="id" title="lemma">nil_free</span></a> : <a class="idref" href="mathcomp.algebra.vector.html#free"><span class="id" title="definition">free</span></a> (<a class="idref" href="mathcomp.ssreflect.seq.html#Nil"><span class="id" title="abbreviation">Nil</span></a> <a class="idref" href="mathcomp.algebra.vector.html#VectorTheory.vT"><span class="id" title="variable">vT</span></a>).<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="seq1_free"><span class="id" title="lemma">seq1_free</span></a> <span class="id" title="var">v</span> : <a class="idref" href="mathcomp.algebra.vector.html#free"><span class="id" title="definition">free</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#36229928b54642a4a7da943ccf8f9612"><span class="id" title="notation">[::</span></a> <a class="idref" href="mathcomp.algebra.vector.html#v"><span class="id" title="variable">v</span></a><a class="idref" href="mathcomp.ssreflect.seq.html#36229928b54642a4a7da943ccf8f9612"><span class="id" title="notation">]</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.vector.html#v"><span class="id" title="variable">v</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#b1eeadc2feabc7422252baa895418c7b"><span class="id" title="notation">!=</span></a> 0<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">)</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="perm_free"><span class="id" title="lemma">perm_free</span></a> <span class="id" title="var">X</span> <span class="id" title="var">Y</span> : <a class="idref" href="mathcomp.ssreflect.seq.html#perm_eq"><span class="id" title="definition">perm_eq</span></a> <a class="idref" href="mathcomp.algebra.vector.html#X"><span class="id" title="variable">X</span></a> <a class="idref" href="mathcomp.algebra.vector.html#Y"><span class="id" title="variable">Y</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.vector.html#free"><span class="id" title="definition">free</span></a> <a class="idref" href="mathcomp.algebra.vector.html#X"><span class="id" title="variable">X</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.vector.html#free"><span class="id" title="definition">free</span></a> <a class="idref" href="mathcomp.algebra.vector.html#Y"><span class="id" title="variable">Y</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="free_directv"><span class="id" title="lemma">free_directv</span></a> <span class="id" title="var">X</span> : <a class="idref" href="mathcomp.algebra.vector.html#free"><span class="id" title="definition">free</span></a> <a class="idref" href="mathcomp.algebra.vector.html#X"><span class="id" title="variable">X</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#49ac24efa716d8b0ee8943bc1d1769a9"><span class="id" title="notation">(</span></a>0 <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#ad6d23746eb1a3b62e52010d3945a1db"><span class="id" title="notation">\</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#ad6d23746eb1a3b62e52010d3945a1db"><span class="id" title="notation">notin</span></a> <a class="idref" href="mathcomp.algebra.vector.html#X"><span class="id" title="variable">X</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#49ac24efa716d8b0ee8943bc1d1769a9"><span class="id" title="notation">)</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#49ac24efa716d8b0ee8943bc1d1769a9"><span class="id" title="notation">&&</span></a> <a class="idref" href="mathcomp.algebra.vector.html#directv"><span class="id" title="abbreviation">directv</span></a> (<a class="idref" href="mathcomp.algebra.vector.html#a0cc109dcb3354cdc641c4ee52a2f4cb"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.algebra.vector.html#a0cc109dcb3354cdc641c4ee52a2f4cb"><span class="id" title="notation">sum_</span></a><a class="idref" href="mathcomp.algebra.vector.html#a0cc109dcb3354cdc641c4ee52a2f4cb"><span class="id" title="notation">(</span></a><span class="id" title="var">v</span> <a class="idref" href="mathcomp.algebra.vector.html#a0cc109dcb3354cdc641c4ee52a2f4cb"><span class="id" title="notation"><-</span></a> <a class="idref" href="mathcomp.algebra.vector.html#X"><span class="id" title="variable">X</span></a><a class="idref" href="mathcomp.algebra.vector.html#a0cc109dcb3354cdc641c4ee52a2f4cb"><span class="id" title="notation">)</span></a> <a class="idref" href="mathcomp.algebra.vector.html#c7e74c229bedc2f20e80f4f2f96cee78"><span class="id" title="notation"><[</span></a><a class="idref" href="mathcomp.algebra.vector.html#v"><span class="id" title="variable">v</span></a><a class="idref" href="mathcomp.algebra.vector.html#c7e74c229bedc2f20e80f4f2f96cee78"><span class="id" title="notation">]></span></a>).<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="free_not0"><span class="id" title="lemma">free_not0</span></a> <span class="id" title="var">v</span> <span class="id" title="var">X</span> : <a class="idref" href="mathcomp.algebra.vector.html#free"><span class="id" title="definition">free</span></a> <a class="idref" href="mathcomp.algebra.vector.html#X"><span class="id" title="variable">X</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.vector.html#v"><span class="id" title="variable">v</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">\</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">in</span></a> <a class="idref" href="mathcomp.algebra.vector.html#X"><span class="id" title="variable">X</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.vector.html#v"><span class="id" title="variable">v</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#b1eeadc2feabc7422252baa895418c7b"><span class="id" title="notation">!=</span></a> 0.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="freeP"><span class="id" title="lemma">freeP</span></a> <span class="id" title="var">n</span> (<span class="id" title="var">X</span> : <a class="idref" href="mathcomp.algebra.vector.html#n"><span class="id" title="variable">n</span></a><a class="idref" href="mathcomp.ssreflect.tuple.html#d8866adbd4a602b7b4cc275d73486ace"><span class="id" title="notation">.-</span></a><a class="idref" href="mathcomp.ssreflect.tuple.html#d8866adbd4a602b7b4cc275d73486ace"><span class="id" title="notation">tuple</span></a> <a class="idref" href="mathcomp.algebra.vector.html#VectorTheory.vT"><span class="id" title="variable">vT</span></a>) : <br/> + <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#reflect"><span class="id" title="abbreviation">reflect</span></a> (<span class="id" title="keyword">∀</span> <span class="id" title="var">k</span>, <a class="idref" href="mathcomp.algebra.ssralg.html#b2bfc5b99c28e2c89b336d5f86347706"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#b2bfc5b99c28e2c89b336d5f86347706"><span class="id" title="notation">sum_</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#b2bfc5b99c28e2c89b336d5f86347706"><span class="id" title="notation">(</span></a><span class="id" title="var">i</span> <a class="idref" href="mathcomp.algebra.ssralg.html#b2bfc5b99c28e2c89b336d5f86347706"><span class="id" title="notation"><</span></a> <a class="idref" href="mathcomp.algebra.vector.html#n"><span class="id" title="variable">n</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#b2bfc5b99c28e2c89b336d5f86347706"><span class="id" title="notation">)</span></a> <a class="idref" href="mathcomp.algebra.vector.html#k"><span class="id" title="variable">k</span></a> <a class="idref" href="mathcomp.algebra.vector.html#i"><span class="id" title="variable">i</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#81f8078534dcbb7e13a32d292f766525"><span class="id" title="notation">*:</span></a> <a class="idref" href="mathcomp.algebra.vector.html#X"><span class="id" title="variable">X</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#9625b440a0052f6dbfd015f5bb8b5125"><span class="id" title="notation">`</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#9625b440a0052f6dbfd015f5bb8b5125"><span class="id" title="notation">_i</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> 0 <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">(</span></a><span class="id" title="keyword">∀</span> <span class="id" title="var">i</span>, <a class="idref" href="mathcomp.algebra.vector.html#k"><span class="id" title="variable">k</span></a> <a class="idref" href="mathcomp.algebra.vector.html#i"><span class="id" title="variable">i</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> 0<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">)</span></a>)<br/> + (<a class="idref" href="mathcomp.algebra.vector.html#free"><span class="id" title="definition">free</span></a> <a class="idref" href="mathcomp.algebra.vector.html#X"><span class="id" title="variable">X</span></a>).<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="coord_free"><span class="id" title="lemma">coord_free</span></a> <span class="id" title="var">n</span> (<span class="id" title="var">X</span> : <a class="idref" href="mathcomp.algebra.vector.html#n"><span class="id" title="variable">n</span></a><a class="idref" href="mathcomp.ssreflect.tuple.html#d8866adbd4a602b7b4cc275d73486ace"><span class="id" title="notation">.-</span></a><a class="idref" href="mathcomp.ssreflect.tuple.html#d8866adbd4a602b7b4cc275d73486ace"><span class="id" title="notation">tuple</span></a> <a class="idref" href="mathcomp.algebra.vector.html#VectorTheory.vT"><span class="id" title="variable">vT</span></a>) (<span class="id" title="var">i</span> <span class="id" title="var">j</span> : <a class="idref" href="mathcomp.ssreflect.fintype.html#9de6d53cccc27f521f3ab56b38159140"><span class="id" title="notation">'</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#9de6d53cccc27f521f3ab56b38159140"><span class="id" title="notation">I_n</span></a>) : <br/> + <a class="idref" href="mathcomp.algebra.vector.html#free"><span class="id" title="definition">free</span></a> <a class="idref" href="mathcomp.algebra.vector.html#X"><span class="id" title="variable">X</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.vector.html#coord"><span class="id" title="definition">coord</span></a> <a class="idref" href="mathcomp.algebra.vector.html#X"><span class="id" title="variable">X</span></a> <a class="idref" href="mathcomp.algebra.vector.html#j"><span class="id" title="variable">j</span></a> (<a class="idref" href="mathcomp.algebra.vector.html#X"><span class="id" title="variable">X</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#9625b440a0052f6dbfd015f5bb8b5125"><span class="id" title="notation">`</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#9625b440a0052f6dbfd015f5bb8b5125"><span class="id" title="notation">_i</span></a>) <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#af5c1d7e13410a0a6c3dff5441ac8477"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.vector.html#i"><span class="id" title="variable">i</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#17d28d004d0863cb022d4ce832ddaaae"><span class="id" title="notation">==</span></a> <a class="idref" href="mathcomp.algebra.vector.html#j"><span class="id" title="variable">j</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#af5c1d7e13410a0a6c3dff5441ac8477"><span class="id" title="notation">)%:</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#af5c1d7e13410a0a6c3dff5441ac8477"><span class="id" title="notation">R</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="coord_sum_free"><span class="id" title="lemma">coord_sum_free</span></a> <span class="id" title="var">n</span> (<span class="id" title="var">X</span> : <a class="idref" href="mathcomp.algebra.vector.html#n"><span class="id" title="variable">n</span></a><a class="idref" href="mathcomp.ssreflect.tuple.html#d8866adbd4a602b7b4cc275d73486ace"><span class="id" title="notation">.-</span></a><a class="idref" href="mathcomp.ssreflect.tuple.html#d8866adbd4a602b7b4cc275d73486ace"><span class="id" title="notation">tuple</span></a> <a class="idref" href="mathcomp.algebra.vector.html#VectorTheory.vT"><span class="id" title="variable">vT</span></a>) <span class="id" title="var">k</span> <span class="id" title="var">j</span> : <br/> + <a class="idref" href="mathcomp.algebra.vector.html#free"><span class="id" title="definition">free</span></a> <a class="idref" href="mathcomp.algebra.vector.html#X"><span class="id" title="variable">X</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.vector.html#coord"><span class="id" title="definition">coord</span></a> <a class="idref" href="mathcomp.algebra.vector.html#X"><span class="id" title="variable">X</span></a> <a class="idref" href="mathcomp.algebra.vector.html#j"><span class="id" title="variable">j</span></a> (<a class="idref" href="mathcomp.algebra.ssralg.html#b2bfc5b99c28e2c89b336d5f86347706"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#b2bfc5b99c28e2c89b336d5f86347706"><span class="id" title="notation">sum_</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#b2bfc5b99c28e2c89b336d5f86347706"><span class="id" title="notation">(</span></a><span class="id" title="var">i</span> <a class="idref" href="mathcomp.algebra.ssralg.html#b2bfc5b99c28e2c89b336d5f86347706"><span class="id" title="notation"><</span></a> <a class="idref" href="mathcomp.algebra.vector.html#n"><span class="id" title="variable">n</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#b2bfc5b99c28e2c89b336d5f86347706"><span class="id" title="notation">)</span></a> <a class="idref" href="mathcomp.algebra.vector.html#k"><span class="id" title="variable">k</span></a> <a class="idref" href="mathcomp.algebra.vector.html#i"><span class="id" title="variable">i</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#81f8078534dcbb7e13a32d292f766525"><span class="id" title="notation">*:</span></a> <a class="idref" href="mathcomp.algebra.vector.html#X"><span class="id" title="variable">X</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#9625b440a0052f6dbfd015f5bb8b5125"><span class="id" title="notation">`</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#9625b440a0052f6dbfd015f5bb8b5125"><span class="id" title="notation">_i</span></a>) <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.vector.html#k"><span class="id" title="variable">k</span></a> <a class="idref" href="mathcomp.algebra.vector.html#j"><span class="id" title="variable">j</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="cat_free"><span class="id" title="lemma">cat_free</span></a> <span class="id" title="var">X</span> <span class="id" title="var">Y</span> :<br/> + <a class="idref" href="mathcomp.algebra.vector.html#free"><span class="id" title="definition">free</span></a> (<a class="idref" href="mathcomp.algebra.vector.html#X"><span class="id" title="variable">X</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#2ac9001c05ad5bd2f6d5f68e59f48fbb"><span class="id" title="notation">++</span></a> <a class="idref" href="mathcomp.algebra.vector.html#Y"><span class="id" title="variable">Y</span></a>) <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#2e9317c5f71a1305fb695cdc49716482"><span class="id" title="notation">[&&</span></a> <a class="idref" href="mathcomp.algebra.vector.html#free"><span class="id" title="definition">free</span></a> <a class="idref" href="mathcomp.algebra.vector.html#X"><span class="id" title="variable">X</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#2e9317c5f71a1305fb695cdc49716482"><span class="id" title="notation">,</span></a> <a class="idref" href="mathcomp.algebra.vector.html#free"><span class="id" title="definition">free</span></a> <a class="idref" href="mathcomp.algebra.vector.html#Y"><span class="id" title="variable">Y</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#2e9317c5f71a1305fb695cdc49716482"><span class="id" title="notation">&</span></a> <a class="idref" href="mathcomp.algebra.vector.html#directv"><span class="id" title="abbreviation">directv</span></a> (<a class="idref" href="mathcomp.algebra.vector.html#dd838ef568fa7ae0628a7427a23d7215"><span class="id" title="notation"><<</span></a><a class="idref" href="mathcomp.algebra.vector.html#X"><span class="id" title="variable">X</span></a><a class="idref" href="mathcomp.algebra.vector.html#dd838ef568fa7ae0628a7427a23d7215"><span class="id" title="notation">>></span></a> <a class="idref" href="mathcomp.algebra.vector.html#706deac9766015ea164a28957c46a7b4"><span class="id" title="notation">+</span></a> <a class="idref" href="mathcomp.algebra.vector.html#dd838ef568fa7ae0628a7427a23d7215"><span class="id" title="notation"><<</span></a><a class="idref" href="mathcomp.algebra.vector.html#Y"><span class="id" title="variable">Y</span></a><a class="idref" href="mathcomp.algebra.vector.html#dd838ef568fa7ae0628a7427a23d7215"><span class="id" title="notation">>></span></a>)<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#2e9317c5f71a1305fb695cdc49716482"><span class="id" title="notation">]</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="catl_free"><span class="id" title="lemma">catl_free</span></a> <span class="id" title="var">Y</span> <span class="id" title="var">X</span> : <a class="idref" href="mathcomp.algebra.vector.html#free"><span class="id" title="definition">free</span></a> (<a class="idref" href="mathcomp.algebra.vector.html#X"><span class="id" title="variable">X</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#2ac9001c05ad5bd2f6d5f68e59f48fbb"><span class="id" title="notation">++</span></a> <a class="idref" href="mathcomp.algebra.vector.html#Y"><span class="id" title="variable">Y</span></a>) <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.vector.html#free"><span class="id" title="definition">free</span></a> <a class="idref" href="mathcomp.algebra.vector.html#X"><span class="id" title="variable">X</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="catr_free"><span class="id" title="lemma">catr_free</span></a> <span class="id" title="var">X</span> <span class="id" title="var">Y</span> : <a class="idref" href="mathcomp.algebra.vector.html#free"><span class="id" title="definition">free</span></a> (<a class="idref" href="mathcomp.algebra.vector.html#X"><span class="id" title="variable">X</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#2ac9001c05ad5bd2f6d5f68e59f48fbb"><span class="id" title="notation">++</span></a> <a class="idref" href="mathcomp.algebra.vector.html#Y"><span class="id" title="variable">Y</span></a>) <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.vector.html#free"><span class="id" title="definition">free</span></a> <a class="idref" href="mathcomp.algebra.vector.html#Y"><span class="id" title="variable">Y</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="filter_free"><span class="id" title="lemma">filter_free</span></a> <span class="id" title="var">p</span> <span class="id" title="var">X</span> : <a class="idref" href="mathcomp.algebra.vector.html#free"><span class="id" title="definition">free</span></a> <a class="idref" href="mathcomp.algebra.vector.html#X"><span class="id" title="variable">X</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.vector.html#free"><span class="id" title="definition">free</span></a> (<a class="idref" href="mathcomp.ssreflect.seq.html#filter"><span class="id" title="definition">filter</span></a> <a class="idref" href="mathcomp.algebra.vector.html#p"><span class="id" title="variable">p</span></a> <a class="idref" href="mathcomp.algebra.vector.html#X"><span class="id" title="variable">X</span></a>).<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="free_cons"><span class="id" title="lemma">free_cons</span></a> <span class="id" title="var">v</span> <span class="id" title="var">X</span> : <a class="idref" href="mathcomp.algebra.vector.html#free"><span class="id" title="definition">free</span></a> (<a class="idref" href="mathcomp.algebra.vector.html#v"><span class="id" title="variable">v</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#d7fed0909a58e41c49e3ee117361b0a5"><span class="id" title="notation">::</span></a> <a class="idref" href="mathcomp.algebra.vector.html#X"><span class="id" title="variable">X</span></a>) <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> (<a class="idref" href="mathcomp.algebra.vector.html#v"><span class="id" title="variable">v</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#ad6d23746eb1a3b62e52010d3945a1db"><span class="id" title="notation">\</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#ad6d23746eb1a3b62e52010d3945a1db"><span class="id" title="notation">notin</span></a> <a class="idref" href="mathcomp.algebra.vector.html#dd838ef568fa7ae0628a7427a23d7215"><span class="id" title="notation"><<</span></a><a class="idref" href="mathcomp.algebra.vector.html#X"><span class="id" title="variable">X</span></a><a class="idref" href="mathcomp.algebra.vector.html#dd838ef568fa7ae0628a7427a23d7215"><span class="id" title="notation">>></span></a>)%<span class="id" title="var">VS</span> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#49ac24efa716d8b0ee8943bc1d1769a9"><span class="id" title="notation">&&</span></a> <a class="idref" href="mathcomp.algebra.vector.html#free"><span class="id" title="definition">free</span></a> <a class="idref" href="mathcomp.algebra.vector.html#X"><span class="id" title="variable">X</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="freeE"><span class="id" title="lemma">freeE</span></a> <span class="id" title="var">n</span> (<span class="id" title="var">X</span> : <a class="idref" href="mathcomp.algebra.vector.html#n"><span class="id" title="variable">n</span></a><a class="idref" href="mathcomp.ssreflect.tuple.html#d8866adbd4a602b7b4cc275d73486ace"><span class="id" title="notation">.-</span></a><a class="idref" href="mathcomp.ssreflect.tuple.html#d8866adbd4a602b7b4cc275d73486ace"><span class="id" title="notation">tuple</span></a> <a class="idref" href="mathcomp.algebra.vector.html#VectorTheory.vT"><span class="id" title="variable">vT</span></a>) :<br/> + <a class="idref" href="mathcomp.algebra.vector.html#free"><span class="id" title="definition">free</span></a> <a class="idref" href="mathcomp.algebra.vector.html#X"><span class="id" title="variable">X</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#924e46d1120f21a5b355c376b609abe3"><span class="id" title="notation">[</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#924e46d1120f21a5b355c376b609abe3"><span class="id" title="notation">∀</span></a> <span class="id" title="var">i</span> <a class="idref" href="mathcomp.ssreflect.fintype.html#924e46d1120f21a5b355c376b609abe3"><span class="id" title="notation">:</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#9de6d53cccc27f521f3ab56b38159140"><span class="id" title="notation">'</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#9de6d53cccc27f521f3ab56b38159140"><span class="id" title="notation">I_n</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#46e5a4123d46e6b126f7788a77176785"><span class="id" title="notation">,</span></a> <a class="idref" href="mathcomp.algebra.vector.html#X"><span class="id" title="variable">X</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#9625b440a0052f6dbfd015f5bb8b5125"><span class="id" title="notation">`</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#9625b440a0052f6dbfd015f5bb8b5125"><span class="id" title="notation">_i</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#ad6d23746eb1a3b62e52010d3945a1db"><span class="id" title="notation">\</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#ad6d23746eb1a3b62e52010d3945a1db"><span class="id" title="notation">notin</span></a> <a class="idref" href="mathcomp.algebra.vector.html#dd838ef568fa7ae0628a7427a23d7215"><span class="id" title="notation"><<</span></a><a class="idref" href="mathcomp.ssreflect.seq.html#drop"><span class="id" title="definition">drop</span></a> <a class="idref" href="mathcomp.algebra.vector.html#i"><span class="id" title="variable">i</span></a><a class="idref" href="mathcomp.ssreflect.ssrnat.html#361454269931ea8643f7b402f2ab7222"><span class="id" title="notation">.+1</span></a> <a class="idref" href="mathcomp.algebra.vector.html#X"><span class="id" title="variable">X</span></a><a class="idref" href="mathcomp.algebra.vector.html#dd838ef568fa7ae0628a7427a23d7215"><span class="id" title="notation">>></span></a>%<span class="id" title="var">VS</span><a class="idref" href="mathcomp.ssreflect.fintype.html#924e46d1120f21a5b355c376b609abe3"><span class="id" title="notation">]</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="freeNE"><span class="id" title="lemma">freeNE</span></a> <span class="id" title="var">n</span> (<span class="id" title="var">X</span> : <a class="idref" href="mathcomp.algebra.vector.html#n"><span class="id" title="variable">n</span></a><a class="idref" href="mathcomp.ssreflect.tuple.html#d8866adbd4a602b7b4cc275d73486ace"><span class="id" title="notation">.-</span></a><a class="idref" href="mathcomp.ssreflect.tuple.html#d8866adbd4a602b7b4cc275d73486ace"><span class="id" title="notation">tuple</span></a> <a class="idref" href="mathcomp.algebra.vector.html#VectorTheory.vT"><span class="id" title="variable">vT</span></a>) :<br/> + <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#4b80c70cdb231351c5e129ba61f7f956"><span class="id" title="notation">~~</span></a> <a class="idref" href="mathcomp.algebra.vector.html#free"><span class="id" title="definition">free</span></a> <a class="idref" href="mathcomp.algebra.vector.html#X"><span class="id" title="variable">X</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#a843dcbb9dc2e69b147054d3e1465e78"><span class="id" title="notation">[</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#a843dcbb9dc2e69b147054d3e1465e78"><span class="id" title="notation">∃</span></a> <span class="id" title="var">i</span> <a class="idref" href="mathcomp.ssreflect.fintype.html#a843dcbb9dc2e69b147054d3e1465e78"><span class="id" title="notation">:</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#9de6d53cccc27f521f3ab56b38159140"><span class="id" title="notation">'</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#9de6d53cccc27f521f3ab56b38159140"><span class="id" title="notation">I_n</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#46e5a4123d46e6b126f7788a77176785"><span class="id" title="notation">,</span></a> <a class="idref" href="mathcomp.algebra.vector.html#X"><span class="id" title="variable">X</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#9625b440a0052f6dbfd015f5bb8b5125"><span class="id" title="notation">`</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#9625b440a0052f6dbfd015f5bb8b5125"><span class="id" title="notation">_i</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">\</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">in</span></a> <a class="idref" href="mathcomp.algebra.vector.html#dd838ef568fa7ae0628a7427a23d7215"><span class="id" title="notation"><<</span></a><a class="idref" href="mathcomp.ssreflect.seq.html#drop"><span class="id" title="definition">drop</span></a> <a class="idref" href="mathcomp.algebra.vector.html#i"><span class="id" title="variable">i</span></a><a class="idref" href="mathcomp.ssreflect.ssrnat.html#361454269931ea8643f7b402f2ab7222"><span class="id" title="notation">.+1</span></a> <a class="idref" href="mathcomp.algebra.vector.html#X"><span class="id" title="variable">X</span></a><a class="idref" href="mathcomp.algebra.vector.html#dd838ef568fa7ae0628a7427a23d7215"><span class="id" title="notation">>></span></a>%<span class="id" title="var">VS</span><a class="idref" href="mathcomp.ssreflect.fintype.html#a843dcbb9dc2e69b147054d3e1465e78"><span class="id" title="notation">]</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="free_uniq"><span class="id" title="lemma">free_uniq</span></a> <span class="id" title="var">X</span> : <a class="idref" href="mathcomp.algebra.vector.html#free"><span class="id" title="definition">free</span></a> <a class="idref" href="mathcomp.algebra.vector.html#X"><span class="id" title="variable">X</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#uniq"><span class="id" title="definition">uniq</span></a> <a class="idref" href="mathcomp.algebra.vector.html#X"><span class="id" title="variable">X</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="free_span"><span class="id" title="lemma">free_span</span></a> <span class="id" title="var">X</span> <span class="id" title="var">v</span> (<span class="id" title="var">sumX</span> := <span class="id" title="keyword">fun</span> <span class="id" title="var">k</span> ⇒ <a class="idref" href="mathcomp.algebra.ssralg.html#c9afba1af653123a1dddfe925d2b3ab3"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#c9afba1af653123a1dddfe925d2b3ab3"><span class="id" title="notation">sum_</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#c9afba1af653123a1dddfe925d2b3ab3"><span class="id" title="notation">(</span></a><span class="id" title="var">x</span> <a class="idref" href="mathcomp.algebra.ssralg.html#c9afba1af653123a1dddfe925d2b3ab3"><span class="id" title="notation"><-</span></a> <a class="idref" href="mathcomp.algebra.vector.html#X"><span class="id" title="variable">X</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#c9afba1af653123a1dddfe925d2b3ab3"><span class="id" title="notation">)</span></a> <a class="idref" href="mathcomp.algebra.vector.html#k"><span class="id" title="variable">k</span></a> <a class="idref" href="mathcomp.algebra.vector.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#81f8078534dcbb7e13a32d292f766525"><span class="id" title="notation">*:</span></a> <a class="idref" href="mathcomp.algebra.vector.html#x"><span class="id" title="variable">x</span></a>) :<br/> + <a class="idref" href="mathcomp.algebra.vector.html#free"><span class="id" title="definition">free</span></a> <a class="idref" href="mathcomp.algebra.vector.html#X"><span class="id" title="variable">X</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.vector.html#v"><span class="id" title="variable">v</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">\</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">in</span></a> <a class="idref" href="mathcomp.algebra.vector.html#dd838ef568fa7ae0628a7427a23d7215"><span class="id" title="notation"><<</span></a><a class="idref" href="mathcomp.algebra.vector.html#X"><span class="id" title="variable">X</span></a><a class="idref" href="mathcomp.algebra.vector.html#dd838ef568fa7ae0628a7427a23d7215"><span class="id" title="notation">>></span></a>%<span class="id" title="var">VS</span> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a><br/> + <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Specif.html#f5350ad671d3ce0e1e463e298917cf6e"><span class="id" title="notation">{</span></a><span class="id" title="var">k</span> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Specif.html#f5350ad671d3ce0e1e463e298917cf6e"><span class="id" title="notation">|</span></a> <a class="idref" href="mathcomp.algebra.vector.html#v"><span class="id" title="variable">v</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.vector.html#sumX"><span class="id" title="variable">sumX</span></a> <a class="idref" href="mathcomp.algebra.vector.html#k"><span class="id" title="variable">k</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Specif.html#f5350ad671d3ce0e1e463e298917cf6e"><span class="id" title="notation">&</span></a> <span class="id" title="keyword">∀</span> <span class="id" title="var">k1</span>, <a class="idref" href="mathcomp.algebra.vector.html#v"><span class="id" title="variable">v</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.vector.html#sumX"><span class="id" title="variable">sumX</span></a> <a class="idref" href="mathcomp.algebra.vector.html#k1"><span class="id" title="variable">k1</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#5c59b35a0b51db520cf1fba473ecf127"><span class="id" title="notation">{</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#5c59b35a0b51db520cf1fba473ecf127"><span class="id" title="notation">in</span></a> <a class="idref" href="mathcomp.algebra.vector.html#X"><span class="id" title="variable">X</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#5c59b35a0b51db520cf1fba473ecf127"><span class="id" title="notation">,</span></a> <a class="idref" href="mathcomp.algebra.vector.html#k1"><span class="id" title="variable">k1</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#2500d48ed8e862ccfda98a44dff88963"><span class="id" title="notation">=1</span></a> <a class="idref" href="mathcomp.algebra.vector.html#k"><span class="id" title="variable">k</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#5c59b35a0b51db520cf1fba473ecf127"><span class="id" title="notation">}</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Specif.html#f5350ad671d3ce0e1e463e298917cf6e"><span class="id" title="notation">}</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="linear_of_free"><span class="id" title="lemma">linear_of_free</span></a> (<span class="id" title="var">rT</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.vector.html#VectorTheory.K"><span class="id" title="variable">K</span></a>) <span class="id" title="var">X</span> (<span class="id" title="var">fX</span> : <a class="idref" href="mathcomp.ssreflect.seq.html#seq"><span class="id" title="abbreviation">seq</span></a> <a class="idref" href="mathcomp.algebra.vector.html#rT"><span class="id" title="variable">rT</span></a>) :<br/> + <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Specif.html#72ca3fac4636a1b19c963b12162882cf"><span class="id" title="notation">{</span></a><span class="id" title="var">f</span> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Specif.html#72ca3fac4636a1b19c963b12162882cf"><span class="id" title="notation">:</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#697e59dccfd7ad4519680ddb16ef82da"><span class="id" title="notation">{</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#697e59dccfd7ad4519680ddb16ef82da"><span class="id" title="notation">linear</span></a> <a class="idref" href="mathcomp.algebra.vector.html#VectorTheory.vT"><span class="id" title="variable">vT</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.vector.html#rT"><span class="id" title="variable">rT</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#697e59dccfd7ad4519680ddb16ef82da"><span class="id" title="notation">}</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Specif.html#72ca3fac4636a1b19c963b12162882cf"><span class="id" title="notation">|</span></a> <a class="idref" href="mathcomp.algebra.vector.html#free"><span class="id" title="definition">free</span></a> <a class="idref" href="mathcomp.algebra.vector.html#X"><span class="id" title="variable">X</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#size"><span class="id" title="definition">size</span></a> <a class="idref" href="mathcomp.algebra.vector.html#fX"><span class="id" title="variable">fX</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#size"><span class="id" title="definition">size</span></a> <a class="idref" href="mathcomp.algebra.vector.html#X"><span class="id" title="variable">X</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#map"><span class="id" title="definition">map</span></a> <a class="idref" href="mathcomp.algebra.vector.html#f"><span class="id" title="variable">f</span></a> <a class="idref" href="mathcomp.algebra.vector.html#X"><span class="id" title="variable">X</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.vector.html#fX"><span class="id" title="variable">fX</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Specif.html#72ca3fac4636a1b19c963b12162882cf"><span class="id" title="notation">}</span></a>.<br/> + +<br/> +</div> + +<div class="doc"> + Subspace bases +</div> +<div class="code"> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="span_basis"><span class="id" title="lemma">span_basis</span></a> <span class="id" title="var">U</span> <span class="id" title="var">X</span> : <a class="idref" href="mathcomp.algebra.vector.html#basis_of"><span class="id" title="definition">basis_of</span></a> <a class="idref" href="mathcomp.algebra.vector.html#U"><span class="id" title="variable">U</span></a> <a class="idref" href="mathcomp.algebra.vector.html#X"><span class="id" title="variable">X</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.vector.html#dd838ef568fa7ae0628a7427a23d7215"><span class="id" title="notation"><<</span></a><a class="idref" href="mathcomp.algebra.vector.html#X"><span class="id" title="variable">X</span></a><a class="idref" href="mathcomp.algebra.vector.html#dd838ef568fa7ae0628a7427a23d7215"><span class="id" title="notation">>></span></a>%<span class="id" title="var">VS</span> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.vector.html#U"><span class="id" title="variable">U</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="basis_free"><span class="id" title="lemma">basis_free</span></a> <span class="id" title="var">U</span> <span class="id" title="var">X</span> : <a class="idref" href="mathcomp.algebra.vector.html#basis_of"><span class="id" title="definition">basis_of</span></a> <a class="idref" href="mathcomp.algebra.vector.html#U"><span class="id" title="variable">U</span></a> <a class="idref" href="mathcomp.algebra.vector.html#X"><span class="id" title="variable">X</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.vector.html#free"><span class="id" title="definition">free</span></a> <a class="idref" href="mathcomp.algebra.vector.html#X"><span class="id" title="variable">X</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="coord_basis"><span class="id" title="lemma">coord_basis</span></a> <span class="id" title="var">U</span> <span class="id" title="var">n</span> (<span class="id" title="var">X</span> : <a class="idref" href="mathcomp.algebra.vector.html#n"><span class="id" title="variable">n</span></a><a class="idref" href="mathcomp.ssreflect.tuple.html#d8866adbd4a602b7b4cc275d73486ace"><span class="id" title="notation">.-</span></a><a class="idref" href="mathcomp.ssreflect.tuple.html#d8866adbd4a602b7b4cc275d73486ace"><span class="id" title="notation">tuple</span></a> <a class="idref" href="mathcomp.algebra.vector.html#VectorTheory.vT"><span class="id" title="variable">vT</span></a>) <span class="id" title="var">v</span> :<br/> + <a class="idref" href="mathcomp.algebra.vector.html#basis_of"><span class="id" title="definition">basis_of</span></a> <a class="idref" href="mathcomp.algebra.vector.html#U"><span class="id" title="variable">U</span></a> <a class="idref" href="mathcomp.algebra.vector.html#X"><span class="id" title="variable">X</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.vector.html#v"><span class="id" title="variable">v</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">\</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">in</span></a> <a class="idref" href="mathcomp.algebra.vector.html#U"><span class="id" title="variable">U</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.vector.html#v"><span class="id" title="variable">v</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#640778742e86daa97d31c9911c679af3"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#640778742e86daa97d31c9911c679af3"><span class="id" title="notation">sum_i</span></a> <a class="idref" href="mathcomp.algebra.vector.html#coord"><span class="id" title="definition">coord</span></a> <a class="idref" href="mathcomp.algebra.vector.html#X"><span class="id" title="variable">X</span></a> <a class="idref" href="mathcomp.algebra.vector.html#i"><span class="id" title="variable">i</span></a> <a class="idref" href="mathcomp.algebra.vector.html#v"><span class="id" title="variable">v</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#81f8078534dcbb7e13a32d292f766525"><span class="id" title="notation">*:</span></a> <a class="idref" href="mathcomp.algebra.vector.html#X"><span class="id" title="variable">X</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#9625b440a0052f6dbfd015f5bb8b5125"><span class="id" title="notation">`</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#9625b440a0052f6dbfd015f5bb8b5125"><span class="id" title="notation">_i</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="nil_basis"><span class="id" title="lemma">nil_basis</span></a> : <a class="idref" href="mathcomp.algebra.vector.html#basis_of"><span class="id" title="definition">basis_of</span></a> 0 (<a class="idref" href="mathcomp.ssreflect.seq.html#Nil"><span class="id" title="abbreviation">Nil</span></a> <a class="idref" href="mathcomp.algebra.vector.html#VectorTheory.vT"><span class="id" title="variable">vT</span></a>).<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="seq1_basis"><span class="id" title="lemma">seq1_basis</span></a> <span class="id" title="var">v</span> : <a class="idref" href="mathcomp.algebra.vector.html#v"><span class="id" title="variable">v</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#b1eeadc2feabc7422252baa895418c7b"><span class="id" title="notation">!=</span></a> 0 <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.vector.html#basis_of"><span class="id" title="definition">basis_of</span></a> <a class="idref" href="mathcomp.algebra.vector.html#c7e74c229bedc2f20e80f4f2f96cee78"><span class="id" title="notation"><[</span></a><a class="idref" href="mathcomp.algebra.vector.html#v"><span class="id" title="variable">v</span></a><a class="idref" href="mathcomp.algebra.vector.html#c7e74c229bedc2f20e80f4f2f96cee78"><span class="id" title="notation">]></span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#36229928b54642a4a7da943ccf8f9612"><span class="id" title="notation">[::</span></a> <a class="idref" href="mathcomp.algebra.vector.html#v"><span class="id" title="variable">v</span></a><a class="idref" href="mathcomp.ssreflect.seq.html#36229928b54642a4a7da943ccf8f9612"><span class="id" title="notation">]</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="basis_not0"><span class="id" title="lemma">basis_not0</span></a> <span class="id" title="var">x</span> <span class="id" title="var">U</span> <span class="id" title="var">X</span> : <a class="idref" href="mathcomp.algebra.vector.html#basis_of"><span class="id" title="definition">basis_of</span></a> <a class="idref" href="mathcomp.algebra.vector.html#U"><span class="id" title="variable">U</span></a> <a class="idref" href="mathcomp.algebra.vector.html#X"><span class="id" title="variable">X</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.vector.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">\</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">in</span></a> <a class="idref" href="mathcomp.algebra.vector.html#X"><span class="id" title="variable">X</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.vector.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#b1eeadc2feabc7422252baa895418c7b"><span class="id" title="notation">!=</span></a> 0.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="basis_mem"><span class="id" title="lemma">basis_mem</span></a> <span class="id" title="var">x</span> <span class="id" title="var">U</span> <span class="id" title="var">X</span> : <a class="idref" href="mathcomp.algebra.vector.html#basis_of"><span class="id" title="definition">basis_of</span></a> <a class="idref" href="mathcomp.algebra.vector.html#U"><span class="id" title="variable">U</span></a> <a class="idref" href="mathcomp.algebra.vector.html#X"><span class="id" title="variable">X</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.vector.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">\</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">in</span></a> <a class="idref" href="mathcomp.algebra.vector.html#X"><span class="id" title="variable">X</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.vector.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">\</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">in</span></a> <a class="idref" href="mathcomp.algebra.vector.html#U"><span class="id" title="variable">U</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="cat_basis"><span class="id" title="lemma">cat_basis</span></a> <span class="id" title="var">U</span> <span class="id" title="var">V</span> <span class="id" title="var">X</span> <span class="id" title="var">Y</span> : <br/> + <a class="idref" href="mathcomp.algebra.vector.html#directv"><span class="id" title="abbreviation">directv</span></a> (<a class="idref" href="mathcomp.algebra.vector.html#U"><span class="id" title="variable">U</span></a> <a class="idref" href="mathcomp.algebra.vector.html#706deac9766015ea164a28957c46a7b4"><span class="id" title="notation">+</span></a> <a class="idref" href="mathcomp.algebra.vector.html#V"><span class="id" title="variable">V</span></a>) <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.vector.html#basis_of"><span class="id" title="definition">basis_of</span></a> <a class="idref" href="mathcomp.algebra.vector.html#U"><span class="id" title="variable">U</span></a> <a class="idref" href="mathcomp.algebra.vector.html#X"><span class="id" title="variable">X</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.vector.html#basis_of"><span class="id" title="definition">basis_of</span></a> <a class="idref" href="mathcomp.algebra.vector.html#V"><span class="id" title="variable">V</span></a> <a class="idref" href="mathcomp.algebra.vector.html#Y"><span class="id" title="variable">Y</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.vector.html#basis_of"><span class="id" title="definition">basis_of</span></a> (<a class="idref" href="mathcomp.algebra.vector.html#U"><span class="id" title="variable">U</span></a> <a class="idref" href="mathcomp.algebra.vector.html#706deac9766015ea164a28957c46a7b4"><span class="id" title="notation">+</span></a> <a class="idref" href="mathcomp.algebra.vector.html#V"><span class="id" title="variable">V</span></a>) (<a class="idref" href="mathcomp.algebra.vector.html#X"><span class="id" title="variable">X</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#2ac9001c05ad5bd2f6d5f68e59f48fbb"><span class="id" title="notation">++</span></a> <a class="idref" href="mathcomp.algebra.vector.html#Y"><span class="id" title="variable">Y</span></a>).<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="size_basis"><span class="id" title="lemma">size_basis</span></a> <span class="id" title="var">U</span> <span class="id" title="var">n</span> (<span class="id" title="var">X</span> : <a class="idref" href="mathcomp.algebra.vector.html#n"><span class="id" title="variable">n</span></a><a class="idref" href="mathcomp.ssreflect.tuple.html#d8866adbd4a602b7b4cc275d73486ace"><span class="id" title="notation">.-</span></a><a class="idref" href="mathcomp.ssreflect.tuple.html#d8866adbd4a602b7b4cc275d73486ace"><span class="id" title="notation">tuple</span></a> <a class="idref" href="mathcomp.algebra.vector.html#VectorTheory.vT"><span class="id" title="variable">vT</span></a>) : <a class="idref" href="mathcomp.algebra.vector.html#basis_of"><span class="id" title="definition">basis_of</span></a> <a class="idref" href="mathcomp.algebra.vector.html#U"><span class="id" title="variable">U</span></a> <a class="idref" href="mathcomp.algebra.vector.html#X"><span class="id" title="variable">X</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.vector.html#ee35a6780ccd60155a3be89dcb5fdb30"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.algebra.vector.html#ee35a6780ccd60155a3be89dcb5fdb30"><span class="id" title="notation">dim</span></a> <a class="idref" href="mathcomp.algebra.vector.html#U"><span class="id" title="variable">U</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.vector.html#n"><span class="id" title="variable">n</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="basisEdim"><span class="id" title="lemma">basisEdim</span></a> <span class="id" title="var">X</span> <span class="id" title="var">U</span> : <a class="idref" href="mathcomp.algebra.vector.html#basis_of"><span class="id" title="definition">basis_of</span></a> <a class="idref" href="mathcomp.algebra.vector.html#U"><span class="id" title="variable">U</span></a> <a class="idref" href="mathcomp.algebra.vector.html#X"><span class="id" title="variable">X</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> (<a class="idref" href="mathcomp.algebra.vector.html#U"><span class="id" title="variable">U</span></a> <a class="idref" href="mathcomp.algebra.vector.html#755d11a7d5629bce3486e7cbadc915e7"><span class="id" title="notation">≤</span></a> <a class="idref" href="mathcomp.algebra.vector.html#dd838ef568fa7ae0628a7427a23d7215"><span class="id" title="notation"><<</span></a><a class="idref" href="mathcomp.algebra.vector.html#X"><span class="id" title="variable">X</span></a><a class="idref" href="mathcomp.algebra.vector.html#dd838ef568fa7ae0628a7427a23d7215"><span class="id" title="notation">>></span></a>)%<span class="id" title="var">VS</span> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#49ac24efa716d8b0ee8943bc1d1769a9"><span class="id" title="notation">&&</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#49ac24efa716d8b0ee8943bc1d1769a9"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.ssreflect.seq.html#size"><span class="id" title="definition">size</span></a> <a class="idref" href="mathcomp.algebra.vector.html#X"><span class="id" title="variable">X</span></a> <a class="idref" href="mathcomp.ssreflect.ssrnat.html#9b077c369e19739ef880736ba34623ff"><span class="id" title="notation">≤</span></a> <a class="idref" href="mathcomp.algebra.vector.html#ee35a6780ccd60155a3be89dcb5fdb30"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.algebra.vector.html#ee35a6780ccd60155a3be89dcb5fdb30"><span class="id" title="notation">dim</span></a> <a class="idref" href="mathcomp.algebra.vector.html#U"><span class="id" title="variable">U</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#49ac24efa716d8b0ee8943bc1d1769a9"><span class="id" title="notation">)</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="basisEfree"><span class="id" title="lemma">basisEfree</span></a> <span class="id" title="var">X</span> <span class="id" title="var">U</span> :<br/> + <a class="idref" href="mathcomp.algebra.vector.html#basis_of"><span class="id" title="definition">basis_of</span></a> <a class="idref" href="mathcomp.algebra.vector.html#U"><span class="id" title="variable">U</span></a> <a class="idref" href="mathcomp.algebra.vector.html#X"><span class="id" title="variable">X</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#2e9317c5f71a1305fb695cdc49716482"><span class="id" title="notation">[&&</span></a> <a class="idref" href="mathcomp.algebra.vector.html#free"><span class="id" title="definition">free</span></a> <a class="idref" href="mathcomp.algebra.vector.html#X"><span class="id" title="variable">X</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#2e9317c5f71a1305fb695cdc49716482"><span class="id" title="notation">,</span></a> (<a class="idref" href="mathcomp.algebra.vector.html#dd838ef568fa7ae0628a7427a23d7215"><span class="id" title="notation"><<</span></a><a class="idref" href="mathcomp.algebra.vector.html#X"><span class="id" title="variable">X</span></a><a class="idref" href="mathcomp.algebra.vector.html#dd838ef568fa7ae0628a7427a23d7215"><span class="id" title="notation">>></span></a> <a class="idref" href="mathcomp.algebra.vector.html#755d11a7d5629bce3486e7cbadc915e7"><span class="id" title="notation">≤</span></a> <a class="idref" href="mathcomp.algebra.vector.html#U"><span class="id" title="variable">U</span></a>)%<span class="id" title="var">VS</span> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#2e9317c5f71a1305fb695cdc49716482"><span class="id" title="notation">&</span></a> <a class="idref" href="mathcomp.algebra.vector.html#ee35a6780ccd60155a3be89dcb5fdb30"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.algebra.vector.html#ee35a6780ccd60155a3be89dcb5fdb30"><span class="id" title="notation">dim</span></a> <a class="idref" href="mathcomp.algebra.vector.html#U"><span class="id" title="variable">U</span></a> <a class="idref" href="mathcomp.ssreflect.ssrnat.html#9b077c369e19739ef880736ba34623ff"><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.vector.html#X"><span class="id" title="variable">X</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#2e9317c5f71a1305fb695cdc49716482"><span class="id" title="notation">]</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="perm_basis"><span class="id" title="lemma">perm_basis</span></a> <span class="id" title="var">X</span> <span class="id" title="var">Y</span> <span class="id" title="var">U</span> : <a class="idref" href="mathcomp.ssreflect.seq.html#perm_eq"><span class="id" title="definition">perm_eq</span></a> <a class="idref" href="mathcomp.algebra.vector.html#X"><span class="id" title="variable">X</span></a> <a class="idref" href="mathcomp.algebra.vector.html#Y"><span class="id" title="variable">Y</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.vector.html#basis_of"><span class="id" title="definition">basis_of</span></a> <a class="idref" href="mathcomp.algebra.vector.html#U"><span class="id" title="variable">U</span></a> <a class="idref" href="mathcomp.algebra.vector.html#X"><span class="id" title="variable">X</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.vector.html#basis_of"><span class="id" title="definition">basis_of</span></a> <a class="idref" href="mathcomp.algebra.vector.html#U"><span class="id" title="variable">U</span></a> <a class="idref" href="mathcomp.algebra.vector.html#Y"><span class="id" title="variable">Y</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="vbasisP"><span class="id" title="lemma">vbasisP</span></a> <span class="id" title="var">U</span> : <a class="idref" href="mathcomp.algebra.vector.html#basis_of"><span class="id" title="definition">basis_of</span></a> <a class="idref" href="mathcomp.algebra.vector.html#U"><span class="id" title="variable">U</span></a> (<a class="idref" href="mathcomp.algebra.vector.html#vbasis"><span class="id" title="definition">vbasis</span></a> <a class="idref" href="mathcomp.algebra.vector.html#U"><span class="id" title="variable">U</span></a>).<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="vbasis_mem"><span class="id" title="lemma">vbasis_mem</span></a> <span class="id" title="var">v</span> <span class="id" title="var">U</span> : <a class="idref" href="mathcomp.algebra.vector.html#v"><span class="id" title="variable">v</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">\</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">in</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.vector.html#vbasis"><span class="id" title="definition">vbasis</span></a> <a class="idref" href="mathcomp.algebra.vector.html#U"><span class="id" title="variable">U</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">)</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.vector.html#v"><span class="id" title="variable">v</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">\</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">in</span></a> <a class="idref" href="mathcomp.algebra.vector.html#U"><span class="id" title="variable">U</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="coord_vbasis"><span class="id" title="lemma">coord_vbasis</span></a> <span class="id" title="var">v</span> <span class="id" title="var">U</span> :<br/> + <a class="idref" href="mathcomp.algebra.vector.html#v"><span class="id" title="variable">v</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">\</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">in</span></a> <a class="idref" href="mathcomp.algebra.vector.html#U"><span class="id" title="variable">U</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.vector.html#v"><span class="id" title="variable">v</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#b2bfc5b99c28e2c89b336d5f86347706"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#b2bfc5b99c28e2c89b336d5f86347706"><span class="id" title="notation">sum_</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#b2bfc5b99c28e2c89b336d5f86347706"><span class="id" title="notation">(</span></a><span class="id" title="var">i</span> <a class="idref" href="mathcomp.algebra.ssralg.html#b2bfc5b99c28e2c89b336d5f86347706"><span class="id" title="notation"><</span></a> <a class="idref" href="mathcomp.algebra.vector.html#ee35a6780ccd60155a3be89dcb5fdb30"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.algebra.vector.html#ee35a6780ccd60155a3be89dcb5fdb30"><span class="id" title="notation">dim</span></a> <a class="idref" href="mathcomp.algebra.vector.html#U"><span class="id" title="variable">U</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#b2bfc5b99c28e2c89b336d5f86347706"><span class="id" title="notation">)</span></a> <a class="idref" href="mathcomp.algebra.vector.html#coord"><span class="id" title="definition">coord</span></a> (<a class="idref" href="mathcomp.algebra.vector.html#vbasis"><span class="id" title="definition">vbasis</span></a> <a class="idref" href="mathcomp.algebra.vector.html#U"><span class="id" title="variable">U</span></a>) <a class="idref" href="mathcomp.algebra.vector.html#i"><span class="id" title="variable">i</span></a> <a class="idref" href="mathcomp.algebra.vector.html#v"><span class="id" title="variable">v</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#81f8078534dcbb7e13a32d292f766525"><span class="id" title="notation">*:</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#9625b440a0052f6dbfd015f5bb8b5125"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.vector.html#vbasis"><span class="id" title="definition">vbasis</span></a> <a class="idref" href="mathcomp.algebra.vector.html#U"><span class="id" title="variable">U</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#9625b440a0052f6dbfd015f5bb8b5125"><span class="id" title="notation">)`</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#9625b440a0052f6dbfd015f5bb8b5125"><span class="id" title="notation">_i</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Section</span> <a name="VectorTheory.BigSumBasis"><span class="id" title="section">BigSumBasis</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Variables</span> (<a name="VectorTheory.BigSumBasis.I"><span class="id" title="variable">I</span></a> : <a class="idref" href="mathcomp.ssreflect.fintype.html#Finite.Exports.finType"><span class="id" title="abbreviation">finType</span></a>) (<a name="VectorTheory.BigSumBasis.P"><span class="id" title="variable">P</span></a> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#pred"><span class="id" title="definition">pred</span></a> <a class="idref" href="mathcomp.algebra.vector.html#I"><span class="id" title="variable">I</span></a>) (<a name="VectorTheory.BigSumBasis.Xs"><span class="id" title="variable">Xs</span></a> : <a class="idref" href="mathcomp.algebra.vector.html#I"><span class="id" title="variable">I</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.ssreflect.seq.html#seq"><span class="id" title="abbreviation">seq</span></a> <a class="idref" href="mathcomp.algebra.vector.html#VectorTheory.vT"><span class="id" title="variable">vT</span></a>).<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="span_bigcat"><span class="id" title="lemma">span_bigcat</span></a> :<br/> + (<a class="idref" href="mathcomp.algebra.vector.html#dd838ef568fa7ae0628a7427a23d7215"><span class="id" title="notation"><<</span></a><a class="idref" href="mathcomp.ssreflect.bigop.html#8850ee6edf9a388b1213678f3d3ee856"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.ssreflect.bigop.html#8850ee6edf9a388b1213678f3d3ee856"><span class="id" title="notation">big</span></a><a class="idref" href="mathcomp.ssreflect.bigop.html#8850ee6edf9a388b1213678f3d3ee856"><span class="id" title="notation">[</span></a><a class="idref" href="mathcomp.ssreflect.seq.html#cat"><span class="id" title="definition">cat</span></a><a class="idref" href="mathcomp.ssreflect.bigop.html#8850ee6edf9a388b1213678f3d3ee856"><span class="id" title="notation">/</span></a><a class="idref" href="mathcomp.ssreflect.seq.html#747e2b5d553b2dfe76e024e1f8fb39d1"><span class="id" title="notation">[::]</span></a><a class="idref" href="mathcomp.ssreflect.bigop.html#8850ee6edf9a388b1213678f3d3ee856"><span class="id" title="notation">]</span></a><a class="idref" href="mathcomp.ssreflect.bigop.html#8850ee6edf9a388b1213678f3d3ee856"><span class="id" title="notation">_</span></a><a class="idref" href="mathcomp.ssreflect.bigop.html#8850ee6edf9a388b1213678f3d3ee856"><span class="id" title="notation">(</span></a><span class="id" title="var">i</span> <a class="idref" href="mathcomp.ssreflect.bigop.html#8850ee6edf9a388b1213678f3d3ee856"><span class="id" title="notation">|</span></a> <a class="idref" href="mathcomp.algebra.vector.html#VectorTheory.BigSumBasis.P"><span class="id" title="variable">P</span></a> <a class="idref" href="mathcomp.algebra.vector.html#i"><span class="id" title="variable">i</span></a><a class="idref" href="mathcomp.ssreflect.bigop.html#8850ee6edf9a388b1213678f3d3ee856"><span class="id" title="notation">)</span></a> <a class="idref" href="mathcomp.algebra.vector.html#VectorTheory.BigSumBasis.Xs"><span class="id" title="variable">Xs</span></a> <a class="idref" href="mathcomp.algebra.vector.html#i"><span class="id" title="variable">i</span></a><a class="idref" href="mathcomp.algebra.vector.html#dd838ef568fa7ae0628a7427a23d7215"><span class="id" title="notation">>></span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.vector.html#d977f5115f4427a1c821b49789732de6"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.algebra.vector.html#d977f5115f4427a1c821b49789732de6"><span class="id" title="notation">sum_</span></a><a class="idref" href="mathcomp.algebra.vector.html#d977f5115f4427a1c821b49789732de6"><span class="id" title="notation">(</span></a><span class="id" title="var">i</span> <a class="idref" href="mathcomp.algebra.vector.html#d977f5115f4427a1c821b49789732de6"><span class="id" title="notation">|</span></a> <a class="idref" href="mathcomp.algebra.vector.html#VectorTheory.BigSumBasis.P"><span class="id" title="variable">P</span></a> <a class="idref" href="mathcomp.algebra.vector.html#i"><span class="id" title="variable">i</span></a><a class="idref" href="mathcomp.algebra.vector.html#d977f5115f4427a1c821b49789732de6"><span class="id" title="notation">)</span></a> <a class="idref" href="mathcomp.algebra.vector.html#dd838ef568fa7ae0628a7427a23d7215"><span class="id" title="notation"><<</span></a><a class="idref" href="mathcomp.algebra.vector.html#VectorTheory.BigSumBasis.Xs"><span class="id" title="variable">Xs</span></a> <a class="idref" href="mathcomp.algebra.vector.html#i"><span class="id" title="variable">i</span></a><a class="idref" href="mathcomp.algebra.vector.html#dd838ef568fa7ae0628a7427a23d7215"><span class="id" title="notation">>></span></a>)%<span class="id" title="var">VS</span>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="bigcat_free"><span class="id" title="lemma">bigcat_free</span></a> :<br/> + <a class="idref" href="mathcomp.algebra.vector.html#directv"><span class="id" title="abbreviation">directv</span></a> (<a class="idref" href="mathcomp.algebra.vector.html#d977f5115f4427a1c821b49789732de6"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.algebra.vector.html#d977f5115f4427a1c821b49789732de6"><span class="id" title="notation">sum_</span></a><a class="idref" href="mathcomp.algebra.vector.html#d977f5115f4427a1c821b49789732de6"><span class="id" title="notation">(</span></a><span class="id" title="var">i</span> <a class="idref" href="mathcomp.algebra.vector.html#d977f5115f4427a1c821b49789732de6"><span class="id" title="notation">|</span></a> <a class="idref" href="mathcomp.algebra.vector.html#VectorTheory.BigSumBasis.P"><span class="id" title="variable">P</span></a> <a class="idref" href="mathcomp.algebra.vector.html#i"><span class="id" title="variable">i</span></a><a class="idref" href="mathcomp.algebra.vector.html#d977f5115f4427a1c821b49789732de6"><span class="id" title="notation">)</span></a> <a class="idref" href="mathcomp.algebra.vector.html#dd838ef568fa7ae0628a7427a23d7215"><span class="id" title="notation"><<</span></a><a class="idref" href="mathcomp.algebra.vector.html#VectorTheory.BigSumBasis.Xs"><span class="id" title="variable">Xs</span></a> <a class="idref" href="mathcomp.algebra.vector.html#i"><span class="id" title="variable">i</span></a><a class="idref" href="mathcomp.algebra.vector.html#dd838ef568fa7ae0628a7427a23d7215"><span class="id" title="notation">>></span></a>) <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <br/> + <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">(</span></a><span class="id" title="keyword">∀</span> <span class="id" title="var">i</span>, <a class="idref" href="mathcomp.algebra.vector.html#VectorTheory.BigSumBasis.P"><span class="id" title="variable">P</span></a> <a class="idref" href="mathcomp.algebra.vector.html#i"><span class="id" title="variable">i</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.vector.html#free"><span class="id" title="definition">free</span></a> (<a class="idref" href="mathcomp.algebra.vector.html#VectorTheory.BigSumBasis.Xs"><span class="id" title="variable">Xs</span></a> <a class="idref" href="mathcomp.algebra.vector.html#i"><span class="id" title="variable">i</span></a>)<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">)</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.vector.html#free"><span class="id" title="definition">free</span></a> (<a class="idref" href="mathcomp.ssreflect.bigop.html#8850ee6edf9a388b1213678f3d3ee856"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.ssreflect.bigop.html#8850ee6edf9a388b1213678f3d3ee856"><span class="id" title="notation">big</span></a><a class="idref" href="mathcomp.ssreflect.bigop.html#8850ee6edf9a388b1213678f3d3ee856"><span class="id" title="notation">[</span></a><a class="idref" href="mathcomp.ssreflect.seq.html#cat"><span class="id" title="definition">cat</span></a><a class="idref" href="mathcomp.ssreflect.bigop.html#8850ee6edf9a388b1213678f3d3ee856"><span class="id" title="notation">/</span></a><a class="idref" href="mathcomp.ssreflect.seq.html#747e2b5d553b2dfe76e024e1f8fb39d1"><span class="id" title="notation">[::]</span></a><a class="idref" href="mathcomp.ssreflect.bigop.html#8850ee6edf9a388b1213678f3d3ee856"><span class="id" title="notation">]</span></a><a class="idref" href="mathcomp.ssreflect.bigop.html#8850ee6edf9a388b1213678f3d3ee856"><span class="id" title="notation">_</span></a><a class="idref" href="mathcomp.ssreflect.bigop.html#8850ee6edf9a388b1213678f3d3ee856"><span class="id" title="notation">(</span></a><span class="id" title="var">i</span> <a class="idref" href="mathcomp.ssreflect.bigop.html#8850ee6edf9a388b1213678f3d3ee856"><span class="id" title="notation">|</span></a> <a class="idref" href="mathcomp.algebra.vector.html#VectorTheory.BigSumBasis.P"><span class="id" title="variable">P</span></a> <a class="idref" href="mathcomp.algebra.vector.html#i"><span class="id" title="variable">i</span></a><a class="idref" href="mathcomp.ssreflect.bigop.html#8850ee6edf9a388b1213678f3d3ee856"><span class="id" title="notation">)</span></a> <a class="idref" href="mathcomp.algebra.vector.html#VectorTheory.BigSumBasis.Xs"><span class="id" title="variable">Xs</span></a> <a class="idref" href="mathcomp.algebra.vector.html#i"><span class="id" title="variable">i</span></a>).<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="bigcat_basis"><span class="id" title="lemma">bigcat_basis</span></a> <span class="id" title="var">Us</span> (<span class="id" title="var">U</span> := (<a class="idref" href="mathcomp.algebra.vector.html#d977f5115f4427a1c821b49789732de6"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.algebra.vector.html#d977f5115f4427a1c821b49789732de6"><span class="id" title="notation">sum_</span></a><a class="idref" href="mathcomp.algebra.vector.html#d977f5115f4427a1c821b49789732de6"><span class="id" title="notation">(</span></a><span class="id" title="var">i</span> <a class="idref" href="mathcomp.algebra.vector.html#d977f5115f4427a1c821b49789732de6"><span class="id" title="notation">|</span></a> <a class="idref" href="mathcomp.algebra.vector.html#VectorTheory.BigSumBasis.P"><span class="id" title="variable">P</span></a> <a class="idref" href="mathcomp.algebra.vector.html#i"><span class="id" title="variable">i</span></a><a class="idref" href="mathcomp.algebra.vector.html#d977f5115f4427a1c821b49789732de6"><span class="id" title="notation">)</span></a> <a class="idref" href="mathcomp.algebra.vector.html#Us"><span class="id" title="variable">Us</span></a> <a class="idref" href="mathcomp.algebra.vector.html#i"><span class="id" title="variable">i</span></a>)%<span class="id" title="var">VS</span>) :<br/> + <a class="idref" href="mathcomp.algebra.vector.html#directv"><span class="id" title="abbreviation">directv</span></a> <a class="idref" href="mathcomp.algebra.vector.html#U"><span class="id" title="variable">U</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">(</span></a><span class="id" title="keyword">∀</span> <span class="id" title="var">i</span>, <a class="idref" href="mathcomp.algebra.vector.html#VectorTheory.BigSumBasis.P"><span class="id" title="variable">P</span></a> <a class="idref" href="mathcomp.algebra.vector.html#i"><span class="id" title="variable">i</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.vector.html#basis_of"><span class="id" title="definition">basis_of</span></a> (<a class="idref" href="mathcomp.algebra.vector.html#Us"><span class="id" title="variable">Us</span></a> <a class="idref" href="mathcomp.algebra.vector.html#i"><span class="id" title="variable">i</span></a>) (<a class="idref" href="mathcomp.algebra.vector.html#VectorTheory.BigSumBasis.Xs"><span class="id" title="variable">Xs</span></a> <a class="idref" href="mathcomp.algebra.vector.html#i"><span class="id" title="variable">i</span></a>)<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">)</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <br/> + <a class="idref" href="mathcomp.algebra.vector.html#basis_of"><span class="id" title="definition">basis_of</span></a> <a class="idref" href="mathcomp.algebra.vector.html#U"><span class="id" title="variable">U</span></a> (<a class="idref" href="mathcomp.ssreflect.bigop.html#8850ee6edf9a388b1213678f3d3ee856"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.ssreflect.bigop.html#8850ee6edf9a388b1213678f3d3ee856"><span class="id" title="notation">big</span></a><a class="idref" href="mathcomp.ssreflect.bigop.html#8850ee6edf9a388b1213678f3d3ee856"><span class="id" title="notation">[</span></a><a class="idref" href="mathcomp.ssreflect.seq.html#cat"><span class="id" title="definition">cat</span></a><a class="idref" href="mathcomp.ssreflect.bigop.html#8850ee6edf9a388b1213678f3d3ee856"><span class="id" title="notation">/</span></a><a class="idref" href="mathcomp.ssreflect.seq.html#747e2b5d553b2dfe76e024e1f8fb39d1"><span class="id" title="notation">[::]</span></a><a class="idref" href="mathcomp.ssreflect.bigop.html#8850ee6edf9a388b1213678f3d3ee856"><span class="id" title="notation">]</span></a><a class="idref" href="mathcomp.ssreflect.bigop.html#8850ee6edf9a388b1213678f3d3ee856"><span class="id" title="notation">_</span></a><a class="idref" href="mathcomp.ssreflect.bigop.html#8850ee6edf9a388b1213678f3d3ee856"><span class="id" title="notation">(</span></a><span class="id" title="var">i</span> <a class="idref" href="mathcomp.ssreflect.bigop.html#8850ee6edf9a388b1213678f3d3ee856"><span class="id" title="notation">|</span></a> <a class="idref" href="mathcomp.algebra.vector.html#VectorTheory.BigSumBasis.P"><span class="id" title="variable">P</span></a> <a class="idref" href="mathcomp.algebra.vector.html#i"><span class="id" title="variable">i</span></a><a class="idref" href="mathcomp.ssreflect.bigop.html#8850ee6edf9a388b1213678f3d3ee856"><span class="id" title="notation">)</span></a> <a class="idref" href="mathcomp.algebra.vector.html#VectorTheory.BigSumBasis.Xs"><span class="id" title="variable">Xs</span></a> <a class="idref" href="mathcomp.algebra.vector.html#i"><span class="id" title="variable">i</span></a>).<br/> + +<br/> +<span class="id" title="keyword">End</span> <a class="idref" href="mathcomp.algebra.vector.html#VectorTheory.BigSumBasis"><span class="id" title="section">BigSumBasis</span></a>.<br/> + +<br/> +<span class="id" title="keyword">End</span> <a class="idref" href="mathcomp.algebra.vector.html#VectorTheory"><span class="id" title="section">VectorTheory</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Hint Resolve</span> <span class="id" title="var">subvv</span>.<br/> + +<br/> +<span class="id" title="keyword">Notation</span> <a name="directv"><span class="id" title="abbreviation">directv</span></a> <span class="id" title="var">S</span> := (<a class="idref" href="mathcomp.algebra.vector.html#directv_def"><span class="id" title="definition">directv_def</span></a> (<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssreflect.html#Phantom"><span class="id" title="constructor">Phantom</span></a> <span class="id" title="var">_</span> <span class="id" title="var">S</span>%<span class="id" title="var">VS</span>)).<br/> + +<br/> +</div> + +<div class="doc"> + Linear functions over a vectType +</div> +<div class="code"> +<span class="id" title="keyword">Section</span> <a name="LfunDefs"><span class="id" title="section">LfunDefs</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Variable</span> <a name="LfunDefs.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">aT</span> <span class="id" title="var">vT</span> <span class="id" title="var">rT</span> : <a class="idref" href="mathcomp.algebra.vector.html#vectType"><span class="id" title="abbreviation">vectType</span></a> <a class="idref" href="mathcomp.algebra.vector.html#LfunDefs.R"><span class="id" title="variable">R</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Fact</span> <a name="lfun_key"><span class="id" title="lemma">lfun_key</span></a> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#unit"><span class="id" title="inductive">unit</span></a>. <br/> +<span class="id" title="keyword">Definition</span> <a name="fun_of_lfun_def"><span class="id" title="definition">fun_of_lfun_def</span></a> <span class="id" title="var">aT</span> <span class="id" title="var">rT</span> (<span class="id" title="var">f</span> : <a class="idref" href="mathcomp.algebra.vector.html#83f0032a38b59483260ed68e0d6a1c56"><span class="id" title="notation">'</span></a><a class="idref" href="mathcomp.algebra.vector.html#83f0032a38b59483260ed68e0d6a1c56"><span class="id" title="notation">Hom</span></a><a class="idref" href="mathcomp.algebra.vector.html#83f0032a38b59483260ed68e0d6a1c56"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.vector.html#aT"><span class="id" title="variable">aT</span></a><a class="idref" href="mathcomp.algebra.vector.html#83f0032a38b59483260ed68e0d6a1c56"><span class="id" title="notation">,</span></a> <a class="idref" href="mathcomp.algebra.vector.html#rT"><span class="id" title="variable">rT</span></a><a class="idref" href="mathcomp.algebra.vector.html#83f0032a38b59483260ed68e0d6a1c56"><span class="id" title="notation">)</span></a>) :=<br/> + <a class="idref" href="mathcomp.algebra.vector.html#r2v"><span class="id" title="definition">r2v</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#1b4394c5c1740ef3dc9e4224084970bb"><span class="id" title="notation">\</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#1b4394c5c1740ef3dc9e4224084970bb"><span class="id" title="notation">o</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#mulmxr"><span class="id" title="abbreviation">mulmxr</span></a> (<a class="idref" href="mathcomp.algebra.vector.html#f2mx"><span class="id" title="definition">f2mx</span></a> <a class="idref" href="mathcomp.algebra.vector.html#f"><span class="id" title="variable">f</span></a>) <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#1b4394c5c1740ef3dc9e4224084970bb"><span class="id" title="notation">\</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#1b4394c5c1740ef3dc9e4224084970bb"><span class="id" title="notation">o</span></a> <a class="idref" href="mathcomp.algebra.vector.html#v2r"><span class="id" title="definition">v2r</span></a>.<br/> +<span class="id" title="keyword">Definition</span> <a name="fun_of_lfun"><span class="id" title="definition">fun_of_lfun</span></a> := <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssreflect.html#locked_with"><span class="id" title="definition">locked_with</span></a> <a class="idref" href="mathcomp.algebra.vector.html#lfun_key"><span class="id" title="lemma">lfun_key</span></a> <a class="idref" href="mathcomp.algebra.vector.html#fun_of_lfun_def"><span class="id" title="definition">fun_of_lfun_def</span></a>.<br/> +<span class="id" title="keyword">Canonical</span> <span class="id" title="var">fun_of_lfun_unlockable</span> := <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssreflect.html#58f94351327943cd874eb55da8e0ca14"><span class="id" title="notation">[</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssreflect.html#58f94351327943cd874eb55da8e0ca14"><span class="id" title="notation">unlockable</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssreflect.html#58f94351327943cd874eb55da8e0ca14"><span class="id" title="notation">fun</span></a> <a class="idref" href="mathcomp.algebra.vector.html#fun_of_lfun"><span class="id" title="definition">fun_of_lfun</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssreflect.html#58f94351327943cd874eb55da8e0ca14"><span class="id" title="notation">]</span></a>.<br/> +<span class="id" title="keyword">Definition</span> <a name="linfun_def"><span class="id" title="definition">linfun_def</span></a> <span class="id" title="var">aT</span> <span class="id" title="var">rT</span> (<span class="id" title="var">f</span> : <a class="idref" href="mathcomp.algebra.vector.html#aT"><span class="id" title="variable">aT</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.vector.html#rT"><span class="id" title="variable">rT</span></a>) :=<br/> + <a class="idref" href="mathcomp.algebra.vector.html#Hom"><span class="id" title="constructor">Vector.Hom</span></a> (<a class="idref" href="mathcomp.algebra.matrix.html#lin1_mx"><span class="id" title="definition">lin1_mx</span></a> (<a class="idref" href="mathcomp.algebra.vector.html#v2r"><span class="id" title="definition">v2r</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#1b4394c5c1740ef3dc9e4224084970bb"><span class="id" title="notation">\</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#1b4394c5c1740ef3dc9e4224084970bb"><span class="id" title="notation">o</span></a> <a class="idref" href="mathcomp.algebra.vector.html#f"><span class="id" title="variable">f</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#1b4394c5c1740ef3dc9e4224084970bb"><span class="id" title="notation">\</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#1b4394c5c1740ef3dc9e4224084970bb"><span class="id" title="notation">o</span></a> <a class="idref" href="mathcomp.algebra.vector.html#r2v"><span class="id" title="definition">r2v</span></a>)).<br/> +<span class="id" title="keyword">Definition</span> <a name="linfun"><span class="id" title="definition">linfun</span></a> := <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssreflect.html#locked_with"><span class="id" title="definition">locked_with</span></a> <a class="idref" href="mathcomp.algebra.vector.html#lfun_key"><span class="id" title="lemma">lfun_key</span></a> <a class="idref" href="mathcomp.algebra.vector.html#linfun_def"><span class="id" title="definition">linfun_def</span></a>.<br/> +<span class="id" title="keyword">Canonical</span> <span class="id" title="var">linfun_unlockable</span> := <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssreflect.html#58f94351327943cd874eb55da8e0ca14"><span class="id" title="notation">[</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssreflect.html#58f94351327943cd874eb55da8e0ca14"><span class="id" title="notation">unlockable</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssreflect.html#58f94351327943cd874eb55da8e0ca14"><span class="id" title="notation">fun</span></a> <a class="idref" href="mathcomp.algebra.vector.html#linfun"><span class="id" title="definition">linfun</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssreflect.html#58f94351327943cd874eb55da8e0ca14"><span class="id" title="notation">]</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Definition</span> <a name="id_lfun"><span class="id" title="definition">id_lfun</span></a> <span class="id" title="var">vT</span> := @<a class="idref" href="mathcomp.algebra.vector.html#linfun"><span class="id" title="definition">linfun</span></a> <a class="idref" href="mathcomp.algebra.vector.html#vT"><span class="id" title="variable">vT</span></a> <a class="idref" href="mathcomp.algebra.vector.html#vT"><span class="id" title="variable">vT</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#idfun"><span class="id" title="abbreviation">idfun</span></a>.<br/> +<span class="id" title="keyword">Definition</span> <a name="comp_lfun"><span class="id" title="definition">comp_lfun</span></a> <span class="id" title="var">aT</span> <span class="id" title="var">vT</span> <span class="id" title="var">rT</span> (<span class="id" title="var">f</span> : <a class="idref" href="mathcomp.algebra.vector.html#83f0032a38b59483260ed68e0d6a1c56"><span class="id" title="notation">'</span></a><a class="idref" href="mathcomp.algebra.vector.html#83f0032a38b59483260ed68e0d6a1c56"><span class="id" title="notation">Hom</span></a><a class="idref" href="mathcomp.algebra.vector.html#83f0032a38b59483260ed68e0d6a1c56"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.vector.html#vT"><span class="id" title="variable">vT</span></a><a class="idref" href="mathcomp.algebra.vector.html#83f0032a38b59483260ed68e0d6a1c56"><span class="id" title="notation">,</span></a> <a class="idref" href="mathcomp.algebra.vector.html#rT"><span class="id" title="variable">rT</span></a><a class="idref" href="mathcomp.algebra.vector.html#83f0032a38b59483260ed68e0d6a1c56"><span class="id" title="notation">)</span></a>) (<span class="id" title="var">g</span> : <a class="idref" href="mathcomp.algebra.vector.html#83f0032a38b59483260ed68e0d6a1c56"><span class="id" title="notation">'</span></a><a class="idref" href="mathcomp.algebra.vector.html#83f0032a38b59483260ed68e0d6a1c56"><span class="id" title="notation">Hom</span></a><a class="idref" href="mathcomp.algebra.vector.html#83f0032a38b59483260ed68e0d6a1c56"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.vector.html#aT"><span class="id" title="variable">aT</span></a><a class="idref" href="mathcomp.algebra.vector.html#83f0032a38b59483260ed68e0d6a1c56"><span class="id" title="notation">,</span></a> <a class="idref" href="mathcomp.algebra.vector.html#vT"><span class="id" title="variable">vT</span></a><a class="idref" href="mathcomp.algebra.vector.html#83f0032a38b59483260ed68e0d6a1c56"><span class="id" title="notation">)</span></a>) :=<br/> + <a class="idref" href="mathcomp.algebra.vector.html#linfun"><span class="id" title="definition">linfun</span></a> (<a class="idref" href="mathcomp.algebra.vector.html#fun_of_lfun"><span class="id" title="definition">fun_of_lfun</span></a> <a class="idref" href="mathcomp.algebra.vector.html#f"><span class="id" title="variable">f</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#1b4394c5c1740ef3dc9e4224084970bb"><span class="id" title="notation">\</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#1b4394c5c1740ef3dc9e4224084970bb"><span class="id" title="notation">o</span></a> <a class="idref" href="mathcomp.algebra.vector.html#fun_of_lfun"><span class="id" title="definition">fun_of_lfun</span></a> <a class="idref" href="mathcomp.algebra.vector.html#g"><span class="id" title="variable">g</span></a>).<br/> + +<br/> +<span class="id" title="keyword">End</span> <a class="idref" href="mathcomp.algebra.vector.html#LfunDefs"><span class="id" title="section">LfunDefs</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Coercion</span> <a class="idref" href="mathcomp.algebra.vector.html#fun_of_lfun"><span class="id" title="definition">fun_of_lfun</span></a> <a class="idref" href="mathcomp.algebra.vector.html#fun_of_lfun"><span class="id" title="definition">:</span></a> <a class="idref" href="mathcomp.algebra.vector.html#fun_of_lfun"><span class="id" title="definition">Vector.hom</span></a> <a class="idref" href="mathcomp.algebra.vector.html#fun_of_lfun"><span class="id" title="definition">>-></span></a> <a class="idref" href="mathcomp.algebra.vector.html#fun_of_lfun"><span class="id" title="definition">Funclass</span></a>.<br/> +<span class="id" title="keyword">Notation</span> <a name="9c5859a8d2fadc014a07818a2f27d0e9"><span class="id" title="notation">"</span></a>\1" := (@<a class="idref" href="mathcomp.algebra.vector.html#id_lfun"><span class="id" title="definition">id_lfun</span></a> <span class="id" title="var">_</span> <span class="id" title="var">_</span>) : <span class="id" title="var">lfun_scope</span>.<br/> +<span class="id" title="keyword">Notation</span> <a name="9ad88b19a9e5558beda973c77ca474da"><span class="id" title="notation">"</span></a>f \o g" := (<a class="idref" href="mathcomp.algebra.vector.html#comp_lfun"><span class="id" title="definition">comp_lfun</span></a> <span class="id" title="var">f</span> <span class="id" title="var">g</span>) : <span class="id" title="var">lfun_scope</span>.<br/> + +<br/> +<span class="id" title="keyword">Section</span> <a name="LfunVspaceDefs"><span class="id" title="section">LfunVspaceDefs</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Variable</span> <a name="LfunVspaceDefs.K"><span class="id" title="variable">K</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">aT</span> <span class="id" title="var">rT</span> : <a class="idref" href="mathcomp.algebra.vector.html#vectType"><span class="id" title="abbreviation">vectType</span></a> <a class="idref" href="mathcomp.algebra.vector.html#LfunVspaceDefs.K"><span class="id" title="variable">K</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Definition</span> <a name="inv_lfun"><span class="id" title="definition">inv_lfun</span></a> <span class="id" title="var">aT</span> <span class="id" title="var">rT</span> (<span class="id" title="var">f</span> : <a class="idref" href="mathcomp.algebra.vector.html#83f0032a38b59483260ed68e0d6a1c56"><span class="id" title="notation">'</span></a><a class="idref" href="mathcomp.algebra.vector.html#83f0032a38b59483260ed68e0d6a1c56"><span class="id" title="notation">Hom</span></a><a class="idref" href="mathcomp.algebra.vector.html#83f0032a38b59483260ed68e0d6a1c56"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.vector.html#aT"><span class="id" title="variable">aT</span></a><a class="idref" href="mathcomp.algebra.vector.html#83f0032a38b59483260ed68e0d6a1c56"><span class="id" title="notation">,</span></a> <a class="idref" href="mathcomp.algebra.vector.html#rT"><span class="id" title="variable">rT</span></a><a class="idref" href="mathcomp.algebra.vector.html#83f0032a38b59483260ed68e0d6a1c56"><span class="id" title="notation">)</span></a>) := <a class="idref" href="mathcomp.algebra.vector.html#Hom"><span class="id" title="constructor">Vector.Hom</span></a> (<a class="idref" href="mathcomp.algebra.mxalgebra.html#pinvmx"><span class="id" title="definition">pinvmx</span></a> (<a class="idref" href="mathcomp.algebra.vector.html#f2mx"><span class="id" title="definition">f2mx</span></a> <a class="idref" href="mathcomp.algebra.vector.html#f"><span class="id" title="variable">f</span></a>)).<br/> +<span class="id" title="keyword">Definition</span> <a name="lker"><span class="id" title="definition">lker</span></a> <span class="id" title="var">aT</span> <span class="id" title="var">rT</span> (<span class="id" title="var">f</span> : <a class="idref" href="mathcomp.algebra.vector.html#83f0032a38b59483260ed68e0d6a1c56"><span class="id" title="notation">'</span></a><a class="idref" href="mathcomp.algebra.vector.html#83f0032a38b59483260ed68e0d6a1c56"><span class="id" title="notation">Hom</span></a><a class="idref" href="mathcomp.algebra.vector.html#83f0032a38b59483260ed68e0d6a1c56"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.vector.html#aT"><span class="id" title="variable">aT</span></a><a class="idref" href="mathcomp.algebra.vector.html#83f0032a38b59483260ed68e0d6a1c56"><span class="id" title="notation">,</span></a> <a class="idref" href="mathcomp.algebra.vector.html#rT"><span class="id" title="variable">rT</span></a><a class="idref" href="mathcomp.algebra.vector.html#83f0032a38b59483260ed68e0d6a1c56"><span class="id" title="notation">)</span></a>) := <a class="idref" href="mathcomp.algebra.vector.html#mx2vs"><span class="id" title="definition">mx2vs</span></a> (<a class="idref" href="mathcomp.algebra.mxalgebra.html#kermx"><span class="id" title="definition">kermx</span></a> (<a class="idref" href="mathcomp.algebra.vector.html#f2mx"><span class="id" title="definition">f2mx</span></a> <a class="idref" href="mathcomp.algebra.vector.html#f"><span class="id" title="variable">f</span></a>)).<br/> +<span class="id" title="keyword">Fact</span> <a name="lfun_img_key"><span class="id" title="lemma">lfun_img_key</span></a> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#unit"><span class="id" title="inductive">unit</span></a>. <br/> +<span class="id" title="keyword">Definition</span> <a name="lfun_img_def"><span class="id" title="definition">lfun_img_def</span></a> <span class="id" title="var">aT</span> <span class="id" title="var">rT</span> <span class="id" title="var">f</span> (<span class="id" title="var">U</span> : <a class="idref" href="mathcomp.algebra.vector.html#ca0a177f6d6581a7f5199987cd7ee21c"><span class="id" title="notation">{</span></a><a class="idref" href="mathcomp.algebra.vector.html#ca0a177f6d6581a7f5199987cd7ee21c"><span class="id" title="notation">vspace</span></a> <a class="idref" href="mathcomp.algebra.vector.html#aT"><span class="id" title="variable">aT</span></a><a class="idref" href="mathcomp.algebra.vector.html#ca0a177f6d6581a7f5199987cd7ee21c"><span class="id" title="notation">}</span></a>) : <a class="idref" href="mathcomp.algebra.vector.html#ca0a177f6d6581a7f5199987cd7ee21c"><span class="id" title="notation">{</span></a><a class="idref" href="mathcomp.algebra.vector.html#ca0a177f6d6581a7f5199987cd7ee21c"><span class="id" title="notation">vspace</span></a> <a class="idref" href="mathcomp.algebra.vector.html#rT"><span class="id" title="variable">rT</span></a><a class="idref" href="mathcomp.algebra.vector.html#ca0a177f6d6581a7f5199987cd7ee21c"><span class="id" title="notation">}</span></a> :=<br/> + <a class="idref" href="mathcomp.algebra.vector.html#mx2vs"><span class="id" title="definition">mx2vs</span></a> (<a class="idref" href="mathcomp.algebra.vector.html#vs2mx"><span class="id" title="definition">vs2mx</span></a> <a class="idref" href="mathcomp.algebra.vector.html#U"><span class="id" title="variable">U</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#9c6b777e699b0b93592b907e7450465e"><span class="id" title="notation">×</span></a><a class="idref" href="mathcomp.algebra.matrix.html#9c6b777e699b0b93592b907e7450465e"><span class="id" title="notation">m</span></a> <a class="idref" href="mathcomp.algebra.vector.html#f2mx"><span class="id" title="definition">f2mx</span></a> <a class="idref" href="mathcomp.algebra.vector.html#f"><span class="id" title="variable">f</span></a>).<br/> +<span class="id" title="keyword">Definition</span> <a name="lfun_img"><span class="id" title="definition">lfun_img</span></a> := <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssreflect.html#locked_with"><span class="id" title="definition">locked_with</span></a> <a class="idref" href="mathcomp.algebra.vector.html#lfun_img_key"><span class="id" title="lemma">lfun_img_key</span></a> <a class="idref" href="mathcomp.algebra.vector.html#lfun_img_def"><span class="id" title="definition">lfun_img_def</span></a>.<br/> +<span class="id" title="keyword">Canonical</span> <span class="id" title="var">lfun_img_unlockable</span> := <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssreflect.html#58f94351327943cd874eb55da8e0ca14"><span class="id" title="notation">[</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssreflect.html#58f94351327943cd874eb55da8e0ca14"><span class="id" title="notation">unlockable</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssreflect.html#58f94351327943cd874eb55da8e0ca14"><span class="id" title="notation">fun</span></a> <a class="idref" href="mathcomp.algebra.vector.html#lfun_img"><span class="id" title="definition">lfun_img</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssreflect.html#58f94351327943cd874eb55da8e0ca14"><span class="id" title="notation">]</span></a>.<br/> +<span class="id" title="keyword">Definition</span> <a name="lfun_preim"><span class="id" title="definition">lfun_preim</span></a> <span class="id" title="var">aT</span> <span class="id" title="var">rT</span> (<span class="id" title="var">f</span> : <a class="idref" href="mathcomp.algebra.vector.html#83f0032a38b59483260ed68e0d6a1c56"><span class="id" title="notation">'</span></a><a class="idref" href="mathcomp.algebra.vector.html#83f0032a38b59483260ed68e0d6a1c56"><span class="id" title="notation">Hom</span></a><a class="idref" href="mathcomp.algebra.vector.html#83f0032a38b59483260ed68e0d6a1c56"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.vector.html#aT"><span class="id" title="variable">aT</span></a><a class="idref" href="mathcomp.algebra.vector.html#83f0032a38b59483260ed68e0d6a1c56"><span class="id" title="notation">,</span></a> <a class="idref" href="mathcomp.algebra.vector.html#rT"><span class="id" title="variable">rT</span></a><a class="idref" href="mathcomp.algebra.vector.html#83f0032a38b59483260ed68e0d6a1c56"><span class="id" title="notation">)</span></a>) <span class="id" title="var">W</span> :=<br/> + (<a class="idref" href="mathcomp.algebra.vector.html#lfun_img"><span class="id" title="definition">lfun_img</span></a> (<a class="idref" href="mathcomp.algebra.vector.html#inv_lfun"><span class="id" title="definition">inv_lfun</span></a> <a class="idref" href="mathcomp.algebra.vector.html#f"><span class="id" title="variable">f</span></a>) (<a class="idref" href="mathcomp.algebra.vector.html#W"><span class="id" title="variable">W</span></a> <a class="idref" href="mathcomp.algebra.vector.html#585f47de65e0d6c6ecedb971203eafab"><span class="id" title="notation">:&:</span></a> <a class="idref" href="mathcomp.algebra.vector.html#lfun_img"><span class="id" title="definition">lfun_img</span></a> <a class="idref" href="mathcomp.algebra.vector.html#f"><span class="id" title="variable">f</span></a> <a class="idref" href="mathcomp.algebra.vector.html#fullv"><span class="id" title="definition">fullv</span></a>) <a class="idref" href="mathcomp.algebra.vector.html#706deac9766015ea164a28957c46a7b4"><span class="id" title="notation">+</span></a> <a class="idref" href="mathcomp.algebra.vector.html#lker"><span class="id" title="definition">lker</span></a> <a class="idref" href="mathcomp.algebra.vector.html#f"><span class="id" title="variable">f</span></a>)%<span class="id" title="var">VS</span>.<br/> + +<br/> +<span class="id" title="keyword">End</span> <a class="idref" href="mathcomp.algebra.vector.html#LfunVspaceDefs"><span class="id" title="section">LfunVspaceDefs</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Notation</span> <a name="517f88b2f002b4e1dbd5bb3edaded374"><span class="id" title="notation">"</span></a>f ^-1" := (<a class="idref" href="mathcomp.algebra.vector.html#inv_lfun"><span class="id" title="definition">inv_lfun</span></a> <span class="id" title="var">f</span>) : <span class="id" title="var">lfun_scope</span>.<br/> +<span class="id" title="keyword">Notation</span> <a name="b5958714d039bb581a8e5ca988944568"><span class="id" title="notation">"</span></a>f @: U" := (<a class="idref" href="mathcomp.algebra.vector.html#lfun_img"><span class="id" title="definition">lfun_img</span></a> <span class="id" title="var">f</span>%<span class="id" title="var">VF</span>%<span class="id" title="var">R</span> <span class="id" title="var">U</span>) (<span class="id" title="tactic">at</span> <span class="id" title="keyword">level</span> 24) : <span class="id" title="var">vspace_scope</span>.<br/> +<span class="id" title="keyword">Notation</span> <a name="44829b34346d22907f726f49ab851da1"><span class="id" title="notation">"</span></a>f @^-1: W" := (<a class="idref" href="mathcomp.algebra.vector.html#lfun_preim"><span class="id" title="definition">lfun_preim</span></a> <span class="id" title="var">f</span>%<span class="id" title="var">VF</span>%<span class="id" title="var">R</span> <span class="id" title="var">W</span>) (<span class="id" title="tactic">at</span> <span class="id" title="keyword">level</span> 24) : <span class="id" title="var">vspace_scope</span>.<br/> +<span class="id" title="keyword">Notation</span> <a name="limg"><span class="id" title="abbreviation">limg</span></a> <span class="id" title="var">f</span> := (<a class="idref" href="mathcomp.algebra.vector.html#lfun_img"><span class="id" title="definition">lfun_img</span></a> <span class="id" title="var">f</span> <a class="idref" href="mathcomp.algebra.vector.html#fullv"><span class="id" title="definition">fullv</span></a>).<br/> + +<br/> +<span class="id" title="keyword">Section</span> <a name="LfunZmodType"><span class="id" title="section">LfunZmodType</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Variables</span> (<a name="LfunZmodType.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="LfunZmodType.aT"><span class="id" title="variable">aT</span></a> <a name="LfunZmodType.rT"><span class="id" title="variable">rT</span></a> : <a class="idref" href="mathcomp.algebra.vector.html#vectType"><span class="id" title="abbreviation">vectType</span></a> <a class="idref" href="mathcomp.algebra.vector.html#R"><span class="id" title="variable">R</span></a>).<br/> +<span class="id" title="keyword">Implicit</span> <span class="id" title="keyword">Types</span> <span class="id" title="var">f</span> <span class="id" title="var">g</span> <span class="id" title="var">h</span> : <a class="idref" href="mathcomp.algebra.vector.html#83f0032a38b59483260ed68e0d6a1c56"><span class="id" title="notation">'</span></a><a class="idref" href="mathcomp.algebra.vector.html#83f0032a38b59483260ed68e0d6a1c56"><span class="id" title="notation">Hom</span></a><a class="idref" href="mathcomp.algebra.vector.html#83f0032a38b59483260ed68e0d6a1c56"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.vector.html#LfunZmodType.aT"><span class="id" title="variable">aT</span></a><a class="idref" href="mathcomp.algebra.vector.html#83f0032a38b59483260ed68e0d6a1c56"><span class="id" title="notation">,</span></a> <a class="idref" href="mathcomp.algebra.vector.html#LfunZmodType.rT"><span class="id" title="variable">rT</span></a><a class="idref" href="mathcomp.algebra.vector.html#83f0032a38b59483260ed68e0d6a1c56"><span class="id" title="notation">)</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Canonical</span> <span class="id" title="var">lfun_eqMixin</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#4bc2d2dce12edef0fb9c71d4a902ae5d"><span class="id" title="notation">[</span></a><a class="idref" href="mathcomp.ssreflect.eqtype.html#4bc2d2dce12edef0fb9c71d4a902ae5d"><span class="id" title="notation">eqMixin</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#4bc2d2dce12edef0fb9c71d4a902ae5d"><span class="id" title="notation">of</span></a> <a class="idref" href="mathcomp.algebra.vector.html#83f0032a38b59483260ed68e0d6a1c56"><span class="id" title="notation">'</span></a><a class="idref" href="mathcomp.algebra.vector.html#83f0032a38b59483260ed68e0d6a1c56"><span class="id" title="notation">Hom</span></a><a class="idref" href="mathcomp.algebra.vector.html#83f0032a38b59483260ed68e0d6a1c56"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.vector.html#LfunZmodType.aT"><span class="id" title="variable">aT</span></a><a class="idref" href="mathcomp.algebra.vector.html#83f0032a38b59483260ed68e0d6a1c56"><span class="id" title="notation">,</span></a> <a class="idref" href="mathcomp.algebra.vector.html#LfunZmodType.rT"><span class="id" title="variable">rT</span></a><a class="idref" href="mathcomp.algebra.vector.html#83f0032a38b59483260ed68e0d6a1c56"><span class="id" title="notation">)</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#4bc2d2dce12edef0fb9c71d4a902ae5d"><span class="id" title="notation">by</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#4bc2d2dce12edef0fb9c71d4a902ae5d"><span class="id" title="notation"><:]</span></a>.<br/> +<span class="id" title="keyword">Canonical</span> <span class="id" title="var">lfun_eqType</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.vector.html#83f0032a38b59483260ed68e0d6a1c56"><span class="id" title="notation">'</span></a><a class="idref" href="mathcomp.algebra.vector.html#83f0032a38b59483260ed68e0d6a1c56"><span class="id" title="notation">Hom</span></a><a class="idref" href="mathcomp.algebra.vector.html#83f0032a38b59483260ed68e0d6a1c56"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.vector.html#LfunZmodType.aT"><span class="id" title="variable">aT</span></a><a class="idref" href="mathcomp.algebra.vector.html#83f0032a38b59483260ed68e0d6a1c56"><span class="id" title="notation">,</span></a> <a class="idref" href="mathcomp.algebra.vector.html#LfunZmodType.rT"><span class="id" title="variable">rT</span></a><a class="idref" href="mathcomp.algebra.vector.html#83f0032a38b59483260ed68e0d6a1c56"><span class="id" title="notation">)</span></a> <a class="idref" href="mathcomp.algebra.vector.html#lfun_eqMixin"><span class="id" title="definition">lfun_eqMixin</span></a>.<br/> +<span class="id" title="keyword">Definition</span> <a name="lfun_choiceMixin"><span class="id" title="definition">lfun_choiceMixin</span></a> := <a class="idref" href="mathcomp.ssreflect.choice.html#6c8b2d90ff1fbb8e9926bbf12495cb70"><span class="id" title="notation">[</span></a><a class="idref" href="mathcomp.ssreflect.choice.html#6c8b2d90ff1fbb8e9926bbf12495cb70"><span class="id" title="notation">choiceMixin</span></a> <a class="idref" href="mathcomp.ssreflect.choice.html#6c8b2d90ff1fbb8e9926bbf12495cb70"><span class="id" title="notation">of</span></a> <a class="idref" href="mathcomp.algebra.vector.html#83f0032a38b59483260ed68e0d6a1c56"><span class="id" title="notation">'</span></a><a class="idref" href="mathcomp.algebra.vector.html#83f0032a38b59483260ed68e0d6a1c56"><span class="id" title="notation">Hom</span></a><a class="idref" href="mathcomp.algebra.vector.html#83f0032a38b59483260ed68e0d6a1c56"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.vector.html#LfunZmodType.aT"><span class="id" title="variable">aT</span></a><a class="idref" href="mathcomp.algebra.vector.html#83f0032a38b59483260ed68e0d6a1c56"><span class="id" title="notation">,</span></a> <a class="idref" href="mathcomp.algebra.vector.html#LfunZmodType.rT"><span class="id" title="variable">rT</span></a><a class="idref" href="mathcomp.algebra.vector.html#83f0032a38b59483260ed68e0d6a1c56"><span class="id" title="notation">)</span></a> <a class="idref" href="mathcomp.ssreflect.choice.html#6c8b2d90ff1fbb8e9926bbf12495cb70"><span class="id" title="notation">by</span></a> <a class="idref" href="mathcomp.ssreflect.choice.html#6c8b2d90ff1fbb8e9926bbf12495cb70"><span class="id" title="notation"><:]</span></a>.<br/> +<span class="id" title="keyword">Canonical</span> <span class="id" title="var">lfun_choiceType</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.vector.html#83f0032a38b59483260ed68e0d6a1c56"><span class="id" title="notation">'</span></a><a class="idref" href="mathcomp.algebra.vector.html#83f0032a38b59483260ed68e0d6a1c56"><span class="id" title="notation">Hom</span></a><a class="idref" href="mathcomp.algebra.vector.html#83f0032a38b59483260ed68e0d6a1c56"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.vector.html#LfunZmodType.aT"><span class="id" title="variable">aT</span></a><a class="idref" href="mathcomp.algebra.vector.html#83f0032a38b59483260ed68e0d6a1c56"><span class="id" title="notation">,</span></a> <a class="idref" href="mathcomp.algebra.vector.html#LfunZmodType.rT"><span class="id" title="variable">rT</span></a><a class="idref" href="mathcomp.algebra.vector.html#83f0032a38b59483260ed68e0d6a1c56"><span class="id" title="notation">)</span></a> <a class="idref" href="mathcomp.algebra.vector.html#lfun_choiceMixin"><span class="id" title="definition">lfun_choiceMixin</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Fact</span> <a name="lfun_is_linear"><span class="id" title="lemma">lfun_is_linear</span></a> <span class="id" title="var">f</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.vector.html#f"><span class="id" title="variable">f</span></a>.<br/> + <span class="id" title="keyword">Canonical</span> <span class="id" title="var">lfun_additive</span> <span class="id" title="var">f</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.vector.html#lfun_is_linear"><span class="id" title="lemma">lfun_is_linear</span></a> <a class="idref" href="mathcomp.algebra.vector.html#f"><span class="id" title="variable">f</span></a>).<br/> +<span class="id" title="keyword">Canonical</span> <span class="id" title="var">lfun_linear</span> <span class="id" title="var">f</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.vector.html#lfun_is_linear"><span class="id" title="lemma">lfun_is_linear</span></a> <a class="idref" href="mathcomp.algebra.vector.html#f"><span class="id" title="variable">f</span></a>).<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="lfunE"><span class="id" title="lemma">lfunE</span></a> (<span class="id" title="var">ff</span> : <a class="idref" href="mathcomp.algebra.ssralg.html#697e59dccfd7ad4519680ddb16ef82da"><span class="id" title="notation">{</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#697e59dccfd7ad4519680ddb16ef82da"><span class="id" title="notation">linear</span></a> <a class="idref" href="mathcomp.algebra.vector.html#LfunZmodType.aT"><span class="id" title="variable">aT</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.vector.html#LfunZmodType.rT"><span class="id" title="variable">rT</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#697e59dccfd7ad4519680ddb16ef82da"><span class="id" title="notation">}</span></a>) : <a class="idref" href="mathcomp.algebra.vector.html#linfun"><span class="id" title="definition">linfun</span></a> <a class="idref" href="mathcomp.algebra.vector.html#ff"><span class="id" title="variable">ff</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#2500d48ed8e862ccfda98a44dff88963"><span class="id" title="notation">=1</span></a> <a class="idref" href="mathcomp.algebra.vector.html#ff"><span class="id" title="variable">ff</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="fun_of_lfunK"><span class="id" title="lemma">fun_of_lfunK</span></a> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#cancel"><span class="id" title="definition">cancel</span></a> (@<a class="idref" href="mathcomp.algebra.vector.html#fun_of_lfun"><span class="id" title="definition">fun_of_lfun</span></a> <a class="idref" href="mathcomp.algebra.vector.html#LfunZmodType.R"><span class="id" title="variable">R</span></a> <a class="idref" href="mathcomp.algebra.vector.html#LfunZmodType.aT"><span class="id" title="variable">aT</span></a> <a class="idref" href="mathcomp.algebra.vector.html#LfunZmodType.rT"><span class="id" title="variable">rT</span></a>) <a class="idref" href="mathcomp.algebra.vector.html#linfun"><span class="id" title="definition">linfun</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="lfunP"><span class="id" title="lemma">lfunP</span></a> <span class="id" title="var">f</span> <span class="id" title="var">g</span> : <a class="idref" href="mathcomp.algebra.vector.html#f"><span class="id" title="variable">f</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#2500d48ed8e862ccfda98a44dff88963"><span class="id" title="notation">=1</span></a> <a class="idref" href="mathcomp.algebra.vector.html#g"><span class="id" title="variable">g</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#df1ced36fc33ce188051218bca314374"><span class="id" title="notation">↔</span></a> <a class="idref" href="mathcomp.algebra.vector.html#f"><span class="id" title="variable">f</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.vector.html#g"><span class="id" title="variable">g</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Definition</span> <a name="zero_lfun"><span class="id" title="definition">zero_lfun</span></a> : <a class="idref" href="mathcomp.algebra.vector.html#83f0032a38b59483260ed68e0d6a1c56"><span class="id" title="notation">'</span></a><a class="idref" href="mathcomp.algebra.vector.html#83f0032a38b59483260ed68e0d6a1c56"><span class="id" title="notation">Hom</span></a><a class="idref" href="mathcomp.algebra.vector.html#83f0032a38b59483260ed68e0d6a1c56"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.vector.html#LfunZmodType.aT"><span class="id" title="variable">aT</span></a><a class="idref" href="mathcomp.algebra.vector.html#83f0032a38b59483260ed68e0d6a1c56"><span class="id" title="notation">,</span></a> <a class="idref" href="mathcomp.algebra.vector.html#LfunZmodType.rT"><span class="id" title="variable">rT</span></a><a class="idref" href="mathcomp.algebra.vector.html#83f0032a38b59483260ed68e0d6a1c56"><span class="id" title="notation">)</span></a> := <a class="idref" href="mathcomp.algebra.vector.html#linfun"><span class="id" title="definition">linfun</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#bdc5ff84949fb09e2844ec63fb6a6940"><span class="id" title="notation">\0</span></a>.<br/> +<span class="id" title="keyword">Definition</span> <a name="add_lfun"><span class="id" title="definition">add_lfun</span></a> <span class="id" title="var">f</span> <span class="id" title="var">g</span> := <a class="idref" href="mathcomp.algebra.vector.html#linfun"><span class="id" title="definition">linfun</span></a> (<a class="idref" href="mathcomp.algebra.vector.html#f"><span class="id" title="variable">f</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#92c2de7e7e93a10a858367cf5d49cf1a"><span class="id" title="notation">\+</span></a> <a class="idref" href="mathcomp.algebra.vector.html#g"><span class="id" title="variable">g</span></a>).<br/> +<span class="id" title="keyword">Definition</span> <a name="opp_lfun"><span class="id" title="definition">opp_lfun</span></a> <span class="id" title="var">f</span> := <a class="idref" href="mathcomp.algebra.vector.html#linfun"><span class="id" title="definition">linfun</span></a> (<a class="idref" href="mathcomp.algebra.ssralg.html#9fdf1a446ceec36bc97cce801a3ef3f2"><span class="id" title="notation">-%</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#9fdf1a446ceec36bc97cce801a3ef3f2"><span class="id" title="notation">R</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#1b4394c5c1740ef3dc9e4224084970bb"><span class="id" title="notation">\</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#1b4394c5c1740ef3dc9e4224084970bb"><span class="id" title="notation">o</span></a> <a class="idref" href="mathcomp.algebra.vector.html#f"><span class="id" title="variable">f</span></a>).<br/> + +<br/> +<span class="id" title="keyword">Fact</span> <a name="lfun_addA"><span class="id" title="lemma">lfun_addA</span></a> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#associative"><span class="id" title="definition">associative</span></a> <a class="idref" href="mathcomp.algebra.vector.html#add_lfun"><span class="id" title="definition">add_lfun</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Fact</span> <a name="lfun_addC"><span class="id" title="lemma">lfun_addC</span></a> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#commutative"><span class="id" title="definition">commutative</span></a> <a class="idref" href="mathcomp.algebra.vector.html#add_lfun"><span class="id" title="definition">add_lfun</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Fact</span> <a name="lfun_add0"><span class="id" title="lemma">lfun_add0</span></a> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#left_id"><span class="id" title="definition">left_id</span></a> <a class="idref" href="mathcomp.algebra.vector.html#zero_lfun"><span class="id" title="definition">zero_lfun</span></a> <a class="idref" href="mathcomp.algebra.vector.html#add_lfun"><span class="id" title="definition">add_lfun</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="lfun_addN"><span class="id" title="lemma">lfun_addN</span></a> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#left_inverse"><span class="id" title="definition">left_inverse</span></a> <a class="idref" href="mathcomp.algebra.vector.html#zero_lfun"><span class="id" title="definition">zero_lfun</span></a> <a class="idref" href="mathcomp.algebra.vector.html#opp_lfun"><span class="id" title="definition">opp_lfun</span></a> <a class="idref" href="mathcomp.algebra.vector.html#add_lfun"><span class="id" title="definition">add_lfun</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Definition</span> <a name="lfun_zmodMixin"><span class="id" title="definition">lfun_zmodMixin</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Zmodule.Exports.ZmodMixin"><span class="id" title="abbreviation">ZmodMixin</span></a> <a class="idref" href="mathcomp.algebra.vector.html#lfun_addA"><span class="id" title="lemma">lfun_addA</span></a> <a class="idref" href="mathcomp.algebra.vector.html#lfun_addC"><span class="id" title="lemma">lfun_addC</span></a> <a class="idref" href="mathcomp.algebra.vector.html#lfun_add0"><span class="id" title="lemma">lfun_add0</span></a> <a class="idref" href="mathcomp.algebra.vector.html#lfun_addN"><span class="id" title="lemma">lfun_addN</span></a>.<br/> +<span class="id" title="keyword">Canonical</span> <span class="id" title="var">lfun_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.vector.html#83f0032a38b59483260ed68e0d6a1c56"><span class="id" title="notation">'</span></a><a class="idref" href="mathcomp.algebra.vector.html#83f0032a38b59483260ed68e0d6a1c56"><span class="id" title="notation">Hom</span></a><a class="idref" href="mathcomp.algebra.vector.html#83f0032a38b59483260ed68e0d6a1c56"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.vector.html#LfunZmodType.aT"><span class="id" title="variable">aT</span></a><a class="idref" href="mathcomp.algebra.vector.html#83f0032a38b59483260ed68e0d6a1c56"><span class="id" title="notation">,</span></a> <a class="idref" href="mathcomp.algebra.vector.html#LfunZmodType.rT"><span class="id" title="variable">rT</span></a><a class="idref" href="mathcomp.algebra.vector.html#83f0032a38b59483260ed68e0d6a1c56"><span class="id" title="notation">)</span></a> <a class="idref" href="mathcomp.algebra.vector.html#lfun_zmodMixin"><span class="id" title="definition">lfun_zmodMixin</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="zero_lfunE"><span class="id" title="lemma">zero_lfunE</span></a> <span class="id" title="var">x</span> : (0 <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssreflect.html#4509b22bf26e3d6d771897e22bd8bc8f"><span class="id" title="notation">:</span></a> <a class="idref" href="mathcomp.algebra.vector.html#83f0032a38b59483260ed68e0d6a1c56"><span class="id" title="notation">'</span></a><a class="idref" href="mathcomp.algebra.vector.html#83f0032a38b59483260ed68e0d6a1c56"><span class="id" title="notation">Hom</span></a><a class="idref" href="mathcomp.algebra.vector.html#83f0032a38b59483260ed68e0d6a1c56"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.vector.html#LfunZmodType.aT"><span class="id" title="variable">aT</span></a><a class="idref" href="mathcomp.algebra.vector.html#83f0032a38b59483260ed68e0d6a1c56"><span class="id" title="notation">,</span></a> <a class="idref" href="mathcomp.algebra.vector.html#LfunZmodType.rT"><span class="id" title="variable">rT</span></a><a class="idref" href="mathcomp.algebra.vector.html#83f0032a38b59483260ed68e0d6a1c56"><span class="id" title="notation">)</span></a>) <a class="idref" href="mathcomp.algebra.vector.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> 0. <br/> +<span class="id" title="keyword">Lemma</span> <a name="add_lfunE"><span class="id" title="lemma">add_lfunE</span></a> <span class="id" title="var">f</span> <span class="id" title="var">g</span> <span class="id" title="var">x</span> : (<a class="idref" href="mathcomp.algebra.vector.html#f"><span class="id" title="variable">f</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#ae4d81913e6239182a9ac7467ffde8cd"><span class="id" title="notation">+</span></a> <a class="idref" href="mathcomp.algebra.vector.html#g"><span class="id" title="variable">g</span></a>) <a class="idref" href="mathcomp.algebra.vector.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.vector.html#f"><span class="id" title="variable">f</span></a> <a class="idref" href="mathcomp.algebra.vector.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#ae4d81913e6239182a9ac7467ffde8cd"><span class="id" title="notation">+</span></a> <a class="idref" href="mathcomp.algebra.vector.html#g"><span class="id" title="variable">g</span></a> <a class="idref" href="mathcomp.algebra.vector.html#x"><span class="id" title="variable">x</span></a>. <br/> +<span class="id" title="keyword">Lemma</span> <a name="opp_lfunE"><span class="id" title="lemma">opp_lfunE</span></a> <span class="id" title="var">f</span> <span class="id" title="var">x</span> : (<a class="idref" href="mathcomp.algebra.ssralg.html#941c6d086004545bd62614d0213e75e5"><span class="id" title="notation">-</span></a> <a class="idref" href="mathcomp.algebra.vector.html#f"><span class="id" title="variable">f</span></a>) <a class="idref" href="mathcomp.algebra.vector.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#941c6d086004545bd62614d0213e75e5"><span class="id" title="notation">-</span></a> <a class="idref" href="mathcomp.algebra.vector.html#f"><span class="id" title="variable">f</span></a> <a class="idref" href="mathcomp.algebra.vector.html#x"><span class="id" title="variable">x</span></a>. <br/> +<span class="id" title="keyword">Lemma</span> <a name="sum_lfunE"><span class="id" title="lemma">sum_lfunE</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.vector.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/8.8.0/stdlib//Coq.ssr.ssrbool.html#pred"><span class="id" title="definition">pred</span></a> <a class="idref" href="mathcomp.algebra.vector.html#I"><span class="id" title="variable">I</span></a>) (<span class="id" title="var">fs</span> : <a class="idref" href="mathcomp.algebra.vector.html#I"><span class="id" title="variable">I</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.vector.html#83f0032a38b59483260ed68e0d6a1c56"><span class="id" title="notation">'</span></a><a class="idref" href="mathcomp.algebra.vector.html#83f0032a38b59483260ed68e0d6a1c56"><span class="id" title="notation">Hom</span></a><a class="idref" href="mathcomp.algebra.vector.html#83f0032a38b59483260ed68e0d6a1c56"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.vector.html#LfunZmodType.aT"><span class="id" title="variable">aT</span></a><a class="idref" href="mathcomp.algebra.vector.html#83f0032a38b59483260ed68e0d6a1c56"><span class="id" title="notation">,</span></a> <a class="idref" href="mathcomp.algebra.vector.html#LfunZmodType.rT"><span class="id" title="variable">rT</span></a><a class="idref" href="mathcomp.algebra.vector.html#83f0032a38b59483260ed68e0d6a1c56"><span class="id" title="notation">)</span></a>) <span class="id" title="var">x</span> :<br/> + (<a class="idref" href="mathcomp.algebra.ssralg.html#cbc2f2ab11c1c376b5c4511d28b14d74"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#cbc2f2ab11c1c376b5c4511d28b14d74"><span class="id" title="notation">sum_</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#cbc2f2ab11c1c376b5c4511d28b14d74"><span class="id" title="notation">(</span></a><span class="id" title="var">i</span> <a class="idref" href="mathcomp.algebra.ssralg.html#cbc2f2ab11c1c376b5c4511d28b14d74"><span class="id" title="notation"><-</span></a> <a class="idref" href="mathcomp.algebra.vector.html#r"><span class="id" title="variable">r</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#cbc2f2ab11c1c376b5c4511d28b14d74"><span class="id" title="notation">|</span></a> <a class="idref" href="mathcomp.algebra.vector.html#P"><span class="id" title="variable">P</span></a> <a class="idref" href="mathcomp.algebra.vector.html#i"><span class="id" title="variable">i</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#cbc2f2ab11c1c376b5c4511d28b14d74"><span class="id" title="notation">)</span></a> <a class="idref" href="mathcomp.algebra.vector.html#fs"><span class="id" title="variable">fs</span></a> <a class="idref" href="mathcomp.algebra.vector.html#i"><span class="id" title="variable">i</span></a>) <a class="idref" href="mathcomp.algebra.vector.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#cbc2f2ab11c1c376b5c4511d28b14d74"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#cbc2f2ab11c1c376b5c4511d28b14d74"><span class="id" title="notation">sum_</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#cbc2f2ab11c1c376b5c4511d28b14d74"><span class="id" title="notation">(</span></a><span class="id" title="var">i</span> <a class="idref" href="mathcomp.algebra.ssralg.html#cbc2f2ab11c1c376b5c4511d28b14d74"><span class="id" title="notation"><-</span></a> <a class="idref" href="mathcomp.algebra.vector.html#r"><span class="id" title="variable">r</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#cbc2f2ab11c1c376b5c4511d28b14d74"><span class="id" title="notation">|</span></a> <a class="idref" href="mathcomp.algebra.vector.html#P"><span class="id" title="variable">P</span></a> <a class="idref" href="mathcomp.algebra.vector.html#i"><span class="id" title="variable">i</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#cbc2f2ab11c1c376b5c4511d28b14d74"><span class="id" title="notation">)</span></a> <a class="idref" href="mathcomp.algebra.vector.html#fs"><span class="id" title="variable">fs</span></a> <a class="idref" href="mathcomp.algebra.vector.html#i"><span class="id" title="variable">i</span></a> <a class="idref" href="mathcomp.algebra.vector.html#x"><span class="id" title="variable">x</span></a>.<br/> + +<br/> +<span class="id" title="keyword">End</span> <a class="idref" href="mathcomp.algebra.vector.html#LfunZmodType"><span class="id" title="section">LfunZmodType</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Section</span> <a name="LfunVectType"><span class="id" title="section">LfunVectType</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Variables</span> (<a name="LfunVectType.R"><span class="id" title="variable">R</span></a> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ComRing.Exports.comRingType"><span class="id" title="abbreviation">comRingType</span></a>) (<a name="LfunVectType.aT"><span class="id" title="variable">aT</span></a> <a name="LfunVectType.rT"><span class="id" title="variable">rT</span></a> : <a class="idref" href="mathcomp.algebra.vector.html#vectType"><span class="id" title="abbreviation">vectType</span></a> <a class="idref" href="mathcomp.algebra.vector.html#R"><span class="id" title="variable">R</span></a>).<br/> +<span class="id" title="keyword">Implicit</span> <span class="id" title="keyword">Types</span> <span class="id" title="var">f</span> : <a class="idref" href="mathcomp.algebra.vector.html#83f0032a38b59483260ed68e0d6a1c56"><span class="id" title="notation">'</span></a><a class="idref" href="mathcomp.algebra.vector.html#83f0032a38b59483260ed68e0d6a1c56"><span class="id" title="notation">Hom</span></a><a class="idref" href="mathcomp.algebra.vector.html#83f0032a38b59483260ed68e0d6a1c56"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.vector.html#LfunVectType.aT"><span class="id" title="variable">aT</span></a><a class="idref" href="mathcomp.algebra.vector.html#83f0032a38b59483260ed68e0d6a1c56"><span class="id" title="notation">,</span></a> <a class="idref" href="mathcomp.algebra.vector.html#LfunVectType.rT"><span class="id" title="variable">rT</span></a><a class="idref" href="mathcomp.algebra.vector.html#83f0032a38b59483260ed68e0d6a1c56"><span class="id" title="notation">)</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Definition</span> <a name="scale_lfun"><span class="id" title="definition">scale_lfun</span></a> <span class="id" title="var">k</span> <span class="id" title="var">f</span> := <a class="idref" href="mathcomp.algebra.vector.html#linfun"><span class="id" title="definition">linfun</span></a> (<a class="idref" href="mathcomp.algebra.vector.html#k"><span class="id" title="variable">k</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#2dc3300d5161dd2922dafd7c5ed2a5da"><span class="id" title="notation">\*:</span></a> <a class="idref" href="mathcomp.algebra.vector.html#f"><span class="id" title="variable">f</span></a>).<br/> + +<br/> +<span class="id" title="keyword">Fact</span> <a name="lfun_scaleA"><span class="id" title="lemma">lfun_scaleA</span></a> <span class="id" title="var">k1</span> <span class="id" title="var">k2</span> <span class="id" title="var">f</span> : <a class="idref" href="mathcomp.algebra.vector.html#k1"><span class="id" title="variable">k1</span></a> <a class="idref" href="mathcomp.algebra.vector.html#d9efbba50c128860a9ca2044461c6235"><span class="id" title="notation">*:</span></a><a class="idref" href="mathcomp.algebra.vector.html#d9efbba50c128860a9ca2044461c6235"><span class="id" title="notation">l</span></a> <a class="idref" href="mathcomp.algebra.vector.html#d9efbba50c128860a9ca2044461c6235"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.vector.html#k2"><span class="id" title="variable">k2</span></a> <a class="idref" href="mathcomp.algebra.vector.html#d9efbba50c128860a9ca2044461c6235"><span class="id" title="notation">*:</span></a><a class="idref" href="mathcomp.algebra.vector.html#d9efbba50c128860a9ca2044461c6235"><span class="id" title="notation">l</span></a> <a class="idref" href="mathcomp.algebra.vector.html#f"><span class="id" title="variable">f</span></a><a class="idref" href="mathcomp.algebra.vector.html#d9efbba50c128860a9ca2044461c6235"><span class="id" title="notation">)</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.vector.html#d9efbba50c128860a9ca2044461c6235"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.vector.html#k1"><span class="id" title="variable">k1</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#22058a36a53dac65c94ca403bc62650a"><span class="id" title="notation">×</span></a> <a class="idref" href="mathcomp.algebra.vector.html#k2"><span class="id" title="variable">k2</span></a><a class="idref" href="mathcomp.algebra.vector.html#d9efbba50c128860a9ca2044461c6235"><span class="id" title="notation">)</span></a> <a class="idref" href="mathcomp.algebra.vector.html#d9efbba50c128860a9ca2044461c6235"><span class="id" title="notation">*:</span></a><a class="idref" href="mathcomp.algebra.vector.html#d9efbba50c128860a9ca2044461c6235"><span class="id" title="notation">l</span></a> <a class="idref" href="mathcomp.algebra.vector.html#f"><span class="id" title="variable">f</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Fact</span> <a name="lfun_scale1"><span class="id" title="lemma">lfun_scale1</span></a> <span class="id" title="var">f</span> : 1 <a class="idref" href="mathcomp.algebra.vector.html#d9efbba50c128860a9ca2044461c6235"><span class="id" title="notation">*:</span></a><a class="idref" href="mathcomp.algebra.vector.html#d9efbba50c128860a9ca2044461c6235"><span class="id" title="notation">l</span></a> <a class="idref" href="mathcomp.algebra.vector.html#f"><span class="id" title="variable">f</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.vector.html#f"><span class="id" title="variable">f</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Fact</span> <a name="lfun_scaleDr"><span class="id" title="lemma">lfun_scaleDr</span></a> <span class="id" title="var">k</span> <span class="id" title="var">f1</span> <span class="id" title="var">f2</span> : <a class="idref" href="mathcomp.algebra.vector.html#k"><span class="id" title="variable">k</span></a> <a class="idref" href="mathcomp.algebra.vector.html#d9efbba50c128860a9ca2044461c6235"><span class="id" title="notation">*:</span></a><a class="idref" href="mathcomp.algebra.vector.html#d9efbba50c128860a9ca2044461c6235"><span class="id" title="notation">l</span></a> <a class="idref" href="mathcomp.algebra.vector.html#d9efbba50c128860a9ca2044461c6235"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.vector.html#f1"><span class="id" title="variable">f1</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#ae4d81913e6239182a9ac7467ffde8cd"><span class="id" title="notation">+</span></a> <a class="idref" href="mathcomp.algebra.vector.html#f2"><span class="id" title="variable">f2</span></a><a class="idref" href="mathcomp.algebra.vector.html#d9efbba50c128860a9ca2044461c6235"><span class="id" title="notation">)</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.vector.html#k"><span class="id" title="variable">k</span></a> <a class="idref" href="mathcomp.algebra.vector.html#d9efbba50c128860a9ca2044461c6235"><span class="id" title="notation">*:</span></a><a class="idref" href="mathcomp.algebra.vector.html#d9efbba50c128860a9ca2044461c6235"><span class="id" title="notation">l</span></a> <a class="idref" href="mathcomp.algebra.vector.html#f1"><span class="id" title="variable">f1</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#ae4d81913e6239182a9ac7467ffde8cd"><span class="id" title="notation">+</span></a> <a class="idref" href="mathcomp.algebra.vector.html#k"><span class="id" title="variable">k</span></a> <a class="idref" href="mathcomp.algebra.vector.html#d9efbba50c128860a9ca2044461c6235"><span class="id" title="notation">*:</span></a><a class="idref" href="mathcomp.algebra.vector.html#d9efbba50c128860a9ca2044461c6235"><span class="id" title="notation">l</span></a> <a class="idref" href="mathcomp.algebra.vector.html#f2"><span class="id" title="variable">f2</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Fact</span> <a name="lfun_scaleDl"><span class="id" title="lemma">lfun_scaleDl</span></a> <span class="id" title="var">f</span> <span class="id" title="var">k1</span> <span class="id" title="var">k2</span> : <a class="idref" href="mathcomp.algebra.vector.html#d9efbba50c128860a9ca2044461c6235"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.vector.html#k1"><span class="id" title="variable">k1</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#ae4d81913e6239182a9ac7467ffde8cd"><span class="id" title="notation">+</span></a> <a class="idref" href="mathcomp.algebra.vector.html#k2"><span class="id" title="variable">k2</span></a><a class="idref" href="mathcomp.algebra.vector.html#d9efbba50c128860a9ca2044461c6235"><span class="id" title="notation">)</span></a> <a class="idref" href="mathcomp.algebra.vector.html#d9efbba50c128860a9ca2044461c6235"><span class="id" title="notation">*:</span></a><a class="idref" href="mathcomp.algebra.vector.html#d9efbba50c128860a9ca2044461c6235"><span class="id" title="notation">l</span></a> <a class="idref" href="mathcomp.algebra.vector.html#f"><span class="id" title="variable">f</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.vector.html#k1"><span class="id" title="variable">k1</span></a> <a class="idref" href="mathcomp.algebra.vector.html#d9efbba50c128860a9ca2044461c6235"><span class="id" title="notation">*:</span></a><a class="idref" href="mathcomp.algebra.vector.html#d9efbba50c128860a9ca2044461c6235"><span class="id" title="notation">l</span></a> <a class="idref" href="mathcomp.algebra.vector.html#f"><span class="id" title="variable">f</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#ae4d81913e6239182a9ac7467ffde8cd"><span class="id" title="notation">+</span></a> <a class="idref" href="mathcomp.algebra.vector.html#k2"><span class="id" title="variable">k2</span></a> <a class="idref" href="mathcomp.algebra.vector.html#d9efbba50c128860a9ca2044461c6235"><span class="id" title="notation">*:</span></a><a class="idref" href="mathcomp.algebra.vector.html#d9efbba50c128860a9ca2044461c6235"><span class="id" title="notation">l</span></a> <a class="idref" href="mathcomp.algebra.vector.html#f"><span class="id" title="variable">f</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Definition</span> <a name="lfun_lmodMixin"><span class="id" title="definition">lfun_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.vector.html#lfun_scaleA"><span class="id" title="lemma">lfun_scaleA</span></a> <a class="idref" href="mathcomp.algebra.vector.html#lfun_scale1"><span class="id" title="lemma">lfun_scale1</span></a> <a class="idref" href="mathcomp.algebra.vector.html#lfun_scaleDr"><span class="id" title="lemma">lfun_scaleDr</span></a> <a class="idref" href="mathcomp.algebra.vector.html#lfun_scaleDl"><span class="id" title="lemma">lfun_scaleDl</span></a>.<br/> +<span class="id" title="keyword">Canonical</span> <span class="id" title="var">lfun_lmodType</span> := <span class="id" title="keyword">Eval</span> <span class="id" title="tactic">hnf</span> <span class="id" title="tactic">in</span> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Lmodule.Exports.LmodType"><span class="id" title="abbreviation">LmodType</span></a> <a class="idref" href="mathcomp.algebra.vector.html#LfunVectType.R"><span class="id" title="variable">R</span></a> <a class="idref" href="mathcomp.algebra.vector.html#83f0032a38b59483260ed68e0d6a1c56"><span class="id" title="notation">'</span></a><a class="idref" href="mathcomp.algebra.vector.html#83f0032a38b59483260ed68e0d6a1c56"><span class="id" title="notation">Hom</span></a><a class="idref" href="mathcomp.algebra.vector.html#83f0032a38b59483260ed68e0d6a1c56"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.vector.html#LfunVectType.aT"><span class="id" title="variable">aT</span></a><a class="idref" href="mathcomp.algebra.vector.html#83f0032a38b59483260ed68e0d6a1c56"><span class="id" title="notation">,</span></a> <a class="idref" href="mathcomp.algebra.vector.html#LfunVectType.rT"><span class="id" title="variable">rT</span></a><a class="idref" href="mathcomp.algebra.vector.html#83f0032a38b59483260ed68e0d6a1c56"><span class="id" title="notation">)</span></a> <a class="idref" href="mathcomp.algebra.vector.html#lfun_lmodMixin"><span class="id" title="definition">lfun_lmodMixin</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="scale_lfunE"><span class="id" title="lemma">scale_lfunE</span></a> <span class="id" title="var">k</span> <span class="id" title="var">f</span> <span class="id" title="var">x</span> : (<a class="idref" href="mathcomp.algebra.vector.html#k"><span class="id" title="variable">k</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#81f8078534dcbb7e13a32d292f766525"><span class="id" title="notation">*:</span></a> <a class="idref" href="mathcomp.algebra.vector.html#f"><span class="id" title="variable">f</span></a>) <a class="idref" href="mathcomp.algebra.vector.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.vector.html#k"><span class="id" title="variable">k</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#81f8078534dcbb7e13a32d292f766525"><span class="id" title="notation">*:</span></a> <a class="idref" href="mathcomp.algebra.vector.html#f"><span class="id" title="variable">f</span></a> <a class="idref" href="mathcomp.algebra.vector.html#x"><span class="id" title="variable">x</span></a>. <br/> + +<br/> +</div> + +<div class="doc"> + GG: exists (Vector.Hom \o vec_mx) fails in the proof below in 8.3, + probably because of incomplete type unification. Will it work in 8.4? +</div> +<div class="code"> +<span class="id" title="keyword">Fact</span> <a name="lfun_vect_iso"><span class="id" title="lemma">lfun_vect_iso</span></a> : <a class="idref" href="mathcomp.algebra.vector.html#axiom"><span class="id" title="abbreviation">Vector.axiom</span></a> (<a class="idref" href="mathcomp.algebra.vector.html#dim"><span class="id" title="definition">Vector.dim</span></a> <a class="idref" href="mathcomp.algebra.vector.html#LfunVectType.aT"><span class="id" title="variable">aT</span></a> <a class="idref" href="mathcomp.ssreflect.ssrnat.html#697e4695610f677ae98a52af81f779d2"><span class="id" title="notation">×</span></a> <a class="idref" href="mathcomp.algebra.vector.html#dim"><span class="id" title="definition">Vector.dim</span></a> <a class="idref" href="mathcomp.algebra.vector.html#LfunVectType.rT"><span class="id" title="variable">rT</span></a>) <a class="idref" href="mathcomp.algebra.vector.html#83f0032a38b59483260ed68e0d6a1c56"><span class="id" title="notation">'</span></a><a class="idref" href="mathcomp.algebra.vector.html#83f0032a38b59483260ed68e0d6a1c56"><span class="id" title="notation">Hom</span></a><a class="idref" href="mathcomp.algebra.vector.html#83f0032a38b59483260ed68e0d6a1c56"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.vector.html#LfunVectType.aT"><span class="id" title="variable">aT</span></a><a class="idref" href="mathcomp.algebra.vector.html#83f0032a38b59483260ed68e0d6a1c56"><span class="id" title="notation">,</span></a> <a class="idref" href="mathcomp.algebra.vector.html#LfunVectType.rT"><span class="id" title="variable">rT</span></a><a class="idref" href="mathcomp.algebra.vector.html#83f0032a38b59483260ed68e0d6a1c56"><span class="id" title="notation">)</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Definition</span> <a name="lfun_vectMixin"><span class="id" title="definition">lfun_vectMixin</span></a> := <a class="idref" href="mathcomp.algebra.vector.html#VectMixin"><span class="id" title="abbreviation">VectMixin</span></a> <a class="idref" href="mathcomp.algebra.vector.html#lfun_vect_iso"><span class="id" title="lemma">lfun_vect_iso</span></a>.<br/> +<span class="id" title="keyword">Canonical</span> <span class="id" title="var">lfun_vectType</span> := <a class="idref" href="mathcomp.algebra.vector.html#VectType"><span class="id" title="abbreviation">VectType</span></a> <a class="idref" href="mathcomp.algebra.vector.html#LfunVectType.R"><span class="id" title="variable">R</span></a> <a class="idref" href="mathcomp.algebra.vector.html#83f0032a38b59483260ed68e0d6a1c56"><span class="id" title="notation">'</span></a><a class="idref" href="mathcomp.algebra.vector.html#83f0032a38b59483260ed68e0d6a1c56"><span class="id" title="notation">Hom</span></a><a class="idref" href="mathcomp.algebra.vector.html#83f0032a38b59483260ed68e0d6a1c56"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.vector.html#LfunVectType.aT"><span class="id" title="variable">aT</span></a><a class="idref" href="mathcomp.algebra.vector.html#83f0032a38b59483260ed68e0d6a1c56"><span class="id" title="notation">,</span></a> <a class="idref" href="mathcomp.algebra.vector.html#LfunVectType.rT"><span class="id" title="variable">rT</span></a><a class="idref" href="mathcomp.algebra.vector.html#83f0032a38b59483260ed68e0d6a1c56"><span class="id" title="notation">)</span></a> <a class="idref" href="mathcomp.algebra.vector.html#lfun_vectMixin"><span class="id" title="definition">lfun_vectMixin</span></a>.<br/> + +<br/> +<span class="id" title="keyword">End</span> <a class="idref" href="mathcomp.algebra.vector.html#LfunVectType"><span class="id" title="section">LfunVectType</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Section</span> <a name="CompLfun"><span class="id" title="section">CompLfun</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Variables</span> (<a name="CompLfun.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="CompLfun.wT"><span class="id" title="variable">wT</span></a> <a name="CompLfun.aT"><span class="id" title="variable">aT</span></a> <a name="CompLfun.vT"><span class="id" title="variable">vT</span></a> <a name="CompLfun.rT"><span class="id" title="variable">rT</span></a> : <a class="idref" href="mathcomp.algebra.vector.html#vectType"><span class="id" title="abbreviation">vectType</span></a> <a class="idref" href="mathcomp.algebra.vector.html#R"><span class="id" title="variable">R</span></a>).<br/> +<span class="id" title="keyword">Implicit</span> <span class="id" title="keyword">Types</span> (<span class="id" title="var">f</span> : <a class="idref" href="mathcomp.algebra.vector.html#83f0032a38b59483260ed68e0d6a1c56"><span class="id" title="notation">'</span></a><a class="idref" href="mathcomp.algebra.vector.html#83f0032a38b59483260ed68e0d6a1c56"><span class="id" title="notation">Hom</span></a><a class="idref" href="mathcomp.algebra.vector.html#83f0032a38b59483260ed68e0d6a1c56"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.vector.html#CompLfun.vT"><span class="id" title="variable">vT</span></a><a class="idref" href="mathcomp.algebra.vector.html#83f0032a38b59483260ed68e0d6a1c56"><span class="id" title="notation">,</span></a> <a class="idref" href="mathcomp.algebra.vector.html#CompLfun.rT"><span class="id" title="variable">rT</span></a><a class="idref" href="mathcomp.algebra.vector.html#83f0032a38b59483260ed68e0d6a1c56"><span class="id" title="notation">)</span></a>) (<span class="id" title="var">g</span> : <a class="idref" href="mathcomp.algebra.vector.html#83f0032a38b59483260ed68e0d6a1c56"><span class="id" title="notation">'</span></a><a class="idref" href="mathcomp.algebra.vector.html#83f0032a38b59483260ed68e0d6a1c56"><span class="id" title="notation">Hom</span></a><a class="idref" href="mathcomp.algebra.vector.html#83f0032a38b59483260ed68e0d6a1c56"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.vector.html#CompLfun.aT"><span class="id" title="variable">aT</span></a><a class="idref" href="mathcomp.algebra.vector.html#83f0032a38b59483260ed68e0d6a1c56"><span class="id" title="notation">,</span></a> <a class="idref" href="mathcomp.algebra.vector.html#CompLfun.vT"><span class="id" title="variable">vT</span></a><a class="idref" href="mathcomp.algebra.vector.html#83f0032a38b59483260ed68e0d6a1c56"><span class="id" title="notation">)</span></a>) (<span class="id" title="var">h</span> : <a class="idref" href="mathcomp.algebra.vector.html#83f0032a38b59483260ed68e0d6a1c56"><span class="id" title="notation">'</span></a><a class="idref" href="mathcomp.algebra.vector.html#83f0032a38b59483260ed68e0d6a1c56"><span class="id" title="notation">Hom</span></a><a class="idref" href="mathcomp.algebra.vector.html#83f0032a38b59483260ed68e0d6a1c56"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.vector.html#CompLfun.wT"><span class="id" title="variable">wT</span></a><a class="idref" href="mathcomp.algebra.vector.html#83f0032a38b59483260ed68e0d6a1c56"><span class="id" title="notation">,</span></a> <a class="idref" href="mathcomp.algebra.vector.html#CompLfun.aT"><span class="id" title="variable">aT</span></a><a class="idref" href="mathcomp.algebra.vector.html#83f0032a38b59483260ed68e0d6a1c56"><span class="id" title="notation">)</span></a>).<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="id_lfunE"><span class="id" title="lemma">id_lfunE</span></a> <span class="id" title="var">u</span>: <a class="idref" href="mathcomp.algebra.vector.html#9c5859a8d2fadc014a07818a2f27d0e9"><span class="id" title="notation">\1</span></a>%<span class="id" title="var">VF</span> <a class="idref" href="mathcomp.algebra.vector.html#u"><span class="id" title="variable">u</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#8f9364556521ebb498093f28eea2240f"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.vector.html#u"><span class="id" title="variable">u</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#8f9364556521ebb498093f28eea2240f"><span class="id" title="notation">:></span></a> <a class="idref" href="mathcomp.algebra.vector.html#CompLfun.aT"><span class="id" title="variable">aT</span></a>. <br/> +<span class="id" title="keyword">Lemma</span> <a name="comp_lfunE"><span class="id" title="lemma">comp_lfunE</span></a> <span class="id" title="var">f</span> <span class="id" title="var">g</span> <span class="id" title="var">u</span> : (<a class="idref" href="mathcomp.algebra.vector.html#f"><span class="id" title="variable">f</span></a> <a class="idref" href="mathcomp.algebra.vector.html#9ad88b19a9e5558beda973c77ca474da"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.algebra.vector.html#9ad88b19a9e5558beda973c77ca474da"><span class="id" title="notation">o</span></a> <a class="idref" href="mathcomp.algebra.vector.html#g"><span class="id" title="variable">g</span></a>)%<span class="id" title="var">VF</span> <a class="idref" href="mathcomp.algebra.vector.html#u"><span class="id" title="variable">u</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.vector.html#f"><span class="id" title="variable">f</span></a> (<a class="idref" href="mathcomp.algebra.vector.html#g"><span class="id" title="variable">g</span></a> <a class="idref" href="mathcomp.algebra.vector.html#u"><span class="id" title="variable">u</span></a>). <br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="comp_lfunA"><span class="id" title="lemma">comp_lfunA</span></a> <span class="id" title="var">f</span> <span class="id" title="var">g</span> <span class="id" title="var">h</span> : (<a class="idref" href="mathcomp.algebra.vector.html#f"><span class="id" title="variable">f</span></a> <a class="idref" href="mathcomp.algebra.vector.html#9ad88b19a9e5558beda973c77ca474da"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.algebra.vector.html#9ad88b19a9e5558beda973c77ca474da"><span class="id" title="notation">o</span></a> <a class="idref" href="mathcomp.algebra.vector.html#9ad88b19a9e5558beda973c77ca474da"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.vector.html#g"><span class="id" title="variable">g</span></a> <a class="idref" href="mathcomp.algebra.vector.html#9ad88b19a9e5558beda973c77ca474da"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.algebra.vector.html#9ad88b19a9e5558beda973c77ca474da"><span class="id" title="notation">o</span></a> <a class="idref" href="mathcomp.algebra.vector.html#h"><span class="id" title="variable">h</span></a><a class="idref" href="mathcomp.algebra.vector.html#9ad88b19a9e5558beda973c77ca474da"><span class="id" title="notation">)</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.vector.html#9ad88b19a9e5558beda973c77ca474da"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.vector.html#f"><span class="id" title="variable">f</span></a> <a class="idref" href="mathcomp.algebra.vector.html#9ad88b19a9e5558beda973c77ca474da"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.algebra.vector.html#9ad88b19a9e5558beda973c77ca474da"><span class="id" title="notation">o</span></a> <a class="idref" href="mathcomp.algebra.vector.html#g"><span class="id" title="variable">g</span></a><a class="idref" href="mathcomp.algebra.vector.html#9ad88b19a9e5558beda973c77ca474da"><span class="id" title="notation">)</span></a> <a class="idref" href="mathcomp.algebra.vector.html#9ad88b19a9e5558beda973c77ca474da"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.algebra.vector.html#9ad88b19a9e5558beda973c77ca474da"><span class="id" title="notation">o</span></a> <a class="idref" href="mathcomp.algebra.vector.html#h"><span class="id" title="variable">h</span></a>)%<span class="id" title="var">VF</span>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="comp_lfun1l"><span class="id" title="lemma">comp_lfun1l</span></a> <span class="id" title="var">f</span> : (<a class="idref" href="mathcomp.algebra.vector.html#9c5859a8d2fadc014a07818a2f27d0e9"><span class="id" title="notation">\1</span></a> <a class="idref" href="mathcomp.algebra.vector.html#9ad88b19a9e5558beda973c77ca474da"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.algebra.vector.html#9ad88b19a9e5558beda973c77ca474da"><span class="id" title="notation">o</span></a> <a class="idref" href="mathcomp.algebra.vector.html#f"><span class="id" title="variable">f</span></a>)%<span class="id" title="var">VF</span> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.vector.html#f"><span class="id" title="variable">f</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="comp_lfun1r"><span class="id" title="lemma">comp_lfun1r</span></a> <span class="id" title="var">f</span> : (<a class="idref" href="mathcomp.algebra.vector.html#f"><span class="id" title="variable">f</span></a> <a class="idref" href="mathcomp.algebra.vector.html#9ad88b19a9e5558beda973c77ca474da"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.algebra.vector.html#9ad88b19a9e5558beda973c77ca474da"><span class="id" title="notation">o</span></a> <a class="idref" href="mathcomp.algebra.vector.html#9c5859a8d2fadc014a07818a2f27d0e9"><span class="id" title="notation">\1</span></a>)%<span class="id" title="var">VF</span> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.vector.html#f"><span class="id" title="variable">f</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="comp_lfun0l"><span class="id" title="lemma">comp_lfun0l</span></a> <span class="id" title="var">g</span> : (0 <a class="idref" href="mathcomp.algebra.vector.html#9ad88b19a9e5558beda973c77ca474da"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.algebra.vector.html#9ad88b19a9e5558beda973c77ca474da"><span class="id" title="notation">o</span></a> <a class="idref" href="mathcomp.algebra.vector.html#g"><span class="id" title="variable">g</span></a>)%<span class="id" title="var">VF</span> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#8f9364556521ebb498093f28eea2240f"><span class="id" title="notation">=</span></a> 0 <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#8f9364556521ebb498093f28eea2240f"><span class="id" title="notation">:></span></a> <a class="idref" href="mathcomp.algebra.vector.html#83f0032a38b59483260ed68e0d6a1c56"><span class="id" title="notation">'</span></a><a class="idref" href="mathcomp.algebra.vector.html#83f0032a38b59483260ed68e0d6a1c56"><span class="id" title="notation">Hom</span></a><a class="idref" href="mathcomp.algebra.vector.html#83f0032a38b59483260ed68e0d6a1c56"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.vector.html#CompLfun.aT"><span class="id" title="variable">aT</span></a><a class="idref" href="mathcomp.algebra.vector.html#83f0032a38b59483260ed68e0d6a1c56"><span class="id" title="notation">,</span></a> <a class="idref" href="mathcomp.algebra.vector.html#CompLfun.rT"><span class="id" title="variable">rT</span></a><a class="idref" href="mathcomp.algebra.vector.html#83f0032a38b59483260ed68e0d6a1c56"><span class="id" title="notation">)</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="comp_lfun0r"><span class="id" title="lemma">comp_lfun0r</span></a> <span class="id" title="var">f</span> : (<a class="idref" href="mathcomp.algebra.vector.html#f"><span class="id" title="variable">f</span></a> <a class="idref" href="mathcomp.algebra.vector.html#9ad88b19a9e5558beda973c77ca474da"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.algebra.vector.html#9ad88b19a9e5558beda973c77ca474da"><span class="id" title="notation">o</span></a> 0)%<span class="id" title="var">VF</span> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#8f9364556521ebb498093f28eea2240f"><span class="id" title="notation">=</span></a> 0 <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#8f9364556521ebb498093f28eea2240f"><span class="id" title="notation">:></span></a> <a class="idref" href="mathcomp.algebra.vector.html#83f0032a38b59483260ed68e0d6a1c56"><span class="id" title="notation">'</span></a><a class="idref" href="mathcomp.algebra.vector.html#83f0032a38b59483260ed68e0d6a1c56"><span class="id" title="notation">Hom</span></a><a class="idref" href="mathcomp.algebra.vector.html#83f0032a38b59483260ed68e0d6a1c56"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.vector.html#CompLfun.aT"><span class="id" title="variable">aT</span></a><a class="idref" href="mathcomp.algebra.vector.html#83f0032a38b59483260ed68e0d6a1c56"><span class="id" title="notation">,</span></a> <a class="idref" href="mathcomp.algebra.vector.html#CompLfun.rT"><span class="id" title="variable">rT</span></a><a class="idref" href="mathcomp.algebra.vector.html#83f0032a38b59483260ed68e0d6a1c56"><span class="id" title="notation">)</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="comp_lfunDl"><span class="id" title="lemma">comp_lfunDl</span></a> <span class="id" title="var">f1</span> <span class="id" title="var">f2</span> <span class="id" title="var">g</span> : (<a class="idref" href="mathcomp.algebra.vector.html#9ad88b19a9e5558beda973c77ca474da"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.vector.html#f1"><span class="id" title="variable">f1</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#ae4d81913e6239182a9ac7467ffde8cd"><span class="id" title="notation">+</span></a> <a class="idref" href="mathcomp.algebra.vector.html#f2"><span class="id" title="variable">f2</span></a><a class="idref" href="mathcomp.algebra.vector.html#9ad88b19a9e5558beda973c77ca474da"><span class="id" title="notation">)</span></a> <a class="idref" href="mathcomp.algebra.vector.html#9ad88b19a9e5558beda973c77ca474da"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.algebra.vector.html#9ad88b19a9e5558beda973c77ca474da"><span class="id" title="notation">o</span></a> <a class="idref" href="mathcomp.algebra.vector.html#g"><span class="id" title="variable">g</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#ae4d81913e6239182a9ac7467ffde8cd"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.vector.html#f1"><span class="id" title="variable">f1</span></a> <a class="idref" href="mathcomp.algebra.vector.html#9ad88b19a9e5558beda973c77ca474da"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.algebra.vector.html#9ad88b19a9e5558beda973c77ca474da"><span class="id" title="notation">o</span></a> <a class="idref" href="mathcomp.algebra.vector.html#g"><span class="id" title="variable">g</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#ae4d81913e6239182a9ac7467ffde8cd"><span class="id" title="notation">)</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#ae4d81913e6239182a9ac7467ffde8cd"><span class="id" title="notation">+</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#ae4d81913e6239182a9ac7467ffde8cd"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.vector.html#f2"><span class="id" title="variable">f2</span></a> <a class="idref" href="mathcomp.algebra.vector.html#9ad88b19a9e5558beda973c77ca474da"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.algebra.vector.html#9ad88b19a9e5558beda973c77ca474da"><span class="id" title="notation">o</span></a> <a class="idref" href="mathcomp.algebra.vector.html#g"><span class="id" title="variable">g</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#ae4d81913e6239182a9ac7467ffde8cd"><span class="id" title="notation">)</span></a>)%<span class="id" title="var">VF</span>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="comp_lfunDr"><span class="id" title="lemma">comp_lfunDr</span></a> <span class="id" title="var">f</span> <span class="id" title="var">g1</span> <span class="id" title="var">g2</span> : (<a class="idref" href="mathcomp.algebra.vector.html#f"><span class="id" title="variable">f</span></a> <a class="idref" href="mathcomp.algebra.vector.html#9ad88b19a9e5558beda973c77ca474da"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.algebra.vector.html#9ad88b19a9e5558beda973c77ca474da"><span class="id" title="notation">o</span></a> <a class="idref" href="mathcomp.algebra.vector.html#9ad88b19a9e5558beda973c77ca474da"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.vector.html#g1"><span class="id" title="variable">g1</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#ae4d81913e6239182a9ac7467ffde8cd"><span class="id" title="notation">+</span></a> <a class="idref" href="mathcomp.algebra.vector.html#g2"><span class="id" title="variable">g2</span></a><a class="idref" href="mathcomp.algebra.vector.html#9ad88b19a9e5558beda973c77ca474da"><span class="id" title="notation">)</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#ae4d81913e6239182a9ac7467ffde8cd"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.vector.html#f"><span class="id" title="variable">f</span></a> <a class="idref" href="mathcomp.algebra.vector.html#9ad88b19a9e5558beda973c77ca474da"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.algebra.vector.html#9ad88b19a9e5558beda973c77ca474da"><span class="id" title="notation">o</span></a> <a class="idref" href="mathcomp.algebra.vector.html#g1"><span class="id" title="variable">g1</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#ae4d81913e6239182a9ac7467ffde8cd"><span class="id" title="notation">)</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#ae4d81913e6239182a9ac7467ffde8cd"><span class="id" title="notation">+</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#ae4d81913e6239182a9ac7467ffde8cd"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.vector.html#f"><span class="id" title="variable">f</span></a> <a class="idref" href="mathcomp.algebra.vector.html#9ad88b19a9e5558beda973c77ca474da"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.algebra.vector.html#9ad88b19a9e5558beda973c77ca474da"><span class="id" title="notation">o</span></a> <a class="idref" href="mathcomp.algebra.vector.html#g2"><span class="id" title="variable">g2</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#ae4d81913e6239182a9ac7467ffde8cd"><span class="id" title="notation">)</span></a>)%<span class="id" title="var">VF</span>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="comp_lfunNl"><span class="id" title="lemma">comp_lfunNl</span></a> <span class="id" title="var">f</span> <span class="id" title="var">g</span> : (<a class="idref" href="mathcomp.algebra.vector.html#9ad88b19a9e5558beda973c77ca474da"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#941c6d086004545bd62614d0213e75e5"><span class="id" title="notation">-</span></a> <a class="idref" href="mathcomp.algebra.vector.html#f"><span class="id" title="variable">f</span></a><a class="idref" href="mathcomp.algebra.vector.html#9ad88b19a9e5558beda973c77ca474da"><span class="id" title="notation">)</span></a> <a class="idref" href="mathcomp.algebra.vector.html#9ad88b19a9e5558beda973c77ca474da"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.algebra.vector.html#9ad88b19a9e5558beda973c77ca474da"><span class="id" title="notation">o</span></a> <a class="idref" href="mathcomp.algebra.vector.html#g"><span class="id" title="variable">g</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#941c6d086004545bd62614d0213e75e5"><span class="id" title="notation">-</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#941c6d086004545bd62614d0213e75e5"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.vector.html#f"><span class="id" title="variable">f</span></a> <a class="idref" href="mathcomp.algebra.vector.html#9ad88b19a9e5558beda973c77ca474da"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.algebra.vector.html#9ad88b19a9e5558beda973c77ca474da"><span class="id" title="notation">o</span></a> <a class="idref" href="mathcomp.algebra.vector.html#g"><span class="id" title="variable">g</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#941c6d086004545bd62614d0213e75e5"><span class="id" title="notation">)</span></a>)%<span class="id" title="var">VF</span>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="comp_lfunNr"><span class="id" title="lemma">comp_lfunNr</span></a> <span class="id" title="var">f</span> <span class="id" title="var">g</span> : (<a class="idref" href="mathcomp.algebra.vector.html#f"><span class="id" title="variable">f</span></a> <a class="idref" href="mathcomp.algebra.vector.html#9ad88b19a9e5558beda973c77ca474da"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.algebra.vector.html#9ad88b19a9e5558beda973c77ca474da"><span class="id" title="notation">o</span></a> <a class="idref" href="mathcomp.algebra.vector.html#9ad88b19a9e5558beda973c77ca474da"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#941c6d086004545bd62614d0213e75e5"><span class="id" title="notation">-</span></a> <a class="idref" href="mathcomp.algebra.vector.html#g"><span class="id" title="variable">g</span></a><a class="idref" href="mathcomp.algebra.vector.html#9ad88b19a9e5558beda973c77ca474da"><span class="id" title="notation">)</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#941c6d086004545bd62614d0213e75e5"><span class="id" title="notation">-</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#941c6d086004545bd62614d0213e75e5"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.vector.html#f"><span class="id" title="variable">f</span></a> <a class="idref" href="mathcomp.algebra.vector.html#9ad88b19a9e5558beda973c77ca474da"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.algebra.vector.html#9ad88b19a9e5558beda973c77ca474da"><span class="id" title="notation">o</span></a> <a class="idref" href="mathcomp.algebra.vector.html#g"><span class="id" title="variable">g</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#941c6d086004545bd62614d0213e75e5"><span class="id" title="notation">)</span></a>)%<span class="id" title="var">VF</span>.<br/> + +<br/> +<span class="id" title="keyword">End</span> <a class="idref" href="mathcomp.algebra.vector.html#CompLfun"><span class="id" title="section">CompLfun</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Definition</span> <a name="lfun_simp"><span class="id" title="definition">lfun_simp</span></a> :=<br/> + <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#44400027531d4bc3f586a1997dc874c0"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.vector.html#comp_lfunE"><span class="id" title="lemma">comp_lfunE</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#44400027531d4bc3f586a1997dc874c0"><span class="id" title="notation">,</span></a> <a class="idref" href="mathcomp.algebra.vector.html#scale_lfunE"><span class="id" title="lemma">scale_lfunE</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#44400027531d4bc3f586a1997dc874c0"><span class="id" title="notation">,</span></a> <a class="idref" href="mathcomp.algebra.vector.html#opp_lfunE"><span class="id" title="lemma">opp_lfunE</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#44400027531d4bc3f586a1997dc874c0"><span class="id" title="notation">,</span></a> <a class="idref" href="mathcomp.algebra.vector.html#add_lfunE"><span class="id" title="lemma">add_lfunE</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#44400027531d4bc3f586a1997dc874c0"><span class="id" title="notation">,</span></a> <a class="idref" href="mathcomp.algebra.vector.html#sum_lfunE"><span class="id" title="lemma">sum_lfunE</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#44400027531d4bc3f586a1997dc874c0"><span class="id" title="notation">,</span></a> <a class="idref" href="mathcomp.algebra.vector.html#lfunE"><span class="id" title="lemma">lfunE</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#44400027531d4bc3f586a1997dc874c0"><span class="id" title="notation">)</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Section</span> <a name="ScaleCompLfun"><span class="id" title="section">ScaleCompLfun</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Variables</span> (<a name="ScaleCompLfun.R"><span class="id" title="variable">R</span></a> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ComRing.Exports.comRingType"><span class="id" title="abbreviation">comRingType</span></a>) (<a name="ScaleCompLfun.aT"><span class="id" title="variable">aT</span></a> <a name="ScaleCompLfun.vT"><span class="id" title="variable">vT</span></a> <a name="ScaleCompLfun.rT"><span class="id" title="variable">rT</span></a> : <a class="idref" href="mathcomp.algebra.vector.html#vectType"><span class="id" title="abbreviation">vectType</span></a> <a class="idref" href="mathcomp.algebra.vector.html#R"><span class="id" title="variable">R</span></a>).<br/> +<span class="id" title="keyword">Implicit</span> <span class="id" title="keyword">Types</span> (<span class="id" title="var">f</span> : <a class="idref" href="mathcomp.algebra.vector.html#83f0032a38b59483260ed68e0d6a1c56"><span class="id" title="notation">'</span></a><a class="idref" href="mathcomp.algebra.vector.html#83f0032a38b59483260ed68e0d6a1c56"><span class="id" title="notation">Hom</span></a><a class="idref" href="mathcomp.algebra.vector.html#83f0032a38b59483260ed68e0d6a1c56"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.vector.html#ScaleCompLfun.vT"><span class="id" title="variable">vT</span></a><a class="idref" href="mathcomp.algebra.vector.html#83f0032a38b59483260ed68e0d6a1c56"><span class="id" title="notation">,</span></a> <a class="idref" href="mathcomp.algebra.vector.html#ScaleCompLfun.rT"><span class="id" title="variable">rT</span></a><a class="idref" href="mathcomp.algebra.vector.html#83f0032a38b59483260ed68e0d6a1c56"><span class="id" title="notation">)</span></a>) (<span class="id" title="var">g</span> : <a class="idref" href="mathcomp.algebra.vector.html#83f0032a38b59483260ed68e0d6a1c56"><span class="id" title="notation">'</span></a><a class="idref" href="mathcomp.algebra.vector.html#83f0032a38b59483260ed68e0d6a1c56"><span class="id" title="notation">Hom</span></a><a class="idref" href="mathcomp.algebra.vector.html#83f0032a38b59483260ed68e0d6a1c56"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.vector.html#ScaleCompLfun.aT"><span class="id" title="variable">aT</span></a><a class="idref" href="mathcomp.algebra.vector.html#83f0032a38b59483260ed68e0d6a1c56"><span class="id" title="notation">,</span></a> <a class="idref" href="mathcomp.algebra.vector.html#ScaleCompLfun.vT"><span class="id" title="variable">vT</span></a><a class="idref" href="mathcomp.algebra.vector.html#83f0032a38b59483260ed68e0d6a1c56"><span class="id" title="notation">)</span></a>).<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="comp_lfunZl"><span class="id" title="lemma">comp_lfunZl</span></a> <span class="id" title="var">k</span> <span class="id" title="var">f</span> <span class="id" title="var">g</span> : (<a class="idref" href="mathcomp.algebra.vector.html#k"><span class="id" title="variable">k</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#81f8078534dcbb7e13a32d292f766525"><span class="id" title="notation">*:</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#81f8078534dcbb7e13a32d292f766525"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.vector.html#f"><span class="id" title="variable">f</span></a> <a class="idref" href="mathcomp.algebra.vector.html#9ad88b19a9e5558beda973c77ca474da"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.algebra.vector.html#9ad88b19a9e5558beda973c77ca474da"><span class="id" title="notation">o</span></a> <a class="idref" href="mathcomp.algebra.vector.html#g"><span class="id" title="variable">g</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#81f8078534dcbb7e13a32d292f766525"><span class="id" title="notation">)</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.vector.html#9ad88b19a9e5558beda973c77ca474da"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.vector.html#k"><span class="id" title="variable">k</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#81f8078534dcbb7e13a32d292f766525"><span class="id" title="notation">*:</span></a> <a class="idref" href="mathcomp.algebra.vector.html#f"><span class="id" title="variable">f</span></a><a class="idref" href="mathcomp.algebra.vector.html#9ad88b19a9e5558beda973c77ca474da"><span class="id" title="notation">)</span></a> <a class="idref" href="mathcomp.algebra.vector.html#9ad88b19a9e5558beda973c77ca474da"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.algebra.vector.html#9ad88b19a9e5558beda973c77ca474da"><span class="id" title="notation">o</span></a> <a class="idref" href="mathcomp.algebra.vector.html#g"><span class="id" title="variable">g</span></a>)%<span class="id" title="var">VF</span>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="comp_lfunZr"><span class="id" title="lemma">comp_lfunZr</span></a> <span class="id" title="var">k</span> <span class="id" title="var">f</span> <span class="id" title="var">g</span> : (<a class="idref" href="mathcomp.algebra.vector.html#k"><span class="id" title="variable">k</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#81f8078534dcbb7e13a32d292f766525"><span class="id" title="notation">*:</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#81f8078534dcbb7e13a32d292f766525"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.vector.html#f"><span class="id" title="variable">f</span></a> <a class="idref" href="mathcomp.algebra.vector.html#9ad88b19a9e5558beda973c77ca474da"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.algebra.vector.html#9ad88b19a9e5558beda973c77ca474da"><span class="id" title="notation">o</span></a> <a class="idref" href="mathcomp.algebra.vector.html#g"><span class="id" title="variable">g</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#81f8078534dcbb7e13a32d292f766525"><span class="id" title="notation">)</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.vector.html#f"><span class="id" title="variable">f</span></a> <a class="idref" href="mathcomp.algebra.vector.html#9ad88b19a9e5558beda973c77ca474da"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.algebra.vector.html#9ad88b19a9e5558beda973c77ca474da"><span class="id" title="notation">o</span></a> <a class="idref" href="mathcomp.algebra.vector.html#9ad88b19a9e5558beda973c77ca474da"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.vector.html#k"><span class="id" title="variable">k</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#81f8078534dcbb7e13a32d292f766525"><span class="id" title="notation">*:</span></a> <a class="idref" href="mathcomp.algebra.vector.html#g"><span class="id" title="variable">g</span></a><a class="idref" href="mathcomp.algebra.vector.html#9ad88b19a9e5558beda973c77ca474da"><span class="id" title="notation">)</span></a>)%<span class="id" title="var">VF</span>.<br/> + +<br/> +<span class="id" title="keyword">End</span> <a class="idref" href="mathcomp.algebra.vector.html#ScaleCompLfun"><span class="id" title="section">ScaleCompLfun</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Section</span> <a name="LinearImage"><span class="id" title="section">LinearImage</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Variables</span> (<a name="LinearImage.K"><span class="id" title="variable">K</span></a> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Field.Exports.fieldType"><span class="id" title="abbreviation">fieldType</span></a>) (<a name="LinearImage.aT"><span class="id" title="variable">aT</span></a> <a name="LinearImage.rT"><span class="id" title="variable">rT</span></a> : <a class="idref" href="mathcomp.algebra.vector.html#vectType"><span class="id" title="abbreviation">vectType</span></a> <a class="idref" href="mathcomp.algebra.vector.html#K"><span class="id" title="variable">K</span></a>).<br/> +<span class="id" title="keyword">Implicit</span> <span class="id" title="keyword">Types</span> (<span class="id" title="var">f</span> <span class="id" title="var">g</span> : <a class="idref" href="mathcomp.algebra.vector.html#83f0032a38b59483260ed68e0d6a1c56"><span class="id" title="notation">'</span></a><a class="idref" href="mathcomp.algebra.vector.html#83f0032a38b59483260ed68e0d6a1c56"><span class="id" title="notation">Hom</span></a><a class="idref" href="mathcomp.algebra.vector.html#83f0032a38b59483260ed68e0d6a1c56"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.vector.html#LinearImage.aT"><span class="id" title="variable">aT</span></a><a class="idref" href="mathcomp.algebra.vector.html#83f0032a38b59483260ed68e0d6a1c56"><span class="id" title="notation">,</span></a> <a class="idref" href="mathcomp.algebra.vector.html#LinearImage.rT"><span class="id" title="variable">rT</span></a><a class="idref" href="mathcomp.algebra.vector.html#83f0032a38b59483260ed68e0d6a1c56"><span class="id" title="notation">)</span></a>) (<span class="id" title="var">U</span> <span class="id" title="var">V</span> : <a class="idref" href="mathcomp.algebra.vector.html#ca0a177f6d6581a7f5199987cd7ee21c"><span class="id" title="notation">{</span></a><a class="idref" href="mathcomp.algebra.vector.html#ca0a177f6d6581a7f5199987cd7ee21c"><span class="id" title="notation">vspace</span></a> <a class="idref" href="mathcomp.algebra.vector.html#LinearImage.aT"><span class="id" title="variable">aT</span></a><a class="idref" href="mathcomp.algebra.vector.html#ca0a177f6d6581a7f5199987cd7ee21c"><span class="id" title="notation">}</span></a>) (<span class="id" title="var">W</span> : <a class="idref" href="mathcomp.algebra.vector.html#ca0a177f6d6581a7f5199987cd7ee21c"><span class="id" title="notation">{</span></a><a class="idref" href="mathcomp.algebra.vector.html#ca0a177f6d6581a7f5199987cd7ee21c"><span class="id" title="notation">vspace</span></a> <a class="idref" href="mathcomp.algebra.vector.html#LinearImage.rT"><span class="id" title="variable">rT</span></a><a class="idref" href="mathcomp.algebra.vector.html#ca0a177f6d6581a7f5199987cd7ee21c"><span class="id" title="notation">}</span></a>).<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="limgS"><span class="id" title="lemma">limgS</span></a> <span class="id" title="var">f</span> <span class="id" title="var">U</span> <span class="id" title="var">V</span> : (<a class="idref" href="mathcomp.algebra.vector.html#U"><span class="id" title="variable">U</span></a> <a class="idref" href="mathcomp.algebra.vector.html#755d11a7d5629bce3486e7cbadc915e7"><span class="id" title="notation">≤</span></a> <a class="idref" href="mathcomp.algebra.vector.html#V"><span class="id" title="variable">V</span></a>)%<span class="id" title="var">VS</span> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> (<a class="idref" href="mathcomp.algebra.vector.html#f"><span class="id" title="variable">f</span></a> <a class="idref" href="mathcomp.algebra.vector.html#b5958714d039bb581a8e5ca988944568"><span class="id" title="notation">@:</span></a> <a class="idref" href="mathcomp.algebra.vector.html#U"><span class="id" title="variable">U</span></a> <a class="idref" href="mathcomp.algebra.vector.html#755d11a7d5629bce3486e7cbadc915e7"><span class="id" title="notation">≤</span></a> <a class="idref" href="mathcomp.algebra.vector.html#f"><span class="id" title="variable">f</span></a> <a class="idref" href="mathcomp.algebra.vector.html#b5958714d039bb581a8e5ca988944568"><span class="id" title="notation">@:</span></a> <a class="idref" href="mathcomp.algebra.vector.html#V"><span class="id" title="variable">V</span></a>)%<span class="id" title="var">VS</span>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="limg_line"><span class="id" title="lemma">limg_line</span></a> <span class="id" title="var">f</span> <span class="id" title="var">v</span> : (<a class="idref" href="mathcomp.algebra.vector.html#f"><span class="id" title="variable">f</span></a> <a class="idref" href="mathcomp.algebra.vector.html#b5958714d039bb581a8e5ca988944568"><span class="id" title="notation">@:</span></a> <a class="idref" href="mathcomp.algebra.vector.html#c7e74c229bedc2f20e80f4f2f96cee78"><span class="id" title="notation"><[</span></a><a class="idref" href="mathcomp.algebra.vector.html#v"><span class="id" title="variable">v</span></a><a class="idref" href="mathcomp.algebra.vector.html#c7e74c229bedc2f20e80f4f2f96cee78"><span class="id" title="notation">]></span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.vector.html#c7e74c229bedc2f20e80f4f2f96cee78"><span class="id" title="notation"><[</span></a><a class="idref" href="mathcomp.algebra.vector.html#f"><span class="id" title="variable">f</span></a> <a class="idref" href="mathcomp.algebra.vector.html#v"><span class="id" title="variable">v</span></a><a class="idref" href="mathcomp.algebra.vector.html#c7e74c229bedc2f20e80f4f2f96cee78"><span class="id" title="notation">]></span></a>)%<span class="id" title="var">VS</span>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="limg0"><span class="id" title="lemma">limg0</span></a> <span class="id" title="var">f</span> : (<a class="idref" href="mathcomp.algebra.vector.html#f"><span class="id" title="variable">f</span></a> <a class="idref" href="mathcomp.algebra.vector.html#b5958714d039bb581a8e5ca988944568"><span class="id" title="notation">@:</span></a> 0 <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> 0)%<span class="id" title="var">VS</span>. <br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="memv_img"><span class="id" title="lemma">memv_img</span></a> <span class="id" title="var">f</span> <span class="id" title="var">v</span> <span class="id" title="var">U</span> : <a class="idref" href="mathcomp.algebra.vector.html#v"><span class="id" title="variable">v</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">\</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">in</span></a> <a class="idref" href="mathcomp.algebra.vector.html#U"><span class="id" title="variable">U</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.vector.html#f"><span class="id" title="variable">f</span></a> <a class="idref" href="mathcomp.algebra.vector.html#v"><span class="id" title="variable">v</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">\</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">in</span></a> (<a class="idref" href="mathcomp.algebra.vector.html#f"><span class="id" title="variable">f</span></a> <a class="idref" href="mathcomp.algebra.vector.html#b5958714d039bb581a8e5ca988944568"><span class="id" title="notation">@:</span></a> <a class="idref" href="mathcomp.algebra.vector.html#U"><span class="id" title="variable">U</span></a>)%<span class="id" title="var">VS</span>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="memv_imgP"><span class="id" title="lemma">memv_imgP</span></a> <span class="id" title="var">f</span> <span class="id" title="var">w</span> <span class="id" title="var">U</span> :<br/> + <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#reflect"><span class="id" title="abbreviation">reflect</span></a> (<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#28b18e493f7cb0bd8447607bdc385ff8"><span class="id" title="notation">exists2</span></a> <span class="id" title="var">u</span><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#28b18e493f7cb0bd8447607bdc385ff8"><span class="id" title="notation">,</span></a> <a class="idref" href="mathcomp.algebra.vector.html#u"><span class="id" title="variable">u</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">\</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">in</span></a> <a class="idref" href="mathcomp.algebra.vector.html#U"><span class="id" title="variable">U</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#28b18e493f7cb0bd8447607bdc385ff8"><span class="id" title="notation">&</span></a> <a class="idref" href="mathcomp.algebra.vector.html#w"><span class="id" title="variable">w</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.vector.html#f"><span class="id" title="variable">f</span></a> <a class="idref" href="mathcomp.algebra.vector.html#u"><span class="id" title="variable">u</span></a>) (<a class="idref" href="mathcomp.algebra.vector.html#w"><span class="id" title="variable">w</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">\</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">in</span></a> <a class="idref" href="mathcomp.algebra.vector.html#f"><span class="id" title="variable">f</span></a> <a class="idref" href="mathcomp.algebra.vector.html#b5958714d039bb581a8e5ca988944568"><span class="id" title="notation">@:</span></a> <a class="idref" href="mathcomp.algebra.vector.html#U"><span class="id" title="variable">U</span></a>)%<span class="id" title="var">VS</span>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="lim0g"><span class="id" title="lemma">lim0g</span></a> <span class="id" title="var">U</span> : (0 <a class="idref" href="mathcomp.algebra.vector.html#b5958714d039bb581a8e5ca988944568"><span class="id" title="notation">@:</span></a> <a class="idref" href="mathcomp.algebra.vector.html#U"><span class="id" title="variable">U</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#8f9364556521ebb498093f28eea2240f"><span class="id" title="notation">=</span></a> 0 <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#8f9364556521ebb498093f28eea2240f"><span class="id" title="notation">:></span></a> <a class="idref" href="mathcomp.algebra.vector.html#ca0a177f6d6581a7f5199987cd7ee21c"><span class="id" title="notation">{</span></a><a class="idref" href="mathcomp.algebra.vector.html#ca0a177f6d6581a7f5199987cd7ee21c"><span class="id" title="notation">vspace</span></a> <a class="idref" href="mathcomp.algebra.vector.html#LinearImage.rT"><span class="id" title="variable">rT</span></a><a class="idref" href="mathcomp.algebra.vector.html#ca0a177f6d6581a7f5199987cd7ee21c"><span class="id" title="notation">}</span></a>)%<span class="id" title="var">VS</span>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="eq_in_limg"><span class="id" title="lemma">eq_in_limg</span></a> <span class="id" title="var">V</span> <span class="id" title="var">f</span> <span class="id" title="var">g</span> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#5c59b35a0b51db520cf1fba473ecf127"><span class="id" title="notation">{</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#5c59b35a0b51db520cf1fba473ecf127"><span class="id" title="notation">in</span></a> <a class="idref" href="mathcomp.algebra.vector.html#V"><span class="id" title="variable">V</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#5c59b35a0b51db520cf1fba473ecf127"><span class="id" title="notation">,</span></a> <a class="idref" href="mathcomp.algebra.vector.html#f"><span class="id" title="variable">f</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#2500d48ed8e862ccfda98a44dff88963"><span class="id" title="notation">=1</span></a> <a class="idref" href="mathcomp.algebra.vector.html#g"><span class="id" title="variable">g</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#5c59b35a0b51db520cf1fba473ecf127"><span class="id" title="notation">}</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> (<a class="idref" href="mathcomp.algebra.vector.html#f"><span class="id" title="variable">f</span></a> <a class="idref" href="mathcomp.algebra.vector.html#b5958714d039bb581a8e5ca988944568"><span class="id" title="notation">@:</span></a> <a class="idref" href="mathcomp.algebra.vector.html#V"><span class="id" title="variable">V</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.vector.html#g"><span class="id" title="variable">g</span></a> <a class="idref" href="mathcomp.algebra.vector.html#b5958714d039bb581a8e5ca988944568"><span class="id" title="notation">@:</span></a> <a class="idref" href="mathcomp.algebra.vector.html#V"><span class="id" title="variable">V</span></a>)%<span class="id" title="var">VS</span>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="limg_add"><span class="id" title="lemma">limg_add</span></a> <span class="id" title="var">f</span> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#3014e73af2a90fd800d8681479d76336"><span class="id" title="notation">{</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#3014e73af2a90fd800d8681479d76336"><span class="id" title="notation">morph</span></a> <a class="idref" href="mathcomp.algebra.vector.html#lfun_img"><span class="id" title="definition">lfun_img</span></a> <a class="idref" href="mathcomp.algebra.vector.html#f"><span class="id" title="variable">f</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#3014e73af2a90fd800d8681479d76336"><span class="id" title="notation">:</span></a> <span class="id" title="var">U</span> <span class="id" title="var">V</span> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#3014e73af2a90fd800d8681479d76336"><span class="id" title="notation">/</span></a> <a class="idref" href="mathcomp.algebra.vector.html#U"><span class="id" title="variable">U</span></a> <a class="idref" href="mathcomp.algebra.vector.html#706deac9766015ea164a28957c46a7b4"><span class="id" title="notation">+</span></a> <a class="idref" href="mathcomp.algebra.vector.html#V"><span class="id" title="variable">V</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#3014e73af2a90fd800d8681479d76336"><span class="id" title="notation">}</span></a>%<span class="id" title="var">VS</span>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="limg_sum"><span class="id" title="lemma">limg_sum</span></a> <span class="id" title="var">f</span> <span class="id" title="var">I</span> <span class="id" title="var">r</span> (<span class="id" title="var">P</span> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#pred"><span class="id" title="definition">pred</span></a> <a class="idref" href="mathcomp.algebra.vector.html#I"><span class="id" title="variable">I</span></a>) <span class="id" title="var">Us</span> :<br/> + (<a class="idref" href="mathcomp.algebra.vector.html#f"><span class="id" title="variable">f</span></a> <a class="idref" href="mathcomp.algebra.vector.html#b5958714d039bb581a8e5ca988944568"><span class="id" title="notation">@:</span></a> <a class="idref" href="mathcomp.algebra.vector.html#b5958714d039bb581a8e5ca988944568"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.vector.html#ab83237670c8eecadafc9524ff9fc50e"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.algebra.vector.html#ab83237670c8eecadafc9524ff9fc50e"><span class="id" title="notation">sum_</span></a><a class="idref" href="mathcomp.algebra.vector.html#ab83237670c8eecadafc9524ff9fc50e"><span class="id" title="notation">(</span></a><span class="id" title="var">i</span> <a class="idref" href="mathcomp.algebra.vector.html#ab83237670c8eecadafc9524ff9fc50e"><span class="id" title="notation"><-</span></a> <a class="idref" href="mathcomp.algebra.vector.html#r"><span class="id" title="variable">r</span></a> <a class="idref" href="mathcomp.algebra.vector.html#ab83237670c8eecadafc9524ff9fc50e"><span class="id" title="notation">|</span></a> <a class="idref" href="mathcomp.algebra.vector.html#P"><span class="id" title="variable">P</span></a> <a class="idref" href="mathcomp.algebra.vector.html#i"><span class="id" title="variable">i</span></a><a class="idref" href="mathcomp.algebra.vector.html#ab83237670c8eecadafc9524ff9fc50e"><span class="id" title="notation">)</span></a> <a class="idref" href="mathcomp.algebra.vector.html#Us"><span class="id" title="variable">Us</span></a> <a class="idref" href="mathcomp.algebra.vector.html#i"><span class="id" title="variable">i</span></a><a class="idref" href="mathcomp.algebra.vector.html#b5958714d039bb581a8e5ca988944568"><span class="id" title="notation">)</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.vector.html#ab83237670c8eecadafc9524ff9fc50e"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.algebra.vector.html#ab83237670c8eecadafc9524ff9fc50e"><span class="id" title="notation">sum_</span></a><a class="idref" href="mathcomp.algebra.vector.html#ab83237670c8eecadafc9524ff9fc50e"><span class="id" title="notation">(</span></a><span class="id" title="var">i</span> <a class="idref" href="mathcomp.algebra.vector.html#ab83237670c8eecadafc9524ff9fc50e"><span class="id" title="notation"><-</span></a> <a class="idref" href="mathcomp.algebra.vector.html#r"><span class="id" title="variable">r</span></a> <a class="idref" href="mathcomp.algebra.vector.html#ab83237670c8eecadafc9524ff9fc50e"><span class="id" title="notation">|</span></a> <a class="idref" href="mathcomp.algebra.vector.html#P"><span class="id" title="variable">P</span></a> <a class="idref" href="mathcomp.algebra.vector.html#i"><span class="id" title="variable">i</span></a><a class="idref" href="mathcomp.algebra.vector.html#ab83237670c8eecadafc9524ff9fc50e"><span class="id" title="notation">)</span></a> <a class="idref" href="mathcomp.algebra.vector.html#f"><span class="id" title="variable">f</span></a> <a class="idref" href="mathcomp.algebra.vector.html#b5958714d039bb581a8e5ca988944568"><span class="id" title="notation">@:</span></a> <a class="idref" href="mathcomp.algebra.vector.html#Us"><span class="id" title="variable">Us</span></a> <a class="idref" href="mathcomp.algebra.vector.html#i"><span class="id" title="variable">i</span></a>)%<span class="id" title="var">VS</span>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="limg_cap"><span class="id" title="lemma">limg_cap</span></a> <span class="id" title="var">f</span> <span class="id" title="var">U</span> <span class="id" title="var">V</span> : (<a class="idref" href="mathcomp.algebra.vector.html#f"><span class="id" title="variable">f</span></a> <a class="idref" href="mathcomp.algebra.vector.html#b5958714d039bb581a8e5ca988944568"><span class="id" title="notation">@:</span></a> <a class="idref" href="mathcomp.algebra.vector.html#b5958714d039bb581a8e5ca988944568"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.vector.html#U"><span class="id" title="variable">U</span></a> <a class="idref" href="mathcomp.algebra.vector.html#585f47de65e0d6c6ecedb971203eafab"><span class="id" title="notation">:&:</span></a> <a class="idref" href="mathcomp.algebra.vector.html#V"><span class="id" title="variable">V</span></a><a class="idref" href="mathcomp.algebra.vector.html#b5958714d039bb581a8e5ca988944568"><span class="id" title="notation">)</span></a> <a class="idref" href="mathcomp.algebra.vector.html#755d11a7d5629bce3486e7cbadc915e7"><span class="id" title="notation">≤</span></a> <a class="idref" href="mathcomp.algebra.vector.html#f"><span class="id" title="variable">f</span></a> <a class="idref" href="mathcomp.algebra.vector.html#b5958714d039bb581a8e5ca988944568"><span class="id" title="notation">@:</span></a> <a class="idref" href="mathcomp.algebra.vector.html#U"><span class="id" title="variable">U</span></a> <a class="idref" href="mathcomp.algebra.vector.html#585f47de65e0d6c6ecedb971203eafab"><span class="id" title="notation">:&:</span></a> <a class="idref" href="mathcomp.algebra.vector.html#f"><span class="id" title="variable">f</span></a> <a class="idref" href="mathcomp.algebra.vector.html#b5958714d039bb581a8e5ca988944568"><span class="id" title="notation">@:</span></a> <a class="idref" href="mathcomp.algebra.vector.html#V"><span class="id" title="variable">V</span></a>)%<span class="id" title="var">VS</span>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="limg_bigcap"><span class="id" title="lemma">limg_bigcap</span></a> <span class="id" title="var">f</span> <span class="id" title="var">I</span> <span class="id" title="var">r</span> (<span class="id" title="var">P</span> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#pred"><span class="id" title="definition">pred</span></a> <a class="idref" href="mathcomp.algebra.vector.html#I"><span class="id" title="variable">I</span></a>) <span class="id" title="var">Us</span> :<br/> + (<a class="idref" href="mathcomp.algebra.vector.html#f"><span class="id" title="variable">f</span></a> <a class="idref" href="mathcomp.algebra.vector.html#b5958714d039bb581a8e5ca988944568"><span class="id" title="notation">@:</span></a> <a class="idref" href="mathcomp.algebra.vector.html#b5958714d039bb581a8e5ca988944568"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.vector.html#3c22b9be9efec34a36f75983de9297bd"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.algebra.vector.html#3c22b9be9efec34a36f75983de9297bd"><span class="id" title="notation">bigcap_</span></a><a class="idref" href="mathcomp.algebra.vector.html#3c22b9be9efec34a36f75983de9297bd"><span class="id" title="notation">(</span></a><span class="id" title="var">i</span> <a class="idref" href="mathcomp.algebra.vector.html#3c22b9be9efec34a36f75983de9297bd"><span class="id" title="notation"><-</span></a> <a class="idref" href="mathcomp.algebra.vector.html#r"><span class="id" title="variable">r</span></a> <a class="idref" href="mathcomp.algebra.vector.html#3c22b9be9efec34a36f75983de9297bd"><span class="id" title="notation">|</span></a> <a class="idref" href="mathcomp.algebra.vector.html#P"><span class="id" title="variable">P</span></a> <a class="idref" href="mathcomp.algebra.vector.html#i"><span class="id" title="variable">i</span></a><a class="idref" href="mathcomp.algebra.vector.html#3c22b9be9efec34a36f75983de9297bd"><span class="id" title="notation">)</span></a> <a class="idref" href="mathcomp.algebra.vector.html#Us"><span class="id" title="variable">Us</span></a> <a class="idref" href="mathcomp.algebra.vector.html#i"><span class="id" title="variable">i</span></a><a class="idref" href="mathcomp.algebra.vector.html#b5958714d039bb581a8e5ca988944568"><span class="id" title="notation">)</span></a> <a class="idref" href="mathcomp.algebra.vector.html#755d11a7d5629bce3486e7cbadc915e7"><span class="id" title="notation">≤</span></a> <a class="idref" href="mathcomp.algebra.vector.html#3c22b9be9efec34a36f75983de9297bd"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.algebra.vector.html#3c22b9be9efec34a36f75983de9297bd"><span class="id" title="notation">bigcap_</span></a><a class="idref" href="mathcomp.algebra.vector.html#3c22b9be9efec34a36f75983de9297bd"><span class="id" title="notation">(</span></a><span class="id" title="var">i</span> <a class="idref" href="mathcomp.algebra.vector.html#3c22b9be9efec34a36f75983de9297bd"><span class="id" title="notation"><-</span></a> <a class="idref" href="mathcomp.algebra.vector.html#r"><span class="id" title="variable">r</span></a> <a class="idref" href="mathcomp.algebra.vector.html#3c22b9be9efec34a36f75983de9297bd"><span class="id" title="notation">|</span></a> <a class="idref" href="mathcomp.algebra.vector.html#P"><span class="id" title="variable">P</span></a> <a class="idref" href="mathcomp.algebra.vector.html#i"><span class="id" title="variable">i</span></a><a class="idref" href="mathcomp.algebra.vector.html#3c22b9be9efec34a36f75983de9297bd"><span class="id" title="notation">)</span></a> <a class="idref" href="mathcomp.algebra.vector.html#f"><span class="id" title="variable">f</span></a> <a class="idref" href="mathcomp.algebra.vector.html#b5958714d039bb581a8e5ca988944568"><span class="id" title="notation">@:</span></a> <a class="idref" href="mathcomp.algebra.vector.html#Us"><span class="id" title="variable">Us</span></a> <a class="idref" href="mathcomp.algebra.vector.html#i"><span class="id" title="variable">i</span></a>)%<span class="id" title="var">VS</span>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="limg_span"><span class="id" title="lemma">limg_span</span></a> <span class="id" title="var">f</span> <span class="id" title="var">X</span> : (<a class="idref" href="mathcomp.algebra.vector.html#f"><span class="id" title="variable">f</span></a> <a class="idref" href="mathcomp.algebra.vector.html#b5958714d039bb581a8e5ca988944568"><span class="id" title="notation">@:</span></a> <a class="idref" href="mathcomp.algebra.vector.html#dd838ef568fa7ae0628a7427a23d7215"><span class="id" title="notation"><<</span></a><a class="idref" href="mathcomp.algebra.vector.html#X"><span class="id" title="variable">X</span></a><a class="idref" href="mathcomp.algebra.vector.html#dd838ef568fa7ae0628a7427a23d7215"><span class="id" title="notation">>></span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.vector.html#dd838ef568fa7ae0628a7427a23d7215"><span class="id" title="notation"><<</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.vector.html#f"><span class="id" title="variable">f</span></a> <a class="idref" href="mathcomp.algebra.vector.html#X"><span class="id" title="variable">X</span></a><a class="idref" href="mathcomp.algebra.vector.html#dd838ef568fa7ae0628a7427a23d7215"><span class="id" title="notation">>></span></a>)%<span class="id" title="var">VS</span>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="lfunPn"><span class="id" title="lemma">lfunPn</span></a> <span class="id" title="var">f</span> <span class="id" title="var">g</span> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#reflect"><span class="id" title="abbreviation">reflect</span></a> (<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#84eb6d2849dbf3581b1c0c05add5f2d8"><span class="id" title="notation">∃</span></a> <span class="id" title="var">u</span><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#84eb6d2849dbf3581b1c0c05add5f2d8"><span class="id" title="notation">,</span></a> <a class="idref" href="mathcomp.algebra.vector.html#f"><span class="id" title="variable">f</span></a> <a class="idref" href="mathcomp.algebra.vector.html#u"><span class="id" title="variable">u</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#b1eeadc2feabc7422252baa895418c7b"><span class="id" title="notation">!=</span></a> <a class="idref" href="mathcomp.algebra.vector.html#g"><span class="id" title="variable">g</span></a> <a class="idref" href="mathcomp.algebra.vector.html#u"><span class="id" title="variable">u</span></a>) (<a class="idref" href="mathcomp.algebra.vector.html#f"><span class="id" title="variable">f</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#b1eeadc2feabc7422252baa895418c7b"><span class="id" title="notation">!=</span></a> <a class="idref" href="mathcomp.algebra.vector.html#g"><span class="id" title="variable">g</span></a>).<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="inv_lfun_def"><span class="id" title="lemma">inv_lfun_def</span></a> <span class="id" title="var">f</span> : (<a class="idref" href="mathcomp.algebra.vector.html#f"><span class="id" title="variable">f</span></a> <a class="idref" href="mathcomp.algebra.vector.html#9ad88b19a9e5558beda973c77ca474da"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.algebra.vector.html#9ad88b19a9e5558beda973c77ca474da"><span class="id" title="notation">o</span></a> <a class="idref" href="mathcomp.algebra.vector.html#f"><span class="id" title="variable">f</span></a><a class="idref" href="mathcomp.algebra.vector.html#517f88b2f002b4e1dbd5bb3edaded374"><span class="id" title="notation">^-1</span></a> <a class="idref" href="mathcomp.algebra.vector.html#9ad88b19a9e5558beda973c77ca474da"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.algebra.vector.html#9ad88b19a9e5558beda973c77ca474da"><span class="id" title="notation">o</span></a> <a class="idref" href="mathcomp.algebra.vector.html#f"><span class="id" title="variable">f</span></a>)%<span class="id" title="var">VF</span> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.vector.html#f"><span class="id" title="variable">f</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="limg_lfunVK"><span class="id" title="lemma">limg_lfunVK</span></a> <span class="id" title="var">f</span> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#5c59b35a0b51db520cf1fba473ecf127"><span class="id" title="notation">{</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#5c59b35a0b51db520cf1fba473ecf127"><span class="id" title="notation">in</span></a> <a class="idref" href="mathcomp.algebra.vector.html#limg"><span class="id" title="abbreviation">limg</span></a> <a class="idref" href="mathcomp.algebra.vector.html#f"><span class="id" title="variable">f</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#5c59b35a0b51db520cf1fba473ecf127"><span class="id" title="notation">,</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#cancel"><span class="id" title="definition">cancel</span></a> <a class="idref" href="mathcomp.algebra.vector.html#f"><span class="id" title="variable">f</span></a><a class="idref" href="mathcomp.algebra.vector.html#517f88b2f002b4e1dbd5bb3edaded374"><span class="id" title="notation">^-1</span></a>%<span class="id" title="var">VF</span> <a class="idref" href="mathcomp.algebra.vector.html#f"><span class="id" title="variable">f</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#5c59b35a0b51db520cf1fba473ecf127"><span class="id" title="notation">}</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="lkerE"><span class="id" title="lemma">lkerE</span></a> <span class="id" title="var">f</span> <span class="id" title="var">U</span> : (<a class="idref" href="mathcomp.algebra.vector.html#U"><span class="id" title="variable">U</span></a> <a class="idref" href="mathcomp.algebra.vector.html#755d11a7d5629bce3486e7cbadc915e7"><span class="id" title="notation">≤</span></a> <a class="idref" href="mathcomp.algebra.vector.html#lker"><span class="id" title="definition">lker</span></a> <a class="idref" href="mathcomp.algebra.vector.html#f"><span class="id" title="variable">f</span></a>)%<span class="id" title="var">VS</span> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> (<a class="idref" href="mathcomp.algebra.vector.html#f"><span class="id" title="variable">f</span></a> <a class="idref" href="mathcomp.algebra.vector.html#b5958714d039bb581a8e5ca988944568"><span class="id" title="notation">@:</span></a> <a class="idref" href="mathcomp.algebra.vector.html#U"><span class="id" title="variable">U</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#17d28d004d0863cb022d4ce832ddaaae"><span class="id" title="notation">==</span></a> 0)%<span class="id" title="var">VS</span>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="memv_ker"><span class="id" title="lemma">memv_ker</span></a> <span class="id" title="var">f</span> <span class="id" title="var">v</span> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.vector.html#v"><span class="id" title="variable">v</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">\</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">in</span></a> <a class="idref" href="mathcomp.algebra.vector.html#lker"><span class="id" title="definition">lker</span></a> <a class="idref" href="mathcomp.algebra.vector.html#f"><span class="id" title="variable">f</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">)</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.vector.html#f"><span class="id" title="variable">f</span></a> <a class="idref" href="mathcomp.algebra.vector.html#v"><span class="id" title="variable">v</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#17d28d004d0863cb022d4ce832ddaaae"><span class="id" title="notation">==</span></a> 0<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">)</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="eqlfunP"><span class="id" title="lemma">eqlfunP</span></a> <span class="id" title="var">f</span> <span class="id" title="var">g</span> <span class="id" title="var">v</span> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#reflect"><span class="id" title="abbreviation">reflect</span></a> (<a class="idref" href="mathcomp.algebra.vector.html#f"><span class="id" title="variable">f</span></a> <a class="idref" href="mathcomp.algebra.vector.html#v"><span class="id" title="variable">v</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.vector.html#g"><span class="id" title="variable">g</span></a> <a class="idref" href="mathcomp.algebra.vector.html#v"><span class="id" title="variable">v</span></a>) (<a class="idref" href="mathcomp.algebra.vector.html#v"><span class="id" title="variable">v</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">\</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">in</span></a> <a class="idref" href="mathcomp.algebra.vector.html#lker"><span class="id" title="definition">lker</span></a> (<a class="idref" href="mathcomp.algebra.vector.html#f"><span class="id" title="variable">f</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#d70623330b2787db6b196e37db7d8f45"><span class="id" title="notation">-</span></a> <a class="idref" href="mathcomp.algebra.vector.html#g"><span class="id" title="variable">g</span></a>)).<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="eqlfun_inP"><span class="id" title="lemma">eqlfun_inP</span></a> <span class="id" title="var">V</span> <span class="id" title="var">f</span> <span class="id" title="var">g</span> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#reflect"><span class="id" title="abbreviation">reflect</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#5c59b35a0b51db520cf1fba473ecf127"><span class="id" title="notation">{</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#5c59b35a0b51db520cf1fba473ecf127"><span class="id" title="notation">in</span></a> <a class="idref" href="mathcomp.algebra.vector.html#V"><span class="id" title="variable">V</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#5c59b35a0b51db520cf1fba473ecf127"><span class="id" title="notation">,</span></a> <a class="idref" href="mathcomp.algebra.vector.html#f"><span class="id" title="variable">f</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#2500d48ed8e862ccfda98a44dff88963"><span class="id" title="notation">=1</span></a> <a class="idref" href="mathcomp.algebra.vector.html#g"><span class="id" title="variable">g</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#5c59b35a0b51db520cf1fba473ecf127"><span class="id" title="notation">}</span></a> (<a class="idref" href="mathcomp.algebra.vector.html#V"><span class="id" title="variable">V</span></a> <a class="idref" href="mathcomp.algebra.vector.html#755d11a7d5629bce3486e7cbadc915e7"><span class="id" title="notation">≤</span></a> <a class="idref" href="mathcomp.algebra.vector.html#lker"><span class="id" title="definition">lker</span></a> (<a class="idref" href="mathcomp.algebra.vector.html#f"><span class="id" title="variable">f</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#d70623330b2787db6b196e37db7d8f45"><span class="id" title="notation">-</span></a> <a class="idref" href="mathcomp.algebra.vector.html#g"><span class="id" title="variable">g</span></a>))%<span class="id" title="var">VS</span>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="limg_ker_compl"><span class="id" title="lemma">limg_ker_compl</span></a> <span class="id" title="var">f</span> <span class="id" title="var">U</span> : (<a class="idref" href="mathcomp.algebra.vector.html#f"><span class="id" title="variable">f</span></a> <a class="idref" href="mathcomp.algebra.vector.html#b5958714d039bb581a8e5ca988944568"><span class="id" title="notation">@:</span></a> <a class="idref" href="mathcomp.algebra.vector.html#b5958714d039bb581a8e5ca988944568"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.vector.html#U"><span class="id" title="variable">U</span></a> <a class="idref" href="mathcomp.algebra.vector.html#946bddca9671fead9ed6e5aece130780"><span class="id" title="notation">:\:</span></a> <a class="idref" href="mathcomp.algebra.vector.html#lker"><span class="id" title="definition">lker</span></a> <a class="idref" href="mathcomp.algebra.vector.html#f"><span class="id" title="variable">f</span></a><a class="idref" href="mathcomp.algebra.vector.html#b5958714d039bb581a8e5ca988944568"><span class="id" title="notation">)</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.vector.html#f"><span class="id" title="variable">f</span></a> <a class="idref" href="mathcomp.algebra.vector.html#b5958714d039bb581a8e5ca988944568"><span class="id" title="notation">@:</span></a> <a class="idref" href="mathcomp.algebra.vector.html#U"><span class="id" title="variable">U</span></a>)%<span class="id" title="var">VS</span>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="limg_ker_dim"><span class="id" title="lemma">limg_ker_dim</span></a> <span class="id" title="var">f</span> <span class="id" title="var">U</span> : (<a class="idref" href="mathcomp.algebra.vector.html#ee35a6780ccd60155a3be89dcb5fdb30"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.algebra.vector.html#ee35a6780ccd60155a3be89dcb5fdb30"><span class="id" title="notation">dim</span></a> <a class="idref" href="mathcomp.algebra.vector.html#ee35a6780ccd60155a3be89dcb5fdb30"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.vector.html#U"><span class="id" title="variable">U</span></a> <a class="idref" href="mathcomp.algebra.vector.html#585f47de65e0d6c6ecedb971203eafab"><span class="id" title="notation">:&:</span></a> <a class="idref" href="mathcomp.algebra.vector.html#lker"><span class="id" title="definition">lker</span></a> <a class="idref" href="mathcomp.algebra.vector.html#f"><span class="id" title="variable">f</span></a><a class="idref" href="mathcomp.algebra.vector.html#ee35a6780ccd60155a3be89dcb5fdb30"><span class="id" title="notation">)</span></a> <a class="idref" href="mathcomp.ssreflect.ssrnat.html#b3eea360671e1b32b18a26e15b3aace3"><span class="id" title="notation">+</span></a> <a class="idref" href="mathcomp.algebra.vector.html#ee35a6780ccd60155a3be89dcb5fdb30"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.algebra.vector.html#ee35a6780ccd60155a3be89dcb5fdb30"><span class="id" title="notation">dim</span></a> <a class="idref" href="mathcomp.algebra.vector.html#ee35a6780ccd60155a3be89dcb5fdb30"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.vector.html#f"><span class="id" title="variable">f</span></a> <a class="idref" href="mathcomp.algebra.vector.html#b5958714d039bb581a8e5ca988944568"><span class="id" title="notation">@:</span></a> <a class="idref" href="mathcomp.algebra.vector.html#U"><span class="id" title="variable">U</span></a><a class="idref" href="mathcomp.algebra.vector.html#ee35a6780ccd60155a3be89dcb5fdb30"><span class="id" title="notation">)</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.vector.html#ee35a6780ccd60155a3be89dcb5fdb30"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.algebra.vector.html#ee35a6780ccd60155a3be89dcb5fdb30"><span class="id" title="notation">dim</span></a> <a class="idref" href="mathcomp.algebra.vector.html#U"><span class="id" title="variable">U</span></a>)%<span class="id" title="var">N</span>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="limg_dim_eq"><span class="id" title="lemma">limg_dim_eq</span></a> <span class="id" title="var">f</span> <span class="id" title="var">U</span> : (<a class="idref" href="mathcomp.algebra.vector.html#U"><span class="id" title="variable">U</span></a> <a class="idref" href="mathcomp.algebra.vector.html#585f47de65e0d6c6ecedb971203eafab"><span class="id" title="notation">:&:</span></a> <a class="idref" href="mathcomp.algebra.vector.html#lker"><span class="id" title="definition">lker</span></a> <a class="idref" href="mathcomp.algebra.vector.html#f"><span class="id" title="variable">f</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> 0)%<span class="id" title="var">VS</span> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.vector.html#ee35a6780ccd60155a3be89dcb5fdb30"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.algebra.vector.html#ee35a6780ccd60155a3be89dcb5fdb30"><span class="id" title="notation">dim</span></a> <a class="idref" href="mathcomp.algebra.vector.html#ee35a6780ccd60155a3be89dcb5fdb30"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.vector.html#f"><span class="id" title="variable">f</span></a> <a class="idref" href="mathcomp.algebra.vector.html#b5958714d039bb581a8e5ca988944568"><span class="id" title="notation">@:</span></a> <a class="idref" href="mathcomp.algebra.vector.html#U"><span class="id" title="variable">U</span></a><a class="idref" href="mathcomp.algebra.vector.html#ee35a6780ccd60155a3be89dcb5fdb30"><span class="id" title="notation">)</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.vector.html#ee35a6780ccd60155a3be89dcb5fdb30"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.algebra.vector.html#ee35a6780ccd60155a3be89dcb5fdb30"><span class="id" title="notation">dim</span></a> <a class="idref" href="mathcomp.algebra.vector.html#U"><span class="id" title="variable">U</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="limg_basis_of"><span class="id" title="lemma">limg_basis_of</span></a> <span class="id" title="var">f</span> <span class="id" title="var">U</span> <span class="id" title="var">X</span> :<br/> + (<a class="idref" href="mathcomp.algebra.vector.html#U"><span class="id" title="variable">U</span></a> <a class="idref" href="mathcomp.algebra.vector.html#585f47de65e0d6c6ecedb971203eafab"><span class="id" title="notation">:&:</span></a> <a class="idref" href="mathcomp.algebra.vector.html#lker"><span class="id" title="definition">lker</span></a> <a class="idref" href="mathcomp.algebra.vector.html#f"><span class="id" title="variable">f</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> 0)%<span class="id" title="var">VS</span> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.vector.html#basis_of"><span class="id" title="definition">basis_of</span></a> <a class="idref" href="mathcomp.algebra.vector.html#U"><span class="id" title="variable">U</span></a> <a class="idref" href="mathcomp.algebra.vector.html#X"><span class="id" title="variable">X</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.vector.html#basis_of"><span class="id" title="definition">basis_of</span></a> (<a class="idref" href="mathcomp.algebra.vector.html#f"><span class="id" title="variable">f</span></a> <a class="idref" href="mathcomp.algebra.vector.html#b5958714d039bb581a8e5ca988944568"><span class="id" title="notation">@:</span></a> <a class="idref" href="mathcomp.algebra.vector.html#U"><span class="id" title="variable">U</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.vector.html#f"><span class="id" title="variable">f</span></a> <a class="idref" href="mathcomp.algebra.vector.html#X"><span class="id" title="variable">X</span></a>).<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="lker0P"><span class="id" title="lemma">lker0P</span></a> <span class="id" title="var">f</span> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#reflect"><span class="id" title="abbreviation">reflect</span></a> (<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#injective"><span class="id" title="definition">injective</span></a> <a class="idref" href="mathcomp.algebra.vector.html#f"><span class="id" title="variable">f</span></a>) (<a class="idref" href="mathcomp.algebra.vector.html#lker"><span class="id" title="definition">lker</span></a> <a class="idref" href="mathcomp.algebra.vector.html#f"><span class="id" title="variable">f</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#17d28d004d0863cb022d4ce832ddaaae"><span class="id" title="notation">==</span></a> 0%<span class="id" title="var">VS</span>).<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="limg_ker0"><span class="id" title="lemma">limg_ker0</span></a> <span class="id" title="var">f</span> <span class="id" title="var">U</span> <span class="id" title="var">V</span> : <a class="idref" href="mathcomp.algebra.vector.html#lker"><span class="id" title="definition">lker</span></a> <a class="idref" href="mathcomp.algebra.vector.html#f"><span class="id" title="variable">f</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#17d28d004d0863cb022d4ce832ddaaae"><span class="id" title="notation">==</span></a> 0%<span class="id" title="var">VS</span> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> (<a class="idref" href="mathcomp.algebra.vector.html#f"><span class="id" title="variable">f</span></a> <a class="idref" href="mathcomp.algebra.vector.html#b5958714d039bb581a8e5ca988944568"><span class="id" title="notation">@:</span></a> <a class="idref" href="mathcomp.algebra.vector.html#U"><span class="id" title="variable">U</span></a> <a class="idref" href="mathcomp.algebra.vector.html#755d11a7d5629bce3486e7cbadc915e7"><span class="id" title="notation">≤</span></a> <a class="idref" href="mathcomp.algebra.vector.html#f"><span class="id" title="variable">f</span></a> <a class="idref" href="mathcomp.algebra.vector.html#b5958714d039bb581a8e5ca988944568"><span class="id" title="notation">@:</span></a> <a class="idref" href="mathcomp.algebra.vector.html#V"><span class="id" title="variable">V</span></a>)%<span class="id" title="var">VS</span> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> (<a class="idref" href="mathcomp.algebra.vector.html#U"><span class="id" title="variable">U</span></a> <a class="idref" href="mathcomp.algebra.vector.html#755d11a7d5629bce3486e7cbadc915e7"><span class="id" title="notation">≤</span></a> <a class="idref" href="mathcomp.algebra.vector.html#V"><span class="id" title="variable">V</span></a>)%<span class="id" title="var">VS</span>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="eq_limg_ker0"><span class="id" title="lemma">eq_limg_ker0</span></a> <span class="id" title="var">f</span> <span class="id" title="var">U</span> <span class="id" title="var">V</span> : <a class="idref" href="mathcomp.algebra.vector.html#lker"><span class="id" title="definition">lker</span></a> <a class="idref" href="mathcomp.algebra.vector.html#f"><span class="id" title="variable">f</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#17d28d004d0863cb022d4ce832ddaaae"><span class="id" title="notation">==</span></a> 0%<span class="id" title="var">VS</span> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> (<a class="idref" href="mathcomp.algebra.vector.html#f"><span class="id" title="variable">f</span></a> <a class="idref" href="mathcomp.algebra.vector.html#b5958714d039bb581a8e5ca988944568"><span class="id" title="notation">@:</span></a> <a class="idref" href="mathcomp.algebra.vector.html#U"><span class="id" title="variable">U</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#17d28d004d0863cb022d4ce832ddaaae"><span class="id" title="notation">==</span></a> <a class="idref" href="mathcomp.algebra.vector.html#f"><span class="id" title="variable">f</span></a> <a class="idref" href="mathcomp.algebra.vector.html#b5958714d039bb581a8e5ca988944568"><span class="id" title="notation">@:</span></a> <a class="idref" href="mathcomp.algebra.vector.html#V"><span class="id" title="variable">V</span></a>)%<span class="id" title="var">VS</span> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.vector.html#U"><span class="id" title="variable">U</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#17d28d004d0863cb022d4ce832ddaaae"><span class="id" title="notation">==</span></a> <a class="idref" href="mathcomp.algebra.vector.html#V"><span class="id" title="variable">V</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">)</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="lker0_lfunK"><span class="id" title="lemma">lker0_lfunK</span></a> <span class="id" title="var">f</span> : <a class="idref" href="mathcomp.algebra.vector.html#lker"><span class="id" title="definition">lker</span></a> <a class="idref" href="mathcomp.algebra.vector.html#f"><span class="id" title="variable">f</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#17d28d004d0863cb022d4ce832ddaaae"><span class="id" title="notation">==</span></a> 0%<span class="id" title="var">VS</span> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#cancel"><span class="id" title="definition">cancel</span></a> <a class="idref" href="mathcomp.algebra.vector.html#f"><span class="id" title="variable">f</span></a> <a class="idref" href="mathcomp.algebra.vector.html#f"><span class="id" title="variable">f</span></a><a class="idref" href="mathcomp.algebra.vector.html#517f88b2f002b4e1dbd5bb3edaded374"><span class="id" title="notation">^-1</span></a>%<span class="id" title="var">VF</span>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="lker0_compVf"><span class="id" title="lemma">lker0_compVf</span></a> <span class="id" title="var">f</span> : <a class="idref" href="mathcomp.algebra.vector.html#lker"><span class="id" title="definition">lker</span></a> <a class="idref" href="mathcomp.algebra.vector.html#f"><span class="id" title="variable">f</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#17d28d004d0863cb022d4ce832ddaaae"><span class="id" title="notation">==</span></a> 0%<span class="id" title="var">VS</span> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> (<a class="idref" href="mathcomp.algebra.vector.html#f"><span class="id" title="variable">f</span></a><a class="idref" href="mathcomp.algebra.vector.html#517f88b2f002b4e1dbd5bb3edaded374"><span class="id" title="notation">^-1</span></a> <a class="idref" href="mathcomp.algebra.vector.html#9ad88b19a9e5558beda973c77ca474da"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.algebra.vector.html#9ad88b19a9e5558beda973c77ca474da"><span class="id" title="notation">o</span></a> <a class="idref" href="mathcomp.algebra.vector.html#f"><span class="id" title="variable">f</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.vector.html#9c5859a8d2fadc014a07818a2f27d0e9"><span class="id" title="notation">\1</span></a>)%<span class="id" title="var">VF</span>.<br/> + +<br/> +<span class="id" title="keyword">End</span> <a class="idref" href="mathcomp.algebra.vector.html#LinearImage"><span class="id" title="section">LinearImage</span></a>.<br/> + +<br/> + +<br/> +<span class="id" title="keyword">Section</span> <a name="FixedSpace"><span class="id" title="section">FixedSpace</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Variables</span> (<a name="FixedSpace.K"><span class="id" title="variable">K</span></a> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Field.Exports.fieldType"><span class="id" title="abbreviation">fieldType</span></a>) (<a name="FixedSpace.vT"><span class="id" title="variable">vT</span></a> : <a class="idref" href="mathcomp.algebra.vector.html#vectType"><span class="id" title="abbreviation">vectType</span></a> <a class="idref" href="mathcomp.algebra.vector.html#K"><span class="id" title="variable">K</span></a>).<br/> +<span class="id" title="keyword">Implicit</span> <span class="id" title="keyword">Types</span> (<span class="id" title="var">f</span> : <a class="idref" href="mathcomp.algebra.vector.html#f2977b5d91be916157fc34deec16772c"><span class="id" title="notation">'</span></a><a class="idref" href="mathcomp.algebra.vector.html#f2977b5d91be916157fc34deec16772c"><span class="id" title="notation">End</span></a><a class="idref" href="mathcomp.algebra.vector.html#f2977b5d91be916157fc34deec16772c"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.vector.html#FixedSpace.vT"><span class="id" title="variable">vT</span></a><a class="idref" href="mathcomp.algebra.vector.html#f2977b5d91be916157fc34deec16772c"><span class="id" title="notation">)</span></a>) (<span class="id" title="var">U</span> : <a class="idref" href="mathcomp.algebra.vector.html#ca0a177f6d6581a7f5199987cd7ee21c"><span class="id" title="notation">{</span></a><a class="idref" href="mathcomp.algebra.vector.html#ca0a177f6d6581a7f5199987cd7ee21c"><span class="id" title="notation">vspace</span></a> <a class="idref" href="mathcomp.algebra.vector.html#FixedSpace.vT"><span class="id" title="variable">vT</span></a><a class="idref" href="mathcomp.algebra.vector.html#ca0a177f6d6581a7f5199987cd7ee21c"><span class="id" title="notation">}</span></a>).<br/> + +<br/> +<span class="id" title="keyword">Definition</span> <a name="fixedSpace"><span class="id" title="definition">fixedSpace</span></a> <span class="id" title="var">f</span> : <a class="idref" href="mathcomp.algebra.vector.html#ca0a177f6d6581a7f5199987cd7ee21c"><span class="id" title="notation">{</span></a><a class="idref" href="mathcomp.algebra.vector.html#ca0a177f6d6581a7f5199987cd7ee21c"><span class="id" title="notation">vspace</span></a> <a class="idref" href="mathcomp.algebra.vector.html#FixedSpace.vT"><span class="id" title="variable">vT</span></a><a class="idref" href="mathcomp.algebra.vector.html#ca0a177f6d6581a7f5199987cd7ee21c"><span class="id" title="notation">}</span></a> := <a class="idref" href="mathcomp.algebra.vector.html#lker"><span class="id" title="definition">lker</span></a> (<a class="idref" href="mathcomp.algebra.vector.html#f"><span class="id" title="variable">f</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#d70623330b2787db6b196e37db7d8f45"><span class="id" title="notation">-</span></a> <a class="idref" href="mathcomp.algebra.vector.html#9c5859a8d2fadc014a07818a2f27d0e9"><span class="id" title="notation">\1</span></a>%<span class="id" title="var">VF</span>).<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="fixedSpaceP"><span class="id" title="lemma">fixedSpaceP</span></a> <span class="id" title="var">f</span> <span class="id" title="var">a</span> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#reflect"><span class="id" title="abbreviation">reflect</span></a> (<a class="idref" href="mathcomp.algebra.vector.html#f"><span class="id" title="variable">f</span></a> <a class="idref" href="mathcomp.algebra.vector.html#a"><span class="id" title="variable">a</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.vector.html#a"><span class="id" title="variable">a</span></a>) (<a class="idref" href="mathcomp.algebra.vector.html#a"><span class="id" title="variable">a</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">\</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">in</span></a> <a class="idref" href="mathcomp.algebra.vector.html#fixedSpace"><span class="id" title="definition">fixedSpace</span></a> <a class="idref" href="mathcomp.algebra.vector.html#f"><span class="id" title="variable">f</span></a>).<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="fixedSpacesP"><span class="id" title="lemma">fixedSpacesP</span></a> <span class="id" title="var">f</span> <span class="id" title="var">U</span> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#reflect"><span class="id" title="abbreviation">reflect</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#5c59b35a0b51db520cf1fba473ecf127"><span class="id" title="notation">{</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#5c59b35a0b51db520cf1fba473ecf127"><span class="id" title="notation">in</span></a> <a class="idref" href="mathcomp.algebra.vector.html#U"><span class="id" title="variable">U</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#5c59b35a0b51db520cf1fba473ecf127"><span class="id" title="notation">,</span></a> <a class="idref" href="mathcomp.algebra.vector.html#f"><span class="id" title="variable">f</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#2500d48ed8e862ccfda98a44dff88963"><span class="id" title="notation">=1</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#id"><span class="id" title="abbreviation">id</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#5c59b35a0b51db520cf1fba473ecf127"><span class="id" title="notation">}</span></a> (<a class="idref" href="mathcomp.algebra.vector.html#U"><span class="id" title="variable">U</span></a> <a class="idref" href="mathcomp.algebra.vector.html#755d11a7d5629bce3486e7cbadc915e7"><span class="id" title="notation">≤</span></a> <a class="idref" href="mathcomp.algebra.vector.html#fixedSpace"><span class="id" title="definition">fixedSpace</span></a> <a class="idref" href="mathcomp.algebra.vector.html#f"><span class="id" title="variable">f</span></a>)%<span class="id" title="var">VS</span>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="fixedSpace_limg"><span class="id" title="lemma">fixedSpace_limg</span></a> <span class="id" title="var">f</span> <span class="id" title="var">U</span> : (<a class="idref" href="mathcomp.algebra.vector.html#U"><span class="id" title="variable">U</span></a> <a class="idref" href="mathcomp.algebra.vector.html#755d11a7d5629bce3486e7cbadc915e7"><span class="id" title="notation">≤</span></a> <a class="idref" href="mathcomp.algebra.vector.html#fixedSpace"><span class="id" title="definition">fixedSpace</span></a> <a class="idref" href="mathcomp.algebra.vector.html#f"><span class="id" title="variable">f</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.vector.html#f"><span class="id" title="variable">f</span></a> <a class="idref" href="mathcomp.algebra.vector.html#b5958714d039bb581a8e5ca988944568"><span class="id" title="notation">@:</span></a> <a class="idref" href="mathcomp.algebra.vector.html#U"><span class="id" title="variable">U</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.vector.html#U"><span class="id" title="variable">U</span></a>)%<span class="id" title="var">VS</span>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="fixedSpace_id"><span class="id" title="lemma">fixedSpace_id</span></a> : <a class="idref" href="mathcomp.algebra.vector.html#fixedSpace"><span class="id" title="definition">fixedSpace</span></a> <a class="idref" href="mathcomp.algebra.vector.html#9c5859a8d2fadc014a07818a2f27d0e9"><span class="id" title="notation">\1</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.vector.html#899a5fd19c4f3564d9757a9ac446b1dc"><span class="id" title="notation">{:</span></a><a class="idref" href="mathcomp.algebra.vector.html#FixedSpace.vT"><span class="id" title="variable">vT</span></a><a class="idref" href="mathcomp.algebra.vector.html#899a5fd19c4f3564d9757a9ac446b1dc"><span class="id" title="notation">}</span></a>%<span class="id" title="var">VS</span>.<br/> + +<br/> +<span class="id" title="keyword">End</span> <a class="idref" href="mathcomp.algebra.vector.html#FixedSpace"><span class="id" title="section">FixedSpace</span></a>.<br/> + +<br/> + +<br/> +<span class="id" title="keyword">Section</span> <a name="LinAut"><span class="id" title="section">LinAut</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Variables</span> (<a name="LinAut.K"><span class="id" title="variable">K</span></a> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Field.Exports.fieldType"><span class="id" title="abbreviation">fieldType</span></a>) (<a name="LinAut.vT"><span class="id" title="variable">vT</span></a> : <a class="idref" href="mathcomp.algebra.vector.html#vectType"><span class="id" title="abbreviation">vectType</span></a> <a class="idref" href="mathcomp.algebra.vector.html#K"><span class="id" title="variable">K</span></a>) (<a name="LinAut.f"><span class="id" title="variable">f</span></a> : <a class="idref" href="mathcomp.algebra.vector.html#f2977b5d91be916157fc34deec16772c"><span class="id" title="notation">'</span></a><a class="idref" href="mathcomp.algebra.vector.html#f2977b5d91be916157fc34deec16772c"><span class="id" title="notation">End</span></a><a class="idref" href="mathcomp.algebra.vector.html#f2977b5d91be916157fc34deec16772c"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.vector.html#vT"><span class="id" title="variable">vT</span></a><a class="idref" href="mathcomp.algebra.vector.html#f2977b5d91be916157fc34deec16772c"><span class="id" title="notation">)</span></a>).<br/> +<span class="id" title="keyword">Hypothesis</span> <a name="LinAut.kerf0"><span class="id" title="variable">kerf0</span></a> : <a class="idref" href="mathcomp.algebra.vector.html#lker"><span class="id" title="definition">lker</span></a> <a class="idref" href="mathcomp.algebra.vector.html#LinAut.f"><span class="id" title="variable">f</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#17d28d004d0863cb022d4ce832ddaaae"><span class="id" title="notation">==</span></a> 0%<span class="id" title="var">VS</span>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="lker0_limgf"><span class="id" title="lemma">lker0_limgf</span></a> : <a class="idref" href="mathcomp.algebra.vector.html#limg"><span class="id" title="abbreviation">limg</span></a> <a class="idref" href="mathcomp.algebra.vector.html#LinAut.f"><span class="id" title="variable">f</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.vector.html#fullv"><span class="id" title="definition">fullv</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="lker0_lfunVK"><span class="id" title="lemma">lker0_lfunVK</span></a> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#cancel"><span class="id" title="definition">cancel</span></a> <a class="idref" href="mathcomp.algebra.vector.html#LinAut.f"><span class="id" title="variable">f</span></a><a class="idref" href="mathcomp.algebra.vector.html#517f88b2f002b4e1dbd5bb3edaded374"><span class="id" title="notation">^-1</span></a>%<span class="id" title="var">VF</span> <a class="idref" href="mathcomp.algebra.vector.html#LinAut.f"><span class="id" title="variable">f</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="lker0_compfV"><span class="id" title="lemma">lker0_compfV</span></a> : (<a class="idref" href="mathcomp.algebra.vector.html#LinAut.f"><span class="id" title="variable">f</span></a> <a class="idref" href="mathcomp.algebra.vector.html#9ad88b19a9e5558beda973c77ca474da"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.algebra.vector.html#9ad88b19a9e5558beda973c77ca474da"><span class="id" title="notation">o</span></a> <a class="idref" href="mathcomp.algebra.vector.html#LinAut.f"><span class="id" title="variable">f</span></a><a class="idref" href="mathcomp.algebra.vector.html#517f88b2f002b4e1dbd5bb3edaded374"><span class="id" title="notation">^-1</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.vector.html#9c5859a8d2fadc014a07818a2f27d0e9"><span class="id" title="notation">\1</span></a>)%<span class="id" title="var">VF</span>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="lker0_compVKf"><span class="id" title="lemma">lker0_compVKf</span></a> <span class="id" title="var">aT</span> <span class="id" title="var">g</span> : (<a class="idref" href="mathcomp.algebra.vector.html#LinAut.f"><span class="id" title="variable">f</span></a> <a class="idref" href="mathcomp.algebra.vector.html#9ad88b19a9e5558beda973c77ca474da"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.algebra.vector.html#9ad88b19a9e5558beda973c77ca474da"><span class="id" title="notation">o</span></a> <a class="idref" href="mathcomp.algebra.vector.html#9ad88b19a9e5558beda973c77ca474da"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.vector.html#LinAut.f"><span class="id" title="variable">f</span></a><a class="idref" href="mathcomp.algebra.vector.html#517f88b2f002b4e1dbd5bb3edaded374"><span class="id" title="notation">^-1</span></a> <a class="idref" href="mathcomp.algebra.vector.html#9ad88b19a9e5558beda973c77ca474da"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.algebra.vector.html#9ad88b19a9e5558beda973c77ca474da"><span class="id" title="notation">o</span></a> <a class="idref" href="mathcomp.algebra.vector.html#g"><span class="id" title="variable">g</span></a><a class="idref" href="mathcomp.algebra.vector.html#9ad88b19a9e5558beda973c77ca474da"><span class="id" title="notation">)</span></a>)%<span class="id" title="var">VF</span> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#8f9364556521ebb498093f28eea2240f"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.vector.html#g"><span class="id" title="variable">g</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#8f9364556521ebb498093f28eea2240f"><span class="id" title="notation">:></span></a> <a class="idref" href="mathcomp.algebra.vector.html#83f0032a38b59483260ed68e0d6a1c56"><span class="id" title="notation">'</span></a><a class="idref" href="mathcomp.algebra.vector.html#83f0032a38b59483260ed68e0d6a1c56"><span class="id" title="notation">Hom</span></a><a class="idref" href="mathcomp.algebra.vector.html#83f0032a38b59483260ed68e0d6a1c56"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.vector.html#aT"><span class="id" title="variable">aT</span></a><a class="idref" href="mathcomp.algebra.vector.html#83f0032a38b59483260ed68e0d6a1c56"><span class="id" title="notation">,</span></a> <a class="idref" href="mathcomp.algebra.vector.html#LinAut.vT"><span class="id" title="variable">vT</span></a><a class="idref" href="mathcomp.algebra.vector.html#83f0032a38b59483260ed68e0d6a1c56"><span class="id" title="notation">)</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="lker0_compKf"><span class="id" title="lemma">lker0_compKf</span></a> <span class="id" title="var">aT</span> <span class="id" title="var">g</span> : (<a class="idref" href="mathcomp.algebra.vector.html#LinAut.f"><span class="id" title="variable">f</span></a><a class="idref" href="mathcomp.algebra.vector.html#517f88b2f002b4e1dbd5bb3edaded374"><span class="id" title="notation">^-1</span></a> <a class="idref" href="mathcomp.algebra.vector.html#9ad88b19a9e5558beda973c77ca474da"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.algebra.vector.html#9ad88b19a9e5558beda973c77ca474da"><span class="id" title="notation">o</span></a> <a class="idref" href="mathcomp.algebra.vector.html#9ad88b19a9e5558beda973c77ca474da"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.vector.html#LinAut.f"><span class="id" title="variable">f</span></a> <a class="idref" href="mathcomp.algebra.vector.html#9ad88b19a9e5558beda973c77ca474da"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.algebra.vector.html#9ad88b19a9e5558beda973c77ca474da"><span class="id" title="notation">o</span></a> <a class="idref" href="mathcomp.algebra.vector.html#g"><span class="id" title="variable">g</span></a><a class="idref" href="mathcomp.algebra.vector.html#9ad88b19a9e5558beda973c77ca474da"><span class="id" title="notation">)</span></a>)%<span class="id" title="var">VF</span> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#8f9364556521ebb498093f28eea2240f"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.vector.html#g"><span class="id" title="variable">g</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#8f9364556521ebb498093f28eea2240f"><span class="id" title="notation">:></span></a> <a class="idref" href="mathcomp.algebra.vector.html#83f0032a38b59483260ed68e0d6a1c56"><span class="id" title="notation">'</span></a><a class="idref" href="mathcomp.algebra.vector.html#83f0032a38b59483260ed68e0d6a1c56"><span class="id" title="notation">Hom</span></a><a class="idref" href="mathcomp.algebra.vector.html#83f0032a38b59483260ed68e0d6a1c56"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.vector.html#aT"><span class="id" title="variable">aT</span></a><a class="idref" href="mathcomp.algebra.vector.html#83f0032a38b59483260ed68e0d6a1c56"><span class="id" title="notation">,</span></a> <a class="idref" href="mathcomp.algebra.vector.html#LinAut.vT"><span class="id" title="variable">vT</span></a><a class="idref" href="mathcomp.algebra.vector.html#83f0032a38b59483260ed68e0d6a1c56"><span class="id" title="notation">)</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="lker0_compfK"><span class="id" title="lemma">lker0_compfK</span></a> <span class="id" title="var">rT</span> <span class="id" title="var">h</span> : (<a class="idref" href="mathcomp.algebra.vector.html#9ad88b19a9e5558beda973c77ca474da"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.vector.html#h"><span class="id" title="variable">h</span></a> <a class="idref" href="mathcomp.algebra.vector.html#9ad88b19a9e5558beda973c77ca474da"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.algebra.vector.html#9ad88b19a9e5558beda973c77ca474da"><span class="id" title="notation">o</span></a> <a class="idref" href="mathcomp.algebra.vector.html#LinAut.f"><span class="id" title="variable">f</span></a><a class="idref" href="mathcomp.algebra.vector.html#9ad88b19a9e5558beda973c77ca474da"><span class="id" title="notation">)</span></a> <a class="idref" href="mathcomp.algebra.vector.html#9ad88b19a9e5558beda973c77ca474da"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.algebra.vector.html#9ad88b19a9e5558beda973c77ca474da"><span class="id" title="notation">o</span></a> <a class="idref" href="mathcomp.algebra.vector.html#LinAut.f"><span class="id" title="variable">f</span></a><a class="idref" href="mathcomp.algebra.vector.html#517f88b2f002b4e1dbd5bb3edaded374"><span class="id" title="notation">^-1</span></a>)%<span class="id" title="var">VF</span> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#8f9364556521ebb498093f28eea2240f"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.vector.html#h"><span class="id" title="variable">h</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#8f9364556521ebb498093f28eea2240f"><span class="id" title="notation">:></span></a> <a class="idref" href="mathcomp.algebra.vector.html#83f0032a38b59483260ed68e0d6a1c56"><span class="id" title="notation">'</span></a><a class="idref" href="mathcomp.algebra.vector.html#83f0032a38b59483260ed68e0d6a1c56"><span class="id" title="notation">Hom</span></a><a class="idref" href="mathcomp.algebra.vector.html#83f0032a38b59483260ed68e0d6a1c56"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.vector.html#LinAut.vT"><span class="id" title="variable">vT</span></a><a class="idref" href="mathcomp.algebra.vector.html#83f0032a38b59483260ed68e0d6a1c56"><span class="id" title="notation">,</span></a> <a class="idref" href="mathcomp.algebra.vector.html#rT"><span class="id" title="variable">rT</span></a><a class="idref" href="mathcomp.algebra.vector.html#83f0032a38b59483260ed68e0d6a1c56"><span class="id" title="notation">)</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="lker0_compfVK"><span class="id" title="lemma">lker0_compfVK</span></a> <span class="id" title="var">rT</span> <span class="id" title="var">h</span> : (<a class="idref" href="mathcomp.algebra.vector.html#9ad88b19a9e5558beda973c77ca474da"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.vector.html#h"><span class="id" title="variable">h</span></a> <a class="idref" href="mathcomp.algebra.vector.html#9ad88b19a9e5558beda973c77ca474da"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.algebra.vector.html#9ad88b19a9e5558beda973c77ca474da"><span class="id" title="notation">o</span></a> <a class="idref" href="mathcomp.algebra.vector.html#LinAut.f"><span class="id" title="variable">f</span></a><a class="idref" href="mathcomp.algebra.vector.html#517f88b2f002b4e1dbd5bb3edaded374"><span class="id" title="notation">^-1</span></a><a class="idref" href="mathcomp.algebra.vector.html#9ad88b19a9e5558beda973c77ca474da"><span class="id" title="notation">)</span></a> <a class="idref" href="mathcomp.algebra.vector.html#9ad88b19a9e5558beda973c77ca474da"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.algebra.vector.html#9ad88b19a9e5558beda973c77ca474da"><span class="id" title="notation">o</span></a> <a class="idref" href="mathcomp.algebra.vector.html#LinAut.f"><span class="id" title="variable">f</span></a>)%<span class="id" title="var">VF</span> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#8f9364556521ebb498093f28eea2240f"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.vector.html#h"><span class="id" title="variable">h</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#8f9364556521ebb498093f28eea2240f"><span class="id" title="notation">:></span></a> <a class="idref" href="mathcomp.algebra.vector.html#83f0032a38b59483260ed68e0d6a1c56"><span class="id" title="notation">'</span></a><a class="idref" href="mathcomp.algebra.vector.html#83f0032a38b59483260ed68e0d6a1c56"><span class="id" title="notation">Hom</span></a><a class="idref" href="mathcomp.algebra.vector.html#83f0032a38b59483260ed68e0d6a1c56"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.vector.html#LinAut.vT"><span class="id" title="variable">vT</span></a><a class="idref" href="mathcomp.algebra.vector.html#83f0032a38b59483260ed68e0d6a1c56"><span class="id" title="notation">,</span></a> <a class="idref" href="mathcomp.algebra.vector.html#rT"><span class="id" title="variable">rT</span></a><a class="idref" href="mathcomp.algebra.vector.html#83f0032a38b59483260ed68e0d6a1c56"><span class="id" title="notation">)</span></a>.<br/> + +<br/> +<span class="id" title="keyword">End</span> <a class="idref" href="mathcomp.algebra.vector.html#LinAut"><span class="id" title="section">LinAut</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Section</span> <a name="LinearImageComp"><span class="id" title="section">LinearImageComp</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Variables</span> (<a name="LinearImageComp.K"><span class="id" title="variable">K</span></a> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Field.Exports.fieldType"><span class="id" title="abbreviation">fieldType</span></a>) (<a name="LinearImageComp.aT"><span class="id" title="variable">aT</span></a> <a name="LinearImageComp.vT"><span class="id" title="variable">vT</span></a> <a name="LinearImageComp.rT"><span class="id" title="variable">rT</span></a> : <a class="idref" href="mathcomp.algebra.vector.html#vectType"><span class="id" title="abbreviation">vectType</span></a> <a class="idref" href="mathcomp.algebra.vector.html#K"><span class="id" title="variable">K</span></a>).<br/> +<span class="id" title="keyword">Implicit</span> <span class="id" title="keyword">Types</span> (<span class="id" title="var">f</span> : <a class="idref" href="mathcomp.algebra.vector.html#83f0032a38b59483260ed68e0d6a1c56"><span class="id" title="notation">'</span></a><a class="idref" href="mathcomp.algebra.vector.html#83f0032a38b59483260ed68e0d6a1c56"><span class="id" title="notation">Hom</span></a><a class="idref" href="mathcomp.algebra.vector.html#83f0032a38b59483260ed68e0d6a1c56"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.vector.html#LinearImageComp.aT"><span class="id" title="variable">aT</span></a><a class="idref" href="mathcomp.algebra.vector.html#83f0032a38b59483260ed68e0d6a1c56"><span class="id" title="notation">,</span></a> <a class="idref" href="mathcomp.algebra.vector.html#LinearImageComp.vT"><span class="id" title="variable">vT</span></a><a class="idref" href="mathcomp.algebra.vector.html#83f0032a38b59483260ed68e0d6a1c56"><span class="id" title="notation">)</span></a>) (<span class="id" title="var">g</span> : <a class="idref" href="mathcomp.algebra.vector.html#83f0032a38b59483260ed68e0d6a1c56"><span class="id" title="notation">'</span></a><a class="idref" href="mathcomp.algebra.vector.html#83f0032a38b59483260ed68e0d6a1c56"><span class="id" title="notation">Hom</span></a><a class="idref" href="mathcomp.algebra.vector.html#83f0032a38b59483260ed68e0d6a1c56"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.vector.html#LinearImageComp.vT"><span class="id" title="variable">vT</span></a><a class="idref" href="mathcomp.algebra.vector.html#83f0032a38b59483260ed68e0d6a1c56"><span class="id" title="notation">,</span></a> <a class="idref" href="mathcomp.algebra.vector.html#LinearImageComp.rT"><span class="id" title="variable">rT</span></a><a class="idref" href="mathcomp.algebra.vector.html#83f0032a38b59483260ed68e0d6a1c56"><span class="id" title="notation">)</span></a>) (<span class="id" title="var">U</span> : <a class="idref" href="mathcomp.algebra.vector.html#ca0a177f6d6581a7f5199987cd7ee21c"><span class="id" title="notation">{</span></a><a class="idref" href="mathcomp.algebra.vector.html#ca0a177f6d6581a7f5199987cd7ee21c"><span class="id" title="notation">vspace</span></a> <a class="idref" href="mathcomp.algebra.vector.html#LinearImageComp.aT"><span class="id" title="variable">aT</span></a><a class="idref" href="mathcomp.algebra.vector.html#ca0a177f6d6581a7f5199987cd7ee21c"><span class="id" title="notation">}</span></a>).<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="lim1g"><span class="id" title="lemma">lim1g</span></a> <span class="id" title="var">U</span> : (<a class="idref" href="mathcomp.algebra.vector.html#9c5859a8d2fadc014a07818a2f27d0e9"><span class="id" title="notation">\1</span></a> <a class="idref" href="mathcomp.algebra.vector.html#b5958714d039bb581a8e5ca988944568"><span class="id" title="notation">@:</span></a> <a class="idref" href="mathcomp.algebra.vector.html#U"><span class="id" title="variable">U</span></a>)%<span class="id" title="var">VS</span> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.vector.html#U"><span class="id" title="variable">U</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="limg_comp"><span class="id" title="lemma">limg_comp</span></a> <span class="id" title="var">f</span> <span class="id" title="var">g</span> <span class="id" title="var">U</span> : (<a class="idref" href="mathcomp.algebra.vector.html#b5958714d039bb581a8e5ca988944568"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.vector.html#g"><span class="id" title="variable">g</span></a> <a class="idref" href="mathcomp.algebra.vector.html#9ad88b19a9e5558beda973c77ca474da"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.algebra.vector.html#9ad88b19a9e5558beda973c77ca474da"><span class="id" title="notation">o</span></a> <a class="idref" href="mathcomp.algebra.vector.html#f"><span class="id" title="variable">f</span></a><a class="idref" href="mathcomp.algebra.vector.html#b5958714d039bb581a8e5ca988944568"><span class="id" title="notation">)</span></a> <a class="idref" href="mathcomp.algebra.vector.html#b5958714d039bb581a8e5ca988944568"><span class="id" title="notation">@:</span></a> <a class="idref" href="mathcomp.algebra.vector.html#U"><span class="id" title="variable">U</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.vector.html#g"><span class="id" title="variable">g</span></a> <a class="idref" href="mathcomp.algebra.vector.html#b5958714d039bb581a8e5ca988944568"><span class="id" title="notation">@:</span></a> <a class="idref" href="mathcomp.algebra.vector.html#b5958714d039bb581a8e5ca988944568"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.vector.html#f"><span class="id" title="variable">f</span></a> <a class="idref" href="mathcomp.algebra.vector.html#b5958714d039bb581a8e5ca988944568"><span class="id" title="notation">@:</span></a> <a class="idref" href="mathcomp.algebra.vector.html#U"><span class="id" title="variable">U</span></a><a class="idref" href="mathcomp.algebra.vector.html#b5958714d039bb581a8e5ca988944568"><span class="id" title="notation">)</span></a>)%<span class="id" title="var">VS</span>.<br/> + +<br/> +<span class="id" title="keyword">End</span> <a class="idref" href="mathcomp.algebra.vector.html#LinearImageComp"><span class="id" title="section">LinearImageComp</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Section</span> <a name="LinearPreimage"><span class="id" title="section">LinearPreimage</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Variables</span> (<a name="LinearPreimage.K"><span class="id" title="variable">K</span></a> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Field.Exports.fieldType"><span class="id" title="abbreviation">fieldType</span></a>) (<a name="LinearPreimage.aT"><span class="id" title="variable">aT</span></a> <a name="LinearPreimage.rT"><span class="id" title="variable">rT</span></a> : <a class="idref" href="mathcomp.algebra.vector.html#vectType"><span class="id" title="abbreviation">vectType</span></a> <a class="idref" href="mathcomp.algebra.vector.html#K"><span class="id" title="variable">K</span></a>).<br/> +<span class="id" title="keyword">Implicit</span> <span class="id" title="keyword">Types</span> (<span class="id" title="var">f</span> : <a class="idref" href="mathcomp.algebra.vector.html#83f0032a38b59483260ed68e0d6a1c56"><span class="id" title="notation">'</span></a><a class="idref" href="mathcomp.algebra.vector.html#83f0032a38b59483260ed68e0d6a1c56"><span class="id" title="notation">Hom</span></a><a class="idref" href="mathcomp.algebra.vector.html#83f0032a38b59483260ed68e0d6a1c56"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.vector.html#LinearPreimage.aT"><span class="id" title="variable">aT</span></a><a class="idref" href="mathcomp.algebra.vector.html#83f0032a38b59483260ed68e0d6a1c56"><span class="id" title="notation">,</span></a> <a class="idref" href="mathcomp.algebra.vector.html#LinearPreimage.rT"><span class="id" title="variable">rT</span></a><a class="idref" href="mathcomp.algebra.vector.html#83f0032a38b59483260ed68e0d6a1c56"><span class="id" title="notation">)</span></a>) (<span class="id" title="var">U</span> : <a class="idref" href="mathcomp.algebra.vector.html#ca0a177f6d6581a7f5199987cd7ee21c"><span class="id" title="notation">{</span></a><a class="idref" href="mathcomp.algebra.vector.html#ca0a177f6d6581a7f5199987cd7ee21c"><span class="id" title="notation">vspace</span></a> <a class="idref" href="mathcomp.algebra.vector.html#LinearPreimage.aT"><span class="id" title="variable">aT</span></a><a class="idref" href="mathcomp.algebra.vector.html#ca0a177f6d6581a7f5199987cd7ee21c"><span class="id" title="notation">}</span></a>) (<span class="id" title="var">V</span> <span class="id" title="var">W</span> : <a class="idref" href="mathcomp.algebra.vector.html#ca0a177f6d6581a7f5199987cd7ee21c"><span class="id" title="notation">{</span></a><a class="idref" href="mathcomp.algebra.vector.html#ca0a177f6d6581a7f5199987cd7ee21c"><span class="id" title="notation">vspace</span></a> <a class="idref" href="mathcomp.algebra.vector.html#LinearPreimage.rT"><span class="id" title="variable">rT</span></a><a class="idref" href="mathcomp.algebra.vector.html#ca0a177f6d6581a7f5199987cd7ee21c"><span class="id" title="notation">}</span></a>).<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="lpreim_cap_limg"><span class="id" title="lemma">lpreim_cap_limg</span></a> <span class="id" title="var">f</span> <span class="id" title="var">W</span> : (<a class="idref" href="mathcomp.algebra.vector.html#f"><span class="id" title="variable">f</span></a> <a class="idref" href="mathcomp.algebra.vector.html#44829b34346d22907f726f49ab851da1"><span class="id" title="notation">@^-1:</span></a> <a class="idref" href="mathcomp.algebra.vector.html#44829b34346d22907f726f49ab851da1"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.vector.html#W"><span class="id" title="variable">W</span></a> <a class="idref" href="mathcomp.algebra.vector.html#585f47de65e0d6c6ecedb971203eafab"><span class="id" title="notation">:&:</span></a> <a class="idref" href="mathcomp.algebra.vector.html#limg"><span class="id" title="abbreviation">limg</span></a> <a class="idref" href="mathcomp.algebra.vector.html#f"><span class="id" title="variable">f</span></a><a class="idref" href="mathcomp.algebra.vector.html#44829b34346d22907f726f49ab851da1"><span class="id" title="notation">)</span></a>)%<span class="id" title="var">VS</span> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> (<a class="idref" href="mathcomp.algebra.vector.html#f"><span class="id" title="variable">f</span></a> <a class="idref" href="mathcomp.algebra.vector.html#44829b34346d22907f726f49ab851da1"><span class="id" title="notation">@^-1:</span></a> <a class="idref" href="mathcomp.algebra.vector.html#W"><span class="id" title="variable">W</span></a>)%<span class="id" title="var">VS</span>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="lpreim0"><span class="id" title="lemma">lpreim0</span></a> <span class="id" title="var">f</span> : (<a class="idref" href="mathcomp.algebra.vector.html#f"><span class="id" title="variable">f</span></a> <a class="idref" href="mathcomp.algebra.vector.html#44829b34346d22907f726f49ab851da1"><span class="id" title="notation">@^-1:</span></a> 0)%<span class="id" title="var">VS</span> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.vector.html#lker"><span class="id" title="definition">lker</span></a> <a class="idref" href="mathcomp.algebra.vector.html#f"><span class="id" title="variable">f</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="lpreimS"><span class="id" title="lemma">lpreimS</span></a> <span class="id" title="var">f</span> <span class="id" title="var">V</span> <span class="id" title="var">W</span> : (<a class="idref" href="mathcomp.algebra.vector.html#V"><span class="id" title="variable">V</span></a> <a class="idref" href="mathcomp.algebra.vector.html#755d11a7d5629bce3486e7cbadc915e7"><span class="id" title="notation">≤</span></a> <a class="idref" href="mathcomp.algebra.vector.html#W"><span class="id" title="variable">W</span></a>)%<span class="id" title="var">VS</span><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> (<a class="idref" href="mathcomp.algebra.vector.html#f"><span class="id" title="variable">f</span></a> <a class="idref" href="mathcomp.algebra.vector.html#44829b34346d22907f726f49ab851da1"><span class="id" title="notation">@^-1:</span></a> <a class="idref" href="mathcomp.algebra.vector.html#V"><span class="id" title="variable">V</span></a> <a class="idref" href="mathcomp.algebra.vector.html#755d11a7d5629bce3486e7cbadc915e7"><span class="id" title="notation">≤</span></a> <a class="idref" href="mathcomp.algebra.vector.html#f"><span class="id" title="variable">f</span></a> <a class="idref" href="mathcomp.algebra.vector.html#44829b34346d22907f726f49ab851da1"><span class="id" title="notation">@^-1:</span></a> <a class="idref" href="mathcomp.algebra.vector.html#W"><span class="id" title="variable">W</span></a>)%<span class="id" title="var">VS</span>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="lpreimK"><span class="id" title="lemma">lpreimK</span></a> <span class="id" title="var">f</span> <span class="id" title="var">W</span> : (<a class="idref" href="mathcomp.algebra.vector.html#W"><span class="id" title="variable">W</span></a> <a class="idref" href="mathcomp.algebra.vector.html#755d11a7d5629bce3486e7cbadc915e7"><span class="id" title="notation">≤</span></a> <a class="idref" href="mathcomp.algebra.vector.html#limg"><span class="id" title="abbreviation">limg</span></a> <a class="idref" href="mathcomp.algebra.vector.html#f"><span class="id" title="variable">f</span></a>)%<span class="id" title="var">VS</span> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> (<a class="idref" href="mathcomp.algebra.vector.html#f"><span class="id" title="variable">f</span></a> <a class="idref" href="mathcomp.algebra.vector.html#b5958714d039bb581a8e5ca988944568"><span class="id" title="notation">@:</span></a> <a class="idref" href="mathcomp.algebra.vector.html#b5958714d039bb581a8e5ca988944568"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.vector.html#f"><span class="id" title="variable">f</span></a> <a class="idref" href="mathcomp.algebra.vector.html#44829b34346d22907f726f49ab851da1"><span class="id" title="notation">@^-1:</span></a> <a class="idref" href="mathcomp.algebra.vector.html#W"><span class="id" title="variable">W</span></a><a class="idref" href="mathcomp.algebra.vector.html#b5958714d039bb581a8e5ca988944568"><span class="id" title="notation">)</span></a>)%<span class="id" title="var">VS</span> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.vector.html#W"><span class="id" title="variable">W</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="memv_preim"><span class="id" title="lemma">memv_preim</span></a> <span class="id" title="var">f</span> <span class="id" title="var">u</span> <span class="id" title="var">W</span> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.vector.html#f"><span class="id" title="variable">f</span></a> <a class="idref" href="mathcomp.algebra.vector.html#u"><span class="id" title="variable">u</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">\</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">in</span></a> <a class="idref" href="mathcomp.algebra.vector.html#W"><span class="id" title="variable">W</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">)</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> (<a class="idref" href="mathcomp.algebra.vector.html#u"><span class="id" title="variable">u</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">\</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">in</span></a> <a class="idref" href="mathcomp.algebra.vector.html#f"><span class="id" title="variable">f</span></a> <a class="idref" href="mathcomp.algebra.vector.html#44829b34346d22907f726f49ab851da1"><span class="id" title="notation">@^-1:</span></a> <a class="idref" href="mathcomp.algebra.vector.html#W"><span class="id" title="variable">W</span></a>)%<span class="id" title="var">VS</span>.<br/> + +<br/> +<span class="id" title="keyword">End</span> <a class="idref" href="mathcomp.algebra.vector.html#LinearPreimage"><span class="id" title="section">LinearPreimage</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Section</span> <a name="LfunAlgebra"><span class="id" title="section">LfunAlgebra</span></a>.<br/> +</div> + +<div class="doc"> + This section is a bit of a place holder: the instances we build here can't + be canonical because we are missing an interface for proper vectTypes, + would sit between Vector and Falgebra. For now, we just supply structure + definitions here and supply actual instances for F-algebras in a submodule + of the algebra library (there is currently no actual use of the End(vT) + algebra structure). Also note that the unit ring structure is missing. +</div> +<div class="code"> + +<br/> +<span class="id" title="keyword">Variables</span> (<a name="LfunAlgebra.R"><span class="id" title="variable">R</span></a> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ComRing.Exports.comRingType"><span class="id" title="abbreviation">comRingType</span></a>) (<a name="LfunAlgebra.vT"><span class="id" title="variable">vT</span></a> : <a class="idref" href="mathcomp.algebra.vector.html#vectType"><span class="id" title="abbreviation">vectType</span></a> <a class="idref" href="mathcomp.algebra.vector.html#R"><span class="id" title="variable">R</span></a>).<br/> +<span class="id" title="keyword">Hypothesis</span> <a name="LfunAlgebra.vT_proper"><span class="id" title="variable">vT_proper</span></a> : <a class="idref" href="mathcomp.algebra.vector.html#dim"><span class="id" title="definition">Vector.dim</span></a> <a class="idref" href="mathcomp.algebra.vector.html#LfunAlgebra.vT"><span class="id" title="variable">vT</span></a> <a class="idref" href="mathcomp.ssreflect.ssrnat.html#19ab5cfd7e4f60fa14f22b576013bd96"><span class="id" title="notation">></span></a> 0.<br/> + +<br/> +<span class="id" title="keyword">Fact</span> <a name="lfun1_neq0"><span class="id" title="lemma">lfun1_neq0</span></a> : <a class="idref" href="mathcomp.algebra.vector.html#9c5859a8d2fadc014a07818a2f27d0e9"><span class="id" title="notation">\1</span></a>%<span class="id" title="var">VF</span> <a class="idref" href="mathcomp.ssreflect.eqtype.html#9e45f909d1732d6d9e153b650829bccf"><span class="id" title="notation">!=</span></a> 0 <a class="idref" href="mathcomp.ssreflect.eqtype.html#9e45f909d1732d6d9e153b650829bccf"><span class="id" title="notation">:></span></a> <a class="idref" href="mathcomp.algebra.vector.html#f2977b5d91be916157fc34deec16772c"><span class="id" title="notation">'</span></a><a class="idref" href="mathcomp.algebra.vector.html#f2977b5d91be916157fc34deec16772c"><span class="id" title="notation">End</span></a><a class="idref" href="mathcomp.algebra.vector.html#f2977b5d91be916157fc34deec16772c"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.vector.html#LfunAlgebra.vT"><span class="id" title="variable">vT</span></a><a class="idref" href="mathcomp.algebra.vector.html#f2977b5d91be916157fc34deec16772c"><span class="id" title="notation">)</span></a>.<br/> + +<br/> + +<br/> +<span class="id" title="keyword">Definition</span> <a name="lfun_comp_ringMixin"><span class="id" title="definition">lfun_comp_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.vector.html#comp_lfunA"><span class="id" title="lemma">comp_lfunA</span></a> <a class="idref" href="mathcomp.algebra.vector.html#comp_lfun1l"><span class="id" title="lemma">comp_lfun1l</span></a> <a class="idref" href="mathcomp.algebra.vector.html#comp_lfun1r"><span class="id" title="lemma">comp_lfun1r</span></a> <a class="idref" href="mathcomp.algebra.vector.html#comp_lfunDl"><span class="id" title="lemma">comp_lfunDl</span></a> <a class="idref" href="mathcomp.algebra.vector.html#comp_lfunDr"><span class="id" title="lemma">comp_lfunDr</span></a><br/> + <a class="idref" href="mathcomp.algebra.vector.html#lfun1_neq0"><span class="id" title="lemma">lfun1_neq0</span></a>.<br/> +<span class="id" title="keyword">Definition</span> <a name="lfun_comp_ringType"><span class="id" title="definition">lfun_comp_ringType</span></a> := <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.vector.html#f2977b5d91be916157fc34deec16772c"><span class="id" title="notation">'</span></a><a class="idref" href="mathcomp.algebra.vector.html#f2977b5d91be916157fc34deec16772c"><span class="id" title="notation">End</span></a><a class="idref" href="mathcomp.algebra.vector.html#f2977b5d91be916157fc34deec16772c"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.vector.html#LfunAlgebra.vT"><span class="id" title="variable">vT</span></a><a class="idref" href="mathcomp.algebra.vector.html#f2977b5d91be916157fc34deec16772c"><span class="id" title="notation">)</span></a> <a class="idref" href="mathcomp.algebra.vector.html#lfun_comp_ringMixin"><span class="id" title="definition">lfun_comp_ringMixin</span></a>.<br/> + +<br/> +</div> + +<div class="doc"> + In the standard endomorphism ring product is categorical composition. +</div> +<div class="code"> +<span class="id" title="keyword">Definition</span> <a name="lfun_ringMixin"><span class="id" title="definition">lfun_ringMixin</span></a> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Ring.mixin_of"><span class="id" title="record">GRing.Ring.mixin_of</span></a> (<a class="idref" href="mathcomp.algebra.vector.html#lfun_zmodType"><span class="id" title="definition">lfun_zmodType</span></a> <a class="idref" href="mathcomp.algebra.vector.html#LfunAlgebra.vT"><span class="id" title="variable">vT</span></a> <a class="idref" href="mathcomp.algebra.vector.html#LfunAlgebra.vT"><span class="id" title="variable">vT</span></a>) :=<br/> + <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.converse_ringMixin"><span class="id" title="definition">GRing.converse_ringMixin</span></a> <a class="idref" href="mathcomp.algebra.vector.html#lfun_comp_ringType"><span class="id" title="definition">lfun_comp_ringType</span></a>.<br/> +<span class="id" title="keyword">Definition</span> <a name="lfun_ringType"><span class="id" title="definition">lfun_ringType</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.algebra.ssralg.html#GRing.Ring.Exports.RingType"><span class="id" title="abbreviation">RingType</span></a> <a class="idref" href="mathcomp.algebra.vector.html#f2977b5d91be916157fc34deec16772c"><span class="id" title="notation">'</span></a><a class="idref" href="mathcomp.algebra.vector.html#f2977b5d91be916157fc34deec16772c"><span class="id" title="notation">End</span></a><a class="idref" href="mathcomp.algebra.vector.html#f2977b5d91be916157fc34deec16772c"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.vector.html#LfunAlgebra.vT"><span class="id" title="variable">vT</span></a><a class="idref" href="mathcomp.algebra.vector.html#f2977b5d91be916157fc34deec16772c"><span class="id" title="notation">)</span></a> <a class="idref" href="mathcomp.algebra.vector.html#lfun_ringMixin"><span class="id" title="definition">lfun_ringMixin</span></a>.<br/> +<span class="id" title="keyword">Definition</span> <a name="lfun_lalgType"><span class="id" title="definition">lfun_lalgType</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.algebra.ssralg.html#d808753be7e4a961b68bffadddfcdf30"><span class="id" title="notation">[</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#d808753be7e4a961b68bffadddfcdf30"><span class="id" title="notation">lalgType</span></a> <a class="idref" href="mathcomp.algebra.vector.html#LfunAlgebra.R"><span class="id" title="variable">R</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#d808753be7e4a961b68bffadddfcdf30"><span class="id" title="notation">of</span></a> <a class="idref" href="mathcomp.algebra.vector.html#f2977b5d91be916157fc34deec16772c"><span class="id" title="notation">'</span></a><a class="idref" href="mathcomp.algebra.vector.html#f2977b5d91be916157fc34deec16772c"><span class="id" title="notation">End</span></a><a class="idref" href="mathcomp.algebra.vector.html#f2977b5d91be916157fc34deec16772c"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.vector.html#LfunAlgebra.vT"><span class="id" title="variable">vT</span></a><a class="idref" href="mathcomp.algebra.vector.html#f2977b5d91be916157fc34deec16772c"><span class="id" title="notation">)</span></a><br/> + <a class="idref" href="mathcomp.algebra.ssralg.html#d808753be7e4a961b68bffadddfcdf30"><span class="id" title="notation">for</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Lalgebra.Exports.LalgType"><span class="id" title="abbreviation">LalgType</span></a> <a class="idref" href="mathcomp.algebra.vector.html#LfunAlgebra.R"><span class="id" title="variable">R</span></a> <a class="idref" href="mathcomp.algebra.vector.html#lfun_ringType"><span class="id" title="definition">lfun_ringType</span></a> (<span class="id" title="keyword">fun</span> <span class="id" title="var">k</span> <span class="id" title="var">x</span> <span class="id" title="var">y</span> ⇒ <a class="idref" href="mathcomp.algebra.vector.html#comp_lfunZr"><span class="id" title="lemma">comp_lfunZr</span></a> <a class="idref" href="mathcomp.algebra.vector.html#k"><span class="id" title="variable">k</span></a> <a class="idref" href="mathcomp.algebra.vector.html#y"><span class="id" title="variable">y</span></a> <a class="idref" href="mathcomp.algebra.vector.html#x"><span class="id" title="variable">x</span></a>)<a class="idref" href="mathcomp.algebra.ssralg.html#d808753be7e4a961b68bffadddfcdf30"><span class="id" title="notation">]</span></a>.<br/> +<span class="id" title="keyword">Definition</span> <a name="lfun_algType"><span class="id" title="definition">lfun_algType</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.algebra.ssralg.html#30ca49fca582d0576271da5ba1a53c8c"><span class="id" title="notation">[</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#30ca49fca582d0576271da5ba1a53c8c"><span class="id" title="notation">algType</span></a> <a class="idref" href="mathcomp.algebra.vector.html#LfunAlgebra.R"><span class="id" title="variable">R</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#30ca49fca582d0576271da5ba1a53c8c"><span class="id" title="notation">of</span></a> <a class="idref" href="mathcomp.algebra.vector.html#f2977b5d91be916157fc34deec16772c"><span class="id" title="notation">'</span></a><a class="idref" href="mathcomp.algebra.vector.html#f2977b5d91be916157fc34deec16772c"><span class="id" title="notation">End</span></a><a class="idref" href="mathcomp.algebra.vector.html#f2977b5d91be916157fc34deec16772c"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.vector.html#LfunAlgebra.vT"><span class="id" title="variable">vT</span></a><a class="idref" href="mathcomp.algebra.vector.html#f2977b5d91be916157fc34deec16772c"><span class="id" title="notation">)</span></a><br/> + <a class="idref" href="mathcomp.algebra.ssralg.html#30ca49fca582d0576271da5ba1a53c8c"><span class="id" title="notation">for</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Algebra.Exports.AlgType"><span class="id" title="abbreviation">AlgType</span></a> <a class="idref" href="mathcomp.algebra.vector.html#LfunAlgebra.R"><span class="id" title="variable">R</span></a> <span class="id" title="var">_</span> (<span class="id" title="keyword">fun</span> <span class="id" title="var">k</span> (<span class="id" title="var">x</span> <span class="id" title="var">y</span> : <a class="idref" href="mathcomp.algebra.vector.html#lfun_lalgType"><span class="id" title="definition">lfun_lalgType</span></a>) ⇒ <a class="idref" href="mathcomp.algebra.vector.html#comp_lfunZl"><span class="id" title="lemma">comp_lfunZl</span></a> <a class="idref" href="mathcomp.algebra.vector.html#k"><span class="id" title="variable">k</span></a> <a class="idref" href="mathcomp.algebra.vector.html#y"><span class="id" title="variable">y</span></a> <a class="idref" href="mathcomp.algebra.vector.html#x"><span class="id" title="variable">x</span></a>)<a class="idref" href="mathcomp.algebra.ssralg.html#30ca49fca582d0576271da5ba1a53c8c"><span class="id" title="notation">]</span></a>.<br/> + +<br/> +<span class="id" title="keyword">End</span> <a class="idref" href="mathcomp.algebra.vector.html#LfunAlgebra"><span class="id" title="section">LfunAlgebra</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Section</span> <a name="Projection"><span class="id" title="section">Projection</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Variables</span> (<a name="Projection.K"><span class="id" title="variable">K</span></a> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Field.Exports.fieldType"><span class="id" title="abbreviation">fieldType</span></a>) (<a name="Projection.vT"><span class="id" title="variable">vT</span></a> : <a class="idref" href="mathcomp.algebra.vector.html#vectType"><span class="id" title="abbreviation">vectType</span></a> <a class="idref" href="mathcomp.algebra.vector.html#K"><span class="id" title="variable">K</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.vector.html#ca0a177f6d6581a7f5199987cd7ee21c"><span class="id" title="notation">{</span></a><a class="idref" href="mathcomp.algebra.vector.html#ca0a177f6d6581a7f5199987cd7ee21c"><span class="id" title="notation">vspace</span></a> <a class="idref" href="mathcomp.algebra.vector.html#Projection.vT"><span class="id" title="variable">vT</span></a><a class="idref" href="mathcomp.algebra.vector.html#ca0a177f6d6581a7f5199987cd7ee21c"><span class="id" title="notation">}</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Definition</span> <a name="daddv_pi"><span class="id" title="definition">daddv_pi</span></a> <span class="id" title="var">U</span> <span class="id" title="var">V</span> := <a class="idref" href="mathcomp.algebra.vector.html#Hom"><span class="id" title="constructor">Vector.Hom</span></a> (<a class="idref" href="mathcomp.algebra.mxalgebra.html#proj_mx"><span class="id" title="definition">proj_mx</span></a> (<a class="idref" href="mathcomp.algebra.vector.html#vs2mx"><span class="id" title="definition">vs2mx</span></a> <a class="idref" href="mathcomp.algebra.vector.html#U"><span class="id" title="variable">U</span></a>) (<a class="idref" href="mathcomp.algebra.vector.html#vs2mx"><span class="id" title="definition">vs2mx</span></a> <a class="idref" href="mathcomp.algebra.vector.html#V"><span class="id" title="variable">V</span></a>)).<br/> +<span class="id" title="keyword">Definition</span> <a name="projv"><span class="id" title="definition">projv</span></a> <span class="id" title="var">U</span> := <a class="idref" href="mathcomp.algebra.vector.html#daddv_pi"><span class="id" title="definition">daddv_pi</span></a> <a class="idref" href="mathcomp.algebra.vector.html#U"><span class="id" title="variable">U</span></a> <a class="idref" href="mathcomp.algebra.vector.html#U"><span class="id" title="variable">U</span></a><a class="idref" href="mathcomp.algebra.vector.html#071d56fbd1000a21b48af9aadab34351"><span class="id" title="notation">^</span></a><a class="idref" href="mathcomp.algebra.vector.html#071d56fbd1000a21b48af9aadab34351"><span class="id" title="notation">C</span></a>.<br/> +<span class="id" title="keyword">Definition</span> <a name="addv_pi1"><span class="id" title="definition">addv_pi1</span></a> <span class="id" title="var">U</span> <span class="id" title="var">V</span> := <a class="idref" href="mathcomp.algebra.vector.html#daddv_pi"><span class="id" title="definition">daddv_pi</span></a> (<a class="idref" href="mathcomp.algebra.vector.html#U"><span class="id" title="variable">U</span></a> <a class="idref" href="mathcomp.algebra.vector.html#946bddca9671fead9ed6e5aece130780"><span class="id" title="notation">:\:</span></a> <a class="idref" href="mathcomp.algebra.vector.html#V"><span class="id" title="variable">V</span></a>) <a class="idref" href="mathcomp.algebra.vector.html#V"><span class="id" title="variable">V</span></a>.<br/> +<span class="id" title="keyword">Definition</span> <a name="addv_pi2"><span class="id" title="definition">addv_pi2</span></a> <span class="id" title="var">U</span> <span class="id" title="var">V</span> := <a class="idref" href="mathcomp.algebra.vector.html#daddv_pi"><span class="id" title="definition">daddv_pi</span></a> <a class="idref" href="mathcomp.algebra.vector.html#V"><span class="id" title="variable">V</span></a> (<a class="idref" href="mathcomp.algebra.vector.html#U"><span class="id" title="variable">U</span></a> <a class="idref" href="mathcomp.algebra.vector.html#946bddca9671fead9ed6e5aece130780"><span class="id" title="notation">:\:</span></a> <a class="idref" href="mathcomp.algebra.vector.html#V"><span class="id" title="variable">V</span></a>).<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="memv_pi"><span class="id" title="lemma">memv_pi</span></a> <span class="id" title="var">U</span> <span class="id" title="var">V</span> <span class="id" title="var">w</span> : (<a class="idref" href="mathcomp.algebra.vector.html#daddv_pi"><span class="id" title="definition">daddv_pi</span></a> <a class="idref" href="mathcomp.algebra.vector.html#U"><span class="id" title="variable">U</span></a> <a class="idref" href="mathcomp.algebra.vector.html#V"><span class="id" title="variable">V</span></a>) <a class="idref" href="mathcomp.algebra.vector.html#w"><span class="id" title="variable">w</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">\</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">in</span></a> <a class="idref" href="mathcomp.algebra.vector.html#U"><span class="id" title="variable">U</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="memv_proj"><span class="id" title="lemma">memv_proj</span></a> <span class="id" title="var">U</span> <span class="id" title="var">w</span> : <a class="idref" href="mathcomp.algebra.vector.html#projv"><span class="id" title="definition">projv</span></a> <a class="idref" href="mathcomp.algebra.vector.html#U"><span class="id" title="variable">U</span></a> <a class="idref" href="mathcomp.algebra.vector.html#w"><span class="id" title="variable">w</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">\</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">in</span></a> <a class="idref" href="mathcomp.algebra.vector.html#U"><span class="id" title="variable">U</span></a>. <br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="memv_pi1"><span class="id" title="lemma">memv_pi1</span></a> <span class="id" title="var">U</span> <span class="id" title="var">V</span> <span class="id" title="var">w</span> : (<a class="idref" href="mathcomp.algebra.vector.html#addv_pi1"><span class="id" title="definition">addv_pi1</span></a> <a class="idref" href="mathcomp.algebra.vector.html#U"><span class="id" title="variable">U</span></a> <a class="idref" href="mathcomp.algebra.vector.html#V"><span class="id" title="variable">V</span></a>) <a class="idref" href="mathcomp.algebra.vector.html#w"><span class="id" title="variable">w</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">\</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">in</span></a> <a class="idref" href="mathcomp.algebra.vector.html#U"><span class="id" title="variable">U</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="memv_pi2"><span class="id" title="lemma">memv_pi2</span></a> <span class="id" title="var">U</span> <span class="id" title="var">V</span> <span class="id" title="var">w</span> : (<a class="idref" href="mathcomp.algebra.vector.html#addv_pi2"><span class="id" title="definition">addv_pi2</span></a> <a class="idref" href="mathcomp.algebra.vector.html#U"><span class="id" title="variable">U</span></a> <a class="idref" href="mathcomp.algebra.vector.html#V"><span class="id" title="variable">V</span></a>) <a class="idref" href="mathcomp.algebra.vector.html#w"><span class="id" title="variable">w</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">\</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">in</span></a> <a class="idref" href="mathcomp.algebra.vector.html#V"><span class="id" title="variable">V</span></a>. <br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="daddv_pi_id"><span class="id" title="lemma">daddv_pi_id</span></a> <span class="id" title="var">U</span> <span class="id" title="var">V</span> <span class="id" title="var">u</span> : (<a class="idref" href="mathcomp.algebra.vector.html#U"><span class="id" title="variable">U</span></a> <a class="idref" href="mathcomp.algebra.vector.html#585f47de65e0d6c6ecedb971203eafab"><span class="id" title="notation">:&:</span></a> <a class="idref" href="mathcomp.algebra.vector.html#V"><span class="id" title="variable">V</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> 0)%<span class="id" title="var">VS</span> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.vector.html#u"><span class="id" title="variable">u</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">\</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">in</span></a> <a class="idref" href="mathcomp.algebra.vector.html#U"><span class="id" title="variable">U</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.vector.html#daddv_pi"><span class="id" title="definition">daddv_pi</span></a> <a class="idref" href="mathcomp.algebra.vector.html#U"><span class="id" title="variable">U</span></a> <a class="idref" href="mathcomp.algebra.vector.html#V"><span class="id" title="variable">V</span></a> <a class="idref" href="mathcomp.algebra.vector.html#u"><span class="id" title="variable">u</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.vector.html#u"><span class="id" title="variable">u</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="daddv_pi_proj"><span class="id" title="lemma">daddv_pi_proj</span></a> <span class="id" title="var">U</span> <span class="id" title="var">V</span> <span class="id" title="var">w</span> (<span class="id" title="var">pi</span> := <a class="idref" href="mathcomp.algebra.vector.html#daddv_pi"><span class="id" title="definition">daddv_pi</span></a> <a class="idref" href="mathcomp.algebra.vector.html#U"><span class="id" title="variable">U</span></a> <a class="idref" href="mathcomp.algebra.vector.html#V"><span class="id" title="variable">V</span></a>) :<br/> + (<a class="idref" href="mathcomp.algebra.vector.html#U"><span class="id" title="variable">U</span></a> <a class="idref" href="mathcomp.algebra.vector.html#585f47de65e0d6c6ecedb971203eafab"><span class="id" title="notation">:&:</span></a> <a class="idref" href="mathcomp.algebra.vector.html#V"><span class="id" title="variable">V</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> 0)%<span class="id" title="var">VS</span> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.vector.html#pi"><span class="id" title="variable">pi</span></a> (<a class="idref" href="mathcomp.algebra.vector.html#pi"><span class="id" title="variable">pi</span></a> <a class="idref" href="mathcomp.algebra.vector.html#w"><span class="id" title="variable">w</span></a>) <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.vector.html#pi"><span class="id" title="variable">pi</span></a> <a class="idref" href="mathcomp.algebra.vector.html#w"><span class="id" title="variable">w</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="daddv_pi_add"><span class="id" title="lemma">daddv_pi_add</span></a> <span class="id" title="var">U</span> <span class="id" title="var">V</span> <span class="id" title="var">w</span> :<br/> + (<a class="idref" href="mathcomp.algebra.vector.html#U"><span class="id" title="variable">U</span></a> <a class="idref" href="mathcomp.algebra.vector.html#585f47de65e0d6c6ecedb971203eafab"><span class="id" title="notation">:&:</span></a> <a class="idref" href="mathcomp.algebra.vector.html#V"><span class="id" title="variable">V</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> 0)%<span class="id" title="var">VS</span> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> (<a class="idref" href="mathcomp.algebra.vector.html#w"><span class="id" title="variable">w</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">\</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">in</span></a> <a class="idref" href="mathcomp.algebra.vector.html#U"><span class="id" title="variable">U</span></a> <a class="idref" href="mathcomp.algebra.vector.html#706deac9766015ea164a28957c46a7b4"><span class="id" title="notation">+</span></a> <a class="idref" href="mathcomp.algebra.vector.html#V"><span class="id" title="variable">V</span></a>)%<span class="id" title="var">VS</span> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.vector.html#daddv_pi"><span class="id" title="definition">daddv_pi</span></a> <a class="idref" href="mathcomp.algebra.vector.html#U"><span class="id" title="variable">U</span></a> <a class="idref" href="mathcomp.algebra.vector.html#V"><span class="id" title="variable">V</span></a> <a class="idref" href="mathcomp.algebra.vector.html#w"><span class="id" title="variable">w</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#ae4d81913e6239182a9ac7467ffde8cd"><span class="id" title="notation">+</span></a> <a class="idref" href="mathcomp.algebra.vector.html#daddv_pi"><span class="id" title="definition">daddv_pi</span></a> <a class="idref" href="mathcomp.algebra.vector.html#V"><span class="id" title="variable">V</span></a> <a class="idref" href="mathcomp.algebra.vector.html#U"><span class="id" title="variable">U</span></a> <a class="idref" href="mathcomp.algebra.vector.html#w"><span class="id" title="variable">w</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.vector.html#w"><span class="id" title="variable">w</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="projv_id"><span class="id" title="lemma">projv_id</span></a> <span class="id" title="var">U</span> <span class="id" title="var">u</span> : <a class="idref" href="mathcomp.algebra.vector.html#u"><span class="id" title="variable">u</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">\</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">in</span></a> <a class="idref" href="mathcomp.algebra.vector.html#U"><span class="id" title="variable">U</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.vector.html#projv"><span class="id" title="definition">projv</span></a> <a class="idref" href="mathcomp.algebra.vector.html#U"><span class="id" title="variable">U</span></a> <a class="idref" href="mathcomp.algebra.vector.html#u"><span class="id" title="variable">u</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.vector.html#u"><span class="id" title="variable">u</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="projv_proj"><span class="id" title="lemma">projv_proj</span></a> <span class="id" title="var">U</span> <span class="id" title="var">w</span> : <a class="idref" href="mathcomp.algebra.vector.html#projv"><span class="id" title="definition">projv</span></a> <a class="idref" href="mathcomp.algebra.vector.html#U"><span class="id" title="variable">U</span></a> (<a class="idref" href="mathcomp.algebra.vector.html#projv"><span class="id" title="definition">projv</span></a> <a class="idref" href="mathcomp.algebra.vector.html#U"><span class="id" title="variable">U</span></a> <a class="idref" href="mathcomp.algebra.vector.html#w"><span class="id" title="variable">w</span></a>) <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.vector.html#projv"><span class="id" title="definition">projv</span></a> <a class="idref" href="mathcomp.algebra.vector.html#U"><span class="id" title="variable">U</span></a> <a class="idref" href="mathcomp.algebra.vector.html#w"><span class="id" title="variable">w</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="memv_projC"><span class="id" title="lemma">memv_projC</span></a> <span class="id" title="var">U</span> <span class="id" title="var">w</span> : <a class="idref" href="mathcomp.algebra.vector.html#w"><span class="id" title="variable">w</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#d70623330b2787db6b196e37db7d8f45"><span class="id" title="notation">-</span></a> <a class="idref" href="mathcomp.algebra.vector.html#projv"><span class="id" title="definition">projv</span></a> <a class="idref" href="mathcomp.algebra.vector.html#U"><span class="id" title="variable">U</span></a> <a class="idref" href="mathcomp.algebra.vector.html#w"><span class="id" title="variable">w</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">\</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">in</span></a> (<a class="idref" href="mathcomp.algebra.vector.html#U"><span class="id" title="variable">U</span></a><a class="idref" href="mathcomp.algebra.vector.html#071d56fbd1000a21b48af9aadab34351"><span class="id" title="notation">^</span></a><a class="idref" href="mathcomp.algebra.vector.html#071d56fbd1000a21b48af9aadab34351"><span class="id" title="notation">C</span></a>)%<span class="id" title="var">VS</span>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="limg_proj"><span class="id" title="lemma">limg_proj</span></a> <span class="id" title="var">U</span> : <a class="idref" href="mathcomp.algebra.vector.html#limg"><span class="id" title="abbreviation">limg</span></a> (<a class="idref" href="mathcomp.algebra.vector.html#projv"><span class="id" title="definition">projv</span></a> <a class="idref" href="mathcomp.algebra.vector.html#U"><span class="id" title="variable">U</span></a>) <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.vector.html#U"><span class="id" title="variable">U</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="lker_proj"><span class="id" title="lemma">lker_proj</span></a> <span class="id" title="var">U</span> : <a class="idref" href="mathcomp.algebra.vector.html#lker"><span class="id" title="definition">lker</span></a> (<a class="idref" href="mathcomp.algebra.vector.html#projv"><span class="id" title="definition">projv</span></a> <a class="idref" href="mathcomp.algebra.vector.html#U"><span class="id" title="variable">U</span></a>) <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> (<a class="idref" href="mathcomp.algebra.vector.html#U"><span class="id" title="variable">U</span></a><a class="idref" href="mathcomp.algebra.vector.html#071d56fbd1000a21b48af9aadab34351"><span class="id" title="notation">^</span></a><a class="idref" href="mathcomp.algebra.vector.html#071d56fbd1000a21b48af9aadab34351"><span class="id" title="notation">C</span></a>)%<span class="id" title="var">VS</span>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="addv_pi1_proj"><span class="id" title="lemma">addv_pi1_proj</span></a> <span class="id" title="var">U</span> <span class="id" title="var">V</span> <span class="id" title="var">w</span> (<span class="id" title="var">pi1</span> := <a class="idref" href="mathcomp.algebra.vector.html#addv_pi1"><span class="id" title="definition">addv_pi1</span></a> <a class="idref" href="mathcomp.algebra.vector.html#U"><span class="id" title="variable">U</span></a> <a class="idref" href="mathcomp.algebra.vector.html#V"><span class="id" title="variable">V</span></a>) : <a class="idref" href="mathcomp.algebra.vector.html#pi1"><span class="id" title="variable">pi1</span></a> (<a class="idref" href="mathcomp.algebra.vector.html#pi1"><span class="id" title="variable">pi1</span></a> <a class="idref" href="mathcomp.algebra.vector.html#w"><span class="id" title="variable">w</span></a>) <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.vector.html#pi1"><span class="id" title="variable">pi1</span></a> <a class="idref" href="mathcomp.algebra.vector.html#w"><span class="id" title="variable">w</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="addv_pi2_id"><span class="id" title="lemma">addv_pi2_id</span></a> <span class="id" title="var">U</span> <span class="id" title="var">V</span> <span class="id" title="var">v</span> : <a class="idref" href="mathcomp.algebra.vector.html#v"><span class="id" title="variable">v</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">\</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">in</span></a> <a class="idref" href="mathcomp.algebra.vector.html#V"><span class="id" title="variable">V</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.vector.html#addv_pi2"><span class="id" title="definition">addv_pi2</span></a> <a class="idref" href="mathcomp.algebra.vector.html#U"><span class="id" title="variable">U</span></a> <a class="idref" href="mathcomp.algebra.vector.html#V"><span class="id" title="variable">V</span></a> <a class="idref" href="mathcomp.algebra.vector.html#v"><span class="id" title="variable">v</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.vector.html#v"><span class="id" title="variable">v</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="addv_pi2_proj"><span class="id" title="lemma">addv_pi2_proj</span></a> <span class="id" title="var">U</span> <span class="id" title="var">V</span> <span class="id" title="var">w</span> (<span class="id" title="var">pi2</span> := <a class="idref" href="mathcomp.algebra.vector.html#addv_pi2"><span class="id" title="definition">addv_pi2</span></a> <a class="idref" href="mathcomp.algebra.vector.html#U"><span class="id" title="variable">U</span></a> <a class="idref" href="mathcomp.algebra.vector.html#V"><span class="id" title="variable">V</span></a>) : <a class="idref" href="mathcomp.algebra.vector.html#pi2"><span class="id" title="variable">pi2</span></a> (<a class="idref" href="mathcomp.algebra.vector.html#pi2"><span class="id" title="variable">pi2</span></a> <a class="idref" href="mathcomp.algebra.vector.html#w"><span class="id" title="variable">w</span></a>) <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.vector.html#pi2"><span class="id" title="variable">pi2</span></a> <a class="idref" href="mathcomp.algebra.vector.html#w"><span class="id" title="variable">w</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="addv_pi1_pi2"><span class="id" title="lemma">addv_pi1_pi2</span></a> <span class="id" title="var">U</span> <span class="id" title="var">V</span> <span class="id" title="var">w</span> :<br/> + <a class="idref" href="mathcomp.algebra.vector.html#w"><span class="id" title="variable">w</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">\</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">in</span></a> (<a class="idref" href="mathcomp.algebra.vector.html#U"><span class="id" title="variable">U</span></a> <a class="idref" href="mathcomp.algebra.vector.html#706deac9766015ea164a28957c46a7b4"><span class="id" title="notation">+</span></a> <a class="idref" href="mathcomp.algebra.vector.html#V"><span class="id" title="variable">V</span></a>)%<span class="id" title="var">VS</span> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.vector.html#addv_pi1"><span class="id" title="definition">addv_pi1</span></a> <a class="idref" href="mathcomp.algebra.vector.html#U"><span class="id" title="variable">U</span></a> <a class="idref" href="mathcomp.algebra.vector.html#V"><span class="id" title="variable">V</span></a> <a class="idref" href="mathcomp.algebra.vector.html#w"><span class="id" title="variable">w</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#ae4d81913e6239182a9ac7467ffde8cd"><span class="id" title="notation">+</span></a> <a class="idref" href="mathcomp.algebra.vector.html#addv_pi2"><span class="id" title="definition">addv_pi2</span></a> <a class="idref" href="mathcomp.algebra.vector.html#U"><span class="id" title="variable">U</span></a> <a class="idref" href="mathcomp.algebra.vector.html#V"><span class="id" title="variable">V</span></a> <a class="idref" href="mathcomp.algebra.vector.html#w"><span class="id" title="variable">w</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.vector.html#w"><span class="id" title="variable">w</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Section</span> <a name="Projection.Sumv_Pi"><span class="id" title="section">Sumv_Pi</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Variables</span> (<a name="Projection.Sumv_Pi.I"><span class="id" title="variable">I</span></a> : <a class="idref" href="mathcomp.ssreflect.eqtype.html#Equality.Exports.eqType"><span class="id" title="abbreviation">eqType</span></a>) (<a name="Projection.Sumv_Pi.r0"><span class="id" title="variable">r0</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.vector.html#I"><span class="id" title="variable">I</span></a>) (<a name="Projection.Sumv_Pi.P"><span class="id" title="variable">P</span></a> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#pred"><span class="id" title="definition">pred</span></a> <a class="idref" href="mathcomp.algebra.vector.html#I"><span class="id" title="variable">I</span></a>) (<a name="Projection.Sumv_Pi.Vs"><span class="id" title="variable">Vs</span></a> : <a class="idref" href="mathcomp.algebra.vector.html#I"><span class="id" title="variable">I</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.vector.html#ca0a177f6d6581a7f5199987cd7ee21c"><span class="id" title="notation">{</span></a><a class="idref" href="mathcomp.algebra.vector.html#ca0a177f6d6581a7f5199987cd7ee21c"><span class="id" title="notation">vspace</span></a> <a class="idref" href="mathcomp.algebra.vector.html#Projection.vT"><span class="id" title="variable">vT</span></a><a class="idref" href="mathcomp.algebra.vector.html#ca0a177f6d6581a7f5199987cd7ee21c"><span class="id" title="notation">}</span></a>).<br/> + +<br/> +<span class="id" title="keyword">Let</span> <a name="Projection.Sumv_Pi.sumv_pi_rec"><span class="id" title="variable">sumv_pi_rec</span></a> <span class="id" title="var">i</span> :=<br/> + <span class="id" title="keyword">fix</span> <span class="id" title="var">loop</span> <span class="id" title="var">r</span> := <span class="id" title="keyword">if</span> <a class="idref" href="mathcomp.algebra.vector.html#r"><span class="id" title="variable">r</span></a> <span class="id" title="keyword">is</span> <span class="id" title="var">j</span> <a class="idref" href="mathcomp.ssreflect.seq.html#d7fed0909a58e41c49e3ee117361b0a5"><span class="id" title="notation">::</span></a> <span class="id" title="var">r1</span> <span class="id" title="keyword">then</span><br/> + <span class="id" title="keyword">let</span> <span class="id" title="var">V1</span> := (<a class="idref" href="mathcomp.algebra.vector.html#a0cc109dcb3354cdc641c4ee52a2f4cb"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.algebra.vector.html#a0cc109dcb3354cdc641c4ee52a2f4cb"><span class="id" title="notation">sum_</span></a><a class="idref" href="mathcomp.algebra.vector.html#a0cc109dcb3354cdc641c4ee52a2f4cb"><span class="id" title="notation">(</span></a><span class="id" title="var">k</span> <a class="idref" href="mathcomp.algebra.vector.html#a0cc109dcb3354cdc641c4ee52a2f4cb"><span class="id" title="notation"><-</span></a> <span class="id" title="var">r1</span><a class="idref" href="mathcomp.algebra.vector.html#a0cc109dcb3354cdc641c4ee52a2f4cb"><span class="id" title="notation">)</span></a> <a class="idref" href="mathcomp.algebra.vector.html#Projection.Sumv_Pi.Vs"><span class="id" title="variable">Vs</span></a> <a class="idref" href="mathcomp.algebra.vector.html#k"><span class="id" title="variable">k</span></a>)%<span class="id" title="var">VS</span> <span class="id" title="tactic">in</span><br/> + <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssreflect.html#0348819abaa88c2cd747e8fa60dde7ae"><span class="id" title="notation">if</span></a> <span class="id" title="var">j</span> <a class="idref" href="mathcomp.ssreflect.eqtype.html#17d28d004d0863cb022d4ce832ddaaae"><span class="id" title="notation">==</span></a> <a class="idref" href="mathcomp.algebra.vector.html#i"><span class="id" title="variable">i</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssreflect.html#0348819abaa88c2cd747e8fa60dde7ae"><span class="id" title="notation">then</span></a> <a class="idref" href="mathcomp.algebra.vector.html#addv_pi1"><span class="id" title="definition">addv_pi1</span></a> (<a class="idref" href="mathcomp.algebra.vector.html#Projection.Sumv_Pi.Vs"><span class="id" title="variable">Vs</span></a> <span class="id" title="var">j</span>) <a class="idref" href="mathcomp.algebra.vector.html#V1"><span class="id" title="variable">V1</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssreflect.html#0348819abaa88c2cd747e8fa60dde7ae"><span class="id" title="notation">else</span></a> (<a class="idref" href="mathcomp.algebra.vector.html#loop"><span class="id" title="variable">loop</span></a> <span class="id" title="var">r1</span> <a class="idref" href="mathcomp.algebra.vector.html#9ad88b19a9e5558beda973c77ca474da"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.algebra.vector.html#9ad88b19a9e5558beda973c77ca474da"><span class="id" title="notation">o</span></a> <a class="idref" href="mathcomp.algebra.vector.html#addv_pi2"><span class="id" title="definition">addv_pi2</span></a> (<a class="idref" href="mathcomp.algebra.vector.html#Projection.Sumv_Pi.Vs"><span class="id" title="variable">Vs</span></a> <span class="id" title="var">j</span>) <a class="idref" href="mathcomp.algebra.vector.html#V1"><span class="id" title="variable">V1</span></a>)%<span class="id" title="var">VF</span><br/> + <span class="id" title="keyword">else</span> 0.<br/> + +<br/> +<span class="id" title="keyword">Notation</span> <a name="sumV"><span class="id" title="abbreviation">sumV</span></a> := (<a class="idref" href="mathcomp.algebra.vector.html#ab83237670c8eecadafc9524ff9fc50e"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.algebra.vector.html#ab83237670c8eecadafc9524ff9fc50e"><span class="id" title="notation">sum_</span></a><a class="idref" href="mathcomp.algebra.vector.html#ab83237670c8eecadafc9524ff9fc50e"><span class="id" title="notation">(</span></a><span class="id" title="var">i</span> <a class="idref" href="mathcomp.algebra.vector.html#ab83237670c8eecadafc9524ff9fc50e"><span class="id" title="notation"><-</span></a> <a class="idref" href="mathcomp.algebra.vector.html#Projection.Sumv_Pi.r0"><span class="id" title="variable">r0</span></a> <a class="idref" href="mathcomp.algebra.vector.html#ab83237670c8eecadafc9524ff9fc50e"><span class="id" title="notation">|</span></a> <a class="idref" href="mathcomp.algebra.vector.html#Projection.Sumv_Pi.P"><span class="id" title="variable">P</span></a> <a class="idref" href="mathcomp.algebra.vector.html#i"><span class="id" title="variable">i</span></a><a class="idref" href="mathcomp.algebra.vector.html#ab83237670c8eecadafc9524ff9fc50e"><span class="id" title="notation">)</span></a> <a class="idref" href="mathcomp.algebra.vector.html#Projection.Sumv_Pi.Vs"><span class="id" title="variable">Vs</span></a> <a class="idref" href="mathcomp.algebra.vector.html#i"><span class="id" title="variable">i</span></a>)%<span class="id" title="var">VS</span>.<br/> +<span class="id" title="keyword">Definition</span> <a name="sumv_pi_for"><span class="id" title="definition">sumv_pi_for</span></a> <span class="id" title="var">V</span> <span class="id" title="keyword">of</span> <a class="idref" href="mathcomp.algebra.vector.html#V"><span class="id" title="variable">V</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.vector.html#sumV"><span class="id" title="abbreviation">sumV</span></a> := <span class="id" title="keyword">fun</span> <span class="id" title="var">i</span> ⇒ <a class="idref" href="mathcomp.algebra.vector.html#Projection.Sumv_Pi.sumv_pi_rec"><span class="id" title="variable">sumv_pi_rec</span></a> <a class="idref" href="mathcomp.algebra.vector.html#i"><span class="id" title="variable">i</span></a> (<a class="idref" href="mathcomp.ssreflect.seq.html#filter"><span class="id" title="definition">filter</span></a> <a class="idref" href="mathcomp.algebra.vector.html#Projection.Sumv_Pi.P"><span class="id" title="variable">P</span></a> <a class="idref" href="mathcomp.algebra.vector.html#Projection.Sumv_Pi.r0"><span class="id" title="variable">r0</span></a>).<br/> + +<br/> +<span class="id" title="keyword">Variables</span> (<a name="Projection.Sumv_Pi.V"><span class="id" title="variable">V</span></a> : <a class="idref" href="mathcomp.algebra.vector.html#ca0a177f6d6581a7f5199987cd7ee21c"><span class="id" title="notation">{</span></a><a class="idref" href="mathcomp.algebra.vector.html#ca0a177f6d6581a7f5199987cd7ee21c"><span class="id" title="notation">vspace</span></a> <a class="idref" href="mathcomp.algebra.vector.html#Projection.vT"><span class="id" title="variable">vT</span></a><a class="idref" href="mathcomp.algebra.vector.html#ca0a177f6d6581a7f5199987cd7ee21c"><span class="id" title="notation">}</span></a>) (<a name="Projection.Sumv_Pi.defV"><span class="id" title="variable">defV</span></a> : <a class="idref" href="mathcomp.algebra.vector.html#V"><span class="id" title="variable">V</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.vector.html#sumV"><span class="id" title="abbreviation">sumV</span></a>).<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="memv_sum_pi"><span class="id" title="lemma">memv_sum_pi</span></a> <span class="id" title="var">i</span> <span class="id" title="var">v</span> : <a class="idref" href="mathcomp.algebra.vector.html#sumv_pi_for"><span class="id" title="definition">sumv_pi_for</span></a> <a class="idref" href="mathcomp.algebra.vector.html#Projection.Sumv_Pi.defV"><span class="id" title="variable">defV</span></a> <a class="idref" href="mathcomp.algebra.vector.html#i"><span class="id" title="variable">i</span></a> <a class="idref" href="mathcomp.algebra.vector.html#v"><span class="id" title="variable">v</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">\</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">in</span></a> <a class="idref" href="mathcomp.algebra.vector.html#Projection.Sumv_Pi.Vs"><span class="id" title="variable">Vs</span></a> <a class="idref" href="mathcomp.algebra.vector.html#i"><span class="id" title="variable">i</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="sumv_pi_uniq_sum"><span class="id" title="lemma">sumv_pi_uniq_sum</span></a> <span class="id" title="var">v</span> :<br/> + <a class="idref" href="mathcomp.ssreflect.seq.html#uniq"><span class="id" title="definition">uniq</span></a> (<a class="idref" href="mathcomp.ssreflect.seq.html#filter"><span class="id" title="definition">filter</span></a> <a class="idref" href="mathcomp.algebra.vector.html#Projection.Sumv_Pi.P"><span class="id" title="variable">P</span></a> <a class="idref" href="mathcomp.algebra.vector.html#Projection.Sumv_Pi.r0"><span class="id" title="variable">r0</span></a>) <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.vector.html#v"><span class="id" title="variable">v</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">\</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">in</span></a> <a class="idref" href="mathcomp.algebra.vector.html#Projection.Sumv_Pi.V"><span class="id" title="variable">V</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a><br/> + <a class="idref" href="mathcomp.algebra.ssralg.html#cbc2f2ab11c1c376b5c4511d28b14d74"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#cbc2f2ab11c1c376b5c4511d28b14d74"><span class="id" title="notation">sum_</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#cbc2f2ab11c1c376b5c4511d28b14d74"><span class="id" title="notation">(</span></a><span class="id" title="var">i</span> <a class="idref" href="mathcomp.algebra.ssralg.html#cbc2f2ab11c1c376b5c4511d28b14d74"><span class="id" title="notation"><-</span></a> <a class="idref" href="mathcomp.algebra.vector.html#Projection.Sumv_Pi.r0"><span class="id" title="variable">r0</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#cbc2f2ab11c1c376b5c4511d28b14d74"><span class="id" title="notation">|</span></a> <a class="idref" href="mathcomp.algebra.vector.html#Projection.Sumv_Pi.P"><span class="id" title="variable">P</span></a> <a class="idref" href="mathcomp.algebra.vector.html#i"><span class="id" title="variable">i</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#cbc2f2ab11c1c376b5c4511d28b14d74"><span class="id" title="notation">)</span></a> <a class="idref" href="mathcomp.algebra.vector.html#sumv_pi_for"><span class="id" title="definition">sumv_pi_for</span></a> <a class="idref" href="mathcomp.algebra.vector.html#Projection.Sumv_Pi.defV"><span class="id" title="variable">defV</span></a> <a class="idref" href="mathcomp.algebra.vector.html#i"><span class="id" title="variable">i</span></a> <a class="idref" href="mathcomp.algebra.vector.html#v"><span class="id" title="variable">v</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.vector.html#v"><span class="id" title="variable">v</span></a>.<br/> + +<br/> +<span class="id" title="keyword">End</span> <a class="idref" href="mathcomp.algebra.vector.html#Projection.Sumv_Pi"><span class="id" title="section">Sumv_Pi</span></a>.<br/> + +<br/> +<span class="id" title="keyword">End</span> <a class="idref" href="mathcomp.algebra.vector.html#Projection"><span class="id" title="section">Projection</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Notation</span> <a name="sumv_pi"><span class="id" title="abbreviation">sumv_pi</span></a> <span class="id" title="var">V</span> := (<a class="idref" href="mathcomp.algebra.vector.html#sumv_pi_for"><span class="id" title="definition">sumv_pi_for</span></a> (<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#erefl"><span class="id" title="abbreviation">erefl</span></a> <span class="id" title="var">V</span>)).<br/> + +<br/> +<span class="id" title="keyword">Section</span> <a name="SumvPi"><span class="id" title="section">SumvPi</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Variable</span> (<a name="SumvPi.K"><span class="id" title="variable">K</span></a> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Field.Exports.fieldType"><span class="id" title="abbreviation">fieldType</span></a>) (<a name="SumvPi.vT"><span class="id" title="variable">vT</span></a> : <a class="idref" href="mathcomp.algebra.vector.html#vectType"><span class="id" title="abbreviation">vectType</span></a> <a class="idref" href="mathcomp.algebra.vector.html#K"><span class="id" title="variable">K</span></a>).<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="sumv_pi_sum"><span class="id" title="lemma">sumv_pi_sum</span></a> (<span class="id" title="var">I</span> : <a class="idref" href="mathcomp.ssreflect.fintype.html#Finite.Exports.finType"><span class="id" title="abbreviation">finType</span></a>) (<span class="id" title="var">P</span> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#pred"><span class="id" title="definition">pred</span></a> <a class="idref" href="mathcomp.algebra.vector.html#I"><span class="id" title="variable">I</span></a>) <span class="id" title="var">Vs</span> <span class="id" title="var">v</span> (<span class="id" title="var">V</span> : <a class="idref" href="mathcomp.algebra.vector.html#ca0a177f6d6581a7f5199987cd7ee21c"><span class="id" title="notation">{</span></a><a class="idref" href="mathcomp.algebra.vector.html#ca0a177f6d6581a7f5199987cd7ee21c"><span class="id" title="notation">vspace</span></a> <a class="idref" href="mathcomp.algebra.vector.html#SumvPi.vT"><span class="id" title="variable">vT</span></a><a class="idref" href="mathcomp.algebra.vector.html#ca0a177f6d6581a7f5199987cd7ee21c"><span class="id" title="notation">}</span></a>)<br/> + (<span class="id" title="var">defV</span> : <a class="idref" href="mathcomp.algebra.vector.html#V"><span class="id" title="variable">V</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> (<a class="idref" href="mathcomp.algebra.vector.html#d977f5115f4427a1c821b49789732de6"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.algebra.vector.html#d977f5115f4427a1c821b49789732de6"><span class="id" title="notation">sum_</span></a><a class="idref" href="mathcomp.algebra.vector.html#d977f5115f4427a1c821b49789732de6"><span class="id" title="notation">(</span></a><span class="id" title="var">i</span> <a class="idref" href="mathcomp.algebra.vector.html#d977f5115f4427a1c821b49789732de6"><span class="id" title="notation">|</span></a> <a class="idref" href="mathcomp.algebra.vector.html#P"><span class="id" title="variable">P</span></a> <a class="idref" href="mathcomp.algebra.vector.html#i"><span class="id" title="variable">i</span></a><a class="idref" href="mathcomp.algebra.vector.html#d977f5115f4427a1c821b49789732de6"><span class="id" title="notation">)</span></a> <a class="idref" href="mathcomp.algebra.vector.html#Vs"><span class="id" title="variable">Vs</span></a> <a class="idref" href="mathcomp.algebra.vector.html#i"><span class="id" title="variable">i</span></a>)%<span class="id" title="var">VS</span>) :<br/> + <a class="idref" href="mathcomp.algebra.vector.html#v"><span class="id" title="variable">v</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">\</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">in</span></a> <a class="idref" href="mathcomp.algebra.vector.html#V"><span class="id" title="variable">V</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#622398b62523a74328f94700e42198d0"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#622398b62523a74328f94700e42198d0"><span class="id" title="notation">sum_</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#622398b62523a74328f94700e42198d0"><span class="id" title="notation">(</span></a><span class="id" title="var">i</span> <a class="idref" href="mathcomp.algebra.ssralg.html#622398b62523a74328f94700e42198d0"><span class="id" title="notation">|</span></a> <a class="idref" href="mathcomp.algebra.vector.html#P"><span class="id" title="variable">P</span></a> <a class="idref" href="mathcomp.algebra.vector.html#i"><span class="id" title="variable">i</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#622398b62523a74328f94700e42198d0"><span class="id" title="notation">)</span></a> <a class="idref" href="mathcomp.algebra.vector.html#sumv_pi_for"><span class="id" title="definition">sumv_pi_for</span></a> <a class="idref" href="mathcomp.algebra.vector.html#defV"><span class="id" title="variable">defV</span></a> <a class="idref" href="mathcomp.algebra.vector.html#i"><span class="id" title="variable">i</span></a> <a class="idref" href="mathcomp.algebra.vector.html#v"><span class="id" title="variable">v</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#8f9364556521ebb498093f28eea2240f"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.vector.html#v"><span class="id" title="variable">v</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#8f9364556521ebb498093f28eea2240f"><span class="id" title="notation">:></span></a> <a class="idref" href="mathcomp.algebra.vector.html#SumvPi.vT"><span class="id" title="variable">vT</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="sumv_pi_nat_sum"><span class="id" title="lemma">sumv_pi_nat_sum</span></a> <span class="id" title="var">m</span> <span class="id" title="var">n</span> (<span class="id" title="var">P</span> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#pred"><span class="id" title="definition">pred</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#nat"><span class="id" title="inductive">nat</span></a>) <span class="id" title="var">Vs</span> <span class="id" title="var">v</span> (<span class="id" title="var">V</span> : <a class="idref" href="mathcomp.algebra.vector.html#ca0a177f6d6581a7f5199987cd7ee21c"><span class="id" title="notation">{</span></a><a class="idref" href="mathcomp.algebra.vector.html#ca0a177f6d6581a7f5199987cd7ee21c"><span class="id" title="notation">vspace</span></a> <a class="idref" href="mathcomp.algebra.vector.html#SumvPi.vT"><span class="id" title="variable">vT</span></a><a class="idref" href="mathcomp.algebra.vector.html#ca0a177f6d6581a7f5199987cd7ee21c"><span class="id" title="notation">}</span></a>)<br/> + (<span class="id" title="var">defV</span> : <a class="idref" href="mathcomp.algebra.vector.html#V"><span class="id" title="variable">V</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> (<a class="idref" href="mathcomp.algebra.vector.html#c39e266eae2b9d16deeec803fc46fe8c"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.algebra.vector.html#c39e266eae2b9d16deeec803fc46fe8c"><span class="id" title="notation">sum_</span></a><a class="idref" href="mathcomp.algebra.vector.html#c39e266eae2b9d16deeec803fc46fe8c"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.vector.html#m"><span class="id" title="variable">m</span></a> <a class="idref" href="mathcomp.algebra.vector.html#c39e266eae2b9d16deeec803fc46fe8c"><span class="id" title="notation">≤</span></a> <span class="id" title="var">i</span> <a class="idref" href="mathcomp.algebra.vector.html#c39e266eae2b9d16deeec803fc46fe8c"><span class="id" title="notation"><</span></a> <a class="idref" href="mathcomp.algebra.vector.html#n"><span class="id" title="variable">n</span></a> <a class="idref" href="mathcomp.algebra.vector.html#c39e266eae2b9d16deeec803fc46fe8c"><span class="id" title="notation">|</span></a> <a class="idref" href="mathcomp.algebra.vector.html#P"><span class="id" title="variable">P</span></a> <a class="idref" href="mathcomp.algebra.vector.html#i"><span class="id" title="variable">i</span></a><a class="idref" href="mathcomp.algebra.vector.html#c39e266eae2b9d16deeec803fc46fe8c"><span class="id" title="notation">)</span></a> <a class="idref" href="mathcomp.algebra.vector.html#Vs"><span class="id" title="variable">Vs</span></a> <a class="idref" href="mathcomp.algebra.vector.html#i"><span class="id" title="variable">i</span></a>)%<span class="id" title="var">VS</span>) :<br/> + <a class="idref" href="mathcomp.algebra.vector.html#v"><span class="id" title="variable">v</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">\</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">in</span></a> <a class="idref" href="mathcomp.algebra.vector.html#V"><span class="id" title="variable">V</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#2c867945467f28d796e85a2abf6a164e"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#2c867945467f28d796e85a2abf6a164e"><span class="id" title="notation">sum_</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#2c867945467f28d796e85a2abf6a164e"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.vector.html#m"><span class="id" title="variable">m</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#2c867945467f28d796e85a2abf6a164e"><span class="id" title="notation">≤</span></a> <span class="id" title="var">i</span> <a class="idref" href="mathcomp.algebra.ssralg.html#2c867945467f28d796e85a2abf6a164e"><span class="id" title="notation"><</span></a> <a class="idref" href="mathcomp.algebra.vector.html#n"><span class="id" title="variable">n</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#2c867945467f28d796e85a2abf6a164e"><span class="id" title="notation">|</span></a> <a class="idref" href="mathcomp.algebra.vector.html#P"><span class="id" title="variable">P</span></a> <a class="idref" href="mathcomp.algebra.vector.html#i"><span class="id" title="variable">i</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#2c867945467f28d796e85a2abf6a164e"><span class="id" title="notation">)</span></a> <a class="idref" href="mathcomp.algebra.vector.html#sumv_pi_for"><span class="id" title="definition">sumv_pi_for</span></a> <a class="idref" href="mathcomp.algebra.vector.html#defV"><span class="id" title="variable">defV</span></a> <a class="idref" href="mathcomp.algebra.vector.html#i"><span class="id" title="variable">i</span></a> <a class="idref" href="mathcomp.algebra.vector.html#v"><span class="id" title="variable">v</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#8f9364556521ebb498093f28eea2240f"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.vector.html#v"><span class="id" title="variable">v</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#8f9364556521ebb498093f28eea2240f"><span class="id" title="notation">:></span></a> <a class="idref" href="mathcomp.algebra.vector.html#SumvPi.vT"><span class="id" title="variable">vT</span></a>.<br/> + +<br/> +<span class="id" title="keyword">End</span> <a class="idref" href="mathcomp.algebra.vector.html#SumvPi"><span class="id" title="section">SumvPi</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Section</span> <a name="SubVector"><span class="id" title="section">SubVector</span></a>.<br/> + +<br/> +</div> + +<div class="doc"> + Turn a {vspace V} into a vectType +</div> +<div class="code"> +<span class="id" title="keyword">Variable</span> (<a name="SubVector.K"><span class="id" title="variable">K</span></a> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Field.Exports.fieldType"><span class="id" title="abbreviation">fieldType</span></a>) (<a name="SubVector.vT"><span class="id" title="variable">vT</span></a> : <a class="idref" href="mathcomp.algebra.vector.html#vectType"><span class="id" title="abbreviation">vectType</span></a> <a class="idref" href="mathcomp.algebra.vector.html#K"><span class="id" title="variable">K</span></a>) (<a name="SubVector.U"><span class="id" title="variable">U</span></a> : <a class="idref" href="mathcomp.algebra.vector.html#ca0a177f6d6581a7f5199987cd7ee21c"><span class="id" title="notation">{</span></a><a class="idref" href="mathcomp.algebra.vector.html#ca0a177f6d6581a7f5199987cd7ee21c"><span class="id" title="notation">vspace</span></a> <a class="idref" href="mathcomp.algebra.vector.html#vT"><span class="id" title="variable">vT</span></a><a class="idref" href="mathcomp.algebra.vector.html#ca0a177f6d6581a7f5199987cd7ee21c"><span class="id" title="notation">}</span></a>).<br/> + +<br/> +<span class="id" title="keyword">Inductive</span> <a name="subvs_of"><span class="id" title="inductive">subvs_of</span></a> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#predArgType"><span class="id" title="definition">predArgType</span></a> := <a name="Subvs"><span class="id" title="constructor">Subvs</span></a> <span class="id" title="var">u</span> & <a class="idref" href="mathcomp.algebra.vector.html#u"><span class="id" title="variable">u</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">\</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">in</span></a> <a class="idref" href="mathcomp.algebra.vector.html#SubVector.U"><span class="id" title="variable">U</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Definition</span> <a name="vsval"><span class="id" title="definition">vsval</span></a> <span class="id" title="var">w</span> := <span class="id" title="keyword">let</span>: <a class="idref" href="mathcomp.algebra.vector.html#Subvs"><span class="id" title="constructor">Subvs</span></a> <span class="id" title="var">u</span> <span class="id" title="var">_</span> := <a class="idref" href="mathcomp.algebra.vector.html#w"><span class="id" title="variable">w</span></a> <span class="id" title="tactic">in</span> <span class="id" title="var">u</span>.<br/> +<span class="id" title="keyword">Canonical</span> <span class="id" title="var">subvs_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#341c160c3e7b20d967b85d1852a7f89f"><span class="id" title="notation">[</span></a><a class="idref" href="mathcomp.ssreflect.eqtype.html#341c160c3e7b20d967b85d1852a7f89f"><span class="id" title="notation">subType</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#341c160c3e7b20d967b85d1852a7f89f"><span class="id" title="notation">for</span></a> <a class="idref" href="mathcomp.algebra.vector.html#vsval"><span class="id" title="definition">vsval</span></a><a class="idref" href="mathcomp.ssreflect.eqtype.html#341c160c3e7b20d967b85d1852a7f89f"><span class="id" title="notation">]</span></a>.<br/> +<span class="id" title="keyword">Definition</span> <a name="subvs_eqMixin"><span class="id" title="definition">subvs_eqMixin</span></a> := <span class="id" title="keyword">Eval</span> <span class="id" title="tactic">hnf</span> <span class="id" title="tactic">in</span> <a class="idref" href="mathcomp.ssreflect.eqtype.html#4bc2d2dce12edef0fb9c71d4a902ae5d"><span class="id" title="notation">[</span></a><a class="idref" href="mathcomp.ssreflect.eqtype.html#4bc2d2dce12edef0fb9c71d4a902ae5d"><span class="id" title="notation">eqMixin</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#4bc2d2dce12edef0fb9c71d4a902ae5d"><span class="id" title="notation">of</span></a> <a class="idref" href="mathcomp.algebra.vector.html#subvs_of"><span class="id" title="inductive">subvs_of</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#4bc2d2dce12edef0fb9c71d4a902ae5d"><span class="id" title="notation">by</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#4bc2d2dce12edef0fb9c71d4a902ae5d"><span class="id" title="notation"><:]</span></a>.<br/> +<span class="id" title="keyword">Canonical</span> <span class="id" title="var">subvs_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.vector.html#subvs_of"><span class="id" title="inductive">subvs_of</span></a> <a class="idref" href="mathcomp.algebra.vector.html#subvs_eqMixin"><span class="id" title="definition">subvs_eqMixin</span></a>.<br/> +<span class="id" title="keyword">Definition</span> <a name="subvs_choiceMixin"><span class="id" title="definition">subvs_choiceMixin</span></a> := <a class="idref" href="mathcomp.ssreflect.choice.html#6c8b2d90ff1fbb8e9926bbf12495cb70"><span class="id" title="notation">[</span></a><a class="idref" href="mathcomp.ssreflect.choice.html#6c8b2d90ff1fbb8e9926bbf12495cb70"><span class="id" title="notation">choiceMixin</span></a> <a class="idref" href="mathcomp.ssreflect.choice.html#6c8b2d90ff1fbb8e9926bbf12495cb70"><span class="id" title="notation">of</span></a> <a class="idref" href="mathcomp.algebra.vector.html#subvs_of"><span class="id" title="inductive">subvs_of</span></a> <a class="idref" href="mathcomp.ssreflect.choice.html#6c8b2d90ff1fbb8e9926bbf12495cb70"><span class="id" title="notation">by</span></a> <a class="idref" href="mathcomp.ssreflect.choice.html#6c8b2d90ff1fbb8e9926bbf12495cb70"><span class="id" title="notation"><:]</span></a>.<br/> +<span class="id" title="keyword">Canonical</span> <span class="id" title="var">subvs_choiceType</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.vector.html#subvs_of"><span class="id" title="inductive">subvs_of</span></a> <a class="idref" href="mathcomp.algebra.vector.html#subvs_choiceMixin"><span class="id" title="definition">subvs_choiceMixin</span></a>.<br/> +<span class="id" title="keyword">Definition</span> <a name="subvs_zmodMixin"><span class="id" title="definition">subvs_zmodMixin</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#12c08185c491bc566a7da7b64605c9a3"><span class="id" title="notation">[</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#12c08185c491bc566a7da7b64605c9a3"><span class="id" title="notation">zmodMixin</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#12c08185c491bc566a7da7b64605c9a3"><span class="id" title="notation">of</span></a> <a class="idref" href="mathcomp.algebra.vector.html#subvs_of"><span class="id" title="inductive">subvs_of</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#12c08185c491bc566a7da7b64605c9a3"><span class="id" title="notation">by</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#12c08185c491bc566a7da7b64605c9a3"><span class="id" title="notation"><:]</span></a>.<br/> +<span class="id" title="keyword">Canonical</span> <span class="id" title="var">subvs_zmodType</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.vector.html#subvs_of"><span class="id" title="inductive">subvs_of</span></a> <a class="idref" href="mathcomp.algebra.vector.html#subvs_zmodMixin"><span class="id" title="definition">subvs_zmodMixin</span></a>.<br/> +<span class="id" title="keyword">Definition</span> <a name="subvs_lmodMixin"><span class="id" title="definition">subvs_lmodMixin</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#32c2078c0586b055b54305843b7f7e67"><span class="id" title="notation">[</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#32c2078c0586b055b54305843b7f7e67"><span class="id" title="notation">lmodMixin</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#32c2078c0586b055b54305843b7f7e67"><span class="id" title="notation">of</span></a> <a class="idref" href="mathcomp.algebra.vector.html#subvs_of"><span class="id" title="inductive">subvs_of</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#32c2078c0586b055b54305843b7f7e67"><span class="id" title="notation">by</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#32c2078c0586b055b54305843b7f7e67"><span class="id" title="notation"><:]</span></a>.<br/> +<span class="id" title="keyword">Canonical</span> <span class="id" title="var">subvs_lmodType</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.vector.html#SubVector.K"><span class="id" title="variable">K</span></a> <a class="idref" href="mathcomp.algebra.vector.html#subvs_of"><span class="id" title="inductive">subvs_of</span></a> <a class="idref" href="mathcomp.algebra.vector.html#subvs_lmodMixin"><span class="id" title="definition">subvs_lmodMixin</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="subvsP"><span class="id" title="lemma">subvsP</span></a> <span class="id" title="var">w</span> : <a class="idref" href="mathcomp.algebra.vector.html#vsval"><span class="id" title="definition">vsval</span></a> <a class="idref" href="mathcomp.algebra.vector.html#w"><span class="id" title="variable">w</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">\</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">in</span></a> <a class="idref" href="mathcomp.algebra.vector.html#SubVector.U"><span class="id" title="variable">U</span></a>. <br/> +<span class="id" title="keyword">Lemma</span> <a name="subvs_inj"><span class="id" title="lemma">subvs_inj</span></a> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#injective"><span class="id" title="definition">injective</span></a> <a class="idref" href="mathcomp.algebra.vector.html#vsval"><span class="id" title="definition">vsval</span></a>. <br/> +<span class="id" title="keyword">Lemma</span> <a name="congr_subvs"><span class="id" title="lemma">congr_subvs</span></a> <span class="id" title="var">u</span> <span class="id" title="var">v</span> : <a class="idref" href="mathcomp.algebra.vector.html#u"><span class="id" title="variable">u</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.vector.html#v"><span class="id" title="variable">v</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.vector.html#vsval"><span class="id" title="definition">vsval</span></a> <a class="idref" href="mathcomp.algebra.vector.html#u"><span class="id" title="variable">u</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.vector.html#vsval"><span class="id" title="definition">vsval</span></a> <a class="idref" href="mathcomp.algebra.vector.html#v"><span class="id" title="variable">v</span></a>. <br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="vsval_is_linear"><span class="id" title="lemma">vsval_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.vector.html#vsval"><span class="id" title="definition">vsval</span></a>. <br/> +<span class="id" title="keyword">Canonical</span> <span class="id" title="var">vsval_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.vector.html#vsval_is_linear"><span class="id" title="lemma">vsval_is_linear</span></a>.<br/> +<span class="id" title="keyword">Canonical</span> <span class="id" title="var">vsval_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.vector.html#vsval_is_linear"><span class="id" title="lemma">vsval_is_linear</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Fact</span> <a name="vsproj_key"><span class="id" title="lemma">vsproj_key</span></a> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#unit"><span class="id" title="inductive">unit</span></a>. <br/> +<span class="id" title="keyword">Definition</span> <a name="vsproj_def"><span class="id" title="definition">vsproj_def</span></a> <span class="id" title="var">u</span> := <a class="idref" href="mathcomp.algebra.vector.html#Subvs"><span class="id" title="constructor">Subvs</span></a> (<a class="idref" href="mathcomp.algebra.vector.html#memv_proj"><span class="id" title="lemma">memv_proj</span></a> <a class="idref" href="mathcomp.algebra.vector.html#SubVector.U"><span class="id" title="variable">U</span></a> <a class="idref" href="mathcomp.algebra.vector.html#u"><span class="id" title="variable">u</span></a>).<br/> +<span class="id" title="keyword">Definition</span> <a name="vsproj"><span class="id" title="definition">vsproj</span></a> := <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssreflect.html#locked_with"><span class="id" title="definition">locked_with</span></a> <a class="idref" href="mathcomp.algebra.vector.html#vsproj_key"><span class="id" title="lemma">vsproj_key</span></a> <a class="idref" href="mathcomp.algebra.vector.html#vsproj_def"><span class="id" title="definition">vsproj_def</span></a>.<br/> +<span class="id" title="keyword">Canonical</span> <span class="id" title="var">vsproj_unlockable</span> := <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssreflect.html#58f94351327943cd874eb55da8e0ca14"><span class="id" title="notation">[</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssreflect.html#58f94351327943cd874eb55da8e0ca14"><span class="id" title="notation">unlockable</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssreflect.html#58f94351327943cd874eb55da8e0ca14"><span class="id" title="notation">fun</span></a> <a class="idref" href="mathcomp.algebra.vector.html#vsproj"><span class="id" title="definition">vsproj</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssreflect.html#58f94351327943cd874eb55da8e0ca14"><span class="id" title="notation">]</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="vsprojK"><span class="id" title="lemma">vsprojK</span></a> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#5c59b35a0b51db520cf1fba473ecf127"><span class="id" title="notation">{</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#5c59b35a0b51db520cf1fba473ecf127"><span class="id" title="notation">in</span></a> <a class="idref" href="mathcomp.algebra.vector.html#SubVector.U"><span class="id" title="variable">U</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#5c59b35a0b51db520cf1fba473ecf127"><span class="id" title="notation">,</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#cancel"><span class="id" title="definition">cancel</span></a> <a class="idref" href="mathcomp.algebra.vector.html#vsproj"><span class="id" title="definition">vsproj</span></a> <a class="idref" href="mathcomp.algebra.vector.html#vsval"><span class="id" title="definition">vsval</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#5c59b35a0b51db520cf1fba473ecf127"><span class="id" title="notation">}</span></a>.<br/> + <span class="id" title="keyword">Lemma</span> <a name="vsvalK"><span class="id" title="lemma">vsvalK</span></a> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#cancel"><span class="id" title="definition">cancel</span></a> <a class="idref" href="mathcomp.algebra.vector.html#vsval"><span class="id" title="definition">vsval</span></a> <a class="idref" href="mathcomp.algebra.vector.html#vsproj"><span class="id" title="definition">vsproj</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="vsproj_is_linear"><span class="id" title="lemma">vsproj_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.vector.html#vsproj"><span class="id" title="definition">vsproj</span></a>.<br/> + <span class="id" title="keyword">Canonical</span> <span class="id" title="var">vsproj_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.vector.html#vsproj_is_linear"><span class="id" title="lemma">vsproj_is_linear</span></a>.<br/> +<span class="id" title="keyword">Canonical</span> <span class="id" title="var">vsproj_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.vector.html#vsproj_is_linear"><span class="id" title="lemma">vsproj_is_linear</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Fact</span> <a name="subvs_vect_iso"><span class="id" title="lemma">subvs_vect_iso</span></a> : <a class="idref" href="mathcomp.algebra.vector.html#axiom"><span class="id" title="abbreviation">Vector.axiom</span></a> (<a class="idref" href="mathcomp.algebra.vector.html#ee35a6780ccd60155a3be89dcb5fdb30"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.algebra.vector.html#ee35a6780ccd60155a3be89dcb5fdb30"><span class="id" title="notation">dim</span></a> <a class="idref" href="mathcomp.algebra.vector.html#SubVector.U"><span class="id" title="variable">U</span></a>) <a class="idref" href="mathcomp.algebra.vector.html#subvs_of"><span class="id" title="inductive">subvs_of</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Definition</span> <a name="subvs_vectMixin"><span class="id" title="definition">subvs_vectMixin</span></a> := <a class="idref" href="mathcomp.algebra.vector.html#VectMixin"><span class="id" title="abbreviation">VectMixin</span></a> <a class="idref" href="mathcomp.algebra.vector.html#subvs_vect_iso"><span class="id" title="lemma">subvs_vect_iso</span></a>.<br/> +<span class="id" title="keyword">Canonical</span> <span class="id" title="var">subvs_vectType</span> := <a class="idref" href="mathcomp.algebra.vector.html#VectType"><span class="id" title="abbreviation">VectType</span></a> <a class="idref" href="mathcomp.algebra.vector.html#SubVector.K"><span class="id" title="variable">K</span></a> <a class="idref" href="mathcomp.algebra.vector.html#subvs_of"><span class="id" title="inductive">subvs_of</span></a> <a class="idref" href="mathcomp.algebra.vector.html#subvs_vectMixin"><span class="id" title="definition">subvs_vectMixin</span></a>.<br/> + +<br/> +<span class="id" title="keyword">End</span> <a class="idref" href="mathcomp.algebra.vector.html#SubVector"><span class="id" title="section">SubVector</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Section</span> <a name="MatrixVectType"><span class="id" title="section">MatrixVectType</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Variables</span> (<a name="MatrixVectType.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="MatrixVectType.m"><span class="id" title="variable">m</span></a> <a name="MatrixVectType.n"><span class="id" title="variable">n</span></a> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#nat"><span class="id" title="inductive">nat</span></a>).<br/> + +<br/> +</div> + +<div class="doc"> + The apparently useless => /= in line 1 of the proof performs some evar + expansions that the Ltac interpretation of exists is incapable of doing. +</div> +<div class="code"> +<span class="id" title="keyword">Fact</span> <a name="matrix_vect_iso"><span class="id" title="lemma">matrix_vect_iso</span></a> : <a class="idref" href="mathcomp.algebra.vector.html#axiom"><span class="id" title="abbreviation">Vector.axiom</span></a> (<a class="idref" href="mathcomp.algebra.vector.html#MatrixVectType.m"><span class="id" title="variable">m</span></a> <a class="idref" href="mathcomp.ssreflect.ssrnat.html#697e4695610f677ae98a52af81f779d2"><span class="id" title="notation">×</span></a> <a class="idref" href="mathcomp.algebra.vector.html#MatrixVectType.n"><span class="id" title="variable">n</span></a>) <a class="idref" href="mathcomp.algebra.matrix.html#e36c289fb249221b43b9c978a67340fb"><span class="id" title="notation">'</span></a><a class="idref" href="mathcomp.algebra.matrix.html#e36c289fb249221b43b9c978a67340fb"><span class="id" title="notation">M</span></a><a class="idref" href="mathcomp.algebra.matrix.html#e36c289fb249221b43b9c978a67340fb"><span class="id" title="notation">[</span></a><a class="idref" href="mathcomp.algebra.vector.html#MatrixVectType.R"><span class="id" title="variable">R</span></a><a class="idref" href="mathcomp.algebra.matrix.html#e36c289fb249221b43b9c978a67340fb"><span class="id" title="notation">]</span></a><a class="idref" href="mathcomp.algebra.matrix.html#e36c289fb249221b43b9c978a67340fb"><span class="id" title="notation">_</span></a><a class="idref" href="mathcomp.algebra.matrix.html#e36c289fb249221b43b9c978a67340fb"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.vector.html#MatrixVectType.m"><span class="id" title="variable">m</span></a><a class="idref" href="mathcomp.algebra.matrix.html#e36c289fb249221b43b9c978a67340fb"><span class="id" title="notation">,</span></a> <a class="idref" href="mathcomp.algebra.vector.html#MatrixVectType.n"><span class="id" title="variable">n</span></a><a class="idref" href="mathcomp.algebra.matrix.html#e36c289fb249221b43b9c978a67340fb"><span class="id" title="notation">)</span></a>.<br/> +<span class="id" title="keyword">Definition</span> <a name="matrix_vectMixin"><span class="id" title="definition">matrix_vectMixin</span></a> := <a class="idref" href="mathcomp.algebra.vector.html#VectMixin"><span class="id" title="abbreviation">VectMixin</span></a> <a class="idref" href="mathcomp.algebra.vector.html#matrix_vect_iso"><span class="id" title="lemma">matrix_vect_iso</span></a>.<br/> +<span class="id" title="keyword">Canonical</span> <span class="id" title="var">matrix_vectType</span> := <a class="idref" href="mathcomp.algebra.vector.html#VectType"><span class="id" title="abbreviation">VectType</span></a> <a class="idref" href="mathcomp.algebra.vector.html#MatrixVectType.R"><span class="id" title="variable">R</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#e36c289fb249221b43b9c978a67340fb"><span class="id" title="notation">'</span></a><a class="idref" href="mathcomp.algebra.matrix.html#e36c289fb249221b43b9c978a67340fb"><span class="id" title="notation">M</span></a><a class="idref" href="mathcomp.algebra.matrix.html#e36c289fb249221b43b9c978a67340fb"><span class="id" title="notation">[</span></a><a class="idref" href="mathcomp.algebra.vector.html#MatrixVectType.R"><span class="id" title="variable">R</span></a><a class="idref" href="mathcomp.algebra.matrix.html#e36c289fb249221b43b9c978a67340fb"><span class="id" title="notation">]</span></a><a class="idref" href="mathcomp.algebra.matrix.html#e36c289fb249221b43b9c978a67340fb"><span class="id" title="notation">_</span></a><a class="idref" href="mathcomp.algebra.matrix.html#e36c289fb249221b43b9c978a67340fb"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.vector.html#MatrixVectType.m"><span class="id" title="variable">m</span></a><a class="idref" href="mathcomp.algebra.matrix.html#e36c289fb249221b43b9c978a67340fb"><span class="id" title="notation">,</span></a> <a class="idref" href="mathcomp.algebra.vector.html#MatrixVectType.n"><span class="id" title="variable">n</span></a><a class="idref" href="mathcomp.algebra.matrix.html#e36c289fb249221b43b9c978a67340fb"><span class="id" title="notation">)</span></a> <a class="idref" href="mathcomp.algebra.vector.html#matrix_vectMixin"><span class="id" title="definition">matrix_vectMixin</span></a>.<br/> + +<br/> +<span class="id" title="keyword">End</span> <a class="idref" href="mathcomp.algebra.vector.html#MatrixVectType"><span class="id" title="section">MatrixVectType</span></a>.<br/> + +<br/> +</div> + +<div class="doc"> + A ring is a one-dimension vector space +</div> +<div class="code"> +<span class="id" title="keyword">Section</span> <a name="RegularVectType"><span class="id" title="section">RegularVectType</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Variable</span> <a name="RegularVectType.R"><span class="id" title="variable">R</span></a> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Ring.Exports.ringType"><span class="id" title="abbreviation">ringType</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Fact</span> <a name="regular_vect_iso"><span class="id" title="lemma">regular_vect_iso</span></a> : <a class="idref" href="mathcomp.algebra.vector.html#axiom"><span class="id" title="abbreviation">Vector.axiom</span></a> 1 <a class="idref" href="mathcomp.algebra.vector.html#RegularVectType.R"><span class="id" title="variable">R</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#c2b6ed6fbc6f0b41c6ad09005b7580b6"><span class="id" title="notation">^</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#c2b6ed6fbc6f0b41c6ad09005b7580b6"><span class="id" title="notation">o</span></a>.<br/> +<span class="id" title="keyword">Definition</span> <a name="regular_vectMixin"><span class="id" title="definition">regular_vectMixin</span></a> := <a class="idref" href="mathcomp.algebra.vector.html#VectMixin"><span class="id" title="abbreviation">VectMixin</span></a> <a class="idref" href="mathcomp.algebra.vector.html#regular_vect_iso"><span class="id" title="lemma">regular_vect_iso</span></a>.<br/> +<span class="id" title="keyword">Canonical</span> <span class="id" title="var">regular_vectType</span> := <a class="idref" href="mathcomp.algebra.vector.html#VectType"><span class="id" title="abbreviation">VectType</span></a> <a class="idref" href="mathcomp.algebra.vector.html#RegularVectType.R"><span class="id" title="variable">R</span></a> <a class="idref" href="mathcomp.algebra.vector.html#RegularVectType.R"><span class="id" title="variable">R</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#c2b6ed6fbc6f0b41c6ad09005b7580b6"><span class="id" title="notation">^</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#c2b6ed6fbc6f0b41c6ad09005b7580b6"><span class="id" title="notation">o</span></a> <a class="idref" href="mathcomp.algebra.vector.html#regular_vectMixin"><span class="id" title="definition">regular_vectMixin</span></a>.<br/> + +<br/> +<span class="id" title="keyword">End</span> <a class="idref" href="mathcomp.algebra.vector.html#RegularVectType"><span class="id" title="section">RegularVectType</span></a>.<br/> + +<br/> +</div> + +<div class="doc"> + External direct product of two vectTypes. +</div> +<div class="code"> +<span class="id" title="keyword">Section</span> <a name="ProdVector"><span class="id" title="section">ProdVector</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Variables</span> (<a name="ProdVector.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="ProdVector.vT1"><span class="id" title="variable">vT1</span></a> <a name="ProdVector.vT2"><span class="id" title="variable">vT2</span></a> : <a class="idref" href="mathcomp.algebra.vector.html#vectType"><span class="id" title="abbreviation">vectType</span></a> <a class="idref" href="mathcomp.algebra.vector.html#R"><span class="id" title="variable">R</span></a>).<br/> + +<br/> +<span class="id" title="keyword">Fact</span> <a name="pair_vect_iso"><span class="id" title="lemma">pair_vect_iso</span></a> : <a class="idref" href="mathcomp.algebra.vector.html#axiom"><span class="id" title="abbreviation">Vector.axiom</span></a> (<a class="idref" href="mathcomp.algebra.vector.html#dim"><span class="id" title="definition">Vector.dim</span></a> <a class="idref" href="mathcomp.algebra.vector.html#ProdVector.vT1"><span class="id" title="variable">vT1</span></a> <a class="idref" href="mathcomp.ssreflect.ssrnat.html#b3eea360671e1b32b18a26e15b3aace3"><span class="id" title="notation">+</span></a> <a class="idref" href="mathcomp.algebra.vector.html#dim"><span class="id" title="definition">Vector.dim</span></a> <a class="idref" href="mathcomp.algebra.vector.html#ProdVector.vT2"><span class="id" title="variable">vT2</span></a>) (<a class="idref" href="mathcomp.algebra.vector.html#ProdVector.vT1"><span class="id" title="variable">vT1</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#d19c7eafd0e2d195d10df94b392087b5"><span class="id" title="notation">×</span></a> <a class="idref" href="mathcomp.algebra.vector.html#ProdVector.vT2"><span class="id" title="variable">vT2</span></a>).<br/> +<span class="id" title="keyword">Definition</span> <a name="pair_vectMixin"><span class="id" title="definition">pair_vectMixin</span></a> := <a class="idref" href="mathcomp.algebra.vector.html#VectMixin"><span class="id" title="abbreviation">VectMixin</span></a> <a class="idref" href="mathcomp.algebra.vector.html#pair_vect_iso"><span class="id" title="lemma">pair_vect_iso</span></a>.<br/> +<span class="id" title="keyword">Canonical</span> <span class="id" title="var">pair_vectType</span> := <a class="idref" href="mathcomp.algebra.vector.html#VectType"><span class="id" title="abbreviation">VectType</span></a> <a class="idref" href="mathcomp.algebra.vector.html#ProdVector.R"><span class="id" title="variable">R</span></a> (<a class="idref" href="mathcomp.algebra.vector.html#ProdVector.vT1"><span class="id" title="variable">vT1</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#d19c7eafd0e2d195d10df94b392087b5"><span class="id" title="notation">×</span></a> <a class="idref" href="mathcomp.algebra.vector.html#ProdVector.vT2"><span class="id" title="variable">vT2</span></a>) <a class="idref" href="mathcomp.algebra.vector.html#pair_vectMixin"><span class="id" title="definition">pair_vectMixin</span></a>.<br/> + +<br/> +<span class="id" title="keyword">End</span> <a class="idref" href="mathcomp.algebra.vector.html#ProdVector"><span class="id" title="section">ProdVector</span></a>.<br/> + +<br/> +</div> + +<div class="doc"> + Function from a finType into a ring form a vectype. +</div> +<div class="code"> +<span class="id" title="keyword">Section</span> <a name="FunVectType"><span class="id" title="section">FunVectType</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Variable</span> (<a name="FunVectType.I"><span class="id" title="variable">I</span></a> : <a class="idref" href="mathcomp.ssreflect.fintype.html#Finite.Exports.finType"><span class="id" title="abbreviation">finType</span></a>) (<a name="FunVectType.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="FunVectType.vT"><span class="id" title="variable">vT</span></a> : <a class="idref" href="mathcomp.algebra.vector.html#vectType"><span class="id" title="abbreviation">vectType</span></a> <a class="idref" href="mathcomp.algebra.vector.html#R"><span class="id" title="variable">R</span></a>).<br/> + +<br/> +</div> + +<div class="doc"> + Type unification with exist is again a problem in this proof. +</div> +<div class="code"> +<span class="id" title="keyword">Fact</span> <a name="ffun_vect_iso"><span class="id" title="lemma">ffun_vect_iso</span></a> : <a class="idref" href="mathcomp.algebra.vector.html#axiom"><span class="id" title="abbreviation">Vector.axiom</span></a> (<a class="idref" href="mathcomp.ssreflect.fintype.html#f01714bb99e6c7abc6cfb2e43eff7f6e"><span class="id" title="notation">#|</span></a><a class="idref" href="mathcomp.algebra.vector.html#FunVectType.I"><span class="id" title="variable">I</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#f01714bb99e6c7abc6cfb2e43eff7f6e"><span class="id" title="notation">|</span></a> <a class="idref" href="mathcomp.ssreflect.ssrnat.html#697e4695610f677ae98a52af81f779d2"><span class="id" title="notation">×</span></a> <a class="idref" href="mathcomp.algebra.vector.html#dim"><span class="id" title="definition">Vector.dim</span></a> <a class="idref" href="mathcomp.algebra.vector.html#FunVectType.vT"><span class="id" title="variable">vT</span></a>) <a class="idref" href="mathcomp.ssreflect.finfun.html#9f24a6f16bf73832c2d9aa4e2c16f692"><span class="id" title="notation">{</span></a><a class="idref" href="mathcomp.ssreflect.finfun.html#9f24a6f16bf73832c2d9aa4e2c16f692"><span class="id" title="notation">ffun</span></a> <a class="idref" href="mathcomp.algebra.vector.html#FunVectType.I"><span class="id" title="variable">I</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.vector.html#FunVectType.vT"><span class="id" title="variable">vT</span></a><a class="idref" href="mathcomp.ssreflect.finfun.html#9f24a6f16bf73832c2d9aa4e2c16f692"><span class="id" title="notation">}</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Definition</span> <a name="ffun_vectMixin"><span class="id" title="definition">ffun_vectMixin</span></a> := <a class="idref" href="mathcomp.algebra.vector.html#VectMixin"><span class="id" title="abbreviation">VectMixin</span></a> <a class="idref" href="mathcomp.algebra.vector.html#ffun_vect_iso"><span class="id" title="lemma">ffun_vect_iso</span></a>.<br/> +<span class="id" title="keyword">Canonical</span> <span class="id" title="var">ffun_vectType</span> := <a class="idref" href="mathcomp.algebra.vector.html#VectType"><span class="id" title="abbreviation">VectType</span></a> <a class="idref" href="mathcomp.algebra.vector.html#FunVectType.R"><span class="id" title="variable">R</span></a> <a class="idref" href="mathcomp.ssreflect.finfun.html#9f24a6f16bf73832c2d9aa4e2c16f692"><span class="id" title="notation">{</span></a><a class="idref" href="mathcomp.ssreflect.finfun.html#9f24a6f16bf73832c2d9aa4e2c16f692"><span class="id" title="notation">ffun</span></a> <a class="idref" href="mathcomp.algebra.vector.html#FunVectType.I"><span class="id" title="variable">I</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.vector.html#FunVectType.vT"><span class="id" title="variable">vT</span></a><a class="idref" href="mathcomp.ssreflect.finfun.html#9f24a6f16bf73832c2d9aa4e2c16f692"><span class="id" title="notation">}</span></a> <a class="idref" href="mathcomp.algebra.vector.html#ffun_vectMixin"><span class="id" title="definition">ffun_vectMixin</span></a>.<br/> + +<br/> +<span class="id" title="keyword">End</span> <a class="idref" href="mathcomp.algebra.vector.html#FunVectType"><span class="id" title="section">FunVectType</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Canonical</span> <span class="id" title="var">exp_vectType</span> (<span class="id" title="var">K</span> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Field.Exports.fieldType"><span class="id" title="abbreviation">fieldType</span></a>) (<span class="id" title="var">vT</span> : <a class="idref" href="mathcomp.algebra.vector.html#vectType"><span class="id" title="abbreviation">vectType</span></a> <a class="idref" href="mathcomp.algebra.vector.html#K"><span class="id" title="variable">K</span></a>) <span class="id" title="var">n</span> :=<br/> + <a class="idref" href="mathcomp.algebra.vector.html#204b3fccda7df2b23e9d96fbf111d67d"><span class="id" title="notation">[</span></a><a class="idref" href="mathcomp.algebra.vector.html#204b3fccda7df2b23e9d96fbf111d67d"><span class="id" title="notation">vectType</span></a> <a class="idref" href="mathcomp.algebra.vector.html#K"><span class="id" title="variable">K</span></a> <a class="idref" href="mathcomp.algebra.vector.html#204b3fccda7df2b23e9d96fbf111d67d"><span class="id" title="notation">of</span></a> <a class="idref" href="mathcomp.algebra.vector.html#vT"><span class="id" title="variable">vT</span></a> <a class="idref" href="mathcomp.ssreflect.finfun.html#cd1bca6dfdb74a6b15c6c8969f27472a"><span class="id" title="notation">^</span></a> <a class="idref" href="mathcomp.algebra.vector.html#n"><span class="id" title="variable">n</span></a><a class="idref" href="mathcomp.algebra.vector.html#204b3fccda7df2b23e9d96fbf111d67d"><span class="id" title="notation">]</span></a>.<br/> + +<br/> +</div> + +<div class="doc"> + Solving a tuple of linear equations. +</div> +<div class="code"> +<span class="id" title="keyword">Section</span> <a name="Solver"><span class="id" title="section">Solver</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Variable</span> (<a name="Solver.K"><span class="id" title="variable">K</span></a> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Field.Exports.fieldType"><span class="id" title="abbreviation">fieldType</span></a>) (<a name="Solver.vT"><span class="id" title="variable">vT</span></a> : <a class="idref" href="mathcomp.algebra.vector.html#vectType"><span class="id" title="abbreviation">vectType</span></a> <a class="idref" href="mathcomp.algebra.vector.html#K"><span class="id" title="variable">K</span></a>).<br/> +<span class="id" title="keyword">Variables</span> (<a name="Solver.n"><span class="id" title="variable">n</span></a> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#nat"><span class="id" title="inductive">nat</span></a>) (<a name="Solver.lhs"><span class="id" title="variable">lhs</span></a> : <a class="idref" href="mathcomp.algebra.vector.html#n"><span class="id" title="variable">n</span></a><a class="idref" href="mathcomp.ssreflect.tuple.html#d8866adbd4a602b7b4cc275d73486ace"><span class="id" title="notation">.-</span></a><a class="idref" href="mathcomp.ssreflect.tuple.html#d8866adbd4a602b7b4cc275d73486ace"><span class="id" title="notation">tuple</span></a> <a class="idref" href="mathcomp.algebra.vector.html#f2977b5d91be916157fc34deec16772c"><span class="id" title="notation">'</span></a><a class="idref" href="mathcomp.algebra.vector.html#f2977b5d91be916157fc34deec16772c"><span class="id" title="notation">End</span></a><a class="idref" href="mathcomp.algebra.vector.html#f2977b5d91be916157fc34deec16772c"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.vector.html#Solver.vT"><span class="id" title="variable">vT</span></a><a class="idref" href="mathcomp.algebra.vector.html#f2977b5d91be916157fc34deec16772c"><span class="id" title="notation">)</span></a>) (<a name="Solver.rhs"><span class="id" title="variable">rhs</span></a> : <a class="idref" href="mathcomp.algebra.vector.html#n"><span class="id" title="variable">n</span></a><a class="idref" href="mathcomp.ssreflect.tuple.html#d8866adbd4a602b7b4cc275d73486ace"><span class="id" title="notation">.-</span></a><a class="idref" href="mathcomp.ssreflect.tuple.html#d8866adbd4a602b7b4cc275d73486ace"><span class="id" title="notation">tuple</span></a> <a class="idref" href="mathcomp.algebra.vector.html#Solver.vT"><span class="id" title="variable">vT</span></a>).<br/> + +<br/> +<span class="id" title="keyword">Let</span> <a name="Solver.lhsf"><span class="id" title="variable">lhsf</span></a> <span class="id" title="var">u</span> := <a class="idref" href="mathcomp.ssreflect.finfun.html#finfun"><span class="id" title="abbreviation">finfun</span></a> (<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#8f28bbd804547edd8de802d63ef85617"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.ssreflect.tuple.html#tnth"><span class="id" title="definition">tnth</span></a> <a class="idref" href="mathcomp.algebra.vector.html#Solver.lhs"><span class="id" title="variable">lhs</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#8f28bbd804547edd8de802d63ef85617"><span class="id" title="notation">)^~</span></a> <a class="idref" href="mathcomp.algebra.vector.html#u"><span class="id" title="variable">u</span></a>).<br/> +<span class="id" title="keyword">Definition</span> <a name="vsolve_eq"><span class="id" title="definition">vsolve_eq</span></a> <span class="id" title="var">U</span> := <a class="idref" href="mathcomp.ssreflect.finfun.html#finfun"><span class="id" title="abbreviation">finfun</span></a> (<a class="idref" href="mathcomp.ssreflect.tuple.html#tnth"><span class="id" title="definition">tnth</span></a> <a class="idref" href="mathcomp.algebra.vector.html#Solver.rhs"><span class="id" title="variable">rhs</span></a>) <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">\</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">in</span></a> (<a class="idref" href="mathcomp.algebra.vector.html#linfun"><span class="id" title="definition">linfun</span></a> <a class="idref" href="mathcomp.algebra.vector.html#Solver.lhsf"><span class="id" title="variable">lhsf</span></a> <a class="idref" href="mathcomp.algebra.vector.html#b5958714d039bb581a8e5ca988944568"><span class="id" title="notation">@:</span></a> <a class="idref" href="mathcomp.algebra.vector.html#U"><span class="id" title="variable">U</span></a>)%<span class="id" title="var">VS</span>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="vsolve_eqP"><span class="id" title="lemma">vsolve_eqP</span></a> (<span class="id" title="var">U</span> : <a class="idref" href="mathcomp.algebra.vector.html#ca0a177f6d6581a7f5199987cd7ee21c"><span class="id" title="notation">{</span></a><a class="idref" href="mathcomp.algebra.vector.html#ca0a177f6d6581a7f5199987cd7ee21c"><span class="id" title="notation">vspace</span></a> <a class="idref" href="mathcomp.algebra.vector.html#Solver.vT"><span class="id" title="variable">vT</span></a><a class="idref" href="mathcomp.algebra.vector.html#ca0a177f6d6581a7f5199987cd7ee21c"><span class="id" title="notation">}</span></a>) :<br/> + <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#reflect"><span class="id" title="abbreviation">reflect</span></a> (<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#28b18e493f7cb0bd8447607bdc385ff8"><span class="id" title="notation">exists2</span></a> <span class="id" title="var">u</span><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#28b18e493f7cb0bd8447607bdc385ff8"><span class="id" title="notation">,</span></a> <a class="idref" href="mathcomp.algebra.vector.html#u"><span class="id" title="variable">u</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">\</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">in</span></a> <a class="idref" href="mathcomp.algebra.vector.html#U"><span class="id" title="variable">U</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#28b18e493f7cb0bd8447607bdc385ff8"><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.ssreflect.tuple.html#tnth"><span class="id" title="definition">tnth</span></a> <a class="idref" href="mathcomp.algebra.vector.html#Solver.lhs"><span class="id" title="variable">lhs</span></a> <a class="idref" href="mathcomp.algebra.vector.html#i"><span class="id" title="variable">i</span></a> <a class="idref" href="mathcomp.algebra.vector.html#u"><span class="id" title="variable">u</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.ssreflect.tuple.html#tnth"><span class="id" title="definition">tnth</span></a> <a class="idref" href="mathcomp.algebra.vector.html#Solver.rhs"><span class="id" title="variable">rhs</span></a> <a class="idref" href="mathcomp.algebra.vector.html#i"><span class="id" title="variable">i</span></a>) <br/> + (<a class="idref" href="mathcomp.algebra.vector.html#vsolve_eq"><span class="id" title="definition">vsolve_eq</span></a> <a class="idref" href="mathcomp.algebra.vector.html#U"><span class="id" title="variable">U</span></a>).<br/> + +<br/> +<span class="id" title="keyword">End</span> <a class="idref" href="mathcomp.algebra.vector.html#Solver"><span class="id" title="section">Solver</span></a>.<br/> + +<br/> +</div> +</div> + +<div id="footer"> +<hr/><a href="index.html">Index</a><hr/>This page has been generated by <a href="http://coq.inria.fr/">coqdoc</a> +</div> + +</div> + +</body> +</html>
\ No newline at end of file |
