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.matrix.html | |
| parent | 3d196f44681fb3b23ff8a79fbd44e12308680531 (diff) | |
generate the documentation for 1.7
Diffstat (limited to 'docs/htmldoc/mathcomp.algebra.matrix.html')
| -rw-r--r-- | docs/htmldoc/mathcomp.algebra.matrix.html | 2907 |
1 files changed, 2907 insertions, 0 deletions
diff --git a/docs/htmldoc/mathcomp.algebra.matrix.html b/docs/htmldoc/mathcomp.algebra.matrix.html new file mode 100644 index 0000000..05ce5f3 --- /dev/null +++ b/docs/htmldoc/mathcomp.algebra.matrix.html @@ -0,0 +1,2907 @@ +<!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.matrix</title> +</head> + +<body> + +<div id="page"> + +<div id="header"> +</div> + +<div id="main"> + +<h1 class="libtitle">Library mathcomp.algebra.matrix</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"> + Basic concrete linear algebra : definition of type for matrices, and all + basic matrix operations including determinant, trace and support for block + decomposition. Matrices are represented by a row-major list of their + coefficients but this implementation is hidden by three levels of wrappers + (Matrix/Finfun/Tuple) so the matrix type should be treated as abstract and + handled using only the operations described below: + 'M[R](m, n) == the type of m rows by n columns matrices with + 'M(m, n) coefficients in R; the [R] is optional and is usually + omitted. + 'M[R]_n, 'M_n == the type of n x n square matrices. + 'rV[R]_n, 'rV_n == the type of 1 x n row vectors. + 'cV[R]_n, 'cV_n == the type of n x 1 column vectors. + \matrix(i < m, j < n) Expr(i, j) == + the m x n matrix with general coefficient Expr(i, j), + with i : 'I_m and j : 'I_n. the < m bound can be omitted + if it is equal to n, though usually both bounds are + omitted as they can be inferred from the context. + \row(j < n) Expr(j), \col(i < m) Expr(i) + the row / column vectors with general term Expr; the + parentheses can be omitted along with the bound. + \matrix(i < m) RowExpr(i) == + the m x n matrix with row i given by RowExpr(i) : 'rV_n. + A i j == the coefficient of matrix A : 'M(m, n) in column j of + row i, where i : 'I_m, and j : 'I_n (via the coercion + fun_of_matrix : matrix >-> Funclass). + const_mx a == the constant matrix whose entries are all a (dimensions + should be determined by context). + map_mx f A == the pointwise image of A by f, i.e., the matrix Af + congruent to A with Af i j = f (A i j) for all i and j. + A^T == the matrix transpose of A. + row i A == the i'th row of A (this is a row vector). + col j A == the j'th column of A (a column vector). + row' i A == A with the i'th row spliced out. + col' i A == A with the j'th column spliced out. + xrow i1 i2 A == A with rows i1 and i2 interchanged. + xcol j1 j2 A == A with columns j1 and j2 interchanged. + row_perm s A == A : 'M(m, n) with rows permuted by s : 'S_m. + col_perm s A == A : 'M(m, n) with columns permuted by s : 'S_n. + row_mx Al Ar == the row block matrix <Al Ar> obtained by contatenating + two matrices Al and Ar of the same height. + col_mx Au Ad == the column block matrix / Au \ (Au and Ad must have the + same width). \ Ad / + block_mx Aul Aur Adl Adr == the block matrix / Aul Aur \ + \ Adl Adr / + [l|r]submx A == the left/right submatrices of a row block matrix A. + Note that the type of A, 'M(m, n1 + n2) indicates how A + should be decomposed. + [u|d]submx A == the up/down submatrices of a column block matrix A. + [u|d] [l|r]submx A == the upper left, etc submatrices of a block matrix A. + castmx eq_mn A == A : 'M(m, n) cast to 'M(m', n') using the equation + pair eq_mn : (m = m') * (n = n'). This is the usual + workaround for the syntactic limitations of dependent + types in Coq, and can be used to introduce a block + decomposition. It simplifies to A when eq_mn is the + pair (erefl m, erefl n) (using rewrite /castmx /=). + conform_mx B A == A if A and B have the same dimensions, else B. + mxvec A == a row vector of width m * n holding all the entries of + the m x n matrix A. + mxvec_index i j == the index of A i j in mxvec A. + vec_mx v == the inverse of mxvec, reshaping a vector of width m * n + back into into an m x n rectangular matrix. + In 'M[R](m, n), R can be any type, but 'M[R](m, n) inherits the eqType, + choiceType, countType, finType, zmodType structures of R; 'M[R](m, n) + also has a natural lmodType R structure when R has a ringType structure. + Because the type of matrices specifies their dimension, only non-trivial + square matrices (of type 'M[R]_n.+1) can inherit the ring structure of R; + indeed they then have an algebra structure (lalgType R, or algType R if R + is a comRingType, or even unitAlgType if R is a comUnitRingType). + We thus provide separate syntax for the general matrix multiplication, + and other operations for matrices over a ringType R: + A *m B == the matrix product of A and B; the width of A must be + equal to the height of B. + a%:M == the scalar matrix with a's on the main diagonal; in + particular 1%:M denotes the identity matrix, and is is + equal to 1%R when n is of the form n'.+1 (e.g., n >= 1). + is_scalar_mx A <=> A is a scalar matrix (A = a%:M for some A). + diag_mx d == the diagonal matrix whose main diagonal is d : 'rV_n. + delta_mx i j == the matrix with a 1 in row i, column j and 0 elsewhere. + pid_mx r == the partial identity matrix with 1s only on the r first + coefficients of the main diagonal; the dimensions of + pid_mx r are determined by the context, and pid_mx r can + be rectangular. + copid_mx r == the complement to 1%:M of pid_mx r: a square diagonal + matrix with 1s on all but the first r coefficients on + its main diagonal. + perm_mx s == the n x n permutation matrix for s : 'S_n. + tperm_mx i1 i2 == the permutation matrix that exchanges i1 i2 : 'I_n. + is_perm_mx A == A is a permutation matrix. + lift0_mx A == the 1 + n square matrix block_mx 1 0 0 A when A : 'M_n. + \tr A == the trace of a square matrix A. + \det A == the determinant of A, using the Leibnitz formula. + cofactor i j A == the i, j cofactor of A (the signed i, j minor of A), + \adj A == the adjugate matrix of A (\adj A i j = cofactor j i A). + A \in unitmx == A is invertible (R must be a comUnitRingType). + invmx A == the inverse matrix of A if A \in unitmx A, otherwise A. + The following operations provide a correspondance between linear functions + and matrices: + lin1_mx f == the m x n matrix that emulates via right product + a (linear) function f : 'rV_m -> 'rV_n on ROW VECTORS + lin_mx f == the (m1 * n1) x (m2 * n2) matrix that emulates, via the + right multiplication on the mxvec encodings, a linear + function f : 'M(m1, n1) -> 'M(m2, n2) + lin_mul_row u := lin1_mx (mulmx u \o vec_mx) (applies a row-encoded + function to the row-vector u). + mulmx A == partially applied matrix multiplication (mulmx A B is + displayed as A *m B), with, for A : 'M(m, n), a + canonical {linear 'M(n, p) -> 'M(m, p}} structure. + mulmxr A == self-simplifying right-hand matrix multiplication, i.e., + mulmxr A B simplifies to B *m A, with, for A : 'M(n, p), + a canonical {linear 'M(m, n) -> 'M(m, p}} structure. + lin_mulmx A := lin_mx (mulmx A). + lin_mulmxr A := lin_mx (mulmxr A). + We also extend any finType structure of R to 'M[R](m, n), and define: + {'GL_n[R]} == the finGroupType of units of 'M[R]_n.-1.+1. + 'GL_n[R] == the general linear group of all matrices in {'GL_n(R)}. + 'GL_n(p) == 'GL_n['F_p], the general linear group of a prime field. + GLval u == the coercion of u : {'GL_n(R)} to a matrix. + In addition to the lemmas relevant to these definitions, this file also + proves several classic results, including : +<ul class="doclist"> +<li> The determinant is a multilinear alternate form. + +</li> +<li> The Laplace determinant expansion formulas: expand_det [row|col]. + +</li> +<li> The Cramer rule : mul_mx_adj & mul_adj_mx. + +</li> +</ul> + Finally, as an example of the use of block products, we program and prove + the correctness of a classical linear algebra algorithm: + cormenLUP A == the triangular decomposition (L, U, P) of a nontrivial + square matrix A into a lower triagular matrix L with 1s + on the main diagonal, an upper matrix U, and a + permutation matrix P, such that P * A = L * U. + This is example only; we use a different, more precise algorithm to + develop the theory of matrix ranks and row spaces in mxalgebra.v +</div> +<div class="code"> + +<br/> +<span class="id" title="keyword">Set Implicit Arguments</span>.<br/> + +<br/> +<span class="id" title="keyword">Import</span> <span class="id" title="var">GroupScope</span>.<br/> +<span class="id" title="keyword">Import</span> <span class="id" title="var">GRing.Theory</span>.<br/> +<span class="id" title="keyword">Local Open</span> <span class="id" title="keyword">Scope</span> <span class="id" title="var">ring_scope</span>.<br/> + +<br/> +<span class="id" title="keyword">Reserved Notation</span> "''M_' n" (<span class="id" title="tactic">at</span> <span class="id" title="keyword">level</span> 8, <span class="id" title="var">n</span> <span class="id" title="tactic">at</span> <span class="id" title="keyword">level</span> 2, <span class="id" title="var">format</span> "''M_' n").<br/> +<span class="id" title="keyword">Reserved Notation</span> "''rV_' n" (<span class="id" title="tactic">at</span> <span class="id" title="keyword">level</span> 8, <span class="id" title="var">n</span> <span class="id" title="tactic">at</span> <span class="id" title="keyword">level</span> 2, <span class="id" title="var">format</span> "''rV_' n").<br/> +<span class="id" title="keyword">Reserved Notation</span> "''cV_' n" (<span class="id" title="tactic">at</span> <span class="id" title="keyword">level</span> 8, <span class="id" title="var">n</span> <span class="id" title="tactic">at</span> <span class="id" title="keyword">level</span> 2, <span class="id" title="var">format</span> "''cV_' n").<br/> +<span class="id" title="keyword">Reserved Notation</span> "''M_' ( n )" (<span class="id" title="tactic">at</span> <span class="id" title="keyword">level</span> 8, <span class="id" title="var">only</span> <span class="id" title="var">parsing</span>).<br/> +<span class="id" title="keyword">Reserved Notation</span> "''M_' ( m , n )" (<span class="id" title="tactic">at</span> <span class="id" title="keyword">level</span> 8, <span class="id" title="var">format</span> "''M_' ( m , n )").<br/> +<span class="id" title="keyword">Reserved Notation</span> "''M[' R ]_ n" (<span class="id" title="tactic">at</span> <span class="id" title="keyword">level</span> 8, <span class="id" title="var">n</span> <span class="id" title="tactic">at</span> <span class="id" title="keyword">level</span> 2, <span class="id" title="var">only</span> <span class="id" title="var">parsing</span>).<br/> +<span class="id" title="keyword">Reserved Notation</span> "''rV[' R ]_ n" (<span class="id" title="tactic">at</span> <span class="id" title="keyword">level</span> 8, <span class="id" title="var">n</span> <span class="id" title="tactic">at</span> <span class="id" title="keyword">level</span> 2, <span class="id" title="var">only</span> <span class="id" title="var">parsing</span>).<br/> +<span class="id" title="keyword">Reserved Notation</span> "''cV[' R ]_ n" (<span class="id" title="tactic">at</span> <span class="id" title="keyword">level</span> 8, <span class="id" title="var">n</span> <span class="id" title="tactic">at</span> <span class="id" title="keyword">level</span> 2, <span class="id" title="var">only</span> <span class="id" title="var">parsing</span>).<br/> +<span class="id" title="keyword">Reserved Notation</span> "''M[' R ]_ ( n )" (<span class="id" title="tactic">at</span> <span class="id" title="keyword">level</span> 8, <span class="id" title="var">only</span> <span class="id" title="var">parsing</span>).<br/> +<span class="id" title="keyword">Reserved Notation</span> "''M[' R ]_ ( m , n )" (<span class="id" title="tactic">at</span> <span class="id" title="keyword">level</span> 8, <span class="id" title="var">only</span> <span class="id" title="var">parsing</span>).<br/> + +<br/> +<span class="id" title="keyword">Reserved Notation</span> "\matrix_ i E" <br/> + (<span class="id" title="tactic">at</span> <span class="id" title="keyword">level</span> 36, <span class="id" title="var">E</span> <span class="id" title="tactic">at</span> <span class="id" title="keyword">level</span> 36, <span class="id" title="var">i</span> <span class="id" title="tactic">at</span> <span class="id" title="keyword">level</span> 2,<br/> + <span class="id" title="var">format</span> "\matrix_ i E").<br/> +<span class="id" title="keyword">Reserved Notation</span> "\matrix_ ( i < n ) E"<br/> + (<span class="id" title="tactic">at</span> <span class="id" title="keyword">level</span> 36, <span class="id" title="var">E</span> <span class="id" title="tactic">at</span> <span class="id" title="keyword">level</span> 36, <span class="id" title="var">i</span>, <span class="id" title="var">n</span> <span class="id" title="tactic">at</span> <span class="id" title="keyword">level</span> 50, <span class="id" title="var">only</span> <span class="id" title="var">parsing</span>).<br/> +<span class="id" title="keyword">Reserved Notation</span> "\matrix_ ( i , j ) E"<br/> + (<span class="id" title="tactic">at</span> <span class="id" title="keyword">level</span> 36, <span class="id" title="var">E</span> <span class="id" title="tactic">at</span> <span class="id" title="keyword">level</span> 36, <span class="id" title="var">i</span>, <span class="id" title="var">j</span> <span class="id" title="tactic">at</span> <span class="id" title="keyword">level</span> 50,<br/> + <span class="id" title="var">format</span> "\matrix_ ( i , j ) E").<br/> +<span class="id" title="keyword">Reserved Notation</span> "\matrix[ k ]_ ( i , j ) E"<br/> + (<span class="id" title="tactic">at</span> <span class="id" title="keyword">level</span> 36, <span class="id" title="var">E</span> <span class="id" title="tactic">at</span> <span class="id" title="keyword">level</span> 36, <span class="id" title="var">i</span>, <span class="id" title="var">j</span> <span class="id" title="tactic">at</span> <span class="id" title="keyword">level</span> 50,<br/> + <span class="id" title="var">format</span> "\matrix[ k ]_ ( i , j ) E").<br/> +<span class="id" title="keyword">Reserved Notation</span> "\matrix_ ( i < m , j < n ) E"<br/> + (<span class="id" title="tactic">at</span> <span class="id" title="keyword">level</span> 36, <span class="id" title="var">E</span> <span class="id" title="tactic">at</span> <span class="id" title="keyword">level</span> 36, <span class="id" title="var">i</span>, <span class="id" title="var">m</span>, <span class="id" title="var">j</span>, <span class="id" title="var">n</span> <span class="id" title="tactic">at</span> <span class="id" title="keyword">level</span> 50, <span class="id" title="var">only</span> <span class="id" title="var">parsing</span>).<br/> +<span class="id" title="keyword">Reserved Notation</span> "\matrix_ ( i , j < n ) E"<br/> + (<span class="id" title="tactic">at</span> <span class="id" title="keyword">level</span> 36, <span class="id" title="var">E</span> <span class="id" title="tactic">at</span> <span class="id" title="keyword">level</span> 36, <span class="id" title="var">i</span>, <span class="id" title="var">j</span>, <span class="id" title="var">n</span> <span class="id" title="tactic">at</span> <span class="id" title="keyword">level</span> 50, <span class="id" title="var">only</span> <span class="id" title="var">parsing</span>).<br/> +<span class="id" title="keyword">Reserved Notation</span> "\row_ j E"<br/> + (<span class="id" title="tactic">at</span> <span class="id" title="keyword">level</span> 36, <span class="id" title="var">E</span> <span class="id" title="tactic">at</span> <span class="id" title="keyword">level</span> 36, <span class="id" title="var">j</span> <span class="id" title="tactic">at</span> <span class="id" title="keyword">level</span> 2,<br/> + <span class="id" title="var">format</span> "\row_ j E").<br/> +<span class="id" title="keyword">Reserved Notation</span> "\row_ ( j < n ) E"<br/> + (<span class="id" title="tactic">at</span> <span class="id" title="keyword">level</span> 36, <span class="id" title="var">E</span> <span class="id" title="tactic">at</span> <span class="id" title="keyword">level</span> 36, <span class="id" title="var">j</span>, <span class="id" title="var">n</span> <span class="id" title="tactic">at</span> <span class="id" title="keyword">level</span> 50, <span class="id" title="var">only</span> <span class="id" title="var">parsing</span>).<br/> +<span class="id" title="keyword">Reserved Notation</span> "\col_ j E"<br/> + (<span class="id" title="tactic">at</span> <span class="id" title="keyword">level</span> 36, <span class="id" title="var">E</span> <span class="id" title="tactic">at</span> <span class="id" title="keyword">level</span> 36, <span class="id" title="var">j</span> <span class="id" title="tactic">at</span> <span class="id" title="keyword">level</span> 2,<br/> + <span class="id" title="var">format</span> "\col_ j E").<br/> +<span class="id" title="keyword">Reserved Notation</span> "\col_ ( j < n ) E"<br/> + (<span class="id" title="tactic">at</span> <span class="id" title="keyword">level</span> 36, <span class="id" title="var">E</span> <span class="id" title="tactic">at</span> <span class="id" title="keyword">level</span> 36, <span class="id" title="var">j</span>, <span class="id" title="var">n</span> <span class="id" title="tactic">at</span> <span class="id" title="keyword">level</span> 50, <span class="id" title="var">only</span> <span class="id" title="var">parsing</span>).<br/> + +<br/> +<span class="id" title="keyword">Reserved Notation</span> "x %:M" (<span class="id" title="tactic">at</span> <span class="id" title="keyword">level</span> 8, <span class="id" title="var">format</span> "x %:M").<br/> +<span class="id" title="keyword">Reserved Notation</span> "A *m B" (<span class="id" title="tactic">at</span> <span class="id" title="keyword">level</span> 40, <span class="id" title="tactic">left</span> <span class="id" title="keyword">associativity</span>, <span class="id" title="var">format</span> "A *m B").<br/> +<span class="id" title="keyword">Reserved Notation</span> "A ^T" (<span class="id" title="tactic">at</span> <span class="id" title="keyword">level</span> 8, <span class="id" title="var">format</span> "A ^T").<br/> +<span class="id" title="keyword">Reserved Notation</span> "\tr 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> "\tr A").<br/> +<span class="id" title="keyword">Reserved Notation</span> "\det 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> "\det A").<br/> +<span class="id" title="keyword">Reserved Notation</span> "\adj 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> "\adj A").<br/> + +<br/> + +<br/> +</div> + +<div class="doc"> +Type Definition********************************* +</div> +<div class="code"> + +<br/> +<span class="id" title="keyword">Section</span> <a name="MatrixDef"><span class="id" title="section">MatrixDef</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Variable</span> <a name="MatrixDef.R"><span class="id" title="variable">R</span></a> : <span class="id" title="keyword">Type</span>.<br/> +<span class="id" title="keyword">Variables</span> <a name="MatrixDef.m"><span class="id" title="variable">m</span></a> <a name="MatrixDef.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"> + Basic linear algebra (matrices). + We use dependent types (ordinals) for the indices so that ranges are + mostly inferred automatically +</div> +<div class="code"> + +<br/> +<span class="id" title="keyword">Inductive</span> <a name="matrix"><span class="id" title="inductive">matrix</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="Matrix"><span class="id" title="constructor">Matrix</span></a> <span class="id" title="keyword">of</span> <a class="idref" href="mathcomp.ssreflect.finfun.html#9f24a6f16bf73832c2d9aa4e2c16f692"><span class="id" title="notation">{</span></a><a class="idref" href="mathcomp.ssreflect.finfun.html#9f24a6f16bf73832c2d9aa4e2c16f692"><span class="id" title="notation">ffun</span></a> <a class="idref" href="mathcomp.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_m</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#d19c7eafd0e2d195d10df94b392087b5"><span class="id" title="notation">×</span></a> <a class="idref" href="mathcomp.ssreflect.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="http://coq.inria.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#MatrixDef.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>.<br/> + +<br/> +<span class="id" title="keyword">Definition</span> <a name="mx_val"><span class="id" title="definition">mx_val</span></a> <span class="id" title="var">A</span> := <span class="id" title="keyword">let</span>: <a class="idref" href="mathcomp.algebra.matrix.html#Matrix"><span class="id" title="constructor">Matrix</span></a> <span class="id" title="var">g</span> := <a class="idref" href="mathcomp.algebra.matrix.html#A"><span class="id" title="variable">A</span></a> <span class="id" title="tactic">in</span> <span class="id" title="var">g</span>.<br/> + +<br/> +<span class="id" title="keyword">Canonical</span> <span class="id" title="var">matrix_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#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.matrix.html#mx_val"><span class="id" title="definition">mx_val</span></a><a class="idref" href="mathcomp.ssreflect.eqtype.html#d716e206e5129c6b3a60f0f640eaaeb0"><span class="id" title="notation">]</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Fact</span> <a name="matrix_key"><span class="id" title="lemma">matrix_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="matrix_of_fun_def"><span class="id" title="definition">matrix_of_fun_def</span></a> <span class="id" title="var">F</span> := <a class="idref" href="mathcomp.algebra.matrix.html#Matrix"><span class="id" title="constructor">Matrix</span></a> <a class="idref" href="mathcomp.ssreflect.finfun.html#71fbd02a8ba525d8dcd88d59800c905e"><span class="id" title="notation">[</span></a><a class="idref" href="mathcomp.ssreflect.finfun.html#71fbd02a8ba525d8dcd88d59800c905e"><span class="id" title="notation">ffun</span></a> <span class="id" title="var">ij</span> <a class="idref" href="mathcomp.ssreflect.finfun.html#71fbd02a8ba525d8dcd88d59800c905e"><span class="id" title="notation">⇒</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#F"><span class="id" title="variable">F</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#ij"><span class="id" title="variable">ij</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#c4877bbfe60d8f22b47ac99ace86216a"><span class="id" title="notation">.1</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#ij"><span class="id" title="variable">ij</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#f4827404159513e7fd691b60b7877737"><span class="id" title="notation">.2</span></a><a class="idref" href="mathcomp.ssreflect.finfun.html#71fbd02a8ba525d8dcd88d59800c905e"><span class="id" title="notation">]</span></a>.<br/> +<span class="id" title="keyword">Definition</span> <a name="matrix_of_fun"><span class="id" title="definition">matrix_of_fun</span></a> <span class="id" title="var">k</span> := <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.matrix.html#k"><span class="id" title="variable">k</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#matrix_of_fun_def"><span class="id" title="definition">matrix_of_fun_def</span></a>.<br/> +<span class="id" title="keyword">Canonical</span> <span class="id" title="var">matrix_unlockable</span> <span class="id" title="var">k</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.matrix.html#matrix_of_fun"><span class="id" title="definition">matrix_of_fun</span></a> <a class="idref" href="mathcomp.algebra.matrix.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.ssreflect.html#58f94351327943cd874eb55da8e0ca14"><span class="id" title="notation">]</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Definition</span> <a name="fun_of_matrix"><span class="id" title="definition">fun_of_matrix</span></a> <span class="id" title="var">A</span> (<span class="id" title="var">i</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_m</span></a>) (<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>) := <a class="idref" href="mathcomp.algebra.matrix.html#mx_val"><span class="id" title="definition">mx_val</span></a> <a class="idref" href="mathcomp.algebra.matrix.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.Datatypes.html#44400027531d4bc3f586a1997dc874c0"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.matrix.html#i"><span class="id" title="variable">i</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#44400027531d4bc3f586a1997dc874c0"><span class="id" title="notation">,</span></a> <a class="idref" href="mathcomp.algebra.matrix.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#44400027531d4bc3f586a1997dc874c0"><span class="id" title="notation">)</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Coercion</span> <a class="idref" href="mathcomp.algebra.matrix.html#fun_of_matrix"><span class="id" title="definition">fun_of_matrix</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#fun_of_matrix"><span class="id" title="definition">:</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#fun_of_matrix"><span class="id" title="definition">matrix</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#fun_of_matrix"><span class="id" title="definition">>-></span></a> <a class="idref" href="mathcomp.algebra.matrix.html#fun_of_matrix"><span class="id" title="definition">Funclass</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="mxE"><span class="id" title="lemma">mxE</span></a> <span class="id" title="var">k</span> <span class="id" title="var">F</span> : <a class="idref" href="mathcomp.algebra.matrix.html#matrix_of_fun"><span class="id" title="definition">matrix_of_fun</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#k"><span class="id" title="variable">k</span></a> <a class="idref" href="mathcomp.algebra.matrix.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#86efabaf3ab961ac3d2bac35d2b3c35d"><span class="id" title="notation">=2</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#F"><span class="id" title="variable">F</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="matrixP"><span class="id" title="lemma">matrixP</span></a> (<span class="id" title="var">A</span> <span class="id" title="var">B</span> : <a class="idref" href="mathcomp.algebra.matrix.html#matrix"><span class="id" title="inductive">matrix</span></a>) : <a class="idref" href="mathcomp.algebra.matrix.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.ssrfun.html#86efabaf3ab961ac3d2bac35d2b3c35d"><span class="id" title="notation">=2</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#B"><span class="id" title="variable">B</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#df1ced36fc33ce188051218bca314374"><span class="id" title="notation">↔</span></a> <a class="idref" href="mathcomp.algebra.matrix.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.matrix.html#B"><span class="id" title="variable">B</span></a>.<br/> + +<br/> +<span class="id" title="keyword">End</span> <a class="idref" href="mathcomp.algebra.matrix.html#MatrixDef"><span class="id" title="section">MatrixDef</span></a>.<br/> + +<br/> + +<br/> +<span class="id" title="keyword">Notation</span> <a name="e36c289fb249221b43b9c978a67340fb"><span class="id" title="notation">"</span></a>''M[' R ]_ ( m , n )" := (<a class="idref" href="mathcomp.algebra.matrix.html#matrix"><span class="id" title="inductive">matrix</span></a> <span class="id" title="var">R</span> <span class="id" title="var">m</span> <span class="id" title="var">n</span>) (<span class="id" title="var">only</span> <span class="id" title="var">parsing</span>): <span class="id" title="var">type_scope</span>.<br/> +<span class="id" title="keyword">Notation</span> <a name="d5eb23b08bc98c3329b2748a3ba944ae"><span class="id" title="notation">"</span></a>''rV[' R ]_ n" := <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><span class="id" title="var">R</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">_</span></a><a class="idref" href="mathcomp.algebra.matrix.html#e36c289fb249221b43b9c978a67340fb"><span class="id" title="notation">(</span></a>1<a class="idref" href="mathcomp.algebra.matrix.html#e36c289fb249221b43b9c978a67340fb"><span class="id" title="notation">,</span></a> <span class="id" title="var">n</span><a class="idref" href="mathcomp.algebra.matrix.html#e36c289fb249221b43b9c978a67340fb"><span class="id" title="notation">)</span></a> (<span class="id" title="var">only</span> <span class="id" title="var">parsing</span>) : <span class="id" title="var">type_scope</span>.<br/> +<span class="id" title="keyword">Notation</span> <a name="8fe2ce7157f85e8005c056545a886a62"><span class="id" title="notation">"</span></a>''cV[' R ]_ n" := <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><span class="id" title="var">R</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">_</span></a><a class="idref" href="mathcomp.algebra.matrix.html#e36c289fb249221b43b9c978a67340fb"><span class="id" title="notation">(</span></a><span class="id" title="var">n</span><a class="idref" href="mathcomp.algebra.matrix.html#e36c289fb249221b43b9c978a67340fb"><span class="id" title="notation">,</span></a> 1<a class="idref" href="mathcomp.algebra.matrix.html#e36c289fb249221b43b9c978a67340fb"><span class="id" title="notation">)</span></a> (<span class="id" title="var">only</span> <span class="id" title="var">parsing</span>) : <span class="id" title="var">type_scope</span>.<br/> +<span class="id" title="keyword">Notation</span> <a name="d837c1a28d718b1ce93b8aa0ad2f20fe"><span class="id" title="notation">"</span></a>''M[' R ]_ n" := <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><span class="id" title="var">R</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">_</span></a><a class="idref" href="mathcomp.algebra.matrix.html#e36c289fb249221b43b9c978a67340fb"><span class="id" title="notation">(</span></a><span class="id" title="var">n</span><a class="idref" href="mathcomp.algebra.matrix.html#e36c289fb249221b43b9c978a67340fb"><span class="id" title="notation">,</span></a> <span class="id" title="var">n</span><a class="idref" href="mathcomp.algebra.matrix.html#e36c289fb249221b43b9c978a67340fb"><span class="id" title="notation">)</span></a> (<span class="id" title="var">only</span> <span class="id" title="var">parsing</span>) : <span class="id" title="var">type_scope</span>.<br/> +<span class="id" title="keyword">Notation</span> <a name="b2c854dd216676a38305228b400aa08a"><span class="id" title="notation">"</span></a>''M[' R ]_ ( n )" := <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><span class="id" title="var">R</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">_n</span></a> (<span class="id" title="var">only</span> <span class="id" title="var">parsing</span>) : <span class="id" title="var">type_scope</span>.<br/> +<span class="id" title="keyword">Notation</span> <a name="cb37620352ad6b90a047a361359e2f04"><span class="id" title="notation">"</span></a>''M_' ( m , n )" := <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><span class="id" title="var">_</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">_</span></a><a class="idref" href="mathcomp.algebra.matrix.html#e36c289fb249221b43b9c978a67340fb"><span class="id" title="notation">(</span></a><span class="id" title="var">m</span><a class="idref" href="mathcomp.algebra.matrix.html#e36c289fb249221b43b9c978a67340fb"><span class="id" title="notation">,</span></a> <span class="id" title="var">n</span><a class="idref" href="mathcomp.algebra.matrix.html#e36c289fb249221b43b9c978a67340fb"><span class="id" title="notation">)</span></a> : <span class="id" title="var">type_scope</span>.<br/> +<span class="id" title="keyword">Notation</span> <a name="2bf09b7202225c789149165667752fab"><span class="id" title="notation">"</span></a>''rV_' n" := <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>1<a class="idref" href="mathcomp.algebra.matrix.html#cb37620352ad6b90a047a361359e2f04"><span class="id" title="notation">,</span></a> <span class="id" title="var">n</span><a class="idref" href="mathcomp.algebra.matrix.html#cb37620352ad6b90a047a361359e2f04"><span class="id" title="notation">)</span></a> : <span class="id" title="var">type_scope</span>.<br/> +<span class="id" title="keyword">Notation</span> <a name="5f5872e5909fc2bcc100d805155aa23e"><span class="id" title="notation">"</span></a>''cV_' n" := <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><span class="id" title="var">n</span><a class="idref" href="mathcomp.algebra.matrix.html#cb37620352ad6b90a047a361359e2f04"><span class="id" title="notation">,</span></a> 1<a class="idref" href="mathcomp.algebra.matrix.html#cb37620352ad6b90a047a361359e2f04"><span class="id" title="notation">)</span></a> : <span class="id" title="var">type_scope</span>.<br/> +<span class="id" title="keyword">Notation</span> <a name="1ce49b162eb757fc4a2e0ce4df0ee5cd"><span class="id" title="notation">"</span></a>''M_' n" := <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><span class="id" title="var">n</span><a class="idref" href="mathcomp.algebra.matrix.html#cb37620352ad6b90a047a361359e2f04"><span class="id" title="notation">,</span></a> <span class="id" title="var">n</span><a class="idref" href="mathcomp.algebra.matrix.html#cb37620352ad6b90a047a361359e2f04"><span class="id" title="notation">)</span></a> : <span class="id" title="var">type_scope</span>.<br/> +<span class="id" title="keyword">Notation</span> <a name="ff2814b13b0b9cfba84a98df9a2ac866"><span class="id" title="notation">"</span></a>''M_' ( n )" := <a class="idref" href="mathcomp.algebra.matrix.html#1ce49b162eb757fc4a2e0ce4df0ee5cd"><span class="id" title="notation">'</span></a><a class="idref" href="mathcomp.algebra.matrix.html#1ce49b162eb757fc4a2e0ce4df0ee5cd"><span class="id" title="notation">M_n</span></a> (<span class="id" title="var">only</span> <span class="id" title="var">parsing</span>) : <span class="id" title="var">type_scope</span>.<br/> + +<br/> +<span class="id" title="keyword">Notation</span> <a name="667138260bfba6c8c1be5dda11faf290"><span class="id" title="notation">"</span></a>\matrix[ k ]_ ( i , j ) E" := (<a class="idref" href="mathcomp.algebra.matrix.html#matrix_of_fun"><span class="id" title="definition">matrix_of_fun</span></a> <span class="id" title="var">k</span> (<span class="id" title="keyword">fun</span> <span class="id" title="var">i</span> <span class="id" title="var">j</span> ⇒ <span class="id" title="var">E</span>))<br/> + (<span class="id" title="tactic">at</span> <span class="id" title="keyword">level</span> 36, <span class="id" title="var">E</span> <span class="id" title="tactic">at</span> <span class="id" title="keyword">level</span> 36, <span class="id" title="var">i</span>, <span class="id" title="var">j</span> <span class="id" title="tactic">at</span> <span class="id" title="keyword">level</span> 50): <span class="id" title="var">ring_scope</span>.<br/> + +<br/> +<span class="id" title="keyword">Notation</span> <a name="a1ae6dfa405702e5140c413e1b5a2fad"><span class="id" title="notation">"</span></a>\matrix_ ( i < m , j < n ) E" :=<br/> + (@<a class="idref" href="mathcomp.algebra.matrix.html#matrix_of_fun"><span class="id" title="definition">matrix_of_fun</span></a> <span class="id" title="var">_</span> <span class="id" title="var">m</span> <span class="id" title="var">n</span> <a class="idref" href="mathcomp.algebra.matrix.html#matrix_key"><span class="id" title="lemma">matrix_key</span></a> (<span class="id" title="keyword">fun</span> <span class="id" title="var">i</span> <span class="id" title="var">j</span> ⇒ <span class="id" title="var">E</span>)) (<span class="id" title="var">only</span> <span class="id" title="var">parsing</span>) : <span class="id" title="var">ring_scope</span>.<br/> + +<br/> +<span class="id" title="keyword">Notation</span> <a name="07a3499feb11e7b4191eb126d99e8210"><span class="id" title="notation">"</span></a>\matrix_ ( i , j < n ) E" :=<br/> + (<a class="idref" href="mathcomp.algebra.matrix.html#a1ae6dfa405702e5140c413e1b5a2fad"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.algebra.matrix.html#a1ae6dfa405702e5140c413e1b5a2fad"><span class="id" title="notation">matrix_</span></a><a class="idref" href="mathcomp.algebra.matrix.html#a1ae6dfa405702e5140c413e1b5a2fad"><span class="id" title="notation">(</span></a><span class="id" title="var">i</span> <a class="idref" href="mathcomp.algebra.matrix.html#a1ae6dfa405702e5140c413e1b5a2fad"><span class="id" title="notation"><</span></a> <span class="id" title="var">n</span><a class="idref" href="mathcomp.algebra.matrix.html#a1ae6dfa405702e5140c413e1b5a2fad"><span class="id" title="notation">,</span></a> <span class="id" title="var">j</span> <a class="idref" href="mathcomp.algebra.matrix.html#a1ae6dfa405702e5140c413e1b5a2fad"><span class="id" title="notation"><</span></a> <span class="id" title="var">n</span><a class="idref" href="mathcomp.algebra.matrix.html#a1ae6dfa405702e5140c413e1b5a2fad"><span class="id" title="notation">)</span></a> <span class="id" title="var">E</span>) (<span class="id" title="var">only</span> <span class="id" title="var">parsing</span>) : <span class="id" title="var">ring_scope</span>.<br/> + +<br/> +<span class="id" title="keyword">Notation</span> <a name="2c5155dd82e4555ad208e1f95e711672"><span class="id" title="notation">"</span></a>\matrix_ ( i , j ) E" := (<a class="idref" href="mathcomp.algebra.matrix.html#a1ae6dfa405702e5140c413e1b5a2fad"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.algebra.matrix.html#a1ae6dfa405702e5140c413e1b5a2fad"><span class="id" title="notation">matrix_</span></a><a class="idref" href="mathcomp.algebra.matrix.html#a1ae6dfa405702e5140c413e1b5a2fad"><span class="id" title="notation">(</span></a><span class="id" title="var">i</span> <a class="idref" href="mathcomp.algebra.matrix.html#a1ae6dfa405702e5140c413e1b5a2fad"><span class="id" title="notation"><</span></a> <span class="id" title="var">_</span><a class="idref" href="mathcomp.algebra.matrix.html#a1ae6dfa405702e5140c413e1b5a2fad"><span class="id" title="notation">,</span></a> <span class="id" title="var">j</span> <a class="idref" href="mathcomp.algebra.matrix.html#a1ae6dfa405702e5140c413e1b5a2fad"><span class="id" title="notation"><</span></a> <span class="id" title="var">_</span><a class="idref" href="mathcomp.algebra.matrix.html#a1ae6dfa405702e5140c413e1b5a2fad"><span class="id" title="notation">)</span></a> <span class="id" title="var">E</span>) : <span class="id" title="var">ring_scope</span>.<br/> + +<br/> +<span class="id" title="keyword">Notation</span> <a name="31137a9382a4a6a96e5b27ab39a7efe6"><span class="id" title="notation">"</span></a>\matrix_ ( i < m ) E" :=<br/> + (<a class="idref" href="mathcomp.algebra.matrix.html#a1ae6dfa405702e5140c413e1b5a2fad"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.algebra.matrix.html#a1ae6dfa405702e5140c413e1b5a2fad"><span class="id" title="notation">matrix_</span></a><a class="idref" href="mathcomp.algebra.matrix.html#a1ae6dfa405702e5140c413e1b5a2fad"><span class="id" title="notation">(</span></a><span class="id" title="var">i</span> <a class="idref" href="mathcomp.algebra.matrix.html#a1ae6dfa405702e5140c413e1b5a2fad"><span class="id" title="notation"><</span></a> <span class="id" title="var">m</span><a class="idref" href="mathcomp.algebra.matrix.html#a1ae6dfa405702e5140c413e1b5a2fad"><span class="id" title="notation">,</span></a> <span class="id" title="var">j</span> <a class="idref" href="mathcomp.algebra.matrix.html#a1ae6dfa405702e5140c413e1b5a2fad"><span class="id" title="notation"><</span></a> <span class="id" title="var">_</span><a class="idref" href="mathcomp.algebra.matrix.html#a1ae6dfa405702e5140c413e1b5a2fad"><span class="id" title="notation">)</span></a> @<a class="idref" href="mathcomp.algebra.matrix.html#fun_of_matrix"><span class="id" title="definition">fun_of_matrix</span></a> <span class="id" title="var">_</span> 1 <span class="id" title="var">_</span> <span class="id" title="var">E</span> 0 <a class="idref" href="mathcomp.algebra.matrix.html#j"><span class="id" title="variable">j</span></a>)<br/> + (<span class="id" title="var">only</span> <span class="id" title="var">parsing</span>) : <span class="id" title="var">ring_scope</span>.<br/> +<span class="id" title="keyword">Notation</span> <a name="e284a17aae67e9e1847f9d0558653fbb"><span class="id" title="notation">"</span></a>\matrix_ i E" := (<a class="idref" href="mathcomp.algebra.matrix.html#31137a9382a4a6a96e5b27ab39a7efe6"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.algebra.matrix.html#31137a9382a4a6a96e5b27ab39a7efe6"><span class="id" title="notation">matrix_</span></a><a class="idref" href="mathcomp.algebra.matrix.html#31137a9382a4a6a96e5b27ab39a7efe6"><span class="id" title="notation">(</span></a><span class="id" title="var">i</span> <a class="idref" href="mathcomp.algebra.matrix.html#31137a9382a4a6a96e5b27ab39a7efe6"><span class="id" title="notation"><</span></a> <span class="id" title="var">_</span><a class="idref" href="mathcomp.algebra.matrix.html#31137a9382a4a6a96e5b27ab39a7efe6"><span class="id" title="notation">)</span></a> <span class="id" title="var">E</span>) : <span class="id" title="var">ring_scope</span>.<br/> + +<br/> +<span class="id" title="keyword">Notation</span> <a name="98e61c15eb873889ba3d9e12ffb0d8ff"><span class="id" title="notation">"</span></a>\col_ ( i < n ) E" := (@<a class="idref" href="mathcomp.algebra.matrix.html#matrix_of_fun"><span class="id" title="definition">matrix_of_fun</span></a> <span class="id" title="var">_</span> <span class="id" title="var">n</span> 1 <a class="idref" href="mathcomp.algebra.matrix.html#matrix_key"><span class="id" title="lemma">matrix_key</span></a> (<span class="id" title="keyword">fun</span> <span class="id" title="var">i</span> <span class="id" title="var">_</span> ⇒ <span class="id" title="var">E</span>))<br/> + (<span class="id" title="var">only</span> <span class="id" title="var">parsing</span>) : <span class="id" title="var">ring_scope</span>.<br/> +<span class="id" title="keyword">Notation</span> <a name="b66cad81f971edb47d8190c33e20cdcb"><span class="id" title="notation">"</span></a>\col_ i E" := (<a class="idref" href="mathcomp.algebra.matrix.html#98e61c15eb873889ba3d9e12ffb0d8ff"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.algebra.matrix.html#98e61c15eb873889ba3d9e12ffb0d8ff"><span class="id" title="notation">col_</span></a><a class="idref" href="mathcomp.algebra.matrix.html#98e61c15eb873889ba3d9e12ffb0d8ff"><span class="id" title="notation">(</span></a><span class="id" title="var">i</span> <a class="idref" href="mathcomp.algebra.matrix.html#98e61c15eb873889ba3d9e12ffb0d8ff"><span class="id" title="notation"><</span></a> <span class="id" title="var">_</span><a class="idref" href="mathcomp.algebra.matrix.html#98e61c15eb873889ba3d9e12ffb0d8ff"><span class="id" title="notation">)</span></a> <span class="id" title="var">E</span>) : <span class="id" title="var">ring_scope</span>.<br/> + +<br/> +<span class="id" title="keyword">Notation</span> <a name="5cbf3f9f063e1ee805c433f40b533623"><span class="id" title="notation">"</span></a>\row_ ( j < n ) E" := (@<a class="idref" href="mathcomp.algebra.matrix.html#matrix_of_fun"><span class="id" title="definition">matrix_of_fun</span></a> <span class="id" title="var">_</span> 1 <span class="id" title="var">n</span> <a class="idref" href="mathcomp.algebra.matrix.html#matrix_key"><span class="id" title="lemma">matrix_key</span></a> (<span class="id" title="keyword">fun</span> <span class="id" title="var">_</span> <span class="id" title="var">j</span> ⇒ <span class="id" title="var">E</span>))<br/> + (<span class="id" title="var">only</span> <span class="id" title="var">parsing</span>) : <span class="id" title="var">ring_scope</span>.<br/> +<span class="id" title="keyword">Notation</span> <a name="cf6654c80d96ae2da5730746e8dfeac4"><span class="id" title="notation">"</span></a>\row_ j E" := (<a class="idref" href="mathcomp.algebra.matrix.html#5cbf3f9f063e1ee805c433f40b533623"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.algebra.matrix.html#5cbf3f9f063e1ee805c433f40b533623"><span class="id" title="notation">row_</span></a><a class="idref" href="mathcomp.algebra.matrix.html#5cbf3f9f063e1ee805c433f40b533623"><span class="id" title="notation">(</span></a><span class="id" title="var">j</span> <a class="idref" href="mathcomp.algebra.matrix.html#5cbf3f9f063e1ee805c433f40b533623"><span class="id" title="notation"><</span></a> <span class="id" title="var">_</span><a class="idref" href="mathcomp.algebra.matrix.html#5cbf3f9f063e1ee805c433f40b533623"><span class="id" title="notation">)</span></a> <span class="id" title="var">E</span>) : <span class="id" title="var">ring_scope</span>.<br/> + +<br/> +<span class="id" title="keyword">Definition</span> <a name="matrix_eqMixin"><span class="id" title="definition">matrix_eqMixin</span></a> (<span class="id" title="var">R</span> : <a class="idref" href="mathcomp.ssreflect.eqtype.html#Equality.Exports.eqType"><span class="id" title="abbreviation">eqType</span></a>) <span class="id" title="var">m</span> <span class="id" title="var">n</span> :=<br/> + <span class="id" title="keyword">Eval</span> <span class="id" title="tactic">hnf</span> <span class="id" title="tactic">in</span> <a class="idref" href="mathcomp.ssreflect.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.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.matrix.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.matrix.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.matrix.html#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.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">matrix_eqType</span> (<span class="id" title="var">R</span> : <a class="idref" href="mathcomp.ssreflect.eqtype.html#Equality.Exports.eqType"><span class="id" title="abbreviation">eqType</span></a>) <span class="id" title="var">m</span> <span class="id" title="var">n</span>:=<br/> + <span class="id" title="keyword">Eval</span> <span class="id" title="tactic">hnf</span> <span class="id" title="tactic">in</span> <a class="idref" href="mathcomp.ssreflect.eqtype.html#Equality.Exports.EqType"><span class="id" title="abbreviation">EqType</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.matrix.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.matrix.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.matrix.html#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#matrix_eqMixin"><span class="id" title="definition">matrix_eqMixin</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#R"><span class="id" title="variable">R</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#m"><span class="id" title="variable">m</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#n"><span class="id" title="variable">n</span></a>).<br/> +<span class="id" title="keyword">Definition</span> <a name="matrix_choiceMixin"><span class="id" title="definition">matrix_choiceMixin</span></a> (<span class="id" title="var">R</span> : <a class="idref" href="mathcomp.ssreflect.choice.html#Choice.Exports.choiceType"><span class="id" title="abbreviation">choiceType</span></a>) <span class="id" title="var">m</span> <span class="id" title="var">n</span> :=<br/> + <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.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.matrix.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.matrix.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.matrix.html#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.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">matrix_choiceType</span> (<span class="id" title="var">R</span> : <a class="idref" href="mathcomp.ssreflect.choice.html#Choice.Exports.choiceType"><span class="id" title="abbreviation">choiceType</span></a>) <span class="id" title="var">m</span> <span class="id" title="var">n</span> :=<br/> + <span class="id" title="keyword">Eval</span> <span class="id" title="tactic">hnf</span> <span class="id" title="tactic">in</span> <a class="idref" href="mathcomp.ssreflect.choice.html#Choice.Exports.ChoiceType"><span class="id" title="abbreviation">ChoiceType</span></a> <a class="idref" href="mathcomp.algebra.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.matrix.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.matrix.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.matrix.html#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#matrix_choiceMixin"><span class="id" title="definition">matrix_choiceMixin</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#R"><span class="id" title="variable">R</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#m"><span class="id" title="variable">m</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#n"><span class="id" title="variable">n</span></a>).<br/> +<span class="id" title="keyword">Definition</span> <a name="matrix_countMixin"><span class="id" title="definition">matrix_countMixin</span></a> (<span class="id" title="var">R</span> : <a class="idref" href="mathcomp.ssreflect.choice.html#Countable.Exports.countType"><span class="id" title="abbreviation">countType</span></a>) <span class="id" title="var">m</span> <span class="id" title="var">n</span> :=<br/> + <a class="idref" href="mathcomp.ssreflect.choice.html#99c739c8f4212f142296b27d3077c65e"><span class="id" title="notation">[</span></a><a class="idref" href="mathcomp.ssreflect.choice.html#99c739c8f4212f142296b27d3077c65e"><span class="id" title="notation">countMixin</span></a> <a class="idref" href="mathcomp.ssreflect.choice.html#99c739c8f4212f142296b27d3077c65e"><span class="id" title="notation">of</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.matrix.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.matrix.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.matrix.html#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.ssreflect.choice.html#99c739c8f4212f142296b27d3077c65e"><span class="id" title="notation">by</span></a> <a class="idref" href="mathcomp.ssreflect.choice.html#99c739c8f4212f142296b27d3077c65e"><span class="id" title="notation"><:]</span></a>.<br/> +<span class="id" title="keyword">Canonical</span> <span class="id" title="var">matrix_countType</span> (<span class="id" title="var">R</span> : <a class="idref" href="mathcomp.ssreflect.choice.html#Countable.Exports.countType"><span class="id" title="abbreviation">countType</span></a>) <span class="id" title="var">m</span> <span class="id" title="var">n</span> :=<br/> + <span class="id" title="keyword">Eval</span> <span class="id" title="tactic">hnf</span> <span class="id" title="tactic">in</span> <a class="idref" href="mathcomp.ssreflect.choice.html#Countable.Exports.CountType"><span class="id" title="abbreviation">CountType</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.matrix.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.matrix.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.matrix.html#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#matrix_countMixin"><span class="id" title="definition">matrix_countMixin</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#R"><span class="id" title="variable">R</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#m"><span class="id" title="variable">m</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#n"><span class="id" title="variable">n</span></a>).<br/> +<span class="id" title="keyword">Canonical</span> <span class="id" title="var">matrix_subCountType</span> (<span class="id" title="var">R</span> : <a class="idref" href="mathcomp.ssreflect.choice.html#Countable.Exports.countType"><span class="id" title="abbreviation">countType</span></a>) <span class="id" title="var">m</span> <span class="id" title="var">n</span> :=<br/> + <span class="id" title="keyword">Eval</span> <span class="id" title="tactic">hnf</span> <span class="id" title="tactic">in</span> <a class="idref" href="mathcomp.ssreflect.choice.html#8a7192fa64a42310658fd5be07ae4fcc"><span class="id" title="notation">[</span></a><a class="idref" href="mathcomp.ssreflect.choice.html#8a7192fa64a42310658fd5be07ae4fcc"><span class="id" title="notation">subCountType</span></a> <a class="idref" href="mathcomp.ssreflect.choice.html#8a7192fa64a42310658fd5be07ae4fcc"><span class="id" title="notation">of</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.matrix.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.matrix.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.matrix.html#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.ssreflect.choice.html#8a7192fa64a42310658fd5be07ae4fcc"><span class="id" title="notation">]</span></a>.<br/> +<span class="id" title="keyword">Definition</span> <a name="matrix_finMixin"><span class="id" title="definition">matrix_finMixin</span></a> (<span class="id" title="var">R</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">m</span> <span class="id" title="var">n</span> :=<br/> + <a class="idref" href="mathcomp.ssreflect.fintype.html#8c180561768185dd10396a5d3615104a"><span class="id" title="notation">[</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#8c180561768185dd10396a5d3615104a"><span class="id" title="notation">finMixin</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#8c180561768185dd10396a5d3615104a"><span class="id" title="notation">of</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.matrix.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.matrix.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.matrix.html#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.ssreflect.fintype.html#8c180561768185dd10396a5d3615104a"><span class="id" title="notation">by</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#8c180561768185dd10396a5d3615104a"><span class="id" title="notation"><:]</span></a>.<br/> +<span class="id" title="keyword">Canonical</span> <span class="id" title="var">matrix_finType</span> (<span class="id" title="var">R</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">m</span> <span class="id" title="var">n</span> :=<br/> + <span class="id" title="keyword">Eval</span> <span class="id" title="tactic">hnf</span> <span class="id" title="tactic">in</span> <a class="idref" href="mathcomp.ssreflect.fintype.html#Finite.Exports.FinType"><span class="id" title="abbreviation">FinType</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.matrix.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.matrix.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.matrix.html#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#matrix_finMixin"><span class="id" title="definition">matrix_finMixin</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#R"><span class="id" title="variable">R</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#m"><span class="id" title="variable">m</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#n"><span class="id" title="variable">n</span></a>).<br/> +<span class="id" title="keyword">Canonical</span> <span class="id" title="var">matrix_subFinType</span> (<span class="id" title="var">R</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">m</span> <span class="id" title="var">n</span> :=<br/> + <span class="id" title="keyword">Eval</span> <span class="id" title="tactic">hnf</span> <span class="id" title="tactic">in</span> <a class="idref" href="mathcomp.ssreflect.fintype.html#a701c7b60b4a16f07950761d8bf90924"><span class="id" title="notation">[</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#a701c7b60b4a16f07950761d8bf90924"><span class="id" title="notation">subFinType</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#a701c7b60b4a16f07950761d8bf90924"><span class="id" title="notation">of</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.matrix.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.matrix.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.matrix.html#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.ssreflect.fintype.html#a701c7b60b4a16f07950761d8bf90924"><span class="id" title="notation">]</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="card_matrix"><span class="id" title="lemma">card_matrix</span></a> (<span class="id" title="var">F</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">m</span> <span class="id" title="var">n</span> : (<a class="idref" href="mathcomp.ssreflect.fintype.html#f01714bb99e6c7abc6cfb2e43eff7f6e"><span class="id" title="notation">#|</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#74a34ed1f9b36f83662203527a970b09"><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">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.matrix.html#F"><span class="id" title="variable">F</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.matrix.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.matrix.html#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="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#74a34ed1f9b36f83662203527a970b09"><span class="id" title="notation">}</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#f01714bb99e6c7abc6cfb2e43eff7f6e"><span class="id" title="notation">|</span></a> <a class="idref" href="http://coq.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#f01714bb99e6c7abc6cfb2e43eff7f6e"><span class="id" title="notation">#|</span></a><a class="idref" href="mathcomp.algebra.matrix.html#F"><span class="id" title="variable">F</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#4c362bcf0e947e2792a2e6989b44aeb0"><span class="id" title="notation">^</span></a> <a class="idref" href="mathcomp.ssreflect.ssrnat.html#4c362bcf0e947e2792a2e6989b44aeb0"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.matrix.html#m"><span class="id" title="variable">m</span></a> <a class="idref" href="mathcomp.ssreflect.ssrnat.html#697e4695610f677ae98a52af81f779d2"><span class="id" title="notation">×</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#n"><span class="id" title="variable">n</span></a><a class="idref" href="mathcomp.ssreflect.ssrnat.html#4c362bcf0e947e2792a2e6989b44aeb0"><span class="id" title="notation">)</span></a>)%<span class="id" title="var">N</span>.<br/> + +<br/> +</div> + +<div class="doc"> + Matrix structural operations (transpose, permutation, blocks) ******* +</div> +<div class="code"> + +<br/> +<span class="id" title="keyword">Section</span> <a name="MatrixStructural"><span class="id" title="section">MatrixStructural</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Variable</span> <a name="MatrixStructural.R"><span class="id" title="variable">R</span></a> : <span class="id" title="keyword">Type</span>.<br/> + +<br/> +</div> + +<div class="doc"> + Constant matrix +</div> +<div class="code"> +<span class="id" title="keyword">Fact</span> <a name="const_mx_key"><span class="id" title="lemma">const_mx_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="const_mx"><span class="id" title="definition">const_mx</span></a> <span class="id" title="var">m</span> <span class="id" title="var">n</span> <span class="id" title="var">a</span> : <a class="idref" href="mathcomp.algebra.matrix.html#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.matrix.html#MatrixStructural.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.matrix.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.matrix.html#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#667138260bfba6c8c1be5dda11faf290"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.algebra.matrix.html#667138260bfba6c8c1be5dda11faf290"><span class="id" title="notation">matrix</span></a><a class="idref" href="mathcomp.algebra.matrix.html#667138260bfba6c8c1be5dda11faf290"><span class="id" title="notation">[</span></a><a class="idref" href="mathcomp.algebra.matrix.html#const_mx_key"><span class="id" title="lemma">const_mx_key</span></a><a class="idref" href="mathcomp.algebra.matrix.html#667138260bfba6c8c1be5dda11faf290"><span class="id" title="notation">]</span></a><a class="idref" href="mathcomp.algebra.matrix.html#667138260bfba6c8c1be5dda11faf290"><span class="id" title="notation">_</span></a><a class="idref" href="mathcomp.algebra.matrix.html#667138260bfba6c8c1be5dda11faf290"><span class="id" title="notation">(</span></a><span class="id" title="var">i</span><a class="idref" href="mathcomp.algebra.matrix.html#667138260bfba6c8c1be5dda11faf290"><span class="id" title="notation">,</span></a> <span class="id" title="var">j</span><a class="idref" href="mathcomp.algebra.matrix.html#667138260bfba6c8c1be5dda11faf290"><span class="id" title="notation">)</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#a"><span class="id" title="variable">a</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Section</span> <a name="MatrixStructural.FixedDim"><span class="id" title="section">FixedDim</span></a>.<br/> +</div> + +<div class="doc"> + Definitions and properties for which we can work with fixed dimensions. +</div> +<div class="code"> + +<br/> +<span class="id" title="keyword">Variables</span> <a name="MatrixStructural.FixedDim.m"><span class="id" title="variable">m</span></a> <a name="MatrixStructural.FixedDim.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/> +<span class="id" title="keyword">Implicit</span> <span class="id" title="keyword">Type</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.matrix.html#MatrixStructural.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.matrix.html#MatrixStructural.FixedDim.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.matrix.html#MatrixStructural.FixedDim.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/> + +<br/> +</div> + +<div class="doc"> + Reshape a matrix, to accomodate the block functions for instance. +</div> +<div class="code"> +<span class="id" title="keyword">Definition</span> <a name="castmx"><span class="id" title="definition">castmx</span></a> <span class="id" title="var">m'</span> <span class="id" title="var">n'</span> (<span class="id" title="var">eq_mn</span> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#d19c7eafd0e2d195d10df94b392087b5"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.matrix.html#MatrixStructural.FixedDim.m"><span class="id" title="variable">m</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#m'"><span class="id" title="variable">m'</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#d19c7eafd0e2d195d10df94b392087b5"><span class="id" title="notation">)</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#d19c7eafd0e2d195d10df94b392087b5"><span class="id" title="notation">×</span></a> <a class="idref" href="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.matrix.html#MatrixStructural.FixedDim.n"><span class="id" title="variable">n</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#n'"><span class="id" title="variable">n'</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#d19c7eafd0e2d195d10df94b392087b5"><span class="id" title="notation">)</span></a>) <span class="id" title="var">A</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.matrix.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.matrix.html#n'"><span class="id" title="variable">n'</span></a><a class="idref" href="mathcomp.algebra.matrix.html#cb37620352ad6b90a047a361359e2f04"><span class="id" title="notation">)</span></a> :=<br/> + <span class="id" title="keyword">let</span>: <span class="id" title="var">erefl</span> <span class="id" title="tactic">in</span> <span class="id" title="var">_</span> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <span class="id" title="var">m'</span> := <a class="idref" href="mathcomp.algebra.matrix.html#eq_mn"><span class="id" title="variable">eq_mn</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#c4877bbfe60d8f22b47ac99ace86216a"><span class="id" title="notation">.1</span></a> <span class="id" title="keyword">return</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.matrix.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.matrix.html#n'"><span class="id" title="variable">n'</span></a><a class="idref" href="mathcomp.algebra.matrix.html#cb37620352ad6b90a047a361359e2f04"><span class="id" title="notation">)</span></a> <span class="id" title="tactic">in</span><br/> + <span class="id" title="keyword">let</span>: <span class="id" title="var">erefl</span> <span class="id" title="tactic">in</span> <span class="id" title="var">_</span> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <span class="id" title="var">n'</span> := <a class="idref" href="mathcomp.algebra.matrix.html#eq_mn"><span class="id" title="variable">eq_mn</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#f4827404159513e7fd691b60b7877737"><span class="id" title="notation">.2</span></a> <span class="id" title="keyword">return</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.matrix.html#MatrixStructural.FixedDim.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.matrix.html#n'"><span class="id" title="variable">n'</span></a><a class="idref" href="mathcomp.algebra.matrix.html#cb37620352ad6b90a047a361359e2f04"><span class="id" title="notation">)</span></a> <span class="id" title="tactic">in</span> <a class="idref" href="mathcomp.algebra.matrix.html#A"><span class="id" title="variable">A</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Definition</span> <a name="conform_mx"><span class="id" title="definition">conform_mx</span></a> <span class="id" title="var">m'</span> <span class="id" title="var">n'</span> <span class="id" title="var">B</span> <span class="id" title="var">A</span> :=<br/> + <span class="id" title="keyword">match</span> <a class="idref" href="mathcomp.algebra.matrix.html#MatrixStructural.FixedDim.m"><span class="id" title="variable">m</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#ab7a7bc39754581ab8f205db64711d57"><span class="id" title="notation">=</span></a><a class="idref" href="mathcomp.ssreflect.eqtype.html#ab7a7bc39754581ab8f205db64711d57"><span class="id" title="notation">P</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#m'"><span class="id" title="variable">m'</span></a>, <a class="idref" href="mathcomp.algebra.matrix.html#MatrixStructural.FixedDim.n"><span class="id" title="variable">n</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#ab7a7bc39754581ab8f205db64711d57"><span class="id" title="notation">=</span></a><a class="idref" href="mathcomp.ssreflect.eqtype.html#ab7a7bc39754581ab8f205db64711d57"><span class="id" title="notation">P</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#n'"><span class="id" title="variable">n'</span></a> <span class="id" title="keyword">with</span><br/> + | <span class="id" title="var">ReflectT</span> <span class="id" title="var">eq_m</span>, <span class="id" title="var">ReflectT</span> <span class="id" title="var">eq_n</span> ⇒ <a class="idref" href="mathcomp.algebra.matrix.html#castmx"><span class="id" title="definition">castmx</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#44400027531d4bc3f586a1997dc874c0"><span class="id" title="notation">(</span></a><span class="id" title="var">eq_m</span><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#44400027531d4bc3f586a1997dc874c0"><span class="id" title="notation">,</span></a> <span class="id" title="var">eq_n</span><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#44400027531d4bc3f586a1997dc874c0"><span class="id" title="notation">)</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#A"><span class="id" title="variable">A</span></a><br/> + | <span class="id" title="var">_</span>, <span class="id" title="var">_</span> ⇒ <a class="idref" href="mathcomp.algebra.matrix.html#B"><span class="id" title="variable">B</span></a><br/> + <span class="id" title="keyword">end</span>.<br/> + +<br/> +</div> + +<div class="doc"> + Transpose a matrix +</div> +<div class="code"> +<span class="id" title="keyword">Fact</span> <a name="trmx_key"><span class="id" title="lemma">trmx_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="trmx"><span class="id" title="definition">trmx</span></a> <span class="id" title="var">A</span> := <a class="idref" href="mathcomp.algebra.matrix.html#667138260bfba6c8c1be5dda11faf290"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.algebra.matrix.html#667138260bfba6c8c1be5dda11faf290"><span class="id" title="notation">matrix</span></a><a class="idref" href="mathcomp.algebra.matrix.html#667138260bfba6c8c1be5dda11faf290"><span class="id" title="notation">[</span></a><a class="idref" href="mathcomp.algebra.matrix.html#trmx_key"><span class="id" title="lemma">trmx_key</span></a><a class="idref" href="mathcomp.algebra.matrix.html#667138260bfba6c8c1be5dda11faf290"><span class="id" title="notation">]</span></a><a class="idref" href="mathcomp.algebra.matrix.html#667138260bfba6c8c1be5dda11faf290"><span class="id" title="notation">_</span></a><a class="idref" href="mathcomp.algebra.matrix.html#667138260bfba6c8c1be5dda11faf290"><span class="id" title="notation">(</span></a><span class="id" title="var">i</span><a class="idref" href="mathcomp.algebra.matrix.html#667138260bfba6c8c1be5dda11faf290"><span class="id" title="notation">,</span></a> <span class="id" title="var">j</span><a class="idref" href="mathcomp.algebra.matrix.html#667138260bfba6c8c1be5dda11faf290"><span class="id" title="notation">)</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#A"><span class="id" title="variable">A</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#j"><span class="id" title="variable">j</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#i"><span class="id" title="variable">i</span></a>.<br/> + +<br/> +</div> + +<div class="doc"> + Permute a matrix vertically (rows) or horizontally (columns) +</div> +<div class="code"> +<span class="id" title="keyword">Fact</span> <a name="row_perm_key"><span class="id" title="lemma">row_perm_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="row_perm"><span class="id" title="definition">row_perm</span></a> (<span class="id" title="var">s</span> : <a class="idref" href="mathcomp.fingroup.perm.html#ea6fcc91866185ddfad466ada7c10b27"><span class="id" title="notation">'</span></a><a class="idref" href="mathcomp.fingroup.perm.html#ea6fcc91866185ddfad466ada7c10b27"><span class="id" title="notation">S_m</span></a>) <span class="id" title="var">A</span> := <a class="idref" href="mathcomp.algebra.matrix.html#667138260bfba6c8c1be5dda11faf290"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.algebra.matrix.html#667138260bfba6c8c1be5dda11faf290"><span class="id" title="notation">matrix</span></a><a class="idref" href="mathcomp.algebra.matrix.html#667138260bfba6c8c1be5dda11faf290"><span class="id" title="notation">[</span></a><a class="idref" href="mathcomp.algebra.matrix.html#row_perm_key"><span class="id" title="lemma">row_perm_key</span></a><a class="idref" href="mathcomp.algebra.matrix.html#667138260bfba6c8c1be5dda11faf290"><span class="id" title="notation">]</span></a><a class="idref" href="mathcomp.algebra.matrix.html#667138260bfba6c8c1be5dda11faf290"><span class="id" title="notation">_</span></a><a class="idref" href="mathcomp.algebra.matrix.html#667138260bfba6c8c1be5dda11faf290"><span class="id" title="notation">(</span></a><span class="id" title="var">i</span><a class="idref" href="mathcomp.algebra.matrix.html#667138260bfba6c8c1be5dda11faf290"><span class="id" title="notation">,</span></a> <span class="id" title="var">j</span><a class="idref" href="mathcomp.algebra.matrix.html#667138260bfba6c8c1be5dda11faf290"><span class="id" title="notation">)</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#A"><span class="id" title="variable">A</span></a> (<a class="idref" href="mathcomp.algebra.matrix.html#s"><span class="id" title="variable">s</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#i"><span class="id" title="variable">i</span></a>) <a class="idref" href="mathcomp.algebra.matrix.html#j"><span class="id" title="variable">j</span></a>.<br/> +<span class="id" title="keyword">Fact</span> <a name="col_perm_key"><span class="id" title="lemma">col_perm_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="col_perm"><span class="id" title="definition">col_perm</span></a> (<span class="id" title="var">s</span> : <a class="idref" href="mathcomp.fingroup.perm.html#ea6fcc91866185ddfad466ada7c10b27"><span class="id" title="notation">'</span></a><a class="idref" href="mathcomp.fingroup.perm.html#ea6fcc91866185ddfad466ada7c10b27"><span class="id" title="notation">S_n</span></a>) <span class="id" title="var">A</span> := <a class="idref" href="mathcomp.algebra.matrix.html#667138260bfba6c8c1be5dda11faf290"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.algebra.matrix.html#667138260bfba6c8c1be5dda11faf290"><span class="id" title="notation">matrix</span></a><a class="idref" href="mathcomp.algebra.matrix.html#667138260bfba6c8c1be5dda11faf290"><span class="id" title="notation">[</span></a><a class="idref" href="mathcomp.algebra.matrix.html#col_perm_key"><span class="id" title="lemma">col_perm_key</span></a><a class="idref" href="mathcomp.algebra.matrix.html#667138260bfba6c8c1be5dda11faf290"><span class="id" title="notation">]</span></a><a class="idref" href="mathcomp.algebra.matrix.html#667138260bfba6c8c1be5dda11faf290"><span class="id" title="notation">_</span></a><a class="idref" href="mathcomp.algebra.matrix.html#667138260bfba6c8c1be5dda11faf290"><span class="id" title="notation">(</span></a><span class="id" title="var">i</span><a class="idref" href="mathcomp.algebra.matrix.html#667138260bfba6c8c1be5dda11faf290"><span class="id" title="notation">,</span></a> <span class="id" title="var">j</span><a class="idref" href="mathcomp.algebra.matrix.html#667138260bfba6c8c1be5dda11faf290"><span class="id" title="notation">)</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#A"><span class="id" title="variable">A</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#i"><span class="id" title="variable">i</span></a> (<a class="idref" href="mathcomp.algebra.matrix.html#s"><span class="id" title="variable">s</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#j"><span class="id" title="variable">j</span></a>).<br/> + +<br/> +</div> + +<div class="doc"> + Exchange two rows/columns of a matrix +</div> +<div class="code"> +<span class="id" title="keyword">Definition</span> <a name="xrow"><span class="id" title="definition">xrow</span></a> <span class="id" title="var">i1</span> <span class="id" title="var">i2</span> := <a class="idref" href="mathcomp.algebra.matrix.html#row_perm"><span class="id" title="definition">row_perm</span></a> (<a class="idref" href="mathcomp.fingroup.perm.html#tperm"><span class="id" title="definition">tperm</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#i1"><span class="id" title="variable">i1</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#i2"><span class="id" title="variable">i2</span></a>).<br/> +<span class="id" title="keyword">Definition</span> <a name="xcol"><span class="id" title="definition">xcol</span></a> <span class="id" title="var">j1</span> <span class="id" title="var">j2</span> := <a class="idref" href="mathcomp.algebra.matrix.html#col_perm"><span class="id" title="definition">col_perm</span></a> (<a class="idref" href="mathcomp.fingroup.perm.html#tperm"><span class="id" title="definition">tperm</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#j1"><span class="id" title="variable">j1</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#j2"><span class="id" title="variable">j2</span></a>).<br/> + +<br/> +</div> + +<div class="doc"> + Row/Column sub matrices of a matrix +</div> +<div class="code"> +<span class="id" title="keyword">Definition</span> <a name="row"><span class="id" title="definition">row</span></a> <span class="id" title="var">i0</span> <span class="id" title="var">A</span> := <a class="idref" href="mathcomp.algebra.matrix.html#cf6654c80d96ae2da5730746e8dfeac4"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.algebra.matrix.html#cf6654c80d96ae2da5730746e8dfeac4"><span class="id" title="notation">row_j</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#A"><span class="id" title="variable">A</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#i0"><span class="id" title="variable">i0</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#j"><span class="id" title="variable">j</span></a>.<br/> +<span class="id" title="keyword">Definition</span> <a name="col"><span class="id" title="definition">col</span></a> <span class="id" title="var">j0</span> <span class="id" title="var">A</span> := <a class="idref" href="mathcomp.algebra.matrix.html#b66cad81f971edb47d8190c33e20cdcb"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.algebra.matrix.html#b66cad81f971edb47d8190c33e20cdcb"><span class="id" title="notation">col_i</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#A"><span class="id" title="variable">A</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#i"><span class="id" title="variable">i</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#j0"><span class="id" title="variable">j0</span></a>.<br/> + +<br/> +</div> + +<div class="doc"> + Removing a row/column from a matrix +</div> +<div class="code"> +<span class="id" title="keyword">Definition</span> <a name="row'"><span class="id" title="definition">row'</span></a> <span class="id" title="var">i0</span> <span class="id" title="var">A</span> := <a class="idref" href="mathcomp.algebra.matrix.html#2c5155dd82e4555ad208e1f95e711672"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.algebra.matrix.html#2c5155dd82e4555ad208e1f95e711672"><span class="id" title="notation">matrix_</span></a><a class="idref" href="mathcomp.algebra.matrix.html#2c5155dd82e4555ad208e1f95e711672"><span class="id" title="notation">(</span></a><span class="id" title="var">i</span><a class="idref" href="mathcomp.algebra.matrix.html#2c5155dd82e4555ad208e1f95e711672"><span class="id" title="notation">,</span></a> <span class="id" title="var">j</span><a class="idref" href="mathcomp.algebra.matrix.html#2c5155dd82e4555ad208e1f95e711672"><span class="id" title="notation">)</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#A"><span class="id" title="variable">A</span></a> (<a class="idref" href="mathcomp.ssreflect.fintype.html#lift"><span class="id" title="definition">lift</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#i0"><span class="id" title="variable">i0</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#i"><span class="id" title="variable">i</span></a>) <a class="idref" href="mathcomp.algebra.matrix.html#j"><span class="id" title="variable">j</span></a>.<br/> +<span class="id" title="keyword">Definition</span> <a name="col'"><span class="id" title="definition">col'</span></a> <span class="id" title="var">j0</span> <span class="id" title="var">A</span> := <a class="idref" href="mathcomp.algebra.matrix.html#2c5155dd82e4555ad208e1f95e711672"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.algebra.matrix.html#2c5155dd82e4555ad208e1f95e711672"><span class="id" title="notation">matrix_</span></a><a class="idref" href="mathcomp.algebra.matrix.html#2c5155dd82e4555ad208e1f95e711672"><span class="id" title="notation">(</span></a><span class="id" title="var">i</span><a class="idref" href="mathcomp.algebra.matrix.html#2c5155dd82e4555ad208e1f95e711672"><span class="id" title="notation">,</span></a> <span class="id" title="var">j</span><a class="idref" href="mathcomp.algebra.matrix.html#2c5155dd82e4555ad208e1f95e711672"><span class="id" title="notation">)</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#A"><span class="id" title="variable">A</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#i"><span class="id" title="variable">i</span></a> (<a class="idref" href="mathcomp.ssreflect.fintype.html#lift"><span class="id" title="definition">lift</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#j0"><span class="id" title="variable">j0</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#j"><span class="id" title="variable">j</span></a>).<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="castmx_const"><span class="id" title="lemma">castmx_const</span></a> <span class="id" title="var">m'</span> <span class="id" title="var">n'</span> (<span class="id" title="var">eq_mn</span> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#d19c7eafd0e2d195d10df94b392087b5"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.matrix.html#MatrixStructural.FixedDim.m"><span class="id" title="variable">m</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#m'"><span class="id" title="variable">m'</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#d19c7eafd0e2d195d10df94b392087b5"><span class="id" title="notation">)</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#d19c7eafd0e2d195d10df94b392087b5"><span class="id" title="notation">×</span></a> <a class="idref" href="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.matrix.html#MatrixStructural.FixedDim.n"><span class="id" title="variable">n</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#n'"><span class="id" title="variable">n'</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#d19c7eafd0e2d195d10df94b392087b5"><span class="id" title="notation">)</span></a>) <span class="id" title="var">a</span> :<br/> + <a class="idref" href="mathcomp.algebra.matrix.html#castmx"><span class="id" title="definition">castmx</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#eq_mn"><span class="id" title="variable">eq_mn</span></a> (<a class="idref" href="mathcomp.algebra.matrix.html#const_mx"><span class="id" title="definition">const_mx</span></a> <a class="idref" href="mathcomp.algebra.matrix.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.matrix.html#const_mx"><span class="id" title="definition">const_mx</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#a"><span class="id" title="variable">a</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="trmx_const"><span class="id" title="lemma">trmx_const</span></a> <span class="id" title="var">a</span> : <a class="idref" href="mathcomp.algebra.matrix.html#trmx"><span class="id" title="definition">trmx</span></a> (<a class="idref" href="mathcomp.algebra.matrix.html#const_mx"><span class="id" title="definition">const_mx</span></a> <a class="idref" href="mathcomp.algebra.matrix.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.matrix.html#const_mx"><span class="id" title="definition">const_mx</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#a"><span class="id" title="variable">a</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="row_perm_const"><span class="id" title="lemma">row_perm_const</span></a> <span class="id" title="var">s</span> <span class="id" title="var">a</span> : <a class="idref" href="mathcomp.algebra.matrix.html#row_perm"><span class="id" title="definition">row_perm</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#s"><span class="id" title="variable">s</span></a> (<a class="idref" href="mathcomp.algebra.matrix.html#const_mx"><span class="id" title="definition">const_mx</span></a> <a class="idref" href="mathcomp.algebra.matrix.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.matrix.html#const_mx"><span class="id" title="definition">const_mx</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#a"><span class="id" title="variable">a</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="col_perm_const"><span class="id" title="lemma">col_perm_const</span></a> <span class="id" title="var">s</span> <span class="id" title="var">a</span> : <a class="idref" href="mathcomp.algebra.matrix.html#col_perm"><span class="id" title="definition">col_perm</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#s"><span class="id" title="variable">s</span></a> (<a class="idref" href="mathcomp.algebra.matrix.html#const_mx"><span class="id" title="definition">const_mx</span></a> <a class="idref" href="mathcomp.algebra.matrix.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.matrix.html#const_mx"><span class="id" title="definition">const_mx</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#a"><span class="id" title="variable">a</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="xrow_const"><span class="id" title="lemma">xrow_const</span></a> <span class="id" title="var">i1</span> <span class="id" title="var">i2</span> <span class="id" title="var">a</span> : <a class="idref" href="mathcomp.algebra.matrix.html#xrow"><span class="id" title="definition">xrow</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#i1"><span class="id" title="variable">i1</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#i2"><span class="id" title="variable">i2</span></a> (<a class="idref" href="mathcomp.algebra.matrix.html#const_mx"><span class="id" title="definition">const_mx</span></a> <a class="idref" href="mathcomp.algebra.matrix.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.matrix.html#const_mx"><span class="id" title="definition">const_mx</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#a"><span class="id" title="variable">a</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="xcol_const"><span class="id" title="lemma">xcol_const</span></a> <span class="id" title="var">j1</span> <span class="id" title="var">j2</span> <span class="id" title="var">a</span> : <a class="idref" href="mathcomp.algebra.matrix.html#xcol"><span class="id" title="definition">xcol</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#j1"><span class="id" title="variable">j1</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#j2"><span class="id" title="variable">j2</span></a> (<a class="idref" href="mathcomp.algebra.matrix.html#const_mx"><span class="id" title="definition">const_mx</span></a> <a class="idref" href="mathcomp.algebra.matrix.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.matrix.html#const_mx"><span class="id" title="definition">const_mx</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#a"><span class="id" title="variable">a</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="rowP"><span class="id" title="lemma">rowP</span></a> (<span class="id" title="var">u</span> <span class="id" title="var">v</span> : <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.matrix.html#MatrixStructural.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="mathcomp.algebra.matrix.html#u"><span class="id" title="variable">u</span></a> 0 <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.matrix.html#v"><span class="id" title="variable">v</span></a> 0 <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.matrix.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.matrix.html#v"><span class="id" title="variable">v</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="rowK"><span class="id" title="lemma">rowK</span></a> <span class="id" title="var">u_</span> <span class="id" title="var">i0</span> : <a class="idref" href="mathcomp.algebra.matrix.html#row"><span class="id" title="definition">row</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#i0"><span class="id" title="variable">i0</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.matrix.html#u_"><span class="id" title="variable">u_</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#i"><span class="id" title="variable">i</span></a>) <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#u_"><span class="id" title="variable">u_</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#i0"><span class="id" title="variable">i0</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="row_matrixP"><span class="id" title="lemma">row_matrixP</span></a> <span class="id" title="var">A</span> <span class="id" title="var">B</span> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#df1ced36fc33ce188051218bca314374"><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.matrix.html#row"><span class="id" title="definition">row</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#i"><span class="id" title="variable">i</span></a> <a class="idref" href="mathcomp.algebra.matrix.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.matrix.html#row"><span class="id" title="definition">row</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#i"><span class="id" title="variable">i</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#B"><span class="id" title="variable">B</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#df1ced36fc33ce188051218bca314374"><span class="id" title="notation">)</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#df1ced36fc33ce188051218bca314374"><span class="id" title="notation">↔</span></a> <a class="idref" href="mathcomp.algebra.matrix.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.matrix.html#B"><span class="id" title="variable">B</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="colP"><span class="id" title="lemma">colP</span></a> (<span class="id" title="var">u</span> <span class="id" title="var">v</span> : <a class="idref" href="mathcomp.algebra.matrix.html#8fe2ce7157f85e8005c056545a886a62"><span class="id" title="notation">'</span></a><a class="idref" href="mathcomp.algebra.matrix.html#8fe2ce7157f85e8005c056545a886a62"><span class="id" title="notation">cV</span></a><a class="idref" href="mathcomp.algebra.matrix.html#8fe2ce7157f85e8005c056545a886a62"><span class="id" title="notation">[</span></a><a class="idref" href="mathcomp.algebra.matrix.html#MatrixStructural.R"><span class="id" title="variable">R</span></a><a class="idref" href="mathcomp.algebra.matrix.html#8fe2ce7157f85e8005c056545a886a62"><span class="id" title="notation">]</span></a><a class="idref" href="mathcomp.algebra.matrix.html#8fe2ce7157f85e8005c056545a886a62"><span class="id" title="notation">_m</span></a>) : <a class="idref" href="mathcomp.algebra.matrix.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#8f28bbd804547edd8de802d63ef85617"><span class="id" title="notation">^~</span></a> 0 <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.matrix.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#8f28bbd804547edd8de802d63ef85617"><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#df1ced36fc33ce188051218bca314374"><span class="id" title="notation">↔</span></a> <a class="idref" href="mathcomp.algebra.matrix.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.matrix.html#v"><span class="id" title="variable">v</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="row_const"><span class="id" title="lemma">row_const</span></a> <span class="id" title="var">i0</span> <span class="id" title="var">a</span> : <a class="idref" href="mathcomp.algebra.matrix.html#row"><span class="id" title="definition">row</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#i0"><span class="id" title="variable">i0</span></a> (<a class="idref" href="mathcomp.algebra.matrix.html#const_mx"><span class="id" title="definition">const_mx</span></a> <a class="idref" href="mathcomp.algebra.matrix.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.matrix.html#const_mx"><span class="id" title="definition">const_mx</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#a"><span class="id" title="variable">a</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="col_const"><span class="id" title="lemma">col_const</span></a> <span class="id" title="var">j0</span> <span class="id" title="var">a</span> : <a class="idref" href="mathcomp.algebra.matrix.html#col"><span class="id" title="definition">col</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#j0"><span class="id" title="variable">j0</span></a> (<a class="idref" href="mathcomp.algebra.matrix.html#const_mx"><span class="id" title="definition">const_mx</span></a> <a class="idref" href="mathcomp.algebra.matrix.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.matrix.html#const_mx"><span class="id" title="definition">const_mx</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#a"><span class="id" title="variable">a</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="row'_const"><span class="id" title="lemma">row'_const</span></a> <span class="id" title="var">i0</span> <span class="id" title="var">a</span> : <a class="idref" href="mathcomp.algebra.matrix.html#row'"><span class="id" title="definition">row'</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#i0"><span class="id" title="variable">i0</span></a> (<a class="idref" href="mathcomp.algebra.matrix.html#const_mx"><span class="id" title="definition">const_mx</span></a> <a class="idref" href="mathcomp.algebra.matrix.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.matrix.html#const_mx"><span class="id" title="definition">const_mx</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#a"><span class="id" title="variable">a</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="col'_const"><span class="id" title="lemma">col'_const</span></a> <span class="id" title="var">j0</span> <span class="id" title="var">a</span> : <a class="idref" href="mathcomp.algebra.matrix.html#col'"><span class="id" title="definition">col'</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#j0"><span class="id" title="variable">j0</span></a> (<a class="idref" href="mathcomp.algebra.matrix.html#const_mx"><span class="id" title="definition">const_mx</span></a> <a class="idref" href="mathcomp.algebra.matrix.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.matrix.html#const_mx"><span class="id" title="definition">const_mx</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#a"><span class="id" title="variable">a</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="col_perm1"><span class="id" title="lemma">col_perm1</span></a> <span class="id" title="var">A</span> : <a class="idref" href="mathcomp.algebra.matrix.html#col_perm"><span class="id" title="definition">col_perm</span></a> 1 <a class="idref" href="mathcomp.algebra.matrix.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.matrix.html#A"><span class="id" title="variable">A</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="row_perm1"><span class="id" title="lemma">row_perm1</span></a> <span class="id" title="var">A</span> : <a class="idref" href="mathcomp.algebra.matrix.html#row_perm"><span class="id" title="definition">row_perm</span></a> 1 <a class="idref" href="mathcomp.algebra.matrix.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.matrix.html#A"><span class="id" title="variable">A</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="col_permM"><span class="id" title="lemma">col_permM</span></a> <span class="id" title="var">s</span> <span class="id" title="var">t</span> <span class="id" title="var">A</span> : <a class="idref" href="mathcomp.algebra.matrix.html#col_perm"><span class="id" title="definition">col_perm</span></a> (<a class="idref" href="mathcomp.algebra.matrix.html#s"><span class="id" title="variable">s</span></a> <a class="idref" href="mathcomp.fingroup.fingroup.html#169fb610eeaa28cebf8ec36928167473"><span class="id" title="notation">×</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#t"><span class="id" title="variable">t</span></a>) <a class="idref" href="mathcomp.algebra.matrix.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.matrix.html#col_perm"><span class="id" title="definition">col_perm</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#s"><span class="id" title="variable">s</span></a> (<a class="idref" href="mathcomp.algebra.matrix.html#col_perm"><span class="id" title="definition">col_perm</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#t"><span class="id" title="variable">t</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#A"><span class="id" title="variable">A</span></a>).<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="row_permM"><span class="id" title="lemma">row_permM</span></a> <span class="id" title="var">s</span> <span class="id" title="var">t</span> <span class="id" title="var">A</span> : <a class="idref" href="mathcomp.algebra.matrix.html#row_perm"><span class="id" title="definition">row_perm</span></a> (<a class="idref" href="mathcomp.algebra.matrix.html#s"><span class="id" title="variable">s</span></a> <a class="idref" href="mathcomp.fingroup.fingroup.html#169fb610eeaa28cebf8ec36928167473"><span class="id" title="notation">×</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#t"><span class="id" title="variable">t</span></a>) <a class="idref" href="mathcomp.algebra.matrix.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.matrix.html#row_perm"><span class="id" title="definition">row_perm</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#s"><span class="id" title="variable">s</span></a> (<a class="idref" href="mathcomp.algebra.matrix.html#row_perm"><span class="id" title="definition">row_perm</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#t"><span class="id" title="variable">t</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#A"><span class="id" title="variable">A</span></a>).<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="col_row_permC"><span class="id" title="lemma">col_row_permC</span></a> <span class="id" title="var">s</span> <span class="id" title="var">t</span> <span class="id" title="var">A</span> :<br/> + <a class="idref" href="mathcomp.algebra.matrix.html#col_perm"><span class="id" title="definition">col_perm</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#s"><span class="id" title="variable">s</span></a> (<a class="idref" href="mathcomp.algebra.matrix.html#row_perm"><span class="id" title="definition">row_perm</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#t"><span class="id" title="variable">t</span></a> <a class="idref" href="mathcomp.algebra.matrix.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.matrix.html#row_perm"><span class="id" title="definition">row_perm</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#t"><span class="id" title="variable">t</span></a> (<a class="idref" href="mathcomp.algebra.matrix.html#col_perm"><span class="id" title="definition">col_perm</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#s"><span class="id" title="variable">s</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#A"><span class="id" title="variable">A</span></a>).<br/> + +<br/> +<span class="id" title="keyword">End</span> <a class="idref" href="mathcomp.algebra.matrix.html#MatrixStructural.FixedDim"><span class="id" title="section">FixedDim</span></a>.<br/> + +<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="castmx_id"><span class="id" title="lemma">castmx_id</span></a> <span class="id" title="var">m</span> <span class="id" title="var">n</span> <span class="id" title="var">erefl_mn</span> (<span class="id" title="var">A</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.matrix.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.matrix.html#n"><span class="id" title="variable">n</span></a><a class="idref" href="mathcomp.algebra.matrix.html#cb37620352ad6b90a047a361359e2f04"><span class="id" title="notation">)</span></a>) : <a class="idref" href="mathcomp.algebra.matrix.html#castmx"><span class="id" title="definition">castmx</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#erefl_mn"><span class="id" title="variable">erefl_mn</span></a> <a class="idref" href="mathcomp.algebra.matrix.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.matrix.html#A"><span class="id" title="variable">A</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="castmx_comp"><span class="id" title="lemma">castmx_comp</span></a> <span class="id" title="var">m1</span> <span class="id" title="var">n1</span> <span class="id" title="var">m2</span> <span class="id" title="var">n2</span> <span class="id" title="var">m3</span> <span class="id" title="var">n3</span> (<span class="id" title="var">eq_m1</span> : <a class="idref" href="mathcomp.algebra.matrix.html#m1"><span class="id" title="variable">m1</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#m2"><span class="id" title="variable">m2</span></a>) (<span class="id" title="var">eq_n1</span> : <a class="idref" href="mathcomp.algebra.matrix.html#n1"><span class="id" title="variable">n1</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#n2"><span class="id" title="variable">n2</span></a>)<br/> + (<span class="id" title="var">eq_m2</span> : <a class="idref" href="mathcomp.algebra.matrix.html#m2"><span class="id" title="variable">m2</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#m3"><span class="id" title="variable">m3</span></a>) (<span class="id" title="var">eq_n2</span> : <a class="idref" href="mathcomp.algebra.matrix.html#n2"><span class="id" title="variable">n2</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#n3"><span class="id" title="variable">n3</span></a>) <span class="id" title="var">A</span> :<br/> + <a class="idref" href="mathcomp.algebra.matrix.html#castmx"><span class="id" title="definition">castmx</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#44400027531d4bc3f586a1997dc874c0"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.matrix.html#eq_m2"><span class="id" title="variable">eq_m2</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#44400027531d4bc3f586a1997dc874c0"><span class="id" title="notation">,</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#eq_n2"><span class="id" title="variable">eq_n2</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.matrix.html#castmx"><span class="id" title="definition">castmx</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.matrix.html#eq_m1"><span class="id" title="variable">eq_m1</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.matrix.html#eq_n1"><span class="id" title="variable">eq_n1</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.matrix.html#A"><span class="id" title="variable">A</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.matrix.html#castmx"><span class="id" title="definition">castmx</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#44400027531d4bc3f586a1997dc874c0"><span class="id" title="notation">(</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#etrans"><span class="id" title="definition">etrans</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#eq_m1"><span class="id" title="variable">eq_m1</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#eq_m2"><span class="id" title="variable">eq_m2</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#44400027531d4bc3f586a1997dc874c0"><span class="id" title="notation">,</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#etrans"><span class="id" title="definition">etrans</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#eq_n1"><span class="id" title="variable">eq_n1</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#eq_n2"><span class="id" title="variable">eq_n2</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.matrix.html#A"><span class="id" title="variable">A</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="castmxK"><span class="id" title="lemma">castmxK</span></a> <span class="id" title="var">m1</span> <span class="id" title="var">n1</span> <span class="id" title="var">m2</span> <span class="id" title="var">n2</span> (<span class="id" title="var">eq_m</span> : <a class="idref" href="mathcomp.algebra.matrix.html#m1"><span class="id" title="variable">m1</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#m2"><span class="id" title="variable">m2</span></a>) (<span class="id" title="var">eq_n</span> : <a class="idref" href="mathcomp.algebra.matrix.html#n1"><span class="id" title="variable">n1</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#n2"><span class="id" title="variable">n2</span></a>) :<br/> + <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.matrix.html#castmx"><span class="id" title="definition">castmx</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.matrix.html#eq_m"><span class="id" title="variable">eq_m</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.matrix.html#eq_n"><span class="id" title="variable">eq_n</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.matrix.html#castmx"><span class="id" title="definition">castmx</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#44400027531d4bc3f586a1997dc874c0"><span class="id" title="notation">(</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#esym"><span class="id" title="definition">esym</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#eq_m"><span class="id" title="variable">eq_m</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#44400027531d4bc3f586a1997dc874c0"><span class="id" title="notation">,</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#esym"><span class="id" title="definition">esym</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#eq_n"><span class="id" title="variable">eq_n</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">Lemma</span> <a name="castmxKV"><span class="id" title="lemma">castmxKV</span></a> <span class="id" title="var">m1</span> <span class="id" title="var">n1</span> <span class="id" title="var">m2</span> <span class="id" title="var">n2</span> (<span class="id" title="var">eq_m</span> : <a class="idref" href="mathcomp.algebra.matrix.html#m1"><span class="id" title="variable">m1</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#m2"><span class="id" title="variable">m2</span></a>) (<span class="id" title="var">eq_n</span> : <a class="idref" href="mathcomp.algebra.matrix.html#n1"><span class="id" title="variable">n1</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#n2"><span class="id" title="variable">n2</span></a>) :<br/> + <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.matrix.html#castmx"><span class="id" title="definition">castmx</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#44400027531d4bc3f586a1997dc874c0"><span class="id" title="notation">(</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#esym"><span class="id" title="definition">esym</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#eq_m"><span class="id" title="variable">eq_m</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#44400027531d4bc3f586a1997dc874c0"><span class="id" title="notation">,</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#esym"><span class="id" title="definition">esym</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#eq_n"><span class="id" title="variable">eq_n</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.matrix.html#castmx"><span class="id" title="definition">castmx</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.matrix.html#eq_m"><span class="id" title="variable">eq_m</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.matrix.html#eq_n"><span class="id" title="variable">eq_n</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#44400027531d4bc3f586a1997dc874c0"><span class="id" title="notation">)</span></a>).<br/> + +<br/> +</div> + +<div class="doc"> + This can be use to reverse an equation that involves a cast. +</div> +<div class="code"> +<span class="id" title="keyword">Lemma</span> <a name="castmx_sym"><span class="id" title="lemma">castmx_sym</span></a> <span class="id" title="var">m1</span> <span class="id" title="var">n1</span> <span class="id" title="var">m2</span> <span class="id" title="var">n2</span> (<span class="id" title="var">eq_m</span> : <a class="idref" href="mathcomp.algebra.matrix.html#m1"><span class="id" title="variable">m1</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#m2"><span class="id" title="variable">m2</span></a>) (<span class="id" title="var">eq_n</span> : <a class="idref" href="mathcomp.algebra.matrix.html#n1"><span class="id" title="variable">n1</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#n2"><span class="id" title="variable">n2</span></a>) <span class="id" title="var">A1</span> <span class="id" title="var">A2</span> :<br/> + <a class="idref" href="mathcomp.algebra.matrix.html#A1"><span class="id" title="variable">A1</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#castmx"><span class="id" title="definition">castmx</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#44400027531d4bc3f586a1997dc874c0"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.matrix.html#eq_m"><span class="id" title="variable">eq_m</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.matrix.html#eq_n"><span class="id" title="variable">eq_n</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.matrix.html#A2"><span class="id" title="variable">A2</span></a> <a class="idref" href="http://coq.inria.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#A2"><span class="id" title="variable">A2</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#castmx"><span class="id" title="definition">castmx</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#44400027531d4bc3f586a1997dc874c0"><span class="id" title="notation">(</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#esym"><span class="id" title="definition">esym</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#eq_m"><span class="id" title="variable">eq_m</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#44400027531d4bc3f586a1997dc874c0"><span class="id" title="notation">,</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#esym"><span class="id" title="definition">esym</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#eq_n"><span class="id" title="variable">eq_n</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.matrix.html#A1"><span class="id" title="variable">A1</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="castmxE"><span class="id" title="lemma">castmxE</span></a> <span class="id" title="var">m1</span> <span class="id" title="var">n1</span> <span class="id" title="var">m2</span> <span class="id" title="var">n2</span> (<span class="id" title="var">eq_mn</span> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#d19c7eafd0e2d195d10df94b392087b5"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.matrix.html#m1"><span class="id" title="variable">m1</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#m2"><span class="id" title="variable">m2</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#d19c7eafd0e2d195d10df94b392087b5"><span class="id" title="notation">)</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#d19c7eafd0e2d195d10df94b392087b5"><span class="id" title="notation">×</span></a> <a class="idref" href="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.matrix.html#n1"><span class="id" title="variable">n1</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#n2"><span class="id" title="variable">n2</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>) <span class="id" title="var">A</span> <span class="id" title="var">i</span> <span class="id" title="var">j</span> :<br/> + <a class="idref" href="mathcomp.algebra.matrix.html#castmx"><span class="id" title="definition">castmx</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#eq_mn"><span class="id" title="variable">eq_mn</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#A"><span class="id" title="variable">A</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#i"><span class="id" title="variable">i</span></a> <a class="idref" href="mathcomp.algebra.matrix.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.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a><br/> + <a class="idref" href="mathcomp.algebra.matrix.html#A"><span class="id" title="variable">A</span></a> (<a class="idref" href="mathcomp.ssreflect.fintype.html#cast_ord"><span class="id" title="definition">cast_ord</span></a> (<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#esym"><span class="id" title="definition">esym</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#eq_mn"><span class="id" title="variable">eq_mn</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#c4877bbfe60d8f22b47ac99ace86216a"><span class="id" title="notation">.1</span></a>) <a class="idref" href="mathcomp.algebra.matrix.html#i"><span class="id" title="variable">i</span></a>) (<a class="idref" href="mathcomp.ssreflect.fintype.html#cast_ord"><span class="id" title="definition">cast_ord</span></a> (<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#esym"><span class="id" title="definition">esym</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#eq_mn"><span class="id" title="variable">eq_mn</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#f4827404159513e7fd691b60b7877737"><span class="id" title="notation">.2</span></a>) <a class="idref" href="mathcomp.algebra.matrix.html#j"><span class="id" title="variable">j</span></a>).<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="conform_mx_id"><span class="id" title="lemma">conform_mx_id</span></a> <span class="id" title="var">m</span> <span class="id" title="var">n</span> (<span class="id" title="var">B</span> <span class="id" title="var">A</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.matrix.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.matrix.html#n"><span class="id" title="variable">n</span></a><a class="idref" href="mathcomp.algebra.matrix.html#cb37620352ad6b90a047a361359e2f04"><span class="id" title="notation">)</span></a>) : <a class="idref" href="mathcomp.algebra.matrix.html#conform_mx"><span class="id" title="definition">conform_mx</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#B"><span class="id" title="variable">B</span></a> <a class="idref" href="mathcomp.algebra.matrix.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.matrix.html#A"><span class="id" title="variable">A</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="nonconform_mx"><span class="id" title="lemma">nonconform_mx</span></a> <span class="id" title="var">m</span> <span class="id" title="var">m'</span> <span class="id" title="var">n</span> <span class="id" title="var">n'</span> (<span class="id" title="var">B</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.matrix.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.matrix.html#n'"><span class="id" title="variable">n'</span></a><a class="idref" href="mathcomp.algebra.matrix.html#cb37620352ad6b90a047a361359e2f04"><span class="id" title="notation">)</span></a>) (<span class="id" title="var">A</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.matrix.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.matrix.html#n"><span class="id" title="variable">n</span></a><a class="idref" href="mathcomp.algebra.matrix.html#cb37620352ad6b90a047a361359e2f04"><span class="id" title="notation">)</span></a>) :<br/> + <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#14a7a9c7dc61f86bfb664d400fabaf8a"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.matrix.html#m"><span class="id" title="variable">m</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#b1eeadc2feabc7422252baa895418c7b"><span class="id" title="notation">!=</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#m'"><span class="id" title="variable">m'</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#14a7a9c7dc61f86bfb664d400fabaf8a"><span class="id" title="notation">)</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#14a7a9c7dc61f86bfb664d400fabaf8a"><span class="id" title="notation">||</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#14a7a9c7dc61f86bfb664d400fabaf8a"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.matrix.html#n"><span class="id" title="variable">n</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#b1eeadc2feabc7422252baa895418c7b"><span class="id" title="notation">!=</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#n'"><span class="id" title="variable">n'</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#14a7a9c7dc61f86bfb664d400fabaf8a"><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.matrix.html#conform_mx"><span class="id" title="definition">conform_mx</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#B"><span class="id" title="variable">B</span></a> <a class="idref" href="mathcomp.algebra.matrix.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.matrix.html#B"><span class="id" title="variable">B</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="conform_castmx"><span class="id" title="lemma">conform_castmx</span></a> <span class="id" title="var">m1</span> <span class="id" title="var">n1</span> <span class="id" title="var">m2</span> <span class="id" title="var">n2</span> <span class="id" title="var">m3</span> <span class="id" title="var">n3</span><br/> + (<span class="id" title="var">e_mn</span> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#d19c7eafd0e2d195d10df94b392087b5"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.matrix.html#m2"><span class="id" title="variable">m2</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#m3"><span class="id" title="variable">m3</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="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#d19c7eafd0e2d195d10df94b392087b5"><span class="id" title="notation">×</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#d19c7eafd0e2d195d10df94b392087b5"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.matrix.html#n2"><span class="id" title="variable">n2</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#n3"><span class="id" title="variable">n3</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>) (<span class="id" title="var">B</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.matrix.html#m1"><span class="id" title="variable">m1</span></a><a class="idref" href="mathcomp.algebra.matrix.html#cb37620352ad6b90a047a361359e2f04"><span class="id" title="notation">,</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#n1"><span class="id" title="variable">n1</span></a><a class="idref" href="mathcomp.algebra.matrix.html#cb37620352ad6b90a047a361359e2f04"><span class="id" title="notation">)</span></a>) <span class="id" title="var">A</span> :<br/> + <a class="idref" href="mathcomp.algebra.matrix.html#conform_mx"><span class="id" title="definition">conform_mx</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#B"><span class="id" title="variable">B</span></a> (<a class="idref" href="mathcomp.algebra.matrix.html#castmx"><span class="id" title="definition">castmx</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#e_mn"><span class="id" title="variable">e_mn</span></a> <a class="idref" href="mathcomp.algebra.matrix.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.matrix.html#conform_mx"><span class="id" title="definition">conform_mx</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#B"><span class="id" title="variable">B</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#A"><span class="id" title="variable">A</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="trmxK"><span class="id" title="lemma">trmxK</span></a> <span class="id" title="var">m</span> <span class="id" title="var">n</span> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#cancel"><span class="id" title="definition">cancel</span></a> (@<a class="idref" href="mathcomp.algebra.matrix.html#trmx"><span class="id" title="definition">trmx</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#m"><span class="id" title="variable">m</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#n"><span class="id" title="variable">n</span></a>) (@<a class="idref" href="mathcomp.algebra.matrix.html#trmx"><span class="id" title="definition">trmx</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#n"><span class="id" title="variable">n</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#m"><span class="id" title="variable">m</span></a>).<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="trmx_inj"><span class="id" title="lemma">trmx_inj</span></a> <span class="id" title="var">m</span> <span class="id" title="var">n</span> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#injective"><span class="id" title="definition">injective</span></a> (@<a class="idref" href="mathcomp.algebra.matrix.html#trmx"><span class="id" title="definition">trmx</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#m"><span class="id" title="variable">m</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#n"><span class="id" title="variable">n</span></a>).<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="trmx_cast"><span class="id" title="lemma">trmx_cast</span></a> <span class="id" title="var">m1</span> <span class="id" title="var">n1</span> <span class="id" title="var">m2</span> <span class="id" title="var">n2</span> (<span class="id" title="var">eq_mn</span> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#d19c7eafd0e2d195d10df94b392087b5"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.matrix.html#m1"><span class="id" title="variable">m1</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#m2"><span class="id" title="variable">m2</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#d19c7eafd0e2d195d10df94b392087b5"><span class="id" title="notation">)</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#d19c7eafd0e2d195d10df94b392087b5"><span class="id" title="notation">×</span></a> <a class="idref" href="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.matrix.html#n1"><span class="id" title="variable">n1</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#n2"><span class="id" title="variable">n2</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>) <span class="id" title="var">A</span> :<br/> + <a class="idref" href="mathcomp.algebra.matrix.html#445ad0600a9fd3b438aa099d79ca3f3a"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.matrix.html#castmx"><span class="id" title="definition">castmx</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#eq_mn"><span class="id" title="variable">eq_mn</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#A"><span class="id" title="variable">A</span></a><a class="idref" href="mathcomp.algebra.matrix.html#445ad0600a9fd3b438aa099d79ca3f3a"><span class="id" title="notation">)^</span></a><a class="idref" href="mathcomp.algebra.matrix.html#445ad0600a9fd3b438aa099d79ca3f3a"><span class="id" title="notation">T</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#castmx"><span class="id" title="definition">castmx</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.matrix.html#eq_mn"><span class="id" title="variable">eq_mn</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#f4827404159513e7fd691b60b7877737"><span class="id" title="notation">.2</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#44400027531d4bc3f586a1997dc874c0"><span class="id" title="notation">,</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#eq_mn"><span class="id" title="variable">eq_mn</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#c4877bbfe60d8f22b47ac99ace86216a"><span class="id" title="notation">.1</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#44400027531d4bc3f586a1997dc874c0"><span class="id" title="notation">)</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#A"><span class="id" title="variable">A</span></a><a class="idref" href="mathcomp.algebra.matrix.html#445ad0600a9fd3b438aa099d79ca3f3a"><span class="id" title="notation">^</span></a><a class="idref" href="mathcomp.algebra.matrix.html#445ad0600a9fd3b438aa099d79ca3f3a"><span class="id" title="notation">T</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="tr_row_perm"><span class="id" title="lemma">tr_row_perm</span></a> <span class="id" title="var">m</span> <span class="id" title="var">n</span> <span class="id" title="var">s</span> (<span class="id" title="var">A</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.matrix.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.matrix.html#n"><span class="id" title="variable">n</span></a><a class="idref" href="mathcomp.algebra.matrix.html#cb37620352ad6b90a047a361359e2f04"><span class="id" title="notation">)</span></a>) : <a class="idref" href="mathcomp.algebra.matrix.html#445ad0600a9fd3b438aa099d79ca3f3a"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.matrix.html#row_perm"><span class="id" title="definition">row_perm</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#s"><span class="id" title="variable">s</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#A"><span class="id" title="variable">A</span></a><a class="idref" href="mathcomp.algebra.matrix.html#445ad0600a9fd3b438aa099d79ca3f3a"><span class="id" title="notation">)^</span></a><a class="idref" href="mathcomp.algebra.matrix.html#445ad0600a9fd3b438aa099d79ca3f3a"><span class="id" title="notation">T</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#col_perm"><span class="id" title="definition">col_perm</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#s"><span class="id" title="variable">s</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#A"><span class="id" title="variable">A</span></a><a class="idref" href="mathcomp.algebra.matrix.html#445ad0600a9fd3b438aa099d79ca3f3a"><span class="id" title="notation">^</span></a><a class="idref" href="mathcomp.algebra.matrix.html#445ad0600a9fd3b438aa099d79ca3f3a"><span class="id" title="notation">T</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="tr_col_perm"><span class="id" title="lemma">tr_col_perm</span></a> <span class="id" title="var">m</span> <span class="id" title="var">n</span> <span class="id" title="var">s</span> (<span class="id" title="var">A</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.matrix.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.matrix.html#n"><span class="id" title="variable">n</span></a><a class="idref" href="mathcomp.algebra.matrix.html#cb37620352ad6b90a047a361359e2f04"><span class="id" title="notation">)</span></a>) : <a class="idref" href="mathcomp.algebra.matrix.html#445ad0600a9fd3b438aa099d79ca3f3a"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.matrix.html#col_perm"><span class="id" title="definition">col_perm</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#s"><span class="id" title="variable">s</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#A"><span class="id" title="variable">A</span></a><a class="idref" href="mathcomp.algebra.matrix.html#445ad0600a9fd3b438aa099d79ca3f3a"><span class="id" title="notation">)^</span></a><a class="idref" href="mathcomp.algebra.matrix.html#445ad0600a9fd3b438aa099d79ca3f3a"><span class="id" title="notation">T</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#row_perm"><span class="id" title="definition">row_perm</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#s"><span class="id" title="variable">s</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#A"><span class="id" title="variable">A</span></a><a class="idref" href="mathcomp.algebra.matrix.html#445ad0600a9fd3b438aa099d79ca3f3a"><span class="id" title="notation">^</span></a><a class="idref" href="mathcomp.algebra.matrix.html#445ad0600a9fd3b438aa099d79ca3f3a"><span class="id" title="notation">T</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="tr_xrow"><span class="id" title="lemma">tr_xrow</span></a> <span class="id" title="var">m</span> <span class="id" title="var">n</span> <span class="id" title="var">i1</span> <span class="id" title="var">i2</span> (<span class="id" title="var">A</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.matrix.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.matrix.html#n"><span class="id" title="variable">n</span></a><a class="idref" href="mathcomp.algebra.matrix.html#cb37620352ad6b90a047a361359e2f04"><span class="id" title="notation">)</span></a>) : <a class="idref" href="mathcomp.algebra.matrix.html#445ad0600a9fd3b438aa099d79ca3f3a"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.matrix.html#xrow"><span class="id" title="definition">xrow</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#i1"><span class="id" title="variable">i1</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#i2"><span class="id" title="variable">i2</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#A"><span class="id" title="variable">A</span></a><a class="idref" href="mathcomp.algebra.matrix.html#445ad0600a9fd3b438aa099d79ca3f3a"><span class="id" title="notation">)^</span></a><a class="idref" href="mathcomp.algebra.matrix.html#445ad0600a9fd3b438aa099d79ca3f3a"><span class="id" title="notation">T</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#xcol"><span class="id" title="definition">xcol</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#i1"><span class="id" title="variable">i1</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#i2"><span class="id" title="variable">i2</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#A"><span class="id" title="variable">A</span></a><a class="idref" href="mathcomp.algebra.matrix.html#445ad0600a9fd3b438aa099d79ca3f3a"><span class="id" title="notation">^</span></a><a class="idref" href="mathcomp.algebra.matrix.html#445ad0600a9fd3b438aa099d79ca3f3a"><span class="id" title="notation">T</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="tr_xcol"><span class="id" title="lemma">tr_xcol</span></a> <span class="id" title="var">m</span> <span class="id" title="var">n</span> <span class="id" title="var">j1</span> <span class="id" title="var">j2</span> (<span class="id" title="var">A</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.matrix.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.matrix.html#n"><span class="id" title="variable">n</span></a><a class="idref" href="mathcomp.algebra.matrix.html#cb37620352ad6b90a047a361359e2f04"><span class="id" title="notation">)</span></a>) : <a class="idref" href="mathcomp.algebra.matrix.html#445ad0600a9fd3b438aa099d79ca3f3a"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.matrix.html#xcol"><span class="id" title="definition">xcol</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#j1"><span class="id" title="variable">j1</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#j2"><span class="id" title="variable">j2</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#A"><span class="id" title="variable">A</span></a><a class="idref" href="mathcomp.algebra.matrix.html#445ad0600a9fd3b438aa099d79ca3f3a"><span class="id" title="notation">)^</span></a><a class="idref" href="mathcomp.algebra.matrix.html#445ad0600a9fd3b438aa099d79ca3f3a"><span class="id" title="notation">T</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#xrow"><span class="id" title="definition">xrow</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#j1"><span class="id" title="variable">j1</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#j2"><span class="id" title="variable">j2</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#A"><span class="id" title="variable">A</span></a><a class="idref" href="mathcomp.algebra.matrix.html#445ad0600a9fd3b438aa099d79ca3f3a"><span class="id" title="notation">^</span></a><a class="idref" href="mathcomp.algebra.matrix.html#445ad0600a9fd3b438aa099d79ca3f3a"><span class="id" title="notation">T</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="row_id"><span class="id" title="lemma">row_id</span></a> <span class="id" title="var">n</span> <span class="id" title="var">i</span> (<span class="id" title="var">V</span> : <a class="idref" href="mathcomp.algebra.matrix.html#2bf09b7202225c789149165667752fab"><span class="id" title="notation">'</span></a><a class="idref" href="mathcomp.algebra.matrix.html#2bf09b7202225c789149165667752fab"><span class="id" title="notation">rV_n</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.matrix.html#i"><span class="id" title="variable">i</span></a> <a class="idref" href="mathcomp.algebra.matrix.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.matrix.html#V"><span class="id" title="variable">V</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="col_id"><span class="id" title="lemma">col_id</span></a> <span class="id" title="var">n</span> <span class="id" title="var">j</span> (<span class="id" title="var">V</span> : <a class="idref" href="mathcomp.algebra.matrix.html#5f5872e5909fc2bcc100d805155aa23e"><span class="id" title="notation">'</span></a><a class="idref" href="mathcomp.algebra.matrix.html#5f5872e5909fc2bcc100d805155aa23e"><span class="id" title="notation">cV_n</span></a>) : <a class="idref" href="mathcomp.algebra.matrix.html#col"><span class="id" title="definition">col</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#j"><span class="id" title="variable">j</span></a> <a class="idref" href="mathcomp.algebra.matrix.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.matrix.html#V"><span class="id" title="variable">V</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="row_eq"><span class="id" title="lemma">row_eq</span></a> <span class="id" title="var">m1</span> <span class="id" title="var">m2</span> <span class="id" title="var">n</span> <span class="id" title="var">i1</span> <span class="id" title="var">i2</span> (<span class="id" title="var">A1</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.matrix.html#m1"><span class="id" title="variable">m1</span></a><a class="idref" href="mathcomp.algebra.matrix.html#cb37620352ad6b90a047a361359e2f04"><span class="id" title="notation">,</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#n"><span class="id" title="variable">n</span></a><a class="idref" href="mathcomp.algebra.matrix.html#cb37620352ad6b90a047a361359e2f04"><span class="id" title="notation">)</span></a>) (<span class="id" title="var">A2</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.matrix.html#m2"><span class="id" title="variable">m2</span></a><a class="idref" href="mathcomp.algebra.matrix.html#cb37620352ad6b90a047a361359e2f04"><span class="id" title="notation">,</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#n"><span class="id" title="variable">n</span></a><a class="idref" href="mathcomp.algebra.matrix.html#cb37620352ad6b90a047a361359e2f04"><span class="id" title="notation">)</span></a>) :<br/> + <a class="idref" href="mathcomp.algebra.matrix.html#row"><span class="id" title="definition">row</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#i1"><span class="id" title="variable">i1</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#A1"><span class="id" title="variable">A1</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</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.matrix.html#i2"><span class="id" title="variable">i2</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#A2"><span class="id" title="variable">A2</span></a> <a class="idref" href="http://coq.inria.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#A1"><span class="id" title="variable">A1</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#i1"><span class="id" title="variable">i1</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.matrix.html#A2"><span class="id" title="variable">A2</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#i2"><span class="id" title="variable">i2</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="col_eq"><span class="id" title="lemma">col_eq</span></a> <span class="id" title="var">m</span> <span class="id" title="var">n1</span> <span class="id" title="var">n2</span> <span class="id" title="var">j1</span> <span class="id" title="var">j2</span> (<span class="id" title="var">A1</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.matrix.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.matrix.html#n1"><span class="id" title="variable">n1</span></a><a class="idref" href="mathcomp.algebra.matrix.html#cb37620352ad6b90a047a361359e2f04"><span class="id" title="notation">)</span></a>) (<span class="id" title="var">A2</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.matrix.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.matrix.html#n2"><span class="id" title="variable">n2</span></a><a class="idref" href="mathcomp.algebra.matrix.html#cb37620352ad6b90a047a361359e2f04"><span class="id" title="notation">)</span></a>) :<br/> + <a class="idref" href="mathcomp.algebra.matrix.html#col"><span class="id" title="definition">col</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#j1"><span class="id" title="variable">j1</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#A1"><span class="id" title="variable">A1</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#col"><span class="id" title="definition">col</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#j2"><span class="id" title="variable">j2</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#A2"><span class="id" title="variable">A2</span></a> <a class="idref" href="http://coq.inria.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#A1"><span class="id" title="variable">A1</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.matrix.html#j1"><span class="id" title="variable">j1</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.matrix.html#A2"><span class="id" title="variable">A2</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.matrix.html#j2"><span class="id" title="variable">j2</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="row'_eq"><span class="id" title="lemma">row'_eq</span></a> <span class="id" title="var">m</span> <span class="id" title="var">n</span> <span class="id" title="var">i0</span> (<span class="id" title="var">A</span> <span class="id" title="var">B</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.matrix.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.matrix.html#n"><span class="id" title="variable">n</span></a><a class="idref" href="mathcomp.algebra.matrix.html#cb37620352ad6b90a047a361359e2f04"><span class="id" title="notation">)</span></a>) :<br/> + <a class="idref" href="mathcomp.algebra.matrix.html#row'"><span class="id" title="definition">row'</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#i0"><span class="id" title="variable">i0</span></a> <a class="idref" href="mathcomp.algebra.matrix.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.matrix.html#row'"><span class="id" title="definition">row'</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#i0"><span class="id" title="variable">i0</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#B"><span class="id" title="variable">B</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.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.ssreflect.eqtype.html#predC1"><span class="id" title="definition">predC1</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#i0"><span class="id" title="variable">i0</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.matrix.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.ssrfun.html#86efabaf3ab961ac3d2bac35d2b3c35d"><span class="id" title="notation">=2</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#B"><span class="id" title="variable">B</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#5c59b35a0b51db520cf1fba473ecf127"><span class="id" title="notation">}</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="col'_eq"><span class="id" title="lemma">col'_eq</span></a> <span class="id" title="var">m</span> <span class="id" title="var">n</span> <span class="id" title="var">j0</span> (<span class="id" title="var">A</span> <span class="id" title="var">B</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.matrix.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.matrix.html#n"><span class="id" title="variable">n</span></a><a class="idref" href="mathcomp.algebra.matrix.html#cb37620352ad6b90a047a361359e2f04"><span class="id" title="notation">)</span></a>) :<br/> + <a class="idref" href="mathcomp.algebra.matrix.html#col'"><span class="id" title="definition">col'</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#j0"><span class="id" title="variable">j0</span></a> <a class="idref" href="mathcomp.algebra.matrix.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.matrix.html#col'"><span class="id" title="definition">col'</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#j0"><span class="id" title="variable">j0</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#B"><span class="id" title="variable">B</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <span class="id" title="keyword">∀</span> <span class="id" title="var">i</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.ssreflect.eqtype.html#predC1"><span class="id" title="definition">predC1</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#j0"><span class="id" title="variable">j0</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.matrix.html#A"><span class="id" title="variable">A</span></a> <a class="idref" href="mathcomp.algebra.matrix.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.ssrfun.html#2500d48ed8e862ccfda98a44dff88963"><span class="id" title="notation">=1</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#B"><span class="id" title="variable">B</span></a> <a class="idref" href="mathcomp.algebra.matrix.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#5c59b35a0b51db520cf1fba473ecf127"><span class="id" title="notation">}</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="tr_row"><span class="id" title="lemma">tr_row</span></a> <span class="id" title="var">m</span> <span class="id" title="var">n</span> <span class="id" title="var">i0</span> (<span class="id" title="var">A</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.matrix.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.matrix.html#n"><span class="id" title="variable">n</span></a><a class="idref" href="mathcomp.algebra.matrix.html#cb37620352ad6b90a047a361359e2f04"><span class="id" title="notation">)</span></a>) : <a class="idref" href="mathcomp.algebra.matrix.html#445ad0600a9fd3b438aa099d79ca3f3a"><span class="id" title="notation">(</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.matrix.html#i0"><span class="id" title="variable">i0</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#A"><span class="id" title="variable">A</span></a><a class="idref" href="mathcomp.algebra.matrix.html#445ad0600a9fd3b438aa099d79ca3f3a"><span class="id" title="notation">)^</span></a><a class="idref" href="mathcomp.algebra.matrix.html#445ad0600a9fd3b438aa099d79ca3f3a"><span class="id" title="notation">T</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#col"><span class="id" title="definition">col</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#i0"><span class="id" title="variable">i0</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#A"><span class="id" title="variable">A</span></a><a class="idref" href="mathcomp.algebra.matrix.html#445ad0600a9fd3b438aa099d79ca3f3a"><span class="id" title="notation">^</span></a><a class="idref" href="mathcomp.algebra.matrix.html#445ad0600a9fd3b438aa099d79ca3f3a"><span class="id" title="notation">T</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="tr_row'"><span class="id" title="lemma">tr_row'</span></a> <span class="id" title="var">m</span> <span class="id" title="var">n</span> <span class="id" title="var">i0</span> (<span class="id" title="var">A</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.matrix.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.matrix.html#n"><span class="id" title="variable">n</span></a><a class="idref" href="mathcomp.algebra.matrix.html#cb37620352ad6b90a047a361359e2f04"><span class="id" title="notation">)</span></a>) : <a class="idref" href="mathcomp.algebra.matrix.html#445ad0600a9fd3b438aa099d79ca3f3a"><span class="id" title="notation">(</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.matrix.html#i0"><span class="id" title="variable">i0</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#A"><span class="id" title="variable">A</span></a><a class="idref" href="mathcomp.algebra.matrix.html#445ad0600a9fd3b438aa099d79ca3f3a"><span class="id" title="notation">)^</span></a><a class="idref" href="mathcomp.algebra.matrix.html#445ad0600a9fd3b438aa099d79ca3f3a"><span class="id" title="notation">T</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#col'"><span class="id" title="definition">col'</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#i0"><span class="id" title="variable">i0</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#A"><span class="id" title="variable">A</span></a><a class="idref" href="mathcomp.algebra.matrix.html#445ad0600a9fd3b438aa099d79ca3f3a"><span class="id" title="notation">^</span></a><a class="idref" href="mathcomp.algebra.matrix.html#445ad0600a9fd3b438aa099d79ca3f3a"><span class="id" title="notation">T</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="tr_col"><span class="id" title="lemma">tr_col</span></a> <span class="id" title="var">m</span> <span class="id" title="var">n</span> <span class="id" title="var">j0</span> (<span class="id" title="var">A</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.matrix.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.matrix.html#n"><span class="id" title="variable">n</span></a><a class="idref" href="mathcomp.algebra.matrix.html#cb37620352ad6b90a047a361359e2f04"><span class="id" title="notation">)</span></a>) : <a class="idref" href="mathcomp.algebra.matrix.html#445ad0600a9fd3b438aa099d79ca3f3a"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.matrix.html#col"><span class="id" title="definition">col</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#j0"><span class="id" title="variable">j0</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#A"><span class="id" title="variable">A</span></a><a class="idref" href="mathcomp.algebra.matrix.html#445ad0600a9fd3b438aa099d79ca3f3a"><span class="id" title="notation">)^</span></a><a class="idref" href="mathcomp.algebra.matrix.html#445ad0600a9fd3b438aa099d79ca3f3a"><span class="id" title="notation">T</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#row"><span class="id" title="definition">row</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#j0"><span class="id" title="variable">j0</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#A"><span class="id" title="variable">A</span></a><a class="idref" href="mathcomp.algebra.matrix.html#445ad0600a9fd3b438aa099d79ca3f3a"><span class="id" title="notation">^</span></a><a class="idref" href="mathcomp.algebra.matrix.html#445ad0600a9fd3b438aa099d79ca3f3a"><span class="id" title="notation">T</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="tr_col'"><span class="id" title="lemma">tr_col'</span></a> <span class="id" title="var">m</span> <span class="id" title="var">n</span> <span class="id" title="var">j0</span> (<span class="id" title="var">A</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.matrix.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.matrix.html#n"><span class="id" title="variable">n</span></a><a class="idref" href="mathcomp.algebra.matrix.html#cb37620352ad6b90a047a361359e2f04"><span class="id" title="notation">)</span></a>) : <a class="idref" href="mathcomp.algebra.matrix.html#445ad0600a9fd3b438aa099d79ca3f3a"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.matrix.html#col'"><span class="id" title="definition">col'</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#j0"><span class="id" title="variable">j0</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#A"><span class="id" title="variable">A</span></a><a class="idref" href="mathcomp.algebra.matrix.html#445ad0600a9fd3b438aa099d79ca3f3a"><span class="id" title="notation">)^</span></a><a class="idref" href="mathcomp.algebra.matrix.html#445ad0600a9fd3b438aa099d79ca3f3a"><span class="id" title="notation">T</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#row'"><span class="id" title="definition">row'</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#j0"><span class="id" title="variable">j0</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#A"><span class="id" title="variable">A</span></a><a class="idref" href="mathcomp.algebra.matrix.html#445ad0600a9fd3b438aa099d79ca3f3a"><span class="id" title="notation">^</span></a><a class="idref" href="mathcomp.algebra.matrix.html#445ad0600a9fd3b438aa099d79ca3f3a"><span class="id" title="notation">T</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Ltac</span> <span class="id" title="var">split_mxE</span> := <span class="id" title="tactic">apply</span>/<a class="idref" href="mathcomp.algebra.matrix.html#matrixP"><span class="id" title="lemma">matrixP</span></a>⇒ <span class="id" title="var">i</span> <span class="id" title="var">j</span>; <span class="id" title="tactic">do</span> ![<span class="id" title="tactic">rewrite</span> <a class="idref" href="mathcomp.algebra.matrix.html#mxE"><span class="id" title="lemma">mxE</span></a> | <span class="id" title="tactic">case</span>: <a class="idref" href="mathcomp.ssreflect.fintype.html#split"><span class="id" title="definition">split</span></a> ⇒ ?].<br/> + +<br/> +<span class="id" title="keyword">Section</span> <a name="MatrixStructural.CutPaste"><span class="id" title="section">CutPaste</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Variables</span> <a name="MatrixStructural.CutPaste.m"><span class="id" title="variable">m</span></a> <a name="MatrixStructural.CutPaste.m1"><span class="id" title="variable">m1</span></a> <a name="MatrixStructural.CutPaste.m2"><span class="id" title="variable">m2</span></a> <a name="MatrixStructural.CutPaste.n"><span class="id" title="variable">n</span></a> <a name="MatrixStructural.CutPaste.n1"><span class="id" title="variable">n1</span></a> <a name="MatrixStructural.CutPaste.n2"><span class="id" title="variable">n2</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"> + Concatenating two matrices, in either direction. +</div> +<div class="code"> + +<br/> +<span class="id" title="keyword">Fact</span> <a name="row_mx_key"><span class="id" title="lemma">row_mx_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="row_mx"><span class="id" title="definition">row_mx</span></a> (<span class="id" title="var">A1</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.matrix.html#MatrixStructural.CutPaste.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.matrix.html#MatrixStructural.CutPaste.n1"><span class="id" title="variable">n1</span></a><a class="idref" href="mathcomp.algebra.matrix.html#cb37620352ad6b90a047a361359e2f04"><span class="id" title="notation">)</span></a>) (<span class="id" title="var">A2</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.matrix.html#MatrixStructural.CutPaste.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.matrix.html#MatrixStructural.CutPaste.n2"><span class="id" title="variable">n2</span></a><a class="idref" href="mathcomp.algebra.matrix.html#cb37620352ad6b90a047a361359e2f04"><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">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.matrix.html#MatrixStructural.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.matrix.html#MatrixStructural.CutPaste.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.matrix.html#MatrixStructural.CutPaste.n1"><span class="id" title="variable">n1</span></a> <a class="idref" href="mathcomp.ssreflect.ssrnat.html#b3eea360671e1b32b18a26e15b3aace3"><span class="id" title="notation">+</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#MatrixStructural.CutPaste.n2"><span class="id" title="variable">n2</span></a><a class="idref" href="mathcomp.algebra.matrix.html#e36c289fb249221b43b9c978a67340fb"><span class="id" title="notation">)</span></a> :=<br/> + <a class="idref" href="mathcomp.algebra.matrix.html#667138260bfba6c8c1be5dda11faf290"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.algebra.matrix.html#667138260bfba6c8c1be5dda11faf290"><span class="id" title="notation">matrix</span></a><a class="idref" href="mathcomp.algebra.matrix.html#667138260bfba6c8c1be5dda11faf290"><span class="id" title="notation">[</span></a><a class="idref" href="mathcomp.algebra.matrix.html#row_mx_key"><span class="id" title="lemma">row_mx_key</span></a><a class="idref" href="mathcomp.algebra.matrix.html#667138260bfba6c8c1be5dda11faf290"><span class="id" title="notation">]</span></a><a class="idref" href="mathcomp.algebra.matrix.html#667138260bfba6c8c1be5dda11faf290"><span class="id" title="notation">_</span></a><a class="idref" href="mathcomp.algebra.matrix.html#667138260bfba6c8c1be5dda11faf290"><span class="id" title="notation">(</span></a><span class="id" title="var">i</span><a class="idref" href="mathcomp.algebra.matrix.html#667138260bfba6c8c1be5dda11faf290"><span class="id" title="notation">,</span></a> <span class="id" title="var">j</span><a class="idref" href="mathcomp.algebra.matrix.html#667138260bfba6c8c1be5dda11faf290"><span class="id" title="notation">)</span></a><br/> + <span class="id" title="keyword">match</span> <a class="idref" href="mathcomp.ssreflect.fintype.html#split"><span class="id" title="definition">split</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#j"><span class="id" title="variable">j</span></a> <span class="id" title="keyword">with</span> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#inl"><span class="id" title="constructor">inl</span></a> <span class="id" title="var">j1</span> ⇒ <a class="idref" href="mathcomp.algebra.matrix.html#A1"><span class="id" title="variable">A1</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#i"><span class="id" title="variable">i</span></a> <span class="id" title="var">j1</span> | <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#inr"><span class="id" title="constructor">inr</span></a> <span class="id" title="var">j2</span> ⇒ <a class="idref" href="mathcomp.algebra.matrix.html#A2"><span class="id" title="variable">A2</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#i"><span class="id" title="variable">i</span></a> <span class="id" title="var">j2</span> <span class="id" title="keyword">end</span>.<br/> + +<br/> +<span class="id" title="keyword">Fact</span> <a name="col_mx_key"><span class="id" title="lemma">col_mx_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="col_mx"><span class="id" title="definition">col_mx</span></a> (<span class="id" title="var">A1</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.matrix.html#MatrixStructural.CutPaste.m1"><span class="id" title="variable">m1</span></a><a class="idref" href="mathcomp.algebra.matrix.html#cb37620352ad6b90a047a361359e2f04"><span class="id" title="notation">,</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#MatrixStructural.CutPaste.n"><span class="id" title="variable">n</span></a><a class="idref" href="mathcomp.algebra.matrix.html#cb37620352ad6b90a047a361359e2f04"><span class="id" title="notation">)</span></a>) (<span class="id" title="var">A2</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.matrix.html#MatrixStructural.CutPaste.m2"><span class="id" title="variable">m2</span></a><a class="idref" href="mathcomp.algebra.matrix.html#cb37620352ad6b90a047a361359e2f04"><span class="id" title="notation">,</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#MatrixStructural.CutPaste.n"><span class="id" title="variable">n</span></a><a class="idref" href="mathcomp.algebra.matrix.html#cb37620352ad6b90a047a361359e2f04"><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">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.matrix.html#MatrixStructural.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.matrix.html#MatrixStructural.CutPaste.m1"><span class="id" title="variable">m1</span></a> <a class="idref" href="mathcomp.ssreflect.ssrnat.html#b3eea360671e1b32b18a26e15b3aace3"><span class="id" title="notation">+</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#MatrixStructural.CutPaste.m2"><span class="id" title="variable">m2</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#MatrixStructural.CutPaste.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/> + <a class="idref" href="mathcomp.algebra.matrix.html#667138260bfba6c8c1be5dda11faf290"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.algebra.matrix.html#667138260bfba6c8c1be5dda11faf290"><span class="id" title="notation">matrix</span></a><a class="idref" href="mathcomp.algebra.matrix.html#667138260bfba6c8c1be5dda11faf290"><span class="id" title="notation">[</span></a><a class="idref" href="mathcomp.algebra.matrix.html#col_mx_key"><span class="id" title="lemma">col_mx_key</span></a><a class="idref" href="mathcomp.algebra.matrix.html#667138260bfba6c8c1be5dda11faf290"><span class="id" title="notation">]</span></a><a class="idref" href="mathcomp.algebra.matrix.html#667138260bfba6c8c1be5dda11faf290"><span class="id" title="notation">_</span></a><a class="idref" href="mathcomp.algebra.matrix.html#667138260bfba6c8c1be5dda11faf290"><span class="id" title="notation">(</span></a><span class="id" title="var">i</span><a class="idref" href="mathcomp.algebra.matrix.html#667138260bfba6c8c1be5dda11faf290"><span class="id" title="notation">,</span></a> <span class="id" title="var">j</span><a class="idref" href="mathcomp.algebra.matrix.html#667138260bfba6c8c1be5dda11faf290"><span class="id" title="notation">)</span></a><br/> + <span class="id" title="keyword">match</span> <a class="idref" href="mathcomp.ssreflect.fintype.html#split"><span class="id" title="definition">split</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#i"><span class="id" title="variable">i</span></a> <span class="id" title="keyword">with</span> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#inl"><span class="id" title="constructor">inl</span></a> <span class="id" title="var">i1</span> ⇒ <a class="idref" href="mathcomp.algebra.matrix.html#A1"><span class="id" title="variable">A1</span></a> <span class="id" title="var">i1</span> <a class="idref" href="mathcomp.algebra.matrix.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#inr"><span class="id" title="constructor">inr</span></a> <span class="id" title="var">i2</span> ⇒ <a class="idref" href="mathcomp.algebra.matrix.html#A2"><span class="id" title="variable">A2</span></a> <span class="id" title="var">i2</span> <a class="idref" href="mathcomp.algebra.matrix.html#j"><span class="id" title="variable">j</span></a> <span class="id" title="keyword">end</span>.<br/> + +<br/> +</div> + +<div class="doc"> + Left/Right | Up/Down submatrices of a rows | columns matrix. + The shape of the (dependent) width parameters of the type of A + determines which submatrix is selected. +</div> +<div class="code"> + +<br/> +<span class="id" title="keyword">Fact</span> <a name="lsubmx_key"><span class="id" title="lemma">lsubmx_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="lsubmx"><span class="id" title="definition">lsubmx</span></a> (<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.matrix.html#MatrixStructural.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.matrix.html#MatrixStructural.CutPaste.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.matrix.html#MatrixStructural.CutPaste.n1"><span class="id" title="variable">n1</span></a> <a class="idref" href="mathcomp.ssreflect.ssrnat.html#b3eea360671e1b32b18a26e15b3aace3"><span class="id" title="notation">+</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#MatrixStructural.CutPaste.n2"><span class="id" title="variable">n2</span></a><a class="idref" href="mathcomp.algebra.matrix.html#e36c289fb249221b43b9c978a67340fb"><span class="id" title="notation">)</span></a>) :=<br/> + <a class="idref" href="mathcomp.algebra.matrix.html#667138260bfba6c8c1be5dda11faf290"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.algebra.matrix.html#667138260bfba6c8c1be5dda11faf290"><span class="id" title="notation">matrix</span></a><a class="idref" href="mathcomp.algebra.matrix.html#667138260bfba6c8c1be5dda11faf290"><span class="id" title="notation">[</span></a><a class="idref" href="mathcomp.algebra.matrix.html#lsubmx_key"><span class="id" title="lemma">lsubmx_key</span></a><a class="idref" href="mathcomp.algebra.matrix.html#667138260bfba6c8c1be5dda11faf290"><span class="id" title="notation">]</span></a><a class="idref" href="mathcomp.algebra.matrix.html#667138260bfba6c8c1be5dda11faf290"><span class="id" title="notation">_</span></a><a class="idref" href="mathcomp.algebra.matrix.html#667138260bfba6c8c1be5dda11faf290"><span class="id" title="notation">(</span></a><span class="id" title="var">i</span><a class="idref" href="mathcomp.algebra.matrix.html#667138260bfba6c8c1be5dda11faf290"><span class="id" title="notation">,</span></a> <span class="id" title="var">j</span><a class="idref" href="mathcomp.algebra.matrix.html#667138260bfba6c8c1be5dda11faf290"><span class="id" title="notation">)</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#A"><span class="id" title="variable">A</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#i"><span class="id" title="variable">i</span></a> (<a class="idref" href="mathcomp.ssreflect.fintype.html#lshift"><span class="id" title="definition">lshift</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#MatrixStructural.CutPaste.n2"><span class="id" title="variable">n2</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#j"><span class="id" title="variable">j</span></a>).<br/> + +<br/> +<span class="id" title="keyword">Fact</span> <a name="rsubmx_key"><span class="id" title="lemma">rsubmx_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="rsubmx"><span class="id" title="definition">rsubmx</span></a> (<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.matrix.html#MatrixStructural.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.matrix.html#MatrixStructural.CutPaste.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.matrix.html#MatrixStructural.CutPaste.n1"><span class="id" title="variable">n1</span></a> <a class="idref" href="mathcomp.ssreflect.ssrnat.html#b3eea360671e1b32b18a26e15b3aace3"><span class="id" title="notation">+</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#MatrixStructural.CutPaste.n2"><span class="id" title="variable">n2</span></a><a class="idref" href="mathcomp.algebra.matrix.html#e36c289fb249221b43b9c978a67340fb"><span class="id" title="notation">)</span></a>) :=<br/> + <a class="idref" href="mathcomp.algebra.matrix.html#667138260bfba6c8c1be5dda11faf290"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.algebra.matrix.html#667138260bfba6c8c1be5dda11faf290"><span class="id" title="notation">matrix</span></a><a class="idref" href="mathcomp.algebra.matrix.html#667138260bfba6c8c1be5dda11faf290"><span class="id" title="notation">[</span></a><a class="idref" href="mathcomp.algebra.matrix.html#rsubmx_key"><span class="id" title="lemma">rsubmx_key</span></a><a class="idref" href="mathcomp.algebra.matrix.html#667138260bfba6c8c1be5dda11faf290"><span class="id" title="notation">]</span></a><a class="idref" href="mathcomp.algebra.matrix.html#667138260bfba6c8c1be5dda11faf290"><span class="id" title="notation">_</span></a><a class="idref" href="mathcomp.algebra.matrix.html#667138260bfba6c8c1be5dda11faf290"><span class="id" title="notation">(</span></a><span class="id" title="var">i</span><a class="idref" href="mathcomp.algebra.matrix.html#667138260bfba6c8c1be5dda11faf290"><span class="id" title="notation">,</span></a> <span class="id" title="var">j</span><a class="idref" href="mathcomp.algebra.matrix.html#667138260bfba6c8c1be5dda11faf290"><span class="id" title="notation">)</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#A"><span class="id" title="variable">A</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#i"><span class="id" title="variable">i</span></a> (<a class="idref" href="mathcomp.ssreflect.fintype.html#rshift"><span class="id" title="definition">rshift</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#MatrixStructural.CutPaste.n1"><span class="id" title="variable">n1</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#j"><span class="id" title="variable">j</span></a>).<br/> + +<br/> +<span class="id" title="keyword">Fact</span> <a name="usubmx_key"><span class="id" title="lemma">usubmx_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="usubmx"><span class="id" title="definition">usubmx</span></a> (<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.matrix.html#MatrixStructural.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.matrix.html#MatrixStructural.CutPaste.m1"><span class="id" title="variable">m1</span></a> <a class="idref" href="mathcomp.ssreflect.ssrnat.html#b3eea360671e1b32b18a26e15b3aace3"><span class="id" title="notation">+</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#MatrixStructural.CutPaste.m2"><span class="id" title="variable">m2</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#MatrixStructural.CutPaste.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/> + <a class="idref" href="mathcomp.algebra.matrix.html#667138260bfba6c8c1be5dda11faf290"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.algebra.matrix.html#667138260bfba6c8c1be5dda11faf290"><span class="id" title="notation">matrix</span></a><a class="idref" href="mathcomp.algebra.matrix.html#667138260bfba6c8c1be5dda11faf290"><span class="id" title="notation">[</span></a><a class="idref" href="mathcomp.algebra.matrix.html#usubmx_key"><span class="id" title="lemma">usubmx_key</span></a><a class="idref" href="mathcomp.algebra.matrix.html#667138260bfba6c8c1be5dda11faf290"><span class="id" title="notation">]</span></a><a class="idref" href="mathcomp.algebra.matrix.html#667138260bfba6c8c1be5dda11faf290"><span class="id" title="notation">_</span></a><a class="idref" href="mathcomp.algebra.matrix.html#667138260bfba6c8c1be5dda11faf290"><span class="id" title="notation">(</span></a><span class="id" title="var">i</span><a class="idref" href="mathcomp.algebra.matrix.html#667138260bfba6c8c1be5dda11faf290"><span class="id" title="notation">,</span></a> <span class="id" title="var">j</span><a class="idref" href="mathcomp.algebra.matrix.html#667138260bfba6c8c1be5dda11faf290"><span class="id" title="notation">)</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#A"><span class="id" title="variable">A</span></a> (<a class="idref" href="mathcomp.ssreflect.fintype.html#lshift"><span class="id" title="definition">lshift</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#MatrixStructural.CutPaste.m2"><span class="id" title="variable">m2</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#i"><span class="id" title="variable">i</span></a>) <a class="idref" href="mathcomp.algebra.matrix.html#j"><span class="id" title="variable">j</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Fact</span> <a name="dsubmx_key"><span class="id" title="lemma">dsubmx_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="dsubmx"><span class="id" title="definition">dsubmx</span></a> (<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.matrix.html#MatrixStructural.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.matrix.html#MatrixStructural.CutPaste.m1"><span class="id" title="variable">m1</span></a> <a class="idref" href="mathcomp.ssreflect.ssrnat.html#b3eea360671e1b32b18a26e15b3aace3"><span class="id" title="notation">+</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#MatrixStructural.CutPaste.m2"><span class="id" title="variable">m2</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#MatrixStructural.CutPaste.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/> + <a class="idref" href="mathcomp.algebra.matrix.html#667138260bfba6c8c1be5dda11faf290"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.algebra.matrix.html#667138260bfba6c8c1be5dda11faf290"><span class="id" title="notation">matrix</span></a><a class="idref" href="mathcomp.algebra.matrix.html#667138260bfba6c8c1be5dda11faf290"><span class="id" title="notation">[</span></a><a class="idref" href="mathcomp.algebra.matrix.html#dsubmx_key"><span class="id" title="lemma">dsubmx_key</span></a><a class="idref" href="mathcomp.algebra.matrix.html#667138260bfba6c8c1be5dda11faf290"><span class="id" title="notation">]</span></a><a class="idref" href="mathcomp.algebra.matrix.html#667138260bfba6c8c1be5dda11faf290"><span class="id" title="notation">_</span></a><a class="idref" href="mathcomp.algebra.matrix.html#667138260bfba6c8c1be5dda11faf290"><span class="id" title="notation">(</span></a><span class="id" title="var">i</span><a class="idref" href="mathcomp.algebra.matrix.html#667138260bfba6c8c1be5dda11faf290"><span class="id" title="notation">,</span></a> <span class="id" title="var">j</span><a class="idref" href="mathcomp.algebra.matrix.html#667138260bfba6c8c1be5dda11faf290"><span class="id" title="notation">)</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#A"><span class="id" title="variable">A</span></a> (<a class="idref" href="mathcomp.ssreflect.fintype.html#rshift"><span class="id" title="definition">rshift</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#MatrixStructural.CutPaste.m1"><span class="id" title="variable">m1</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#i"><span class="id" title="variable">i</span></a>) <a class="idref" href="mathcomp.algebra.matrix.html#j"><span class="id" title="variable">j</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="row_mxEl"><span class="id" title="lemma">row_mxEl</span></a> <span class="id" title="var">A1</span> <span class="id" title="var">A2</span> <span class="id" title="var">i</span> <span class="id" title="var">j</span> : <a class="idref" href="mathcomp.algebra.matrix.html#row_mx"><span class="id" title="definition">row_mx</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#A1"><span class="id" title="variable">A1</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#A2"><span class="id" title="variable">A2</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#i"><span class="id" title="variable">i</span></a> (<a class="idref" href="mathcomp.ssreflect.fintype.html#lshift"><span class="id" title="definition">lshift</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#MatrixStructural.CutPaste.n2"><span class="id" title="variable">n2</span></a> <a class="idref" href="mathcomp.algebra.matrix.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.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#A1"><span class="id" title="variable">A1</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#i"><span class="id" title="variable">i</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#j"><span class="id" title="variable">j</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="row_mxKl"><span class="id" title="lemma">row_mxKl</span></a> <span class="id" title="var">A1</span> <span class="id" title="var">A2</span> : <a class="idref" href="mathcomp.algebra.matrix.html#lsubmx"><span class="id" title="definition">lsubmx</span></a> (<a class="idref" href="mathcomp.algebra.matrix.html#row_mx"><span class="id" title="definition">row_mx</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#A1"><span class="id" title="variable">A1</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#A2"><span class="id" title="variable">A2</span></a>) <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#A1"><span class="id" title="variable">A1</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="row_mxEr"><span class="id" title="lemma">row_mxEr</span></a> <span class="id" title="var">A1</span> <span class="id" title="var">A2</span> <span class="id" title="var">i</span> <span class="id" title="var">j</span> : <a class="idref" href="mathcomp.algebra.matrix.html#row_mx"><span class="id" title="definition">row_mx</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#A1"><span class="id" title="variable">A1</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#A2"><span class="id" title="variable">A2</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#i"><span class="id" title="variable">i</span></a> (<a class="idref" href="mathcomp.ssreflect.fintype.html#rshift"><span class="id" title="definition">rshift</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#MatrixStructural.CutPaste.n1"><span class="id" title="variable">n1</span></a> <a class="idref" href="mathcomp.algebra.matrix.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.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#A2"><span class="id" title="variable">A2</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#i"><span class="id" title="variable">i</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#j"><span class="id" title="variable">j</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="row_mxKr"><span class="id" title="lemma">row_mxKr</span></a> <span class="id" title="var">A1</span> <span class="id" title="var">A2</span> : <a class="idref" href="mathcomp.algebra.matrix.html#rsubmx"><span class="id" title="definition">rsubmx</span></a> (<a class="idref" href="mathcomp.algebra.matrix.html#row_mx"><span class="id" title="definition">row_mx</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#A1"><span class="id" title="variable">A1</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#A2"><span class="id" title="variable">A2</span></a>) <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#A2"><span class="id" title="variable">A2</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="hsubmxK"><span class="id" title="lemma">hsubmxK</span></a> <span class="id" title="var">A</span> : <a class="idref" href="mathcomp.algebra.matrix.html#row_mx"><span class="id" title="definition">row_mx</span></a> (<a class="idref" href="mathcomp.algebra.matrix.html#lsubmx"><span class="id" title="definition">lsubmx</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#A"><span class="id" title="variable">A</span></a>) (<a class="idref" href="mathcomp.algebra.matrix.html#rsubmx"><span class="id" title="definition">rsubmx</span></a> <a class="idref" href="mathcomp.algebra.matrix.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.matrix.html#A"><span class="id" title="variable">A</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="col_mxEu"><span class="id" title="lemma">col_mxEu</span></a> <span class="id" title="var">A1</span> <span class="id" title="var">A2</span> <span class="id" title="var">i</span> <span class="id" title="var">j</span> : <a class="idref" href="mathcomp.algebra.matrix.html#col_mx"><span class="id" title="definition">col_mx</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#A1"><span class="id" title="variable">A1</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#A2"><span class="id" title="variable">A2</span></a> (<a class="idref" href="mathcomp.ssreflect.fintype.html#lshift"><span class="id" title="definition">lshift</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#MatrixStructural.CutPaste.m2"><span class="id" title="variable">m2</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#i"><span class="id" title="variable">i</span></a>) <a class="idref" href="mathcomp.algebra.matrix.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.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#A1"><span class="id" title="variable">A1</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#i"><span class="id" title="variable">i</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#j"><span class="id" title="variable">j</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="col_mxKu"><span class="id" title="lemma">col_mxKu</span></a> <span class="id" title="var">A1</span> <span class="id" title="var">A2</span> : <a class="idref" href="mathcomp.algebra.matrix.html#usubmx"><span class="id" title="definition">usubmx</span></a> (<a class="idref" href="mathcomp.algebra.matrix.html#col_mx"><span class="id" title="definition">col_mx</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#A1"><span class="id" title="variable">A1</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#A2"><span class="id" title="variable">A2</span></a>) <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#A1"><span class="id" title="variable">A1</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="col_mxEd"><span class="id" title="lemma">col_mxEd</span></a> <span class="id" title="var">A1</span> <span class="id" title="var">A2</span> <span class="id" title="var">i</span> <span class="id" title="var">j</span> : <a class="idref" href="mathcomp.algebra.matrix.html#col_mx"><span class="id" title="definition">col_mx</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#A1"><span class="id" title="variable">A1</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#A2"><span class="id" title="variable">A2</span></a> (<a class="idref" href="mathcomp.ssreflect.fintype.html#rshift"><span class="id" title="definition">rshift</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#MatrixStructural.CutPaste.m1"><span class="id" title="variable">m1</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#i"><span class="id" title="variable">i</span></a>) <a class="idref" href="mathcomp.algebra.matrix.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.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#A2"><span class="id" title="variable">A2</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#i"><span class="id" title="variable">i</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#j"><span class="id" title="variable">j</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="col_mxKd"><span class="id" title="lemma">col_mxKd</span></a> <span class="id" title="var">A1</span> <span class="id" title="var">A2</span> : <a class="idref" href="mathcomp.algebra.matrix.html#dsubmx"><span class="id" title="definition">dsubmx</span></a> (<a class="idref" href="mathcomp.algebra.matrix.html#col_mx"><span class="id" title="definition">col_mx</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#A1"><span class="id" title="variable">A1</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#A2"><span class="id" title="variable">A2</span></a>) <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#A2"><span class="id" title="variable">A2</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="eq_row_mx"><span class="id" title="lemma">eq_row_mx</span></a> <span class="id" title="var">A1</span> <span class="id" title="var">A2</span> <span class="id" title="var">B1</span> <span class="id" title="var">B2</span> : <a class="idref" href="mathcomp.algebra.matrix.html#row_mx"><span class="id" title="definition">row_mx</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#A1"><span class="id" title="variable">A1</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#A2"><span class="id" title="variable">A2</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#row_mx"><span class="id" title="definition">row_mx</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#B1"><span class="id" title="variable">B1</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#B2"><span class="id" title="variable">B2</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#A1"><span class="id" title="variable">A1</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#B1"><span class="id" title="variable">B1</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.matrix.html#A2"><span class="id" title="variable">A2</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#B2"><span class="id" title="variable">B2</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="eq_col_mx"><span class="id" title="lemma">eq_col_mx</span></a> <span class="id" title="var">A1</span> <span class="id" title="var">A2</span> <span class="id" title="var">B1</span> <span class="id" title="var">B2</span> : <a class="idref" href="mathcomp.algebra.matrix.html#col_mx"><span class="id" title="definition">col_mx</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#A1"><span class="id" title="variable">A1</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#A2"><span class="id" title="variable">A2</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#col_mx"><span class="id" title="definition">col_mx</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#B1"><span class="id" title="variable">B1</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#B2"><span class="id" title="variable">B2</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#A1"><span class="id" title="variable">A1</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#B1"><span class="id" title="variable">B1</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.matrix.html#A2"><span class="id" title="variable">A2</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#B2"><span class="id" title="variable">B2</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="row_mx_const"><span class="id" title="lemma">row_mx_const</span></a> <span class="id" title="var">a</span> : <a class="idref" href="mathcomp.algebra.matrix.html#row_mx"><span class="id" title="definition">row_mx</span></a> (<a class="idref" href="mathcomp.algebra.matrix.html#const_mx"><span class="id" title="definition">const_mx</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#a"><span class="id" title="variable">a</span></a>) (<a class="idref" href="mathcomp.algebra.matrix.html#const_mx"><span class="id" title="definition">const_mx</span></a> <a class="idref" href="mathcomp.algebra.matrix.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.matrix.html#const_mx"><span class="id" title="definition">const_mx</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#a"><span class="id" title="variable">a</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="col_mx_const"><span class="id" title="lemma">col_mx_const</span></a> <span class="id" title="var">a</span> : <a class="idref" href="mathcomp.algebra.matrix.html#col_mx"><span class="id" title="definition">col_mx</span></a> (<a class="idref" href="mathcomp.algebra.matrix.html#const_mx"><span class="id" title="definition">const_mx</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#a"><span class="id" title="variable">a</span></a>) (<a class="idref" href="mathcomp.algebra.matrix.html#const_mx"><span class="id" title="definition">const_mx</span></a> <a class="idref" href="mathcomp.algebra.matrix.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.matrix.html#const_mx"><span class="id" title="definition">const_mx</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#a"><span class="id" title="variable">a</span></a>.<br/> + +<br/> +<span class="id" title="keyword">End</span> <a class="idref" href="mathcomp.algebra.matrix.html#MatrixStructural.CutPaste"><span class="id" title="section">CutPaste</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="trmx_lsub"><span class="id" title="lemma">trmx_lsub</span></a> <span class="id" title="var">m</span> <span class="id" title="var">n1</span> <span class="id" title="var">n2</span> (<span class="id" title="var">A</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.matrix.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.matrix.html#n1"><span class="id" title="variable">n1</span></a> <a class="idref" href="mathcomp.ssreflect.ssrnat.html#b3eea360671e1b32b18a26e15b3aace3"><span class="id" title="notation">+</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#n2"><span class="id" title="variable">n2</span></a><a class="idref" href="mathcomp.algebra.matrix.html#cb37620352ad6b90a047a361359e2f04"><span class="id" title="notation">)</span></a>) : <a class="idref" href="mathcomp.algebra.matrix.html#445ad0600a9fd3b438aa099d79ca3f3a"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.matrix.html#lsubmx"><span class="id" title="definition">lsubmx</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#A"><span class="id" title="variable">A</span></a><a class="idref" href="mathcomp.algebra.matrix.html#445ad0600a9fd3b438aa099d79ca3f3a"><span class="id" title="notation">)^</span></a><a class="idref" href="mathcomp.algebra.matrix.html#445ad0600a9fd3b438aa099d79ca3f3a"><span class="id" title="notation">T</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#usubmx"><span class="id" title="definition">usubmx</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#A"><span class="id" title="variable">A</span></a><a class="idref" href="mathcomp.algebra.matrix.html#445ad0600a9fd3b438aa099d79ca3f3a"><span class="id" title="notation">^</span></a><a class="idref" href="mathcomp.algebra.matrix.html#445ad0600a9fd3b438aa099d79ca3f3a"><span class="id" title="notation">T</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="trmx_rsub"><span class="id" title="lemma">trmx_rsub</span></a> <span class="id" title="var">m</span> <span class="id" title="var">n1</span> <span class="id" title="var">n2</span> (<span class="id" title="var">A</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.matrix.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.matrix.html#n1"><span class="id" title="variable">n1</span></a> <a class="idref" href="mathcomp.ssreflect.ssrnat.html#b3eea360671e1b32b18a26e15b3aace3"><span class="id" title="notation">+</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#n2"><span class="id" title="variable">n2</span></a><a class="idref" href="mathcomp.algebra.matrix.html#cb37620352ad6b90a047a361359e2f04"><span class="id" title="notation">)</span></a>) : <a class="idref" href="mathcomp.algebra.matrix.html#445ad0600a9fd3b438aa099d79ca3f3a"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.matrix.html#rsubmx"><span class="id" title="definition">rsubmx</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#A"><span class="id" title="variable">A</span></a><a class="idref" href="mathcomp.algebra.matrix.html#445ad0600a9fd3b438aa099d79ca3f3a"><span class="id" title="notation">)^</span></a><a class="idref" href="mathcomp.algebra.matrix.html#445ad0600a9fd3b438aa099d79ca3f3a"><span class="id" title="notation">T</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#dsubmx"><span class="id" title="definition">dsubmx</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#A"><span class="id" title="variable">A</span></a><a class="idref" href="mathcomp.algebra.matrix.html#445ad0600a9fd3b438aa099d79ca3f3a"><span class="id" title="notation">^</span></a><a class="idref" href="mathcomp.algebra.matrix.html#445ad0600a9fd3b438aa099d79ca3f3a"><span class="id" title="notation">T</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="tr_row_mx"><span class="id" title="lemma">tr_row_mx</span></a> <span class="id" title="var">m</span> <span class="id" title="var">n1</span> <span class="id" title="var">n2</span> (<span class="id" title="var">A1</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.matrix.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.matrix.html#n1"><span class="id" title="variable">n1</span></a><a class="idref" href="mathcomp.algebra.matrix.html#cb37620352ad6b90a047a361359e2f04"><span class="id" title="notation">)</span></a>) (<span class="id" title="var">A2</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.matrix.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.matrix.html#n2"><span class="id" title="variable">n2</span></a><a class="idref" href="mathcomp.algebra.matrix.html#cb37620352ad6b90a047a361359e2f04"><span class="id" title="notation">)</span></a>) :<br/> + <a class="idref" href="mathcomp.algebra.matrix.html#445ad0600a9fd3b438aa099d79ca3f3a"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.matrix.html#row_mx"><span class="id" title="definition">row_mx</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#A1"><span class="id" title="variable">A1</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#A2"><span class="id" title="variable">A2</span></a><a class="idref" href="mathcomp.algebra.matrix.html#445ad0600a9fd3b438aa099d79ca3f3a"><span class="id" title="notation">)^</span></a><a class="idref" href="mathcomp.algebra.matrix.html#445ad0600a9fd3b438aa099d79ca3f3a"><span class="id" title="notation">T</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#col_mx"><span class="id" title="definition">col_mx</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#A1"><span class="id" title="variable">A1</span></a><a class="idref" href="mathcomp.algebra.matrix.html#445ad0600a9fd3b438aa099d79ca3f3a"><span class="id" title="notation">^</span></a><a class="idref" href="mathcomp.algebra.matrix.html#445ad0600a9fd3b438aa099d79ca3f3a"><span class="id" title="notation">T</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#A2"><span class="id" title="variable">A2</span></a><a class="idref" href="mathcomp.algebra.matrix.html#445ad0600a9fd3b438aa099d79ca3f3a"><span class="id" title="notation">^</span></a><a class="idref" href="mathcomp.algebra.matrix.html#445ad0600a9fd3b438aa099d79ca3f3a"><span class="id" title="notation">T</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="tr_col_mx"><span class="id" title="lemma">tr_col_mx</span></a> <span class="id" title="var">m1</span> <span class="id" title="var">m2</span> <span class="id" title="var">n</span> (<span class="id" title="var">A1</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.matrix.html#m1"><span class="id" title="variable">m1</span></a><a class="idref" href="mathcomp.algebra.matrix.html#cb37620352ad6b90a047a361359e2f04"><span class="id" title="notation">,</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#n"><span class="id" title="variable">n</span></a><a class="idref" href="mathcomp.algebra.matrix.html#cb37620352ad6b90a047a361359e2f04"><span class="id" title="notation">)</span></a>) (<span class="id" title="var">A2</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.matrix.html#m2"><span class="id" title="variable">m2</span></a><a class="idref" href="mathcomp.algebra.matrix.html#cb37620352ad6b90a047a361359e2f04"><span class="id" title="notation">,</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#n"><span class="id" title="variable">n</span></a><a class="idref" href="mathcomp.algebra.matrix.html#cb37620352ad6b90a047a361359e2f04"><span class="id" title="notation">)</span></a>) :<br/> + <a class="idref" href="mathcomp.algebra.matrix.html#445ad0600a9fd3b438aa099d79ca3f3a"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.matrix.html#col_mx"><span class="id" title="definition">col_mx</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#A1"><span class="id" title="variable">A1</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#A2"><span class="id" title="variable">A2</span></a><a class="idref" href="mathcomp.algebra.matrix.html#445ad0600a9fd3b438aa099d79ca3f3a"><span class="id" title="notation">)^</span></a><a class="idref" href="mathcomp.algebra.matrix.html#445ad0600a9fd3b438aa099d79ca3f3a"><span class="id" title="notation">T</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#row_mx"><span class="id" title="definition">row_mx</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#A1"><span class="id" title="variable">A1</span></a><a class="idref" href="mathcomp.algebra.matrix.html#445ad0600a9fd3b438aa099d79ca3f3a"><span class="id" title="notation">^</span></a><a class="idref" href="mathcomp.algebra.matrix.html#445ad0600a9fd3b438aa099d79ca3f3a"><span class="id" title="notation">T</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#A2"><span class="id" title="variable">A2</span></a><a class="idref" href="mathcomp.algebra.matrix.html#445ad0600a9fd3b438aa099d79ca3f3a"><span class="id" title="notation">^</span></a><a class="idref" href="mathcomp.algebra.matrix.html#445ad0600a9fd3b438aa099d79ca3f3a"><span class="id" title="notation">T</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="trmx_usub"><span class="id" title="lemma">trmx_usub</span></a> <span class="id" title="var">m1</span> <span class="id" title="var">m2</span> <span class="id" title="var">n</span> (<span class="id" title="var">A</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.matrix.html#m1"><span class="id" title="variable">m1</span></a> <a class="idref" href="mathcomp.ssreflect.ssrnat.html#b3eea360671e1b32b18a26e15b3aace3"><span class="id" title="notation">+</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#m2"><span class="id" title="variable">m2</span></a><a class="idref" href="mathcomp.algebra.matrix.html#cb37620352ad6b90a047a361359e2f04"><span class="id" title="notation">,</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#n"><span class="id" title="variable">n</span></a><a class="idref" href="mathcomp.algebra.matrix.html#cb37620352ad6b90a047a361359e2f04"><span class="id" title="notation">)</span></a>) : <a class="idref" href="mathcomp.algebra.matrix.html#445ad0600a9fd3b438aa099d79ca3f3a"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.matrix.html#usubmx"><span class="id" title="definition">usubmx</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#A"><span class="id" title="variable">A</span></a><a class="idref" href="mathcomp.algebra.matrix.html#445ad0600a9fd3b438aa099d79ca3f3a"><span class="id" title="notation">)^</span></a><a class="idref" href="mathcomp.algebra.matrix.html#445ad0600a9fd3b438aa099d79ca3f3a"><span class="id" title="notation">T</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#lsubmx"><span class="id" title="definition">lsubmx</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#A"><span class="id" title="variable">A</span></a><a class="idref" href="mathcomp.algebra.matrix.html#445ad0600a9fd3b438aa099d79ca3f3a"><span class="id" title="notation">^</span></a><a class="idref" href="mathcomp.algebra.matrix.html#445ad0600a9fd3b438aa099d79ca3f3a"><span class="id" title="notation">T</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="trmx_dsub"><span class="id" title="lemma">trmx_dsub</span></a> <span class="id" title="var">m1</span> <span class="id" title="var">m2</span> <span class="id" title="var">n</span> (<span class="id" title="var">A</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.matrix.html#m1"><span class="id" title="variable">m1</span></a> <a class="idref" href="mathcomp.ssreflect.ssrnat.html#b3eea360671e1b32b18a26e15b3aace3"><span class="id" title="notation">+</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#m2"><span class="id" title="variable">m2</span></a><a class="idref" href="mathcomp.algebra.matrix.html#cb37620352ad6b90a047a361359e2f04"><span class="id" title="notation">,</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#n"><span class="id" title="variable">n</span></a><a class="idref" href="mathcomp.algebra.matrix.html#cb37620352ad6b90a047a361359e2f04"><span class="id" title="notation">)</span></a>) : <a class="idref" href="mathcomp.algebra.matrix.html#445ad0600a9fd3b438aa099d79ca3f3a"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.matrix.html#dsubmx"><span class="id" title="definition">dsubmx</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#A"><span class="id" title="variable">A</span></a><a class="idref" href="mathcomp.algebra.matrix.html#445ad0600a9fd3b438aa099d79ca3f3a"><span class="id" title="notation">)^</span></a><a class="idref" href="mathcomp.algebra.matrix.html#445ad0600a9fd3b438aa099d79ca3f3a"><span class="id" title="notation">T</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#rsubmx"><span class="id" title="definition">rsubmx</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#A"><span class="id" title="variable">A</span></a><a class="idref" href="mathcomp.algebra.matrix.html#445ad0600a9fd3b438aa099d79ca3f3a"><span class="id" title="notation">^</span></a><a class="idref" href="mathcomp.algebra.matrix.html#445ad0600a9fd3b438aa099d79ca3f3a"><span class="id" title="notation">T</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="vsubmxK"><span class="id" title="lemma">vsubmxK</span></a> <span class="id" title="var">m1</span> <span class="id" title="var">m2</span> <span class="id" title="var">n</span> (<span class="id" title="var">A</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.matrix.html#m1"><span class="id" title="variable">m1</span></a> <a class="idref" href="mathcomp.ssreflect.ssrnat.html#b3eea360671e1b32b18a26e15b3aace3"><span class="id" title="notation">+</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#m2"><span class="id" title="variable">m2</span></a><a class="idref" href="mathcomp.algebra.matrix.html#cb37620352ad6b90a047a361359e2f04"><span class="id" title="notation">,</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#n"><span class="id" title="variable">n</span></a><a class="idref" href="mathcomp.algebra.matrix.html#cb37620352ad6b90a047a361359e2f04"><span class="id" title="notation">)</span></a>) : <a class="idref" href="mathcomp.algebra.matrix.html#col_mx"><span class="id" title="definition">col_mx</span></a> (<a class="idref" href="mathcomp.algebra.matrix.html#usubmx"><span class="id" title="definition">usubmx</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#A"><span class="id" title="variable">A</span></a>) (<a class="idref" href="mathcomp.algebra.matrix.html#dsubmx"><span class="id" title="definition">dsubmx</span></a> <a class="idref" href="mathcomp.algebra.matrix.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.matrix.html#A"><span class="id" title="variable">A</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="cast_row_mx"><span class="id" title="lemma">cast_row_mx</span></a> <span class="id" title="var">m</span> <span class="id" title="var">m'</span> <span class="id" title="var">n1</span> <span class="id" title="var">n2</span> (<span class="id" title="var">eq_m</span> : <a class="idref" href="mathcomp.algebra.matrix.html#m"><span class="id" title="variable">m</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#m'"><span class="id" title="variable">m'</span></a>) <span class="id" title="var">A1</span> <span class="id" title="var">A2</span> :<br/> + <a class="idref" href="mathcomp.algebra.matrix.html#castmx"><span class="id" title="definition">castmx</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#44400027531d4bc3f586a1997dc874c0"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.matrix.html#eq_m"><span class="id" title="variable">eq_m</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#44400027531d4bc3f586a1997dc874c0"><span class="id" title="notation">,</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#erefl"><span class="id" title="abbreviation">erefl</span></a> <span class="id" title="var">_</span><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#44400027531d4bc3f586a1997dc874c0"><span class="id" title="notation">)</span></a> (<a class="idref" href="mathcomp.algebra.matrix.html#row_mx"><span class="id" title="definition">row_mx</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#A1"><span class="id" title="variable">A1</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#A2"><span class="id" title="variable">A2</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.matrix.html#row_mx"><span class="id" title="definition">row_mx</span></a> (<a class="idref" href="mathcomp.algebra.matrix.html#castmx"><span class="id" title="definition">castmx</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#44400027531d4bc3f586a1997dc874c0"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.matrix.html#eq_m"><span class="id" title="variable">eq_m</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#44400027531d4bc3f586a1997dc874c0"><span class="id" title="notation">,</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#erefl"><span class="id" title="abbreviation">erefl</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#n1"><span class="id" title="variable">n1</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.matrix.html#A1"><span class="id" title="variable">A1</span></a>) (<a class="idref" href="mathcomp.algebra.matrix.html#castmx"><span class="id" title="definition">castmx</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#44400027531d4bc3f586a1997dc874c0"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.matrix.html#eq_m"><span class="id" title="variable">eq_m</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#44400027531d4bc3f586a1997dc874c0"><span class="id" title="notation">,</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#erefl"><span class="id" title="abbreviation">erefl</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#n2"><span class="id" title="variable">n2</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.matrix.html#A2"><span class="id" title="variable">A2</span></a>).<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="cast_col_mx"><span class="id" title="lemma">cast_col_mx</span></a> <span class="id" title="var">m1</span> <span class="id" title="var">m2</span> <span class="id" title="var">n</span> <span class="id" title="var">n'</span> (<span class="id" title="var">eq_n</span> : <a class="idref" href="mathcomp.algebra.matrix.html#n"><span class="id" title="variable">n</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#n'"><span class="id" title="variable">n'</span></a>) <span class="id" title="var">A1</span> <span class="id" title="var">A2</span> :<br/> + <a class="idref" href="mathcomp.algebra.matrix.html#castmx"><span class="id" title="definition">castmx</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#44400027531d4bc3f586a1997dc874c0"><span class="id" title="notation">(</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#erefl"><span class="id" title="abbreviation">erefl</span></a> <span class="id" title="var">_</span><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#44400027531d4bc3f586a1997dc874c0"><span class="id" title="notation">,</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#eq_n"><span class="id" title="variable">eq_n</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.matrix.html#col_mx"><span class="id" title="definition">col_mx</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#A1"><span class="id" title="variable">A1</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#A2"><span class="id" title="variable">A2</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.matrix.html#col_mx"><span class="id" title="definition">col_mx</span></a> (<a class="idref" href="mathcomp.algebra.matrix.html#castmx"><span class="id" title="definition">castmx</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#44400027531d4bc3f586a1997dc874c0"><span class="id" title="notation">(</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#erefl"><span class="id" title="abbreviation">erefl</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#m1"><span class="id" title="variable">m1</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#44400027531d4bc3f586a1997dc874c0"><span class="id" title="notation">,</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#eq_n"><span class="id" title="variable">eq_n</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.matrix.html#A1"><span class="id" title="variable">A1</span></a>) (<a class="idref" href="mathcomp.algebra.matrix.html#castmx"><span class="id" title="definition">castmx</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#44400027531d4bc3f586a1997dc874c0"><span class="id" title="notation">(</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#erefl"><span class="id" title="abbreviation">erefl</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#m2"><span class="id" title="variable">m2</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#44400027531d4bc3f586a1997dc874c0"><span class="id" title="notation">,</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#eq_n"><span class="id" title="variable">eq_n</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.matrix.html#A2"><span class="id" title="variable">A2</span></a>).<br/> + +<br/> +</div> + +<div class="doc"> + This lemma has Prenex Implicits to help RL rewrititng with castmx_sym. +</div> +<div class="code"> +<span class="id" title="keyword">Lemma</span> <a name="row_mxA"><span class="id" title="lemma">row_mxA</span></a> <span class="id" title="var">m</span> <span class="id" title="var">n1</span> <span class="id" title="var">n2</span> <span class="id" title="var">n3</span> (<span class="id" title="var">A1</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.matrix.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.matrix.html#n1"><span class="id" title="variable">n1</span></a><a class="idref" href="mathcomp.algebra.matrix.html#cb37620352ad6b90a047a361359e2f04"><span class="id" title="notation">)</span></a>) (<span class="id" title="var">A2</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.matrix.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.matrix.html#n2"><span class="id" title="variable">n2</span></a><a class="idref" href="mathcomp.algebra.matrix.html#cb37620352ad6b90a047a361359e2f04"><span class="id" title="notation">)</span></a>) (<span class="id" title="var">A3</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.matrix.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.matrix.html#n3"><span class="id" title="variable">n3</span></a><a class="idref" href="mathcomp.algebra.matrix.html#cb37620352ad6b90a047a361359e2f04"><span class="id" title="notation">)</span></a>) :<br/> + <span class="id" title="keyword">let</span> <span class="id" title="var">cast</span> := <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#44400027531d4bc3f586a1997dc874c0"><span class="id" title="notation">(</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#erefl"><span class="id" title="abbreviation">erefl</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#m"><span class="id" title="variable">m</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#44400027531d4bc3f586a1997dc874c0"><span class="id" title="notation">,</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#esym"><span class="id" title="definition">esym</span></a> (<a class="idref" href="mathcomp.ssreflect.ssrnat.html#addnA"><span class="id" title="lemma">addnA</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#n1"><span class="id" title="variable">n1</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#n2"><span class="id" title="variable">n2</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#n3"><span class="id" title="variable">n3</span></a>)<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#44400027531d4bc3f586a1997dc874c0"><span class="id" title="notation">)</span></a> <span class="id" title="tactic">in</span><br/> + <a class="idref" href="mathcomp.algebra.matrix.html#row_mx"><span class="id" title="definition">row_mx</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#A1"><span class="id" title="variable">A1</span></a> (<a class="idref" href="mathcomp.algebra.matrix.html#row_mx"><span class="id" title="definition">row_mx</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#A2"><span class="id" title="variable">A2</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#A3"><span class="id" title="variable">A3</span></a>) <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#castmx"><span class="id" title="definition">castmx</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#cast"><span class="id" title="variable">cast</span></a> (<a class="idref" href="mathcomp.algebra.matrix.html#row_mx"><span class="id" title="definition">row_mx</span></a> (<a class="idref" href="mathcomp.algebra.matrix.html#row_mx"><span class="id" title="definition">row_mx</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#A1"><span class="id" title="variable">A1</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#A2"><span class="id" title="variable">A2</span></a>) <a class="idref" href="mathcomp.algebra.matrix.html#A3"><span class="id" title="variable">A3</span></a>).<br/> +<span class="id" title="keyword">Definition</span> <a name="row_mxAx"><span class="id" title="definition">row_mxAx</span></a> := <a class="idref" href="mathcomp.algebra.matrix.html#row_mxA"><span class="id" title="lemma">row_mxA</span></a>. <span class="comment">(* bypass Prenex Implicits. *)</span><br/> + +<br/> +</div> + +<div class="doc"> + This lemma has Prenex Implicits to help RL rewrititng with castmx_sym. +</div> +<div class="code"> +<span class="id" title="keyword">Lemma</span> <a name="col_mxA"><span class="id" title="lemma">col_mxA</span></a> <span class="id" title="var">m1</span> <span class="id" title="var">m2</span> <span class="id" title="var">m3</span> <span class="id" title="var">n</span> (<span class="id" title="var">A1</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.matrix.html#m1"><span class="id" title="variable">m1</span></a><a class="idref" href="mathcomp.algebra.matrix.html#cb37620352ad6b90a047a361359e2f04"><span class="id" title="notation">,</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#n"><span class="id" title="variable">n</span></a><a class="idref" href="mathcomp.algebra.matrix.html#cb37620352ad6b90a047a361359e2f04"><span class="id" title="notation">)</span></a>) (<span class="id" title="var">A2</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.matrix.html#m2"><span class="id" title="variable">m2</span></a><a class="idref" href="mathcomp.algebra.matrix.html#cb37620352ad6b90a047a361359e2f04"><span class="id" title="notation">,</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#n"><span class="id" title="variable">n</span></a><a class="idref" href="mathcomp.algebra.matrix.html#cb37620352ad6b90a047a361359e2f04"><span class="id" title="notation">)</span></a>) (<span class="id" title="var">A3</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.matrix.html#m3"><span class="id" title="variable">m3</span></a><a class="idref" href="mathcomp.algebra.matrix.html#cb37620352ad6b90a047a361359e2f04"><span class="id" title="notation">,</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#n"><span class="id" title="variable">n</span></a><a class="idref" href="mathcomp.algebra.matrix.html#cb37620352ad6b90a047a361359e2f04"><span class="id" title="notation">)</span></a>) :<br/> + <span class="id" title="keyword">let</span> <span class="id" title="var">cast</span> := <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#44400027531d4bc3f586a1997dc874c0"><span class="id" title="notation">(</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#esym"><span class="id" title="definition">esym</span></a> (<a class="idref" href="mathcomp.ssreflect.ssrnat.html#addnA"><span class="id" title="lemma">addnA</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#m1"><span class="id" title="variable">m1</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#m2"><span class="id" title="variable">m2</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#m3"><span class="id" title="variable">m3</span></a>)<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#44400027531d4bc3f586a1997dc874c0"><span class="id" title="notation">,</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#erefl"><span class="id" title="abbreviation">erefl</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#n"><span class="id" title="variable">n</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#44400027531d4bc3f586a1997dc874c0"><span class="id" title="notation">)</span></a> <span class="id" title="tactic">in</span><br/> + <a class="idref" href="mathcomp.algebra.matrix.html#col_mx"><span class="id" title="definition">col_mx</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#A1"><span class="id" title="variable">A1</span></a> (<a class="idref" href="mathcomp.algebra.matrix.html#col_mx"><span class="id" title="definition">col_mx</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#A2"><span class="id" title="variable">A2</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#A3"><span class="id" title="variable">A3</span></a>) <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#castmx"><span class="id" title="definition">castmx</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#cast"><span class="id" title="variable">cast</span></a> (<a class="idref" href="mathcomp.algebra.matrix.html#col_mx"><span class="id" title="definition">col_mx</span></a> (<a class="idref" href="mathcomp.algebra.matrix.html#col_mx"><span class="id" title="definition">col_mx</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#A1"><span class="id" title="variable">A1</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#A2"><span class="id" title="variable">A2</span></a>) <a class="idref" href="mathcomp.algebra.matrix.html#A3"><span class="id" title="variable">A3</span></a>).<br/> + <span class="id" title="keyword">Definition</span> <a name="col_mxAx"><span class="id" title="definition">col_mxAx</span></a> := <a class="idref" href="mathcomp.algebra.matrix.html#col_mxA"><span class="id" title="lemma">col_mxA</span></a>. <span class="comment">(* bypass Prenex Implicits. *)</span><br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="row_row_mx"><span class="id" title="lemma">row_row_mx</span></a> <span class="id" title="var">m</span> <span class="id" title="var">n1</span> <span class="id" title="var">n2</span> <span class="id" title="var">i0</span> (<span class="id" title="var">A1</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.matrix.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.matrix.html#n1"><span class="id" title="variable">n1</span></a><a class="idref" href="mathcomp.algebra.matrix.html#cb37620352ad6b90a047a361359e2f04"><span class="id" title="notation">)</span></a>) (<span class="id" title="var">A2</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.matrix.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.matrix.html#n2"><span class="id" title="variable">n2</span></a><a class="idref" href="mathcomp.algebra.matrix.html#cb37620352ad6b90a047a361359e2f04"><span class="id" title="notation">)</span></a>) :<br/> + <a class="idref" href="mathcomp.algebra.matrix.html#row"><span class="id" title="definition">row</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#i0"><span class="id" title="variable">i0</span></a> (<a class="idref" href="mathcomp.algebra.matrix.html#row_mx"><span class="id" title="definition">row_mx</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#A1"><span class="id" title="variable">A1</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#A2"><span class="id" title="variable">A2</span></a>) <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#row_mx"><span class="id" title="definition">row_mx</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.matrix.html#i0"><span class="id" title="variable">i0</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#A1"><span class="id" title="variable">A1</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.matrix.html#i0"><span class="id" title="variable">i0</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#A2"><span class="id" title="variable">A2</span></a>).<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="col_col_mx"><span class="id" title="lemma">col_col_mx</span></a> <span class="id" title="var">m1</span> <span class="id" title="var">m2</span> <span class="id" title="var">n</span> <span class="id" title="var">j0</span> (<span class="id" title="var">A1</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.matrix.html#m1"><span class="id" title="variable">m1</span></a><a class="idref" href="mathcomp.algebra.matrix.html#cb37620352ad6b90a047a361359e2f04"><span class="id" title="notation">,</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#n"><span class="id" title="variable">n</span></a><a class="idref" href="mathcomp.algebra.matrix.html#cb37620352ad6b90a047a361359e2f04"><span class="id" title="notation">)</span></a>) (<span class="id" title="var">A2</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.matrix.html#m2"><span class="id" title="variable">m2</span></a><a class="idref" href="mathcomp.algebra.matrix.html#cb37620352ad6b90a047a361359e2f04"><span class="id" title="notation">,</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#n"><span class="id" title="variable">n</span></a><a class="idref" href="mathcomp.algebra.matrix.html#cb37620352ad6b90a047a361359e2f04"><span class="id" title="notation">)</span></a>) :<br/> + <a class="idref" href="mathcomp.algebra.matrix.html#col"><span class="id" title="definition">col</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#j0"><span class="id" title="variable">j0</span></a> (<a class="idref" href="mathcomp.algebra.matrix.html#col_mx"><span class="id" title="definition">col_mx</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#A1"><span class="id" title="variable">A1</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#A2"><span class="id" title="variable">A2</span></a>) <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#col_mx"><span class="id" title="definition">col_mx</span></a> (<a class="idref" href="mathcomp.algebra.matrix.html#col"><span class="id" title="definition">col</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#j0"><span class="id" title="variable">j0</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#A1"><span class="id" title="variable">A1</span></a>) (<a class="idref" href="mathcomp.algebra.matrix.html#col"><span class="id" title="definition">col</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#j0"><span class="id" title="variable">j0</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#A2"><span class="id" title="variable">A2</span></a>).<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="row'_row_mx"><span class="id" title="lemma">row'_row_mx</span></a> <span class="id" title="var">m</span> <span class="id" title="var">n1</span> <span class="id" title="var">n2</span> <span class="id" title="var">i0</span> (<span class="id" title="var">A1</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.matrix.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.matrix.html#n1"><span class="id" title="variable">n1</span></a><a class="idref" href="mathcomp.algebra.matrix.html#cb37620352ad6b90a047a361359e2f04"><span class="id" title="notation">)</span></a>) (<span class="id" title="var">A2</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.matrix.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.matrix.html#n2"><span class="id" title="variable">n2</span></a><a class="idref" href="mathcomp.algebra.matrix.html#cb37620352ad6b90a047a361359e2f04"><span class="id" title="notation">)</span></a>) :<br/> + <a class="idref" href="mathcomp.algebra.matrix.html#row'"><span class="id" title="definition">row'</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#i0"><span class="id" title="variable">i0</span></a> (<a class="idref" href="mathcomp.algebra.matrix.html#row_mx"><span class="id" title="definition">row_mx</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#A1"><span class="id" title="variable">A1</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#A2"><span class="id" title="variable">A2</span></a>) <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#row_mx"><span class="id" title="definition">row_mx</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.matrix.html#i0"><span class="id" title="variable">i0</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#A1"><span class="id" title="variable">A1</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.matrix.html#i0"><span class="id" title="variable">i0</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#A2"><span class="id" title="variable">A2</span></a>).<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="col'_col_mx"><span class="id" title="lemma">col'_col_mx</span></a> <span class="id" title="var">m1</span> <span class="id" title="var">m2</span> <span class="id" title="var">n</span> <span class="id" title="var">j0</span> (<span class="id" title="var">A1</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.matrix.html#m1"><span class="id" title="variable">m1</span></a><a class="idref" href="mathcomp.algebra.matrix.html#cb37620352ad6b90a047a361359e2f04"><span class="id" title="notation">,</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#n"><span class="id" title="variable">n</span></a><a class="idref" href="mathcomp.algebra.matrix.html#cb37620352ad6b90a047a361359e2f04"><span class="id" title="notation">)</span></a>) (<span class="id" title="var">A2</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.matrix.html#m2"><span class="id" title="variable">m2</span></a><a class="idref" href="mathcomp.algebra.matrix.html#cb37620352ad6b90a047a361359e2f04"><span class="id" title="notation">,</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#n"><span class="id" title="variable">n</span></a><a class="idref" href="mathcomp.algebra.matrix.html#cb37620352ad6b90a047a361359e2f04"><span class="id" title="notation">)</span></a>) :<br/> + <a class="idref" href="mathcomp.algebra.matrix.html#col'"><span class="id" title="definition">col'</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#j0"><span class="id" title="variable">j0</span></a> (<a class="idref" href="mathcomp.algebra.matrix.html#col_mx"><span class="id" title="definition">col_mx</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#A1"><span class="id" title="variable">A1</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#A2"><span class="id" title="variable">A2</span></a>) <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#col_mx"><span class="id" title="definition">col_mx</span></a> (<a class="idref" href="mathcomp.algebra.matrix.html#col'"><span class="id" title="definition">col'</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#j0"><span class="id" title="variable">j0</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#A1"><span class="id" title="variable">A1</span></a>) (<a class="idref" href="mathcomp.algebra.matrix.html#col'"><span class="id" title="definition">col'</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#j0"><span class="id" title="variable">j0</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#A2"><span class="id" title="variable">A2</span></a>).<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="colKl"><span class="id" title="lemma">colKl</span></a> <span class="id" title="var">m</span> <span class="id" title="var">n1</span> <span class="id" title="var">n2</span> <span class="id" title="var">j1</span> (<span class="id" title="var">A1</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.matrix.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.matrix.html#n1"><span class="id" title="variable">n1</span></a><a class="idref" href="mathcomp.algebra.matrix.html#cb37620352ad6b90a047a361359e2f04"><span class="id" title="notation">)</span></a>) (<span class="id" title="var">A2</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.matrix.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.matrix.html#n2"><span class="id" title="variable">n2</span></a><a class="idref" href="mathcomp.algebra.matrix.html#cb37620352ad6b90a047a361359e2f04"><span class="id" title="notation">)</span></a>) :<br/> + <a class="idref" href="mathcomp.algebra.matrix.html#col"><span class="id" title="definition">col</span></a> (<a class="idref" href="mathcomp.ssreflect.fintype.html#lshift"><span class="id" title="definition">lshift</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#n2"><span class="id" title="variable">n2</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#j1"><span class="id" title="variable">j1</span></a>) (<a class="idref" href="mathcomp.algebra.matrix.html#row_mx"><span class="id" title="definition">row_mx</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#A1"><span class="id" title="variable">A1</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#A2"><span class="id" title="variable">A2</span></a>) <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#col"><span class="id" title="definition">col</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#j1"><span class="id" title="variable">j1</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#A1"><span class="id" title="variable">A1</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="colKr"><span class="id" title="lemma">colKr</span></a> <span class="id" title="var">m</span> <span class="id" title="var">n1</span> <span class="id" title="var">n2</span> <span class="id" title="var">j2</span> (<span class="id" title="var">A1</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.matrix.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.matrix.html#n1"><span class="id" title="variable">n1</span></a><a class="idref" href="mathcomp.algebra.matrix.html#cb37620352ad6b90a047a361359e2f04"><span class="id" title="notation">)</span></a>) (<span class="id" title="var">A2</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.matrix.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.matrix.html#n2"><span class="id" title="variable">n2</span></a><a class="idref" href="mathcomp.algebra.matrix.html#cb37620352ad6b90a047a361359e2f04"><span class="id" title="notation">)</span></a>) :<br/> + <a class="idref" href="mathcomp.algebra.matrix.html#col"><span class="id" title="definition">col</span></a> (<a class="idref" href="mathcomp.ssreflect.fintype.html#rshift"><span class="id" title="definition">rshift</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#n1"><span class="id" title="variable">n1</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#j2"><span class="id" title="variable">j2</span></a>) (<a class="idref" href="mathcomp.algebra.matrix.html#row_mx"><span class="id" title="definition">row_mx</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#A1"><span class="id" title="variable">A1</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#A2"><span class="id" title="variable">A2</span></a>) <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#col"><span class="id" title="definition">col</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#j2"><span class="id" title="variable">j2</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#A2"><span class="id" title="variable">A2</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="rowKu"><span class="id" title="lemma">rowKu</span></a> <span class="id" title="var">m1</span> <span class="id" title="var">m2</span> <span class="id" title="var">n</span> <span class="id" title="var">i1</span> (<span class="id" title="var">A1</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.matrix.html#m1"><span class="id" title="variable">m1</span></a><a class="idref" href="mathcomp.algebra.matrix.html#cb37620352ad6b90a047a361359e2f04"><span class="id" title="notation">,</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#n"><span class="id" title="variable">n</span></a><a class="idref" href="mathcomp.algebra.matrix.html#cb37620352ad6b90a047a361359e2f04"><span class="id" title="notation">)</span></a>) (<span class="id" title="var">A2</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.matrix.html#m2"><span class="id" title="variable">m2</span></a><a class="idref" href="mathcomp.algebra.matrix.html#cb37620352ad6b90a047a361359e2f04"><span class="id" title="notation">,</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#n"><span class="id" title="variable">n</span></a><a class="idref" href="mathcomp.algebra.matrix.html#cb37620352ad6b90a047a361359e2f04"><span class="id" title="notation">)</span></a>) :<br/> + <a class="idref" href="mathcomp.algebra.matrix.html#row"><span class="id" title="definition">row</span></a> (<a class="idref" href="mathcomp.ssreflect.fintype.html#lshift"><span class="id" title="definition">lshift</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#m2"><span class="id" title="variable">m2</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#i1"><span class="id" title="variable">i1</span></a>) (<a class="idref" href="mathcomp.algebra.matrix.html#col_mx"><span class="id" title="definition">col_mx</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#A1"><span class="id" title="variable">A1</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#A2"><span class="id" title="variable">A2</span></a>) <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</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.matrix.html#i1"><span class="id" title="variable">i1</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#A1"><span class="id" title="variable">A1</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="rowKd"><span class="id" title="lemma">rowKd</span></a> <span class="id" title="var">m1</span> <span class="id" title="var">m2</span> <span class="id" title="var">n</span> <span class="id" title="var">i2</span> (<span class="id" title="var">A1</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.matrix.html#m1"><span class="id" title="variable">m1</span></a><a class="idref" href="mathcomp.algebra.matrix.html#cb37620352ad6b90a047a361359e2f04"><span class="id" title="notation">,</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#n"><span class="id" title="variable">n</span></a><a class="idref" href="mathcomp.algebra.matrix.html#cb37620352ad6b90a047a361359e2f04"><span class="id" title="notation">)</span></a>) (<span class="id" title="var">A2</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.matrix.html#m2"><span class="id" title="variable">m2</span></a><a class="idref" href="mathcomp.algebra.matrix.html#cb37620352ad6b90a047a361359e2f04"><span class="id" title="notation">,</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#n"><span class="id" title="variable">n</span></a><a class="idref" href="mathcomp.algebra.matrix.html#cb37620352ad6b90a047a361359e2f04"><span class="id" title="notation">)</span></a>) :<br/> + <a class="idref" href="mathcomp.algebra.matrix.html#row"><span class="id" title="definition">row</span></a> (<a class="idref" href="mathcomp.ssreflect.fintype.html#rshift"><span class="id" title="definition">rshift</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#m1"><span class="id" title="variable">m1</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#i2"><span class="id" title="variable">i2</span></a>) (<a class="idref" href="mathcomp.algebra.matrix.html#col_mx"><span class="id" title="definition">col_mx</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#A1"><span class="id" title="variable">A1</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#A2"><span class="id" title="variable">A2</span></a>) <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</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.matrix.html#i2"><span class="id" title="variable">i2</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#A2"><span class="id" title="variable">A2</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="col'Kl"><span class="id" title="lemma">col'Kl</span></a> <span class="id" title="var">m</span> <span class="id" title="var">n1</span> <span class="id" title="var">n2</span> <span class="id" title="var">j1</span> (<span class="id" title="var">A1</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.matrix.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.matrix.html#n1"><span class="id" title="variable">n1</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.matrix.html#cb37620352ad6b90a047a361359e2f04"><span class="id" title="notation">)</span></a>) (<span class="id" title="var">A2</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.matrix.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.matrix.html#n2"><span class="id" title="variable">n2</span></a><a class="idref" href="mathcomp.algebra.matrix.html#cb37620352ad6b90a047a361359e2f04"><span class="id" title="notation">)</span></a>) :<br/> + <a class="idref" href="mathcomp.algebra.matrix.html#col'"><span class="id" title="definition">col'</span></a> (<a class="idref" href="mathcomp.ssreflect.fintype.html#lshift"><span class="id" title="definition">lshift</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#n2"><span class="id" title="variable">n2</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#j1"><span class="id" title="variable">j1</span></a>) (<a class="idref" href="mathcomp.algebra.matrix.html#row_mx"><span class="id" title="definition">row_mx</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#A1"><span class="id" title="variable">A1</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#A2"><span class="id" title="variable">A2</span></a>) <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#row_mx"><span class="id" title="definition">row_mx</span></a> (<a class="idref" href="mathcomp.algebra.matrix.html#col'"><span class="id" title="definition">col'</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#j1"><span class="id" title="variable">j1</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#A1"><span class="id" title="variable">A1</span></a>) <a class="idref" href="mathcomp.algebra.matrix.html#A2"><span class="id" title="variable">A2</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="row'Ku"><span class="id" title="lemma">row'Ku</span></a> <span class="id" title="var">m1</span> <span class="id" title="var">m2</span> <span class="id" title="var">n</span> <span class="id" title="var">i1</span> (<span class="id" title="var">A1</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.matrix.html#m1"><span class="id" title="variable">m1</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.matrix.html#cb37620352ad6b90a047a361359e2f04"><span class="id" title="notation">,</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#n"><span class="id" title="variable">n</span></a><a class="idref" href="mathcomp.algebra.matrix.html#cb37620352ad6b90a047a361359e2f04"><span class="id" title="notation">)</span></a>) (<span class="id" title="var">A2</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.matrix.html#m2"><span class="id" title="variable">m2</span></a><a class="idref" href="mathcomp.algebra.matrix.html#cb37620352ad6b90a047a361359e2f04"><span class="id" title="notation">,</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#n"><span class="id" title="variable">n</span></a><a class="idref" href="mathcomp.algebra.matrix.html#cb37620352ad6b90a047a361359e2f04"><span class="id" title="notation">)</span></a>) :<br/> + <a class="idref" href="mathcomp.algebra.matrix.html#row'"><span class="id" title="definition">row'</span></a> (<a class="idref" href="mathcomp.ssreflect.fintype.html#lshift"><span class="id" title="definition">lshift</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#m2"><span class="id" title="variable">m2</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#i1"><span class="id" title="variable">i1</span></a>) (@<a class="idref" href="mathcomp.algebra.matrix.html#col_mx"><span class="id" title="definition">col_mx</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#m1"><span class="id" title="variable">m1</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.matrix.html#m2"><span class="id" title="variable">m2</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#n"><span class="id" title="variable">n</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#A1"><span class="id" title="variable">A1</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#A2"><span class="id" title="variable">A2</span></a>) <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#col_mx"><span class="id" title="definition">col_mx</span></a> (<a class="idref" href="mathcomp.algebra.matrix.html#row'"><span class="id" title="definition">row'</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#i1"><span class="id" title="variable">i1</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#A1"><span class="id" title="variable">A1</span></a>) <a class="idref" href="mathcomp.algebra.matrix.html#A2"><span class="id" title="variable">A2</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="mx'_cast"><span class="id" title="lemma">mx'_cast</span></a> <span class="id" title="var">m</span> <span class="id" title="var">n</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> <a class="idref" href="http://coq.inria.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#m"><span class="id" title="variable">m</span></a> <a class="idref" href="mathcomp.ssreflect.ssrnat.html#b3eea360671e1b32b18a26e15b3aace3"><span class="id" title="notation">+</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#n"><span class="id" title="variable">n</span></a><a class="idref" href="mathcomp.ssreflect.ssrnat.html#1d63841e595f2805afd872744cbb1cce"><span class="id" title="notation">.-1</span></a>)%<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.ssreflect.ssrnat.html#1d63841e595f2805afd872744cbb1cce"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.matrix.html#m"><span class="id" title="variable">m</span></a> <a class="idref" href="mathcomp.ssreflect.ssrnat.html#b3eea360671e1b32b18a26e15b3aace3"><span class="id" title="notation">+</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#n"><span class="id" title="variable">n</span></a><a class="idref" href="mathcomp.ssreflect.ssrnat.html#1d63841e595f2805afd872744cbb1cce"><span class="id" title="notation">).-1</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="col'Kr"><span class="id" title="lemma">col'Kr</span></a> <span class="id" title="var">m</span> <span class="id" title="var">n1</span> <span class="id" title="var">n2</span> <span class="id" title="var">j2</span> (<span class="id" title="var">A1</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.matrix.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.matrix.html#n1"><span class="id" title="variable">n1</span></a><a class="idref" href="mathcomp.algebra.matrix.html#cb37620352ad6b90a047a361359e2f04"><span class="id" title="notation">)</span></a>) (<span class="id" title="var">A2</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.matrix.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.matrix.html#n2"><span class="id" title="variable">n2</span></a><a class="idref" href="mathcomp.algebra.matrix.html#cb37620352ad6b90a047a361359e2f04"><span class="id" title="notation">)</span></a>) :<br/> + <a class="idref" href="mathcomp.algebra.matrix.html#col'"><span class="id" title="definition">col'</span></a> (<a class="idref" href="mathcomp.ssreflect.fintype.html#rshift"><span class="id" title="definition">rshift</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#n1"><span class="id" title="variable">n1</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#j2"><span class="id" title="variable">j2</span></a>) (@<a class="idref" href="mathcomp.algebra.matrix.html#row_mx"><span class="id" title="definition">row_mx</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#m"><span class="id" title="variable">m</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#n1"><span class="id" title="variable">n1</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#n2"><span class="id" title="variable">n2</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#A1"><span class="id" title="variable">A1</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#A2"><span class="id" title="variable">A2</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.matrix.html#castmx"><span class="id" title="definition">castmx</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#44400027531d4bc3f586a1997dc874c0"><span class="id" title="notation">(</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#erefl"><span class="id" title="abbreviation">erefl</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#m"><span class="id" title="variable">m</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#44400027531d4bc3f586a1997dc874c0"><span class="id" title="notation">,</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#mx'_cast"><span class="id" title="lemma">mx'_cast</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#n1"><span class="id" title="variable">n1</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#j2"><span class="id" title="variable">j2</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.matrix.html#row_mx"><span class="id" title="definition">row_mx</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#A1"><span class="id" title="variable">A1</span></a> (<a class="idref" href="mathcomp.algebra.matrix.html#col'"><span class="id" title="definition">col'</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#j2"><span class="id" title="variable">j2</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#A2"><span class="id" title="variable">A2</span></a>)).<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="row'Kd"><span class="id" title="lemma">row'Kd</span></a> <span class="id" title="var">m1</span> <span class="id" title="var">m2</span> <span class="id" title="var">n</span> <span class="id" title="var">i2</span> (<span class="id" title="var">A1</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.matrix.html#m1"><span class="id" title="variable">m1</span></a><a class="idref" href="mathcomp.algebra.matrix.html#cb37620352ad6b90a047a361359e2f04"><span class="id" title="notation">,</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#n"><span class="id" title="variable">n</span></a><a class="idref" href="mathcomp.algebra.matrix.html#cb37620352ad6b90a047a361359e2f04"><span class="id" title="notation">)</span></a>) (<span class="id" title="var">A2</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.matrix.html#m2"><span class="id" title="variable">m2</span></a><a class="idref" href="mathcomp.algebra.matrix.html#cb37620352ad6b90a047a361359e2f04"><span class="id" title="notation">,</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#n"><span class="id" title="variable">n</span></a><a class="idref" href="mathcomp.algebra.matrix.html#cb37620352ad6b90a047a361359e2f04"><span class="id" title="notation">)</span></a>) :<br/> + <a class="idref" href="mathcomp.algebra.matrix.html#row'"><span class="id" title="definition">row'</span></a> (<a class="idref" href="mathcomp.ssreflect.fintype.html#rshift"><span class="id" title="definition">rshift</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#m1"><span class="id" title="variable">m1</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#i2"><span class="id" title="variable">i2</span></a>) (<a class="idref" href="mathcomp.algebra.matrix.html#col_mx"><span class="id" title="definition">col_mx</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#A1"><span class="id" title="variable">A1</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#A2"><span class="id" title="variable">A2</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.matrix.html#castmx"><span class="id" title="definition">castmx</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.matrix.html#mx'_cast"><span class="id" title="lemma">mx'_cast</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#m1"><span class="id" title="variable">m1</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#i2"><span class="id" title="variable">i2</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#44400027531d4bc3f586a1997dc874c0"><span class="id" title="notation">,</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#erefl"><span class="id" title="abbreviation">erefl</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#n"><span class="id" title="variable">n</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#44400027531d4bc3f586a1997dc874c0"><span class="id" title="notation">)</span></a> (<a class="idref" href="mathcomp.algebra.matrix.html#col_mx"><span class="id" title="definition">col_mx</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#A1"><span class="id" title="variable">A1</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.matrix.html#i2"><span class="id" title="variable">i2</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#A2"><span class="id" title="variable">A2</span></a>)).<br/> + +<br/> +<span class="id" title="keyword">Section</span> <a name="MatrixStructural.Block"><span class="id" title="section">Block</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Variables</span> <a name="MatrixStructural.Block.m1"><span class="id" title="variable">m1</span></a> <a name="MatrixStructural.Block.m2"><span class="id" title="variable">m2</span></a> <a name="MatrixStructural.Block.n1"><span class="id" title="variable">n1</span></a> <a name="MatrixStructural.Block.n2"><span class="id" title="variable">n2</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"> + Building a block matrix from 4 matrices : + up left, up right, down left and down right components +</div> +<div class="code"> + +<br/> +<span class="id" title="keyword">Definition</span> <a name="block_mx"><span class="id" title="definition">block_mx</span></a> <span class="id" title="var">Aul</span> <span class="id" title="var">Aur</span> <span class="id" title="var">Adl</span> <span class="id" title="var">Adr</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.matrix.html#MatrixStructural.Block.m1"><span class="id" title="variable">m1</span></a> <a class="idref" href="mathcomp.ssreflect.ssrnat.html#b3eea360671e1b32b18a26e15b3aace3"><span class="id" title="notation">+</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#MatrixStructural.Block.m2"><span class="id" title="variable">m2</span></a><a class="idref" href="mathcomp.algebra.matrix.html#cb37620352ad6b90a047a361359e2f04"><span class="id" title="notation">,</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#MatrixStructural.Block.n1"><span class="id" title="variable">n1</span></a> <a class="idref" href="mathcomp.ssreflect.ssrnat.html#b3eea360671e1b32b18a26e15b3aace3"><span class="id" title="notation">+</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#MatrixStructural.Block.n2"><span class="id" title="variable">n2</span></a><a class="idref" href="mathcomp.algebra.matrix.html#cb37620352ad6b90a047a361359e2f04"><span class="id" title="notation">)</span></a> :=<br/> + <a class="idref" href="mathcomp.algebra.matrix.html#col_mx"><span class="id" title="definition">col_mx</span></a> (<a class="idref" href="mathcomp.algebra.matrix.html#row_mx"><span class="id" title="definition">row_mx</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#Aul"><span class="id" title="variable">Aul</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#Aur"><span class="id" title="variable">Aur</span></a>) (<a class="idref" href="mathcomp.algebra.matrix.html#row_mx"><span class="id" title="definition">row_mx</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#Adl"><span class="id" title="variable">Adl</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#Adr"><span class="id" title="variable">Adr</span></a>).<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="eq_block_mx"><span class="id" title="lemma">eq_block_mx</span></a> <span class="id" title="var">Aul</span> <span class="id" title="var">Aur</span> <span class="id" title="var">Adl</span> <span class="id" title="var">Adr</span> <span class="id" title="var">Bul</span> <span class="id" title="var">Bur</span> <span class="id" title="var">Bdl</span> <span class="id" title="var">Bdr</span> :<br/> + <a class="idref" href="mathcomp.algebra.matrix.html#block_mx"><span class="id" title="definition">block_mx</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#Aul"><span class="id" title="variable">Aul</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#Aur"><span class="id" title="variable">Aur</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#Adl"><span class="id" title="variable">Adl</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#Adr"><span class="id" title="variable">Adr</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#block_mx"><span class="id" title="definition">block_mx</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#Bul"><span class="id" title="variable">Bul</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#Bur"><span class="id" title="variable">Bur</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#Bdl"><span class="id" title="variable">Bdl</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#Bdr"><span class="id" title="variable">Bdr</span></a> <a 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.ssr.ssrbool.html#ca13a32469ebe56c9f4cc99d00e8eeba"><span class="id" title="notation">[/\</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#Aul"><span class="id" title="variable">Aul</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#Bul"><span class="id" title="variable">Bul</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#ca13a32469ebe56c9f4cc99d00e8eeba"><span class="id" title="notation">,</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#Aur"><span class="id" title="variable">Aur</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#Bur"><span class="id" title="variable">Bur</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#ca13a32469ebe56c9f4cc99d00e8eeba"><span class="id" title="notation">,</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#Adl"><span class="id" title="variable">Adl</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#Bdl"><span class="id" title="variable">Bdl</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#ca13a32469ebe56c9f4cc99d00e8eeba"><span class="id" title="notation">&</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#Adr"><span class="id" title="variable">Adr</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#Bdr"><span class="id" title="variable">Bdr</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#ca13a32469ebe56c9f4cc99d00e8eeba"><span class="id" title="notation">]</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="block_mx_const"><span class="id" title="lemma">block_mx_const</span></a> <span class="id" title="var">a</span> :<br/> + <a class="idref" href="mathcomp.algebra.matrix.html#block_mx"><span class="id" title="definition">block_mx</span></a> (<a class="idref" href="mathcomp.algebra.matrix.html#const_mx"><span class="id" title="definition">const_mx</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#a"><span class="id" title="variable">a</span></a>) (<a class="idref" href="mathcomp.algebra.matrix.html#const_mx"><span class="id" title="definition">const_mx</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#a"><span class="id" title="variable">a</span></a>) (<a class="idref" href="mathcomp.algebra.matrix.html#const_mx"><span class="id" title="definition">const_mx</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#a"><span class="id" title="variable">a</span></a>) (<a class="idref" href="mathcomp.algebra.matrix.html#const_mx"><span class="id" title="definition">const_mx</span></a> <a class="idref" href="mathcomp.algebra.matrix.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.matrix.html#const_mx"><span class="id" title="definition">const_mx</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#a"><span class="id" title="variable">a</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Section</span> <a name="MatrixStructural.Block.CutBlock"><span class="id" title="section">CutBlock</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Variable</span> <a name="MatrixStructural.Block.CutBlock.A"><span class="id" title="variable">A</span></a> : <a class="idref" href="mathcomp.algebra.matrix.html#matrix"><span class="id" title="inductive">matrix</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#MatrixStructural.R"><span class="id" title="variable">R</span></a> (<a class="idref" href="mathcomp.algebra.matrix.html#MatrixStructural.Block.m1"><span class="id" title="variable">m1</span></a> <a class="idref" href="mathcomp.ssreflect.ssrnat.html#b3eea360671e1b32b18a26e15b3aace3"><span class="id" title="notation">+</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#MatrixStructural.Block.m2"><span class="id" title="variable">m2</span></a>) (<a class="idref" href="mathcomp.algebra.matrix.html#MatrixStructural.Block.n1"><span class="id" title="variable">n1</span></a> <a class="idref" href="mathcomp.ssreflect.ssrnat.html#b3eea360671e1b32b18a26e15b3aace3"><span class="id" title="notation">+</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#MatrixStructural.Block.n2"><span class="id" title="variable">n2</span></a>).<br/> + +<br/> +<span class="id" title="keyword">Definition</span> <a name="ulsubmx"><span class="id" title="definition">ulsubmx</span></a> := <a class="idref" href="mathcomp.algebra.matrix.html#lsubmx"><span class="id" title="definition">lsubmx</span></a> (<a class="idref" href="mathcomp.algebra.matrix.html#usubmx"><span class="id" title="definition">usubmx</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#MatrixStructural.Block.CutBlock.A"><span class="id" title="variable">A</span></a>).<br/> +<span class="id" title="keyword">Definition</span> <a name="ursubmx"><span class="id" title="definition">ursubmx</span></a> := <a class="idref" href="mathcomp.algebra.matrix.html#rsubmx"><span class="id" title="definition">rsubmx</span></a> (<a class="idref" href="mathcomp.algebra.matrix.html#usubmx"><span class="id" title="definition">usubmx</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#MatrixStructural.Block.CutBlock.A"><span class="id" title="variable">A</span></a>).<br/> +<span class="id" title="keyword">Definition</span> <a name="dlsubmx"><span class="id" title="definition">dlsubmx</span></a> := <a class="idref" href="mathcomp.algebra.matrix.html#lsubmx"><span class="id" title="definition">lsubmx</span></a> (<a class="idref" href="mathcomp.algebra.matrix.html#dsubmx"><span class="id" title="definition">dsubmx</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#MatrixStructural.Block.CutBlock.A"><span class="id" title="variable">A</span></a>).<br/> +<span class="id" title="keyword">Definition</span> <a name="drsubmx"><span class="id" title="definition">drsubmx</span></a> := <a class="idref" href="mathcomp.algebra.matrix.html#rsubmx"><span class="id" title="definition">rsubmx</span></a> (<a class="idref" href="mathcomp.algebra.matrix.html#dsubmx"><span class="id" title="definition">dsubmx</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#MatrixStructural.Block.CutBlock.A"><span class="id" title="variable">A</span></a>).<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="submxK"><span class="id" title="lemma">submxK</span></a> : <a class="idref" href="mathcomp.algebra.matrix.html#block_mx"><span class="id" title="definition">block_mx</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#ulsubmx"><span class="id" title="definition">ulsubmx</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#ursubmx"><span class="id" title="definition">ursubmx</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#dlsubmx"><span class="id" title="definition">dlsubmx</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#drsubmx"><span class="id" title="definition">drsubmx</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#MatrixStructural.Block.CutBlock.A"><span class="id" title="variable">A</span></a>.<br/> + +<br/> +<span class="id" title="keyword">End</span> <a class="idref" href="mathcomp.algebra.matrix.html#MatrixStructural.Block.CutBlock"><span class="id" title="section">CutBlock</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Section</span> <a name="MatrixStructural.Block.CatBlock"><span class="id" title="section">CatBlock</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Variables</span> (<a name="MatrixStructural.Block.CatBlock.Aul"><span class="id" title="variable">Aul</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.matrix.html#MatrixStructural.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.matrix.html#MatrixStructural.Block.m1"><span class="id" title="variable">m1</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#MatrixStructural.Block.n1"><span class="id" title="variable">n1</span></a><a class="idref" href="mathcomp.algebra.matrix.html#e36c289fb249221b43b9c978a67340fb"><span class="id" title="notation">)</span></a>) (<a name="MatrixStructural.Block.CatBlock.Aur"><span class="id" title="variable">Aur</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.matrix.html#MatrixStructural.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.matrix.html#MatrixStructural.Block.m1"><span class="id" title="variable">m1</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#MatrixStructural.Block.n2"><span class="id" title="variable">n2</span></a><a class="idref" href="mathcomp.algebra.matrix.html#e36c289fb249221b43b9c978a67340fb"><span class="id" title="notation">)</span></a>).<br/> +<span class="id" title="keyword">Variables</span> (<a name="MatrixStructural.Block.CatBlock.Adl"><span class="id" title="variable">Adl</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.matrix.html#MatrixStructural.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.matrix.html#MatrixStructural.Block.m2"><span class="id" title="variable">m2</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#MatrixStructural.Block.n1"><span class="id" title="variable">n1</span></a><a class="idref" href="mathcomp.algebra.matrix.html#e36c289fb249221b43b9c978a67340fb"><span class="id" title="notation">)</span></a>) (<a name="MatrixStructural.Block.CatBlock.Adr"><span class="id" title="variable">Adr</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.matrix.html#MatrixStructural.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.matrix.html#MatrixStructural.Block.m2"><span class="id" title="variable">m2</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#MatrixStructural.Block.n2"><span class="id" title="variable">n2</span></a><a class="idref" href="mathcomp.algebra.matrix.html#e36c289fb249221b43b9c978a67340fb"><span class="id" title="notation">)</span></a>).<br/> + +<br/> +<span class="id" title="keyword">Let</span> <a name="MatrixStructural.Block.CatBlock.A"><span class="id" title="variable">A</span></a> := <a class="idref" href="mathcomp.algebra.matrix.html#block_mx"><span class="id" title="definition">block_mx</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#MatrixStructural.Block.CatBlock.Aul"><span class="id" title="variable">Aul</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#MatrixStructural.Block.CatBlock.Aur"><span class="id" title="variable">Aur</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#MatrixStructural.Block.CatBlock.Adl"><span class="id" title="variable">Adl</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#MatrixStructural.Block.CatBlock.Adr"><span class="id" title="variable">Adr</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="block_mxEul"><span class="id" title="lemma">block_mxEul</span></a> <span class="id" title="var">i</span> <span class="id" title="var">j</span> : <a class="idref" href="mathcomp.algebra.matrix.html#MatrixStructural.Block.CatBlock.A"><span class="id" title="variable">A</span></a> (<a class="idref" href="mathcomp.ssreflect.fintype.html#lshift"><span class="id" title="definition">lshift</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#MatrixStructural.Block.m2"><span class="id" title="variable">m2</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#i"><span class="id" title="variable">i</span></a>) (<a class="idref" href="mathcomp.ssreflect.fintype.html#lshift"><span class="id" title="definition">lshift</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#MatrixStructural.Block.n2"><span class="id" title="variable">n2</span></a> <a class="idref" href="mathcomp.algebra.matrix.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.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#MatrixStructural.Block.CatBlock.Aul"><span class="id" title="variable">Aul</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#i"><span class="id" title="variable">i</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#j"><span class="id" title="variable">j</span></a>.<br/> + <span class="id" title="keyword">Lemma</span> <a name="block_mxKul"><span class="id" title="lemma">block_mxKul</span></a> : <a class="idref" href="mathcomp.algebra.matrix.html#ulsubmx"><span class="id" title="definition">ulsubmx</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#MatrixStructural.Block.CatBlock.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.matrix.html#MatrixStructural.Block.CatBlock.Aul"><span class="id" title="variable">Aul</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="block_mxEur"><span class="id" title="lemma">block_mxEur</span></a> <span class="id" title="var">i</span> <span class="id" title="var">j</span> : <a class="idref" href="mathcomp.algebra.matrix.html#MatrixStructural.Block.CatBlock.A"><span class="id" title="variable">A</span></a> (<a class="idref" href="mathcomp.ssreflect.fintype.html#lshift"><span class="id" title="definition">lshift</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#MatrixStructural.Block.m2"><span class="id" title="variable">m2</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#i"><span class="id" title="variable">i</span></a>) (<a class="idref" href="mathcomp.ssreflect.fintype.html#rshift"><span class="id" title="definition">rshift</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#MatrixStructural.Block.n1"><span class="id" title="variable">n1</span></a> <a class="idref" href="mathcomp.algebra.matrix.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.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#MatrixStructural.Block.CatBlock.Aur"><span class="id" title="variable">Aur</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#i"><span class="id" title="variable">i</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#j"><span class="id" title="variable">j</span></a>.<br/> + <span class="id" title="keyword">Lemma</span> <a name="block_mxKur"><span class="id" title="lemma">block_mxKur</span></a> : <a class="idref" href="mathcomp.algebra.matrix.html#ursubmx"><span class="id" title="definition">ursubmx</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#MatrixStructural.Block.CatBlock.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.matrix.html#MatrixStructural.Block.CatBlock.Aur"><span class="id" title="variable">Aur</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="block_mxEdl"><span class="id" title="lemma">block_mxEdl</span></a> <span class="id" title="var">i</span> <span class="id" title="var">j</span> : <a class="idref" href="mathcomp.algebra.matrix.html#MatrixStructural.Block.CatBlock.A"><span class="id" title="variable">A</span></a> (<a class="idref" href="mathcomp.ssreflect.fintype.html#rshift"><span class="id" title="definition">rshift</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#MatrixStructural.Block.m1"><span class="id" title="variable">m1</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#i"><span class="id" title="variable">i</span></a>) (<a class="idref" href="mathcomp.ssreflect.fintype.html#lshift"><span class="id" title="definition">lshift</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#MatrixStructural.Block.n2"><span class="id" title="variable">n2</span></a> <a class="idref" href="mathcomp.algebra.matrix.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.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#MatrixStructural.Block.CatBlock.Adl"><span class="id" title="variable">Adl</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#i"><span class="id" title="variable">i</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#j"><span class="id" title="variable">j</span></a>.<br/> + <span class="id" title="keyword">Lemma</span> <a name="block_mxKdl"><span class="id" title="lemma">block_mxKdl</span></a> : <a class="idref" href="mathcomp.algebra.matrix.html#dlsubmx"><span class="id" title="definition">dlsubmx</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#MatrixStructural.Block.CatBlock.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.matrix.html#MatrixStructural.Block.CatBlock.Adl"><span class="id" title="variable">Adl</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="block_mxEdr"><span class="id" title="lemma">block_mxEdr</span></a> <span class="id" title="var">i</span> <span class="id" title="var">j</span> : <a class="idref" href="mathcomp.algebra.matrix.html#MatrixStructural.Block.CatBlock.A"><span class="id" title="variable">A</span></a> (<a class="idref" href="mathcomp.ssreflect.fintype.html#rshift"><span class="id" title="definition">rshift</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#MatrixStructural.Block.m1"><span class="id" title="variable">m1</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#i"><span class="id" title="variable">i</span></a>) (<a class="idref" href="mathcomp.ssreflect.fintype.html#rshift"><span class="id" title="definition">rshift</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#MatrixStructural.Block.n1"><span class="id" title="variable">n1</span></a> <a class="idref" href="mathcomp.algebra.matrix.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.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#MatrixStructural.Block.CatBlock.Adr"><span class="id" title="variable">Adr</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#i"><span class="id" title="variable">i</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#j"><span class="id" title="variable">j</span></a>.<br/> + <span class="id" title="keyword">Lemma</span> <a name="block_mxKdr"><span class="id" title="lemma">block_mxKdr</span></a> : <a class="idref" href="mathcomp.algebra.matrix.html#drsubmx"><span class="id" title="definition">drsubmx</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#MatrixStructural.Block.CatBlock.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.matrix.html#MatrixStructural.Block.CatBlock.Adr"><span class="id" title="variable">Adr</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="block_mxEv"><span class="id" title="lemma">block_mxEv</span></a> : <a class="idref" href="mathcomp.algebra.matrix.html#MatrixStructural.Block.CatBlock.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.matrix.html#col_mx"><span class="id" title="definition">col_mx</span></a> (<a class="idref" href="mathcomp.algebra.matrix.html#row_mx"><span class="id" title="definition">row_mx</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#MatrixStructural.Block.CatBlock.Aul"><span class="id" title="variable">Aul</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#MatrixStructural.Block.CatBlock.Aur"><span class="id" title="variable">Aur</span></a>) (<a class="idref" href="mathcomp.algebra.matrix.html#row_mx"><span class="id" title="definition">row_mx</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#MatrixStructural.Block.CatBlock.Adl"><span class="id" title="variable">Adl</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#MatrixStructural.Block.CatBlock.Adr"><span class="id" title="variable">Adr</span></a>).<br/> + +<br/> +<span class="id" title="keyword">End</span> <a class="idref" href="mathcomp.algebra.matrix.html#MatrixStructural.Block.CatBlock"><span class="id" title="section">CatBlock</span></a>.<br/> + +<br/> +<span class="id" title="keyword">End</span> <a class="idref" href="mathcomp.algebra.matrix.html#MatrixStructural.Block"><span class="id" title="section">Block</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Section</span> <a name="MatrixStructural.TrCutBlock"><span class="id" title="section">TrCutBlock</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Variables</span> <a name="MatrixStructural.TrCutBlock.m1"><span class="id" title="variable">m1</span></a> <a name="MatrixStructural.TrCutBlock.m2"><span class="id" title="variable">m2</span></a> <a name="MatrixStructural.TrCutBlock.n1"><span class="id" title="variable">n1</span></a> <a name="MatrixStructural.TrCutBlock.n2"><span class="id" title="variable">n2</span></a> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#nat"><span class="id" title="inductive">nat</span></a>.<br/> +<span class="id" title="keyword">Variable</span> <a name="MatrixStructural.TrCutBlock.A"><span class="id" title="variable">A</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.matrix.html#MatrixStructural.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.matrix.html#MatrixStructural.TrCutBlock.m1"><span class="id" title="variable">m1</span></a> <a class="idref" href="mathcomp.ssreflect.ssrnat.html#b3eea360671e1b32b18a26e15b3aace3"><span class="id" title="notation">+</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#MatrixStructural.TrCutBlock.m2"><span class="id" title="variable">m2</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#MatrixStructural.TrCutBlock.n1"><span class="id" title="variable">n1</span></a> <a class="idref" href="mathcomp.ssreflect.ssrnat.html#b3eea360671e1b32b18a26e15b3aace3"><span class="id" title="notation">+</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#MatrixStructural.TrCutBlock.n2"><span class="id" title="variable">n2</span></a><a class="idref" href="mathcomp.algebra.matrix.html#e36c289fb249221b43b9c978a67340fb"><span class="id" title="notation">)</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="trmx_ulsub"><span class="id" title="lemma">trmx_ulsub</span></a> : <a class="idref" href="mathcomp.algebra.matrix.html#445ad0600a9fd3b438aa099d79ca3f3a"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.matrix.html#ulsubmx"><span class="id" title="definition">ulsubmx</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#MatrixStructural.TrCutBlock.A"><span class="id" title="variable">A</span></a><a class="idref" href="mathcomp.algebra.matrix.html#445ad0600a9fd3b438aa099d79ca3f3a"><span class="id" title="notation">)^</span></a><a class="idref" href="mathcomp.algebra.matrix.html#445ad0600a9fd3b438aa099d79ca3f3a"><span class="id" title="notation">T</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#ulsubmx"><span class="id" title="definition">ulsubmx</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#MatrixStructural.TrCutBlock.A"><span class="id" title="variable">A</span></a><a class="idref" href="mathcomp.algebra.matrix.html#445ad0600a9fd3b438aa099d79ca3f3a"><span class="id" title="notation">^</span></a><a class="idref" href="mathcomp.algebra.matrix.html#445ad0600a9fd3b438aa099d79ca3f3a"><span class="id" title="notation">T</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="trmx_ursub"><span class="id" title="lemma">trmx_ursub</span></a> : <a class="idref" href="mathcomp.algebra.matrix.html#445ad0600a9fd3b438aa099d79ca3f3a"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.matrix.html#ursubmx"><span class="id" title="definition">ursubmx</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#MatrixStructural.TrCutBlock.A"><span class="id" title="variable">A</span></a><a class="idref" href="mathcomp.algebra.matrix.html#445ad0600a9fd3b438aa099d79ca3f3a"><span class="id" title="notation">)^</span></a><a class="idref" href="mathcomp.algebra.matrix.html#445ad0600a9fd3b438aa099d79ca3f3a"><span class="id" title="notation">T</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#dlsubmx"><span class="id" title="definition">dlsubmx</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#MatrixStructural.TrCutBlock.A"><span class="id" title="variable">A</span></a><a class="idref" href="mathcomp.algebra.matrix.html#445ad0600a9fd3b438aa099d79ca3f3a"><span class="id" title="notation">^</span></a><a class="idref" href="mathcomp.algebra.matrix.html#445ad0600a9fd3b438aa099d79ca3f3a"><span class="id" title="notation">T</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="trmx_dlsub"><span class="id" title="lemma">trmx_dlsub</span></a> : <a class="idref" href="mathcomp.algebra.matrix.html#445ad0600a9fd3b438aa099d79ca3f3a"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.matrix.html#dlsubmx"><span class="id" title="definition">dlsubmx</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#MatrixStructural.TrCutBlock.A"><span class="id" title="variable">A</span></a><a class="idref" href="mathcomp.algebra.matrix.html#445ad0600a9fd3b438aa099d79ca3f3a"><span class="id" title="notation">)^</span></a><a class="idref" href="mathcomp.algebra.matrix.html#445ad0600a9fd3b438aa099d79ca3f3a"><span class="id" title="notation">T</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#ursubmx"><span class="id" title="definition">ursubmx</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#MatrixStructural.TrCutBlock.A"><span class="id" title="variable">A</span></a><a class="idref" href="mathcomp.algebra.matrix.html#445ad0600a9fd3b438aa099d79ca3f3a"><span class="id" title="notation">^</span></a><a class="idref" href="mathcomp.algebra.matrix.html#445ad0600a9fd3b438aa099d79ca3f3a"><span class="id" title="notation">T</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="trmx_drsub"><span class="id" title="lemma">trmx_drsub</span></a> : <a class="idref" href="mathcomp.algebra.matrix.html#445ad0600a9fd3b438aa099d79ca3f3a"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.matrix.html#drsubmx"><span class="id" title="definition">drsubmx</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#MatrixStructural.TrCutBlock.A"><span class="id" title="variable">A</span></a><a class="idref" href="mathcomp.algebra.matrix.html#445ad0600a9fd3b438aa099d79ca3f3a"><span class="id" title="notation">)^</span></a><a class="idref" href="mathcomp.algebra.matrix.html#445ad0600a9fd3b438aa099d79ca3f3a"><span class="id" title="notation">T</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#drsubmx"><span class="id" title="definition">drsubmx</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#MatrixStructural.TrCutBlock.A"><span class="id" title="variable">A</span></a><a class="idref" href="mathcomp.algebra.matrix.html#445ad0600a9fd3b438aa099d79ca3f3a"><span class="id" title="notation">^</span></a><a class="idref" href="mathcomp.algebra.matrix.html#445ad0600a9fd3b438aa099d79ca3f3a"><span class="id" title="notation">T</span></a>.<br/> + +<br/> +<span class="id" title="keyword">End</span> <a class="idref" href="mathcomp.algebra.matrix.html#MatrixStructural.TrCutBlock"><span class="id" title="section">TrCutBlock</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Section</span> <a name="MatrixStructural.TrBlock"><span class="id" title="section">TrBlock</span></a>.<br/> +<span class="id" title="keyword">Variables</span> <a name="MatrixStructural.TrBlock.m1"><span class="id" title="variable">m1</span></a> <a name="MatrixStructural.TrBlock.m2"><span class="id" title="variable">m2</span></a> <a name="MatrixStructural.TrBlock.n1"><span class="id" title="variable">n1</span></a> <a name="MatrixStructural.TrBlock.n2"><span class="id" title="variable">n2</span></a> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#nat"><span class="id" title="inductive">nat</span></a>.<br/> +<span class="id" title="keyword">Variables</span> (<a name="MatrixStructural.TrBlock.Aul"><span class="id" title="variable">Aul</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.matrix.html#MatrixStructural.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.matrix.html#MatrixStructural.TrBlock.m1"><span class="id" title="variable">m1</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#MatrixStructural.TrBlock.n1"><span class="id" title="variable">n1</span></a><a class="idref" href="mathcomp.algebra.matrix.html#e36c289fb249221b43b9c978a67340fb"><span class="id" title="notation">)</span></a>) (<a name="MatrixStructural.TrBlock.Aur"><span class="id" title="variable">Aur</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.matrix.html#MatrixStructural.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.matrix.html#MatrixStructural.TrBlock.m1"><span class="id" title="variable">m1</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#MatrixStructural.TrBlock.n2"><span class="id" title="variable">n2</span></a><a class="idref" href="mathcomp.algebra.matrix.html#e36c289fb249221b43b9c978a67340fb"><span class="id" title="notation">)</span></a>).<br/> +<span class="id" title="keyword">Variables</span> (<a name="MatrixStructural.TrBlock.Adl"><span class="id" title="variable">Adl</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.matrix.html#MatrixStructural.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.matrix.html#MatrixStructural.TrBlock.m2"><span class="id" title="variable">m2</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#MatrixStructural.TrBlock.n1"><span class="id" title="variable">n1</span></a><a class="idref" href="mathcomp.algebra.matrix.html#e36c289fb249221b43b9c978a67340fb"><span class="id" title="notation">)</span></a>) (<a name="MatrixStructural.TrBlock.Adr"><span class="id" title="variable">Adr</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.matrix.html#MatrixStructural.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.matrix.html#MatrixStructural.TrBlock.m2"><span class="id" title="variable">m2</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#MatrixStructural.TrBlock.n2"><span class="id" title="variable">n2</span></a><a class="idref" href="mathcomp.algebra.matrix.html#e36c289fb249221b43b9c978a67340fb"><span class="id" title="notation">)</span></a>).<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="tr_block_mx"><span class="id" title="lemma">tr_block_mx</span></a> :<br/> + <a class="idref" href="mathcomp.algebra.matrix.html#445ad0600a9fd3b438aa099d79ca3f3a"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.matrix.html#block_mx"><span class="id" title="definition">block_mx</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#MatrixStructural.TrBlock.Aul"><span class="id" title="variable">Aul</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#MatrixStructural.TrBlock.Aur"><span class="id" title="variable">Aur</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#MatrixStructural.TrBlock.Adl"><span class="id" title="variable">Adl</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#MatrixStructural.TrBlock.Adr"><span class="id" title="variable">Adr</span></a><a class="idref" href="mathcomp.algebra.matrix.html#445ad0600a9fd3b438aa099d79ca3f3a"><span class="id" title="notation">)^</span></a><a class="idref" href="mathcomp.algebra.matrix.html#445ad0600a9fd3b438aa099d79ca3f3a"><span class="id" title="notation">T</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#block_mx"><span class="id" title="definition">block_mx</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#MatrixStructural.TrBlock.Aul"><span class="id" title="variable">Aul</span></a><a class="idref" href="mathcomp.algebra.matrix.html#445ad0600a9fd3b438aa099d79ca3f3a"><span class="id" title="notation">^</span></a><a class="idref" href="mathcomp.algebra.matrix.html#445ad0600a9fd3b438aa099d79ca3f3a"><span class="id" title="notation">T</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#MatrixStructural.TrBlock.Adl"><span class="id" title="variable">Adl</span></a><a class="idref" href="mathcomp.algebra.matrix.html#445ad0600a9fd3b438aa099d79ca3f3a"><span class="id" title="notation">^</span></a><a class="idref" href="mathcomp.algebra.matrix.html#445ad0600a9fd3b438aa099d79ca3f3a"><span class="id" title="notation">T</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#MatrixStructural.TrBlock.Aur"><span class="id" title="variable">Aur</span></a><a class="idref" href="mathcomp.algebra.matrix.html#445ad0600a9fd3b438aa099d79ca3f3a"><span class="id" title="notation">^</span></a><a class="idref" href="mathcomp.algebra.matrix.html#445ad0600a9fd3b438aa099d79ca3f3a"><span class="id" title="notation">T</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#MatrixStructural.TrBlock.Adr"><span class="id" title="variable">Adr</span></a><a class="idref" href="mathcomp.algebra.matrix.html#445ad0600a9fd3b438aa099d79ca3f3a"><span class="id" title="notation">^</span></a><a class="idref" href="mathcomp.algebra.matrix.html#445ad0600a9fd3b438aa099d79ca3f3a"><span class="id" title="notation">T</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="block_mxEh"><span class="id" title="lemma">block_mxEh</span></a> :<br/> + <a class="idref" href="mathcomp.algebra.matrix.html#block_mx"><span class="id" title="definition">block_mx</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#MatrixStructural.TrBlock.Aul"><span class="id" title="variable">Aul</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#MatrixStructural.TrBlock.Aur"><span class="id" title="variable">Aur</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#MatrixStructural.TrBlock.Adl"><span class="id" title="variable">Adl</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#MatrixStructural.TrBlock.Adr"><span class="id" title="variable">Adr</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#row_mx"><span class="id" title="definition">row_mx</span></a> (<a class="idref" href="mathcomp.algebra.matrix.html#col_mx"><span class="id" title="definition">col_mx</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#MatrixStructural.TrBlock.Aul"><span class="id" title="variable">Aul</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#MatrixStructural.TrBlock.Adl"><span class="id" title="variable">Adl</span></a>) (<a class="idref" href="mathcomp.algebra.matrix.html#col_mx"><span class="id" title="definition">col_mx</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#MatrixStructural.TrBlock.Aur"><span class="id" title="variable">Aur</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#MatrixStructural.TrBlock.Adr"><span class="id" title="variable">Adr</span></a>).<br/> + <span class="id" title="keyword">End</span> <a class="idref" href="mathcomp.algebra.matrix.html#MatrixStructural.TrBlock"><span class="id" title="section">TrBlock</span></a>.<br/> + +<br/> +</div> + +<div class="doc"> + This lemma has Prenex Implicits to help RL rewrititng with castmx_sym. +</div> +<div class="code"> +<span class="id" title="keyword">Lemma</span> <a name="block_mxA"><span class="id" title="lemma">block_mxA</span></a> <span class="id" title="var">m1</span> <span class="id" title="var">m2</span> <span class="id" title="var">m3</span> <span class="id" title="var">n1</span> <span class="id" title="var">n2</span> <span class="id" title="var">n3</span><br/> + (<span class="id" title="var">A11</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.matrix.html#m1"><span class="id" title="variable">m1</span></a><a class="idref" href="mathcomp.algebra.matrix.html#cb37620352ad6b90a047a361359e2f04"><span class="id" title="notation">,</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#n1"><span class="id" title="variable">n1</span></a><a class="idref" href="mathcomp.algebra.matrix.html#cb37620352ad6b90a047a361359e2f04"><span class="id" title="notation">)</span></a>) (<span class="id" title="var">A12</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.matrix.html#m1"><span class="id" title="variable">m1</span></a><a class="idref" href="mathcomp.algebra.matrix.html#cb37620352ad6b90a047a361359e2f04"><span class="id" title="notation">,</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#n2"><span class="id" title="variable">n2</span></a><a class="idref" href="mathcomp.algebra.matrix.html#cb37620352ad6b90a047a361359e2f04"><span class="id" title="notation">)</span></a>) (<span class="id" title="var">A13</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.matrix.html#m1"><span class="id" title="variable">m1</span></a><a class="idref" href="mathcomp.algebra.matrix.html#cb37620352ad6b90a047a361359e2f04"><span class="id" title="notation">,</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#n3"><span class="id" title="variable">n3</span></a><a class="idref" href="mathcomp.algebra.matrix.html#cb37620352ad6b90a047a361359e2f04"><span class="id" title="notation">)</span></a>)<br/> + (<span class="id" title="var">A21</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.matrix.html#m2"><span class="id" title="variable">m2</span></a><a class="idref" href="mathcomp.algebra.matrix.html#cb37620352ad6b90a047a361359e2f04"><span class="id" title="notation">,</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#n1"><span class="id" title="variable">n1</span></a><a class="idref" href="mathcomp.algebra.matrix.html#cb37620352ad6b90a047a361359e2f04"><span class="id" title="notation">)</span></a>) (<span class="id" title="var">A22</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.matrix.html#m2"><span class="id" title="variable">m2</span></a><a class="idref" href="mathcomp.algebra.matrix.html#cb37620352ad6b90a047a361359e2f04"><span class="id" title="notation">,</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#n2"><span class="id" title="variable">n2</span></a><a class="idref" href="mathcomp.algebra.matrix.html#cb37620352ad6b90a047a361359e2f04"><span class="id" title="notation">)</span></a>) (<span class="id" title="var">A23</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.matrix.html#m2"><span class="id" title="variable">m2</span></a><a class="idref" href="mathcomp.algebra.matrix.html#cb37620352ad6b90a047a361359e2f04"><span class="id" title="notation">,</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#n3"><span class="id" title="variable">n3</span></a><a class="idref" href="mathcomp.algebra.matrix.html#cb37620352ad6b90a047a361359e2f04"><span class="id" title="notation">)</span></a>)<br/> + (<span class="id" title="var">A31</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.matrix.html#m3"><span class="id" title="variable">m3</span></a><a class="idref" href="mathcomp.algebra.matrix.html#cb37620352ad6b90a047a361359e2f04"><span class="id" title="notation">,</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#n1"><span class="id" title="variable">n1</span></a><a class="idref" href="mathcomp.algebra.matrix.html#cb37620352ad6b90a047a361359e2f04"><span class="id" title="notation">)</span></a>) (<span class="id" title="var">A32</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.matrix.html#m3"><span class="id" title="variable">m3</span></a><a class="idref" href="mathcomp.algebra.matrix.html#cb37620352ad6b90a047a361359e2f04"><span class="id" title="notation">,</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#n2"><span class="id" title="variable">n2</span></a><a class="idref" href="mathcomp.algebra.matrix.html#cb37620352ad6b90a047a361359e2f04"><span class="id" title="notation">)</span></a>) (<span class="id" title="var">A33</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.matrix.html#m3"><span class="id" title="variable">m3</span></a><a class="idref" href="mathcomp.algebra.matrix.html#cb37620352ad6b90a047a361359e2f04"><span class="id" title="notation">,</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#n3"><span class="id" title="variable">n3</span></a><a class="idref" href="mathcomp.algebra.matrix.html#cb37620352ad6b90a047a361359e2f04"><span class="id" title="notation">)</span></a>) :<br/> + <span class="id" title="keyword">let</span> <span class="id" title="var">cast</span> := <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#44400027531d4bc3f586a1997dc874c0"><span class="id" title="notation">(</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#esym"><span class="id" title="definition">esym</span></a> (<a class="idref" href="mathcomp.ssreflect.ssrnat.html#addnA"><span class="id" title="lemma">addnA</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#m1"><span class="id" title="variable">m1</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#m2"><span class="id" title="variable">m2</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#m3"><span class="id" title="variable">m3</span></a>)<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#44400027531d4bc3f586a1997dc874c0"><span class="id" title="notation">,</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#esym"><span class="id" title="definition">esym</span></a> (<a class="idref" href="mathcomp.ssreflect.ssrnat.html#addnA"><span class="id" title="lemma">addnA</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#n1"><span class="id" title="variable">n1</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#n2"><span class="id" title="variable">n2</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#n3"><span class="id" title="variable">n3</span></a>)<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#44400027531d4bc3f586a1997dc874c0"><span class="id" title="notation">)</span></a> <span class="id" title="tactic">in</span><br/> + <span class="id" title="keyword">let</span> <span class="id" title="var">row1</span> := <a class="idref" href="mathcomp.algebra.matrix.html#row_mx"><span class="id" title="definition">row_mx</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#A12"><span class="id" title="variable">A12</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#A13"><span class="id" title="variable">A13</span></a> <span class="id" title="tactic">in</span> <span class="id" title="keyword">let</span> <span class="id" title="var">col1</span> := <a class="idref" href="mathcomp.algebra.matrix.html#col_mx"><span class="id" title="definition">col_mx</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#A21"><span class="id" title="variable">A21</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#A31"><span class="id" title="variable">A31</span></a> <span class="id" title="tactic">in</span><br/> + <span class="id" title="keyword">let</span> <span class="id" title="var">row3</span> := <a class="idref" href="mathcomp.algebra.matrix.html#row_mx"><span class="id" title="definition">row_mx</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#A31"><span class="id" title="variable">A31</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#A32"><span class="id" title="variable">A32</span></a> <span class="id" title="tactic">in</span> <span class="id" title="keyword">let</span> <span class="id" title="var">col3</span> := <a class="idref" href="mathcomp.algebra.matrix.html#col_mx"><span class="id" title="definition">col_mx</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#A13"><span class="id" title="variable">A13</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#A23"><span class="id" title="variable">A23</span></a> <span class="id" title="tactic">in</span><br/> + <a class="idref" href="mathcomp.algebra.matrix.html#block_mx"><span class="id" title="definition">block_mx</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#A11"><span class="id" title="variable">A11</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#row1"><span class="id" title="variable">row1</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#col1"><span class="id" title="variable">col1</span></a> (<a class="idref" href="mathcomp.algebra.matrix.html#block_mx"><span class="id" title="definition">block_mx</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#A22"><span class="id" title="variable">A22</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#A23"><span class="id" title="variable">A23</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#A32"><span class="id" title="variable">A32</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#A33"><span class="id" title="variable">A33</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.matrix.html#castmx"><span class="id" title="definition">castmx</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#cast"><span class="id" title="variable">cast</span></a> (<a class="idref" href="mathcomp.algebra.matrix.html#block_mx"><span class="id" title="definition">block_mx</span></a> (<a class="idref" href="mathcomp.algebra.matrix.html#block_mx"><span class="id" title="definition">block_mx</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#A11"><span class="id" title="variable">A11</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#A12"><span class="id" title="variable">A12</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#A21"><span class="id" title="variable">A21</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#A22"><span class="id" title="variable">A22</span></a>) <a class="idref" href="mathcomp.algebra.matrix.html#col3"><span class="id" title="variable">col3</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#row3"><span class="id" title="variable">row3</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#A33"><span class="id" title="variable">A33</span></a>).<br/> +<span class="id" title="keyword">Definition</span> <a name="block_mxAx"><span class="id" title="definition">block_mxAx</span></a> := <a class="idref" href="mathcomp.algebra.matrix.html#block_mxA"><span class="id" title="lemma">block_mxA</span></a>. <span class="comment">(* Bypass Prenex Implicits *)</span><br/> + +<br/> +</div> + +<div class="doc"> + Bijections mxvec : 'M(m, n) <----> 'rV(m * n) : vec_mx +</div> +<div class="code"> +<span class="id" title="keyword">Section</span> <a name="MatrixStructural.VecMatrix"><span class="id" title="section">VecMatrix</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Variables</span> <a name="MatrixStructural.VecMatrix.m"><span class="id" title="variable">m</span></a> <a name="MatrixStructural.VecMatrix.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/> +<span class="id" title="keyword">Lemma</span> <a name="mxvec_cast"><span class="id" title="lemma">mxvec_cast</span></a> : <a class="idref" href="mathcomp.ssreflect.fintype.html#f01714bb99e6c7abc6cfb2e43eff7f6e"><span class="id" title="notation">#|</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#74a34ed1f9b36f83662203527a970b09"><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_m</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#d19c7eafd0e2d195d10df94b392087b5"><span class="id" title="notation">×</span></a> <a class="idref" href="mathcomp.ssreflect.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="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#74a34ed1f9b36f83662203527a970b09"><span class="id" title="notation">}</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#f01714bb99e6c7abc6cfb2e43eff7f6e"><span class="id" title="notation">|</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> (<a class="idref" href="mathcomp.algebra.matrix.html#MatrixStructural.VecMatrix.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.matrix.html#MatrixStructural.VecMatrix.n"><span class="id" title="variable">n</span></a>)%<span class="id" title="var">N</span>.<br/> + +<br/> +<span class="id" title="keyword">Definition</span> <a name="mxvec_index"><span class="id" title="definition">mxvec_index</span></a> (<span class="id" title="var">i</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_m</span></a>) (<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.ssreflect.fintype.html#cast_ord"><span class="id" title="definition">cast_ord</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#mxvec_cast"><span class="id" title="lemma">mxvec_cast</span></a> (<a class="idref" href="mathcomp.ssreflect.fintype.html#enum_rank"><span class="id" title="definition">enum_rank</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.matrix.html#i"><span class="id" title="variable">i</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#44400027531d4bc3f586a1997dc874c0"><span class="id" title="notation">,</span></a> <a class="idref" href="mathcomp.algebra.matrix.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#44400027531d4bc3f586a1997dc874c0"><span class="id" title="notation">)</span></a>).<br/> + +<br/> +<span class="id" title="keyword">CoInductive</span> <a name="is_mxvec_index"><span class="id" title="inductive">is_mxvec_index</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_</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#9de6d53cccc27f521f3ab56b38159140"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.matrix.html#MatrixStructural.VecMatrix.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.matrix.html#MatrixStructural.VecMatrix.n"><span class="id" title="variable">n</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#9de6d53cccc27f521f3ab56b38159140"><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">Type</span> :=<br/> + <a name="IsMxvecIndex"><span class="id" title="constructor">IsMxvecIndex</span></a> <span class="id" title="var">i</span> <span class="id" title="var">j</span> : <a class="idref" href="mathcomp.algebra.matrix.html#is_mxvec_index"><span class="id" title="inductive">is_mxvec_index</span></a> (<a class="idref" href="mathcomp.algebra.matrix.html#mxvec_index"><span class="id" title="definition">mxvec_index</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#i"><span class="id" title="variable">i</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#j"><span class="id" title="variable">j</span></a>).<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="mxvec_indexP"><span class="id" title="lemma">mxvec_indexP</span></a> <span class="id" title="var">k</span> : <a class="idref" href="mathcomp.algebra.matrix.html#is_mxvec_index"><span class="id" title="inductive">is_mxvec_index</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#k"><span class="id" title="variable">k</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Coercion</span> <span class="id" title="var">pair_of_mxvec_index</span> <span class="id" title="var">k</span> (<span class="id" title="var">i_k</span> : <a class="idref" href="mathcomp.algebra.matrix.html#is_mxvec_index"><span class="id" title="inductive">is_mxvec_index</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#k"><span class="id" title="variable">k</span></a>) :=<br/> + <span class="id" title="keyword">let</span>: <a class="idref" href="mathcomp.algebra.matrix.html#IsMxvecIndex"><span class="id" title="constructor">IsMxvecIndex</span></a> <span class="id" title="var">i</span> <span class="id" title="var">j</span> := <a class="idref" href="mathcomp.algebra.matrix.html#i_k"><span class="id" title="variable">i_k</span></a> <span class="id" title="tactic">in</span> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#44400027531d4bc3f586a1997dc874c0"><span class="id" title="notation">(</span></a><span class="id" title="var">i</span><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#44400027531d4bc3f586a1997dc874c0"><span class="id" title="notation">,</span></a> <span class="id" title="var">j</span><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#44400027531d4bc3f586a1997dc874c0"><span class="id" title="notation">)</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Definition</span> <a name="mxvec"><span class="id" title="definition">mxvec</span></a> (<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.matrix.html#MatrixStructural.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.matrix.html#MatrixStructural.VecMatrix.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.matrix.html#MatrixStructural.VecMatrix.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/> + <a class="idref" href="mathcomp.algebra.matrix.html#castmx"><span class="id" title="definition">castmx</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#44400027531d4bc3f586a1997dc874c0"><span class="id" title="notation">(</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#erefl"><span class="id" title="abbreviation">erefl</span></a> <span class="id" title="var">_</span><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#44400027531d4bc3f586a1997dc874c0"><span class="id" title="notation">,</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#mxvec_cast"><span class="id" title="lemma">mxvec_cast</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.matrix.html#cf6654c80d96ae2da5730746e8dfeac4"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.algebra.matrix.html#cf6654c80d96ae2da5730746e8dfeac4"><span class="id" title="notation">row_k</span></a> <a class="idref" href="mathcomp.algebra.matrix.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.ssrfun.html#c4877bbfe60d8f22b47ac99ace86216a"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#enum_val"><span class="id" title="definition">enum_val</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#k"><span class="id" title="variable">k</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#c4877bbfe60d8f22b47ac99ace86216a"><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#f4827404159513e7fd691b60b7877737"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#enum_val"><span class="id" title="definition">enum_val</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#k"><span class="id" title="variable">k</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#f4827404159513e7fd691b60b7877737"><span class="id" title="notation">).2</span></a>).<br/> + +<br/> +<span class="id" title="keyword">Fact</span> <a name="vec_mx_key"><span class="id" title="lemma">vec_mx_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="vec_mx"><span class="id" title="definition">vec_mx</span></a> (<span class="id" title="var">u</span> : <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.matrix.html#MatrixStructural.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">_</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#MatrixStructural.VecMatrix.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.matrix.html#MatrixStructural.VecMatrix.n"><span class="id" title="variable">n</span></a><a class="idref" href="mathcomp.algebra.matrix.html#d5eb23b08bc98c3329b2748a3ba944ae"><span class="id" title="notation">)</span></a>) :=<br/> + <a class="idref" href="mathcomp.algebra.matrix.html#667138260bfba6c8c1be5dda11faf290"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.algebra.matrix.html#667138260bfba6c8c1be5dda11faf290"><span class="id" title="notation">matrix</span></a><a class="idref" href="mathcomp.algebra.matrix.html#667138260bfba6c8c1be5dda11faf290"><span class="id" title="notation">[</span></a><a class="idref" href="mathcomp.algebra.matrix.html#vec_mx_key"><span class="id" title="lemma">vec_mx_key</span></a><a class="idref" href="mathcomp.algebra.matrix.html#667138260bfba6c8c1be5dda11faf290"><span class="id" title="notation">]</span></a><a class="idref" href="mathcomp.algebra.matrix.html#667138260bfba6c8c1be5dda11faf290"><span class="id" title="notation">_</span></a><a class="idref" href="mathcomp.algebra.matrix.html#667138260bfba6c8c1be5dda11faf290"><span class="id" title="notation">(</span></a><span class="id" title="var">i</span><a class="idref" href="mathcomp.algebra.matrix.html#667138260bfba6c8c1be5dda11faf290"><span class="id" title="notation">,</span></a> <span class="id" title="var">j</span><a class="idref" href="mathcomp.algebra.matrix.html#667138260bfba6c8c1be5dda11faf290"><span class="id" title="notation">)</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#u"><span class="id" title="variable">u</span></a> 0 (<a class="idref" href="mathcomp.algebra.matrix.html#mxvec_index"><span class="id" title="definition">mxvec_index</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#i"><span class="id" title="variable">i</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#j"><span class="id" title="variable">j</span></a>).<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="mxvecE"><span class="id" title="lemma">mxvecE</span></a> <span class="id" title="var">A</span> <span class="id" title="var">i</span> <span class="id" title="var">j</span> : <a class="idref" href="mathcomp.algebra.matrix.html#mxvec"><span class="id" title="definition">mxvec</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#A"><span class="id" title="variable">A</span></a> 0 (<a class="idref" href="mathcomp.algebra.matrix.html#mxvec_index"><span class="id" title="definition">mxvec_index</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#i"><span class="id" title="variable">i</span></a> <a class="idref" href="mathcomp.algebra.matrix.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.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#A"><span class="id" title="variable">A</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#i"><span class="id" title="variable">i</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#j"><span class="id" title="variable">j</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="mxvecK"><span class="id" title="lemma">mxvecK</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.matrix.html#mxvec"><span class="id" title="definition">mxvec</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#vec_mx"><span class="id" title="definition">vec_mx</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="vec_mxK"><span class="id" title="lemma">vec_mxK</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.matrix.html#vec_mx"><span class="id" title="definition">vec_mx</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#mxvec"><span class="id" title="definition">mxvec</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="curry_mxvec_bij"><span class="id" title="lemma">curry_mxvec_bij</span></a> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#59b0bfb23a642e2d3d15d13178fc2b18"><span class="id" title="notation">{</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#59b0bfb23a642e2d3d15d13178fc2b18"><span class="id" title="notation">on</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_</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#9de6d53cccc27f521f3ab56b38159140"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.matrix.html#MatrixStructural.VecMatrix.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.matrix.html#MatrixStructural.VecMatrix.n"><span class="id" title="variable">n</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#9de6d53cccc27f521f3ab56b38159140"><span class="id" title="notation">)</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#59b0bfb23a642e2d3d15d13178fc2b18"><span class="id" title="notation">,</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#59b0bfb23a642e2d3d15d13178fc2b18"><span class="id" title="notation">bijective</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#59b0bfb23a642e2d3d15d13178fc2b18"><span class="id" title="notation">(</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#prod_curry"><span class="id" title="definition">prod_curry</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#mxvec_index"><span class="id" title="definition">mxvec_index</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#59b0bfb23a642e2d3d15d13178fc2b18"><span class="id" title="notation">)}</span></a>.<br/> + +<br/> +<span class="id" title="keyword">End</span> <a class="idref" href="mathcomp.algebra.matrix.html#MatrixStructural.VecMatrix"><span class="id" title="section">VecMatrix</span></a>.<br/> + +<br/> +<span class="id" title="keyword">End</span> <a class="idref" href="mathcomp.algebra.matrix.html#MatrixStructural"><span class="id" title="section">MatrixStructural</span></a>.<br/> + +<br/> + +<br/> +<span class="id" title="keyword">Notation</span> <a name="0efdd62d084b88acb1b2860eed745d54"><span class="id" title="notation">"</span></a>A ^T" := (<a class="idref" href="mathcomp.algebra.matrix.html#trmx"><span class="id" title="definition">trmx</span></a> <span class="id" title="var">A</span>) : <span class="id" title="var">ring_scope</span>.<br/> + +<br/> +</div> + +<div class="doc"> + Matrix parametricity. +</div> +<div class="code"> +<span class="id" title="keyword">Section</span> <a name="MapMatrix"><span class="id" title="section">MapMatrix</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Variables</span> (<a name="MapMatrix.aT"><span class="id" title="variable">aT</span></a> <a name="MapMatrix.rT"><span class="id" title="variable">rT</span></a> : <span class="id" title="keyword">Type</span>) (<a name="MapMatrix.f"><span class="id" title="variable">f</span></a> : <a class="idref" href="mathcomp.algebra.matrix.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.matrix.html#rT"><span class="id" title="variable">rT</span></a>).<br/> + +<br/> +<span class="id" title="keyword">Fact</span> <a name="map_mx_key"><span class="id" title="lemma">map_mx_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="map_mx"><span class="id" title="definition">map_mx</span></a> <span class="id" title="var">m</span> <span class="id" title="var">n</span> (<span class="id" title="var">A</span> : <a class="idref" href="mathcomp.algebra.matrix.html#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.matrix.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.matrix.html#n"><span class="id" title="variable">n</span></a><a class="idref" href="mathcomp.algebra.matrix.html#cb37620352ad6b90a047a361359e2f04"><span class="id" title="notation">)</span></a>) := <a class="idref" href="mathcomp.algebra.matrix.html#667138260bfba6c8c1be5dda11faf290"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.algebra.matrix.html#667138260bfba6c8c1be5dda11faf290"><span class="id" title="notation">matrix</span></a><a class="idref" href="mathcomp.algebra.matrix.html#667138260bfba6c8c1be5dda11faf290"><span class="id" title="notation">[</span></a><a class="idref" href="mathcomp.algebra.matrix.html#map_mx_key"><span class="id" title="lemma">map_mx_key</span></a><a class="idref" href="mathcomp.algebra.matrix.html#667138260bfba6c8c1be5dda11faf290"><span class="id" title="notation">]</span></a><a class="idref" href="mathcomp.algebra.matrix.html#667138260bfba6c8c1be5dda11faf290"><span class="id" title="notation">_</span></a><a class="idref" href="mathcomp.algebra.matrix.html#667138260bfba6c8c1be5dda11faf290"><span class="id" title="notation">(</span></a><span class="id" title="var">i</span><a class="idref" href="mathcomp.algebra.matrix.html#667138260bfba6c8c1be5dda11faf290"><span class="id" title="notation">,</span></a> <span class="id" title="var">j</span><a class="idref" href="mathcomp.algebra.matrix.html#667138260bfba6c8c1be5dda11faf290"><span class="id" title="notation">)</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#MapMatrix.f"><span class="id" title="variable">f</span></a> (<a class="idref" href="mathcomp.algebra.matrix.html#A"><span class="id" title="variable">A</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#i"><span class="id" title="variable">i</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#j"><span class="id" title="variable">j</span></a>).<br/> + +<br/> +<span class="id" title="keyword">Notation</span> <a name="b445d3501620da3b306ed068f7c864a7"><span class="id" title="notation">"</span></a>A ^f" := (<a class="idref" href="mathcomp.algebra.matrix.html#map_mx"><span class="id" title="definition">map_mx</span></a> <span class="id" title="var">A</span>) : <span class="id" title="var">ring_scope</span>.<br/> + +<br/> +<span class="id" title="keyword">Section</span> <a name="MapMatrix.OneMatrix"><span class="id" title="section">OneMatrix</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Variables</span> (<a name="MapMatrix.OneMatrix.m"><span class="id" title="variable">m</span></a> <a name="MapMatrix.OneMatrix.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="MapMatrix.OneMatrix.A"><span class="id" title="variable">A</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.matrix.html#MapMatrix.aT"><span class="id" title="variable">aT</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.matrix.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.matrix.html#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/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="map_trmx"><span class="id" title="lemma">map_trmx</span></a> : <a class="idref" href="mathcomp.algebra.matrix.html#MapMatrix.OneMatrix.A"><span class="id" title="variable">A</span></a><a class="idref" href="mathcomp.algebra.matrix.html#b445d3501620da3b306ed068f7c864a7"><span class="id" title="notation">^</span></a><a class="idref" href="mathcomp.algebra.matrix.html#b445d3501620da3b306ed068f7c864a7"><span class="id" title="notation">f</span></a><a class="idref" href="mathcomp.algebra.matrix.html#0efdd62d084b88acb1b2860eed745d54"><span class="id" title="notation">^</span></a><a class="idref" href="mathcomp.algebra.matrix.html#0efdd62d084b88acb1b2860eed745d54"><span class="id" title="notation">T</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#MapMatrix.OneMatrix.A"><span class="id" title="variable">A</span></a><a class="idref" href="mathcomp.algebra.matrix.html#0efdd62d084b88acb1b2860eed745d54"><span class="id" title="notation">^</span></a><a class="idref" href="mathcomp.algebra.matrix.html#0efdd62d084b88acb1b2860eed745d54"><span class="id" title="notation">T</span></a><a class="idref" href="mathcomp.algebra.matrix.html#b445d3501620da3b306ed068f7c864a7"><span class="id" title="notation">^</span></a><a class="idref" href="mathcomp.algebra.matrix.html#b445d3501620da3b306ed068f7c864a7"><span class="id" title="notation">f</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="map_const_mx"><span class="id" title="lemma">map_const_mx</span></a> <span class="id" title="var">a</span> : <a class="idref" href="mathcomp.algebra.matrix.html#b445d3501620da3b306ed068f7c864a7"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.matrix.html#const_mx"><span class="id" title="definition">const_mx</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#a"><span class="id" title="variable">a</span></a><a class="idref" href="mathcomp.algebra.matrix.html#b445d3501620da3b306ed068f7c864a7"><span class="id" title="notation">)^</span></a><a class="idref" href="mathcomp.algebra.matrix.html#b445d3501620da3b306ed068f7c864a7"><span class="id" title="notation">f</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#8f9364556521ebb498093f28eea2240f"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#const_mx"><span class="id" title="definition">const_mx</span></a> (<a class="idref" href="mathcomp.algebra.matrix.html#MapMatrix.f"><span class="id" title="variable">f</span></a> <a class="idref" href="mathcomp.algebra.matrix.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#8f9364556521ebb498093f28eea2240f"><span class="id" title="notation">:></span></a> <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.matrix.html#MapMatrix.OneMatrix.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.matrix.html#MapMatrix.OneMatrix.n"><span class="id" title="variable">n</span></a><a class="idref" href="mathcomp.algebra.matrix.html#cb37620352ad6b90a047a361359e2f04"><span class="id" title="notation">)</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="map_row"><span class="id" title="lemma">map_row</span></a> <span class="id" title="var">i</span> : <a class="idref" href="mathcomp.algebra.matrix.html#b445d3501620da3b306ed068f7c864a7"><span class="id" title="notation">(</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.matrix.html#i"><span class="id" title="variable">i</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#MapMatrix.OneMatrix.A"><span class="id" title="variable">A</span></a><a class="idref" href="mathcomp.algebra.matrix.html#b445d3501620da3b306ed068f7c864a7"><span class="id" title="notation">)^</span></a><a class="idref" href="mathcomp.algebra.matrix.html#b445d3501620da3b306ed068f7c864a7"><span class="id" title="notation">f</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#row"><span class="id" title="definition">row</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#i"><span class="id" title="variable">i</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#MapMatrix.OneMatrix.A"><span class="id" title="variable">A</span></a><a class="idref" href="mathcomp.algebra.matrix.html#b445d3501620da3b306ed068f7c864a7"><span class="id" title="notation">^</span></a><a class="idref" href="mathcomp.algebra.matrix.html#b445d3501620da3b306ed068f7c864a7"><span class="id" title="notation">f</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="map_col"><span class="id" title="lemma">map_col</span></a> <span class="id" title="var">j</span> : <a class="idref" href="mathcomp.algebra.matrix.html#b445d3501620da3b306ed068f7c864a7"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.matrix.html#col"><span class="id" title="definition">col</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#j"><span class="id" title="variable">j</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#MapMatrix.OneMatrix.A"><span class="id" title="variable">A</span></a><a class="idref" href="mathcomp.algebra.matrix.html#b445d3501620da3b306ed068f7c864a7"><span class="id" title="notation">)^</span></a><a class="idref" href="mathcomp.algebra.matrix.html#b445d3501620da3b306ed068f7c864a7"><span class="id" title="notation">f</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#col"><span class="id" title="definition">col</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#j"><span class="id" title="variable">j</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#MapMatrix.OneMatrix.A"><span class="id" title="variable">A</span></a><a class="idref" href="mathcomp.algebra.matrix.html#b445d3501620da3b306ed068f7c864a7"><span class="id" title="notation">^</span></a><a class="idref" href="mathcomp.algebra.matrix.html#b445d3501620da3b306ed068f7c864a7"><span class="id" title="notation">f</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="map_row'"><span class="id" title="lemma">map_row'</span></a> <span class="id" title="var">i0</span> : <a class="idref" href="mathcomp.algebra.matrix.html#b445d3501620da3b306ed068f7c864a7"><span class="id" title="notation">(</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.matrix.html#i0"><span class="id" title="variable">i0</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#MapMatrix.OneMatrix.A"><span class="id" title="variable">A</span></a><a class="idref" href="mathcomp.algebra.matrix.html#b445d3501620da3b306ed068f7c864a7"><span class="id" title="notation">)^</span></a><a class="idref" href="mathcomp.algebra.matrix.html#b445d3501620da3b306ed068f7c864a7"><span class="id" title="notation">f</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#row'"><span class="id" title="definition">row'</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#i0"><span class="id" title="variable">i0</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#MapMatrix.OneMatrix.A"><span class="id" title="variable">A</span></a><a class="idref" href="mathcomp.algebra.matrix.html#b445d3501620da3b306ed068f7c864a7"><span class="id" title="notation">^</span></a><a class="idref" href="mathcomp.algebra.matrix.html#b445d3501620da3b306ed068f7c864a7"><span class="id" title="notation">f</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="map_col'"><span class="id" title="lemma">map_col'</span></a> <span class="id" title="var">j0</span> : <a class="idref" href="mathcomp.algebra.matrix.html#b445d3501620da3b306ed068f7c864a7"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.matrix.html#col'"><span class="id" title="definition">col'</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#j0"><span class="id" title="variable">j0</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#MapMatrix.OneMatrix.A"><span class="id" title="variable">A</span></a><a class="idref" href="mathcomp.algebra.matrix.html#b445d3501620da3b306ed068f7c864a7"><span class="id" title="notation">)^</span></a><a class="idref" href="mathcomp.algebra.matrix.html#b445d3501620da3b306ed068f7c864a7"><span class="id" title="notation">f</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#col'"><span class="id" title="definition">col'</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#j0"><span class="id" title="variable">j0</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#MapMatrix.OneMatrix.A"><span class="id" title="variable">A</span></a><a class="idref" href="mathcomp.algebra.matrix.html#b445d3501620da3b306ed068f7c864a7"><span class="id" title="notation">^</span></a><a class="idref" href="mathcomp.algebra.matrix.html#b445d3501620da3b306ed068f7c864a7"><span class="id" title="notation">f</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="map_row_perm"><span class="id" title="lemma">map_row_perm</span></a> <span class="id" title="var">s</span> : <a class="idref" href="mathcomp.algebra.matrix.html#b445d3501620da3b306ed068f7c864a7"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.matrix.html#row_perm"><span class="id" title="definition">row_perm</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#s"><span class="id" title="variable">s</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#MapMatrix.OneMatrix.A"><span class="id" title="variable">A</span></a><a class="idref" href="mathcomp.algebra.matrix.html#b445d3501620da3b306ed068f7c864a7"><span class="id" title="notation">)^</span></a><a class="idref" href="mathcomp.algebra.matrix.html#b445d3501620da3b306ed068f7c864a7"><span class="id" title="notation">f</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#row_perm"><span class="id" title="definition">row_perm</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#s"><span class="id" title="variable">s</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#MapMatrix.OneMatrix.A"><span class="id" title="variable">A</span></a><a class="idref" href="mathcomp.algebra.matrix.html#b445d3501620da3b306ed068f7c864a7"><span class="id" title="notation">^</span></a><a class="idref" href="mathcomp.algebra.matrix.html#b445d3501620da3b306ed068f7c864a7"><span class="id" title="notation">f</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="map_col_perm"><span class="id" title="lemma">map_col_perm</span></a> <span class="id" title="var">s</span> : <a class="idref" href="mathcomp.algebra.matrix.html#b445d3501620da3b306ed068f7c864a7"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.matrix.html#col_perm"><span class="id" title="definition">col_perm</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#s"><span class="id" title="variable">s</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#MapMatrix.OneMatrix.A"><span class="id" title="variable">A</span></a><a class="idref" href="mathcomp.algebra.matrix.html#b445d3501620da3b306ed068f7c864a7"><span class="id" title="notation">)^</span></a><a class="idref" href="mathcomp.algebra.matrix.html#b445d3501620da3b306ed068f7c864a7"><span class="id" title="notation">f</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#col_perm"><span class="id" title="definition">col_perm</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#s"><span class="id" title="variable">s</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#MapMatrix.OneMatrix.A"><span class="id" title="variable">A</span></a><a class="idref" href="mathcomp.algebra.matrix.html#b445d3501620da3b306ed068f7c864a7"><span class="id" title="notation">^</span></a><a class="idref" href="mathcomp.algebra.matrix.html#b445d3501620da3b306ed068f7c864a7"><span class="id" title="notation">f</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="map_xrow"><span class="id" title="lemma">map_xrow</span></a> <span class="id" title="var">i1</span> <span class="id" title="var">i2</span> : <a class="idref" href="mathcomp.algebra.matrix.html#b445d3501620da3b306ed068f7c864a7"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.matrix.html#xrow"><span class="id" title="definition">xrow</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#i1"><span class="id" title="variable">i1</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#i2"><span class="id" title="variable">i2</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#MapMatrix.OneMatrix.A"><span class="id" title="variable">A</span></a><a class="idref" href="mathcomp.algebra.matrix.html#b445d3501620da3b306ed068f7c864a7"><span class="id" title="notation">)^</span></a><a class="idref" href="mathcomp.algebra.matrix.html#b445d3501620da3b306ed068f7c864a7"><span class="id" title="notation">f</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#xrow"><span class="id" title="definition">xrow</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#i1"><span class="id" title="variable">i1</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#i2"><span class="id" title="variable">i2</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#MapMatrix.OneMatrix.A"><span class="id" title="variable">A</span></a><a class="idref" href="mathcomp.algebra.matrix.html#b445d3501620da3b306ed068f7c864a7"><span class="id" title="notation">^</span></a><a class="idref" href="mathcomp.algebra.matrix.html#b445d3501620da3b306ed068f7c864a7"><span class="id" title="notation">f</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="map_xcol"><span class="id" title="lemma">map_xcol</span></a> <span class="id" title="var">j1</span> <span class="id" title="var">j2</span> : <a class="idref" href="mathcomp.algebra.matrix.html#b445d3501620da3b306ed068f7c864a7"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.matrix.html#xcol"><span class="id" title="definition">xcol</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#j1"><span class="id" title="variable">j1</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#j2"><span class="id" title="variable">j2</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#MapMatrix.OneMatrix.A"><span class="id" title="variable">A</span></a><a class="idref" href="mathcomp.algebra.matrix.html#b445d3501620da3b306ed068f7c864a7"><span class="id" title="notation">)^</span></a><a class="idref" href="mathcomp.algebra.matrix.html#b445d3501620da3b306ed068f7c864a7"><span class="id" title="notation">f</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#xcol"><span class="id" title="definition">xcol</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#j1"><span class="id" title="variable">j1</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#j2"><span class="id" title="variable">j2</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#MapMatrix.OneMatrix.A"><span class="id" title="variable">A</span></a><a class="idref" href="mathcomp.algebra.matrix.html#b445d3501620da3b306ed068f7c864a7"><span class="id" title="notation">^</span></a><a class="idref" href="mathcomp.algebra.matrix.html#b445d3501620da3b306ed068f7c864a7"><span class="id" title="notation">f</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="map_castmx"><span class="id" title="lemma">map_castmx</span></a> <span class="id" title="var">m'</span> <span class="id" title="var">n'</span> <span class="id" title="var">c</span> : <a class="idref" href="mathcomp.algebra.matrix.html#b445d3501620da3b306ed068f7c864a7"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.matrix.html#castmx"><span class="id" title="definition">castmx</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#c"><span class="id" title="variable">c</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#MapMatrix.OneMatrix.A"><span class="id" title="variable">A</span></a><a class="idref" href="mathcomp.algebra.matrix.html#b445d3501620da3b306ed068f7c864a7"><span class="id" title="notation">)^</span></a><a class="idref" href="mathcomp.algebra.matrix.html#b445d3501620da3b306ed068f7c864a7"><span class="id" title="notation">f</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#8f9364556521ebb498093f28eea2240f"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#castmx"><span class="id" title="definition">castmx</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#c"><span class="id" title="variable">c</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#MapMatrix.OneMatrix.A"><span class="id" title="variable">A</span></a><a class="idref" href="mathcomp.algebra.matrix.html#b445d3501620da3b306ed068f7c864a7"><span class="id" title="notation">^</span></a><a class="idref" href="mathcomp.algebra.matrix.html#b445d3501620da3b306ed068f7c864a7"><span class="id" title="notation">f</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#8f9364556521ebb498093f28eea2240f"><span class="id" title="notation">:></span></a> <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.matrix.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.matrix.html#n'"><span class="id" title="variable">n'</span></a><a class="idref" href="mathcomp.algebra.matrix.html#cb37620352ad6b90a047a361359e2f04"><span class="id" title="notation">)</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="map_conform_mx"><span class="id" title="lemma">map_conform_mx</span></a> <span class="id" title="var">m'</span> <span class="id" title="var">n'</span> (<span class="id" title="var">B</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.matrix.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.matrix.html#n'"><span class="id" title="variable">n'</span></a><a class="idref" href="mathcomp.algebra.matrix.html#cb37620352ad6b90a047a361359e2f04"><span class="id" title="notation">)</span></a>) :<br/> + <a class="idref" href="mathcomp.algebra.matrix.html#b445d3501620da3b306ed068f7c864a7"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.matrix.html#conform_mx"><span class="id" title="definition">conform_mx</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#B"><span class="id" title="variable">B</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#MapMatrix.OneMatrix.A"><span class="id" title="variable">A</span></a><a class="idref" href="mathcomp.algebra.matrix.html#b445d3501620da3b306ed068f7c864a7"><span class="id" title="notation">)^</span></a><a class="idref" href="mathcomp.algebra.matrix.html#b445d3501620da3b306ed068f7c864a7"><span class="id" title="notation">f</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#conform_mx"><span class="id" title="definition">conform_mx</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#B"><span class="id" title="variable">B</span></a><a class="idref" href="mathcomp.algebra.matrix.html#b445d3501620da3b306ed068f7c864a7"><span class="id" title="notation">^</span></a><a class="idref" href="mathcomp.algebra.matrix.html#b445d3501620da3b306ed068f7c864a7"><span class="id" title="notation">f</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#MapMatrix.OneMatrix.A"><span class="id" title="variable">A</span></a><a class="idref" href="mathcomp.algebra.matrix.html#b445d3501620da3b306ed068f7c864a7"><span class="id" title="notation">^</span></a><a class="idref" href="mathcomp.algebra.matrix.html#b445d3501620da3b306ed068f7c864a7"><span class="id" title="notation">f</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="map_mxvec"><span class="id" title="lemma">map_mxvec</span></a> : <a class="idref" href="mathcomp.algebra.matrix.html#b445d3501620da3b306ed068f7c864a7"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.matrix.html#mxvec"><span class="id" title="definition">mxvec</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#MapMatrix.OneMatrix.A"><span class="id" title="variable">A</span></a><a class="idref" href="mathcomp.algebra.matrix.html#b445d3501620da3b306ed068f7c864a7"><span class="id" title="notation">)^</span></a><a class="idref" href="mathcomp.algebra.matrix.html#b445d3501620da3b306ed068f7c864a7"><span class="id" title="notation">f</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#mxvec"><span class="id" title="definition">mxvec</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#MapMatrix.OneMatrix.A"><span class="id" title="variable">A</span></a><a class="idref" href="mathcomp.algebra.matrix.html#b445d3501620da3b306ed068f7c864a7"><span class="id" title="notation">^</span></a><a class="idref" href="mathcomp.algebra.matrix.html#b445d3501620da3b306ed068f7c864a7"><span class="id" title="notation">f</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="map_vec_mx"><span class="id" title="lemma">map_vec_mx</span></a> (<span class="id" title="var">v</span> : <a class="idref" href="mathcomp.algebra.matrix.html#2bf09b7202225c789149165667752fab"><span class="id" title="notation">'</span></a><a class="idref" href="mathcomp.algebra.matrix.html#2bf09b7202225c789149165667752fab"><span class="id" title="notation">rV_</span></a><a class="idref" href="mathcomp.algebra.matrix.html#2bf09b7202225c789149165667752fab"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.matrix.html#MapMatrix.OneMatrix.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.matrix.html#MapMatrix.OneMatrix.n"><span class="id" title="variable">n</span></a><a class="idref" href="mathcomp.algebra.matrix.html#2bf09b7202225c789149165667752fab"><span class="id" title="notation">)</span></a>) : <a class="idref" href="mathcomp.algebra.matrix.html#b445d3501620da3b306ed068f7c864a7"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.matrix.html#vec_mx"><span class="id" title="definition">vec_mx</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#v"><span class="id" title="variable">v</span></a><a class="idref" href="mathcomp.algebra.matrix.html#b445d3501620da3b306ed068f7c864a7"><span class="id" title="notation">)^</span></a><a class="idref" href="mathcomp.algebra.matrix.html#b445d3501620da3b306ed068f7c864a7"><span class="id" title="notation">f</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#vec_mx"><span class="id" title="definition">vec_mx</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#v"><span class="id" title="variable">v</span></a><a class="idref" href="mathcomp.algebra.matrix.html#b445d3501620da3b306ed068f7c864a7"><span class="id" title="notation">^</span></a><a class="idref" href="mathcomp.algebra.matrix.html#b445d3501620da3b306ed068f7c864a7"><span class="id" title="notation">f</span></a>.<br/> + +<br/> +<span class="id" title="keyword">End</span> <a class="idref" href="mathcomp.algebra.matrix.html#MapMatrix.OneMatrix"><span class="id" title="section">OneMatrix</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Section</span> <a name="MapMatrix.Block"><span class="id" title="section">Block</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Variables</span> <a name="MapMatrix.Block.m1"><span class="id" title="variable">m1</span></a> <a name="MapMatrix.Block.m2"><span class="id" title="variable">m2</span></a> <a name="MapMatrix.Block.n1"><span class="id" title="variable">n1</span></a> <a name="MapMatrix.Block.n2"><span class="id" title="variable">n2</span></a> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#nat"><span class="id" title="inductive">nat</span></a>.<br/> +<span class="id" title="keyword">Variables</span> (<a name="MapMatrix.Block.Aul"><span class="id" title="variable">Aul</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.matrix.html#MapMatrix.aT"><span class="id" title="variable">aT</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.matrix.html#MapMatrix.Block.m1"><span class="id" title="variable">m1</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#MapMatrix.Block.n1"><span class="id" title="variable">n1</span></a><a class="idref" href="mathcomp.algebra.matrix.html#e36c289fb249221b43b9c978a67340fb"><span class="id" title="notation">)</span></a>) (<a name="MapMatrix.Block.Aur"><span class="id" title="variable">Aur</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.matrix.html#MapMatrix.aT"><span class="id" title="variable">aT</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.matrix.html#MapMatrix.Block.m1"><span class="id" title="variable">m1</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#MapMatrix.Block.n2"><span class="id" title="variable">n2</span></a><a class="idref" href="mathcomp.algebra.matrix.html#e36c289fb249221b43b9c978a67340fb"><span class="id" title="notation">)</span></a>).<br/> +<span class="id" title="keyword">Variables</span> (<a name="MapMatrix.Block.Adl"><span class="id" title="variable">Adl</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.matrix.html#MapMatrix.aT"><span class="id" title="variable">aT</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.matrix.html#MapMatrix.Block.m2"><span class="id" title="variable">m2</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#MapMatrix.Block.n1"><span class="id" title="variable">n1</span></a><a class="idref" href="mathcomp.algebra.matrix.html#e36c289fb249221b43b9c978a67340fb"><span class="id" title="notation">)</span></a>) (<a name="MapMatrix.Block.Adr"><span class="id" title="variable">Adr</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.matrix.html#MapMatrix.aT"><span class="id" title="variable">aT</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.matrix.html#MapMatrix.Block.m2"><span class="id" title="variable">m2</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#MapMatrix.Block.n2"><span class="id" title="variable">n2</span></a><a class="idref" href="mathcomp.algebra.matrix.html#e36c289fb249221b43b9c978a67340fb"><span class="id" title="notation">)</span></a>).<br/> +<span class="id" title="keyword">Variables</span> (<a name="MapMatrix.Block.Bh"><span class="id" title="variable">Bh</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.matrix.html#MapMatrix.aT"><span class="id" title="variable">aT</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.matrix.html#MapMatrix.Block.m1"><span class="id" title="variable">m1</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#MapMatrix.Block.n1"><span class="id" title="variable">n1</span></a> <a class="idref" href="mathcomp.ssreflect.ssrnat.html#b3eea360671e1b32b18a26e15b3aace3"><span class="id" title="notation">+</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#MapMatrix.Block.n2"><span class="id" title="variable">n2</span></a><a class="idref" href="mathcomp.algebra.matrix.html#e36c289fb249221b43b9c978a67340fb"><span class="id" title="notation">)</span></a>) (<a name="MapMatrix.Block.Bv"><span class="id" title="variable">Bv</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.matrix.html#MapMatrix.aT"><span class="id" title="variable">aT</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.matrix.html#MapMatrix.Block.m1"><span class="id" title="variable">m1</span></a> <a class="idref" href="mathcomp.ssreflect.ssrnat.html#b3eea360671e1b32b18a26e15b3aace3"><span class="id" title="notation">+</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#MapMatrix.Block.m2"><span class="id" title="variable">m2</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#MapMatrix.Block.n1"><span class="id" title="variable">n1</span></a><a class="idref" href="mathcomp.algebra.matrix.html#e36c289fb249221b43b9c978a67340fb"><span class="id" title="notation">)</span></a>).<br/> +<span class="id" title="keyword">Variable</span> <a name="MapMatrix.Block.B"><span class="id" title="variable">B</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.matrix.html#MapMatrix.aT"><span class="id" title="variable">aT</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.matrix.html#MapMatrix.Block.m1"><span class="id" title="variable">m1</span></a> <a class="idref" href="mathcomp.ssreflect.ssrnat.html#b3eea360671e1b32b18a26e15b3aace3"><span class="id" title="notation">+</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#MapMatrix.Block.m2"><span class="id" title="variable">m2</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#MapMatrix.Block.n1"><span class="id" title="variable">n1</span></a> <a class="idref" href="mathcomp.ssreflect.ssrnat.html#b3eea360671e1b32b18a26e15b3aace3"><span class="id" title="notation">+</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#MapMatrix.Block.n2"><span class="id" title="variable">n2</span></a><a class="idref" href="mathcomp.algebra.matrix.html#e36c289fb249221b43b9c978a67340fb"><span class="id" title="notation">)</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="map_row_mx"><span class="id" title="lemma">map_row_mx</span></a> : <a class="idref" href="mathcomp.algebra.matrix.html#b445d3501620da3b306ed068f7c864a7"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.matrix.html#row_mx"><span class="id" title="definition">row_mx</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#MapMatrix.Block.Aul"><span class="id" title="variable">Aul</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#MapMatrix.Block.Aur"><span class="id" title="variable">Aur</span></a><a class="idref" href="mathcomp.algebra.matrix.html#b445d3501620da3b306ed068f7c864a7"><span class="id" title="notation">)^</span></a><a class="idref" href="mathcomp.algebra.matrix.html#b445d3501620da3b306ed068f7c864a7"><span class="id" title="notation">f</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#row_mx"><span class="id" title="definition">row_mx</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#MapMatrix.Block.Aul"><span class="id" title="variable">Aul</span></a><a class="idref" href="mathcomp.algebra.matrix.html#b445d3501620da3b306ed068f7c864a7"><span class="id" title="notation">^</span></a><a class="idref" href="mathcomp.algebra.matrix.html#b445d3501620da3b306ed068f7c864a7"><span class="id" title="notation">f</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#MapMatrix.Block.Aur"><span class="id" title="variable">Aur</span></a><a class="idref" href="mathcomp.algebra.matrix.html#b445d3501620da3b306ed068f7c864a7"><span class="id" title="notation">^</span></a><a class="idref" href="mathcomp.algebra.matrix.html#b445d3501620da3b306ed068f7c864a7"><span class="id" title="notation">f</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="map_col_mx"><span class="id" title="lemma">map_col_mx</span></a> : <a class="idref" href="mathcomp.algebra.matrix.html#b445d3501620da3b306ed068f7c864a7"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.matrix.html#col_mx"><span class="id" title="definition">col_mx</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#MapMatrix.Block.Aul"><span class="id" title="variable">Aul</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#MapMatrix.Block.Adl"><span class="id" title="variable">Adl</span></a><a class="idref" href="mathcomp.algebra.matrix.html#b445d3501620da3b306ed068f7c864a7"><span class="id" title="notation">)^</span></a><a class="idref" href="mathcomp.algebra.matrix.html#b445d3501620da3b306ed068f7c864a7"><span class="id" title="notation">f</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#col_mx"><span class="id" title="definition">col_mx</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#MapMatrix.Block.Aul"><span class="id" title="variable">Aul</span></a><a class="idref" href="mathcomp.algebra.matrix.html#b445d3501620da3b306ed068f7c864a7"><span class="id" title="notation">^</span></a><a class="idref" href="mathcomp.algebra.matrix.html#b445d3501620da3b306ed068f7c864a7"><span class="id" title="notation">f</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#MapMatrix.Block.Adl"><span class="id" title="variable">Adl</span></a><a class="idref" href="mathcomp.algebra.matrix.html#b445d3501620da3b306ed068f7c864a7"><span class="id" title="notation">^</span></a><a class="idref" href="mathcomp.algebra.matrix.html#b445d3501620da3b306ed068f7c864a7"><span class="id" title="notation">f</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="map_block_mx"><span class="id" title="lemma">map_block_mx</span></a> :<br/> + <a class="idref" href="mathcomp.algebra.matrix.html#b445d3501620da3b306ed068f7c864a7"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.matrix.html#block_mx"><span class="id" title="definition">block_mx</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#MapMatrix.Block.Aul"><span class="id" title="variable">Aul</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#MapMatrix.Block.Aur"><span class="id" title="variable">Aur</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#MapMatrix.Block.Adl"><span class="id" title="variable">Adl</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#MapMatrix.Block.Adr"><span class="id" title="variable">Adr</span></a><a class="idref" href="mathcomp.algebra.matrix.html#b445d3501620da3b306ed068f7c864a7"><span class="id" title="notation">)^</span></a><a class="idref" href="mathcomp.algebra.matrix.html#b445d3501620da3b306ed068f7c864a7"><span class="id" title="notation">f</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#block_mx"><span class="id" title="definition">block_mx</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#MapMatrix.Block.Aul"><span class="id" title="variable">Aul</span></a><a class="idref" href="mathcomp.algebra.matrix.html#b445d3501620da3b306ed068f7c864a7"><span class="id" title="notation">^</span></a><a class="idref" href="mathcomp.algebra.matrix.html#b445d3501620da3b306ed068f7c864a7"><span class="id" title="notation">f</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#MapMatrix.Block.Aur"><span class="id" title="variable">Aur</span></a><a class="idref" href="mathcomp.algebra.matrix.html#b445d3501620da3b306ed068f7c864a7"><span class="id" title="notation">^</span></a><a class="idref" href="mathcomp.algebra.matrix.html#b445d3501620da3b306ed068f7c864a7"><span class="id" title="notation">f</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#MapMatrix.Block.Adl"><span class="id" title="variable">Adl</span></a><a class="idref" href="mathcomp.algebra.matrix.html#b445d3501620da3b306ed068f7c864a7"><span class="id" title="notation">^</span></a><a class="idref" href="mathcomp.algebra.matrix.html#b445d3501620da3b306ed068f7c864a7"><span class="id" title="notation">f</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#MapMatrix.Block.Adr"><span class="id" title="variable">Adr</span></a><a class="idref" href="mathcomp.algebra.matrix.html#b445d3501620da3b306ed068f7c864a7"><span class="id" title="notation">^</span></a><a class="idref" href="mathcomp.algebra.matrix.html#b445d3501620da3b306ed068f7c864a7"><span class="id" title="notation">f</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="map_lsubmx"><span class="id" title="lemma">map_lsubmx</span></a> : <a class="idref" href="mathcomp.algebra.matrix.html#b445d3501620da3b306ed068f7c864a7"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.matrix.html#lsubmx"><span class="id" title="definition">lsubmx</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#MapMatrix.Block.Bh"><span class="id" title="variable">Bh</span></a><a class="idref" href="mathcomp.algebra.matrix.html#b445d3501620da3b306ed068f7c864a7"><span class="id" title="notation">)^</span></a><a class="idref" href="mathcomp.algebra.matrix.html#b445d3501620da3b306ed068f7c864a7"><span class="id" title="notation">f</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#lsubmx"><span class="id" title="definition">lsubmx</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#MapMatrix.Block.Bh"><span class="id" title="variable">Bh</span></a><a class="idref" href="mathcomp.algebra.matrix.html#b445d3501620da3b306ed068f7c864a7"><span class="id" title="notation">^</span></a><a class="idref" href="mathcomp.algebra.matrix.html#b445d3501620da3b306ed068f7c864a7"><span class="id" title="notation">f</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="map_rsubmx"><span class="id" title="lemma">map_rsubmx</span></a> : <a class="idref" href="mathcomp.algebra.matrix.html#b445d3501620da3b306ed068f7c864a7"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.matrix.html#rsubmx"><span class="id" title="definition">rsubmx</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#MapMatrix.Block.Bh"><span class="id" title="variable">Bh</span></a><a class="idref" href="mathcomp.algebra.matrix.html#b445d3501620da3b306ed068f7c864a7"><span class="id" title="notation">)^</span></a><a class="idref" href="mathcomp.algebra.matrix.html#b445d3501620da3b306ed068f7c864a7"><span class="id" title="notation">f</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#rsubmx"><span class="id" title="definition">rsubmx</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#MapMatrix.Block.Bh"><span class="id" title="variable">Bh</span></a><a class="idref" href="mathcomp.algebra.matrix.html#b445d3501620da3b306ed068f7c864a7"><span class="id" title="notation">^</span></a><a class="idref" href="mathcomp.algebra.matrix.html#b445d3501620da3b306ed068f7c864a7"><span class="id" title="notation">f</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="map_usubmx"><span class="id" title="lemma">map_usubmx</span></a> : <a class="idref" href="mathcomp.algebra.matrix.html#b445d3501620da3b306ed068f7c864a7"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.matrix.html#usubmx"><span class="id" title="definition">usubmx</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#MapMatrix.Block.Bv"><span class="id" title="variable">Bv</span></a><a class="idref" href="mathcomp.algebra.matrix.html#b445d3501620da3b306ed068f7c864a7"><span class="id" title="notation">)^</span></a><a class="idref" href="mathcomp.algebra.matrix.html#b445d3501620da3b306ed068f7c864a7"><span class="id" title="notation">f</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#usubmx"><span class="id" title="definition">usubmx</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#MapMatrix.Block.Bv"><span class="id" title="variable">Bv</span></a><a class="idref" href="mathcomp.algebra.matrix.html#b445d3501620da3b306ed068f7c864a7"><span class="id" title="notation">^</span></a><a class="idref" href="mathcomp.algebra.matrix.html#b445d3501620da3b306ed068f7c864a7"><span class="id" title="notation">f</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="map_dsubmx"><span class="id" title="lemma">map_dsubmx</span></a> : <a class="idref" href="mathcomp.algebra.matrix.html#b445d3501620da3b306ed068f7c864a7"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.matrix.html#dsubmx"><span class="id" title="definition">dsubmx</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#MapMatrix.Block.Bv"><span class="id" title="variable">Bv</span></a><a class="idref" href="mathcomp.algebra.matrix.html#b445d3501620da3b306ed068f7c864a7"><span class="id" title="notation">)^</span></a><a class="idref" href="mathcomp.algebra.matrix.html#b445d3501620da3b306ed068f7c864a7"><span class="id" title="notation">f</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#dsubmx"><span class="id" title="definition">dsubmx</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#MapMatrix.Block.Bv"><span class="id" title="variable">Bv</span></a><a class="idref" href="mathcomp.algebra.matrix.html#b445d3501620da3b306ed068f7c864a7"><span class="id" title="notation">^</span></a><a class="idref" href="mathcomp.algebra.matrix.html#b445d3501620da3b306ed068f7c864a7"><span class="id" title="notation">f</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="map_ulsubmx"><span class="id" title="lemma">map_ulsubmx</span></a> : <a class="idref" href="mathcomp.algebra.matrix.html#b445d3501620da3b306ed068f7c864a7"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.matrix.html#ulsubmx"><span class="id" title="definition">ulsubmx</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#MapMatrix.Block.B"><span class="id" title="variable">B</span></a><a class="idref" href="mathcomp.algebra.matrix.html#b445d3501620da3b306ed068f7c864a7"><span class="id" title="notation">)^</span></a><a class="idref" href="mathcomp.algebra.matrix.html#b445d3501620da3b306ed068f7c864a7"><span class="id" title="notation">f</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#ulsubmx"><span class="id" title="definition">ulsubmx</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#MapMatrix.Block.B"><span class="id" title="variable">B</span></a><a class="idref" href="mathcomp.algebra.matrix.html#b445d3501620da3b306ed068f7c864a7"><span class="id" title="notation">^</span></a><a class="idref" href="mathcomp.algebra.matrix.html#b445d3501620da3b306ed068f7c864a7"><span class="id" title="notation">f</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="map_ursubmx"><span class="id" title="lemma">map_ursubmx</span></a> : <a class="idref" href="mathcomp.algebra.matrix.html#b445d3501620da3b306ed068f7c864a7"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.matrix.html#ursubmx"><span class="id" title="definition">ursubmx</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#MapMatrix.Block.B"><span class="id" title="variable">B</span></a><a class="idref" href="mathcomp.algebra.matrix.html#b445d3501620da3b306ed068f7c864a7"><span class="id" title="notation">)^</span></a><a class="idref" href="mathcomp.algebra.matrix.html#b445d3501620da3b306ed068f7c864a7"><span class="id" title="notation">f</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#ursubmx"><span class="id" title="definition">ursubmx</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#MapMatrix.Block.B"><span class="id" title="variable">B</span></a><a class="idref" href="mathcomp.algebra.matrix.html#b445d3501620da3b306ed068f7c864a7"><span class="id" title="notation">^</span></a><a class="idref" href="mathcomp.algebra.matrix.html#b445d3501620da3b306ed068f7c864a7"><span class="id" title="notation">f</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="map_dlsubmx"><span class="id" title="lemma">map_dlsubmx</span></a> : <a class="idref" href="mathcomp.algebra.matrix.html#b445d3501620da3b306ed068f7c864a7"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.matrix.html#dlsubmx"><span class="id" title="definition">dlsubmx</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#MapMatrix.Block.B"><span class="id" title="variable">B</span></a><a class="idref" href="mathcomp.algebra.matrix.html#b445d3501620da3b306ed068f7c864a7"><span class="id" title="notation">)^</span></a><a class="idref" href="mathcomp.algebra.matrix.html#b445d3501620da3b306ed068f7c864a7"><span class="id" title="notation">f</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#dlsubmx"><span class="id" title="definition">dlsubmx</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#MapMatrix.Block.B"><span class="id" title="variable">B</span></a><a class="idref" href="mathcomp.algebra.matrix.html#b445d3501620da3b306ed068f7c864a7"><span class="id" title="notation">^</span></a><a class="idref" href="mathcomp.algebra.matrix.html#b445d3501620da3b306ed068f7c864a7"><span class="id" title="notation">f</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="map_drsubmx"><span class="id" title="lemma">map_drsubmx</span></a> : <a class="idref" href="mathcomp.algebra.matrix.html#b445d3501620da3b306ed068f7c864a7"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.matrix.html#drsubmx"><span class="id" title="definition">drsubmx</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#MapMatrix.Block.B"><span class="id" title="variable">B</span></a><a class="idref" href="mathcomp.algebra.matrix.html#b445d3501620da3b306ed068f7c864a7"><span class="id" title="notation">)^</span></a><a class="idref" href="mathcomp.algebra.matrix.html#b445d3501620da3b306ed068f7c864a7"><span class="id" title="notation">f</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#drsubmx"><span class="id" title="definition">drsubmx</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#MapMatrix.Block.B"><span class="id" title="variable">B</span></a><a class="idref" href="mathcomp.algebra.matrix.html#b445d3501620da3b306ed068f7c864a7"><span class="id" title="notation">^</span></a><a class="idref" href="mathcomp.algebra.matrix.html#b445d3501620da3b306ed068f7c864a7"><span class="id" title="notation">f</span></a>.<br/> + +<br/> +<span class="id" title="keyword">End</span> <a class="idref" href="mathcomp.algebra.matrix.html#MapMatrix.Block"><span class="id" title="section">Block</span></a>.<br/> + +<br/> +<span class="id" title="keyword">End</span> <a class="idref" href="mathcomp.algebra.matrix.html#MapMatrix"><span class="id" title="section">MapMatrix</span></a>.<br/> + +<br/> +</div> + +<div class="doc"> + Matrix Zmodule (additive) structure ****************** +</div> +<div class="code"> + +<br/> +<span class="id" title="keyword">Section</span> <a name="MatrixZmodule"><span class="id" title="section">MatrixZmodule</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Variable</span> <a name="MatrixZmodule.V"><span class="id" title="variable">V</span></a> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Zmodule.Exports.zmodType"><span class="id" title="abbreviation">zmodType</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Section</span> <a name="MatrixZmodule.FixedDim"><span class="id" title="section">FixedDim</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Variables</span> <a name="MatrixZmodule.FixedDim.m"><span class="id" title="variable">m</span></a> <a name="MatrixZmodule.FixedDim.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/> +<span class="id" title="keyword">Implicit</span> <span class="id" title="keyword">Types</span> <span class="id" title="var">A</span> <span class="id" title="var">B</span> : <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.matrix.html#MatrixZmodule.V"><span class="id" title="variable">V</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.matrix.html#MatrixZmodule.FixedDim.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.matrix.html#MatrixZmodule.FixedDim.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/> + +<br/> +<span class="id" title="keyword">Fact</span> <a name="oppmx_key"><span class="id" title="lemma">oppmx_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">Fact</span> <a name="addmx_key"><span class="id" title="lemma">addmx_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="oppmx"><span class="id" title="definition">oppmx</span></a> <span class="id" title="var">A</span> := <a class="idref" href="mathcomp.algebra.matrix.html#667138260bfba6c8c1be5dda11faf290"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.algebra.matrix.html#667138260bfba6c8c1be5dda11faf290"><span class="id" title="notation">matrix</span></a><a class="idref" href="mathcomp.algebra.matrix.html#667138260bfba6c8c1be5dda11faf290"><span class="id" title="notation">[</span></a><a class="idref" href="mathcomp.algebra.matrix.html#oppmx_key"><span class="id" title="lemma">oppmx_key</span></a><a class="idref" href="mathcomp.algebra.matrix.html#667138260bfba6c8c1be5dda11faf290"><span class="id" title="notation">]</span></a><a class="idref" href="mathcomp.algebra.matrix.html#667138260bfba6c8c1be5dda11faf290"><span class="id" title="notation">_</span></a><a class="idref" href="mathcomp.algebra.matrix.html#667138260bfba6c8c1be5dda11faf290"><span class="id" title="notation">(</span></a><span class="id" title="var">i</span><a class="idref" href="mathcomp.algebra.matrix.html#667138260bfba6c8c1be5dda11faf290"><span class="id" title="notation">,</span></a> <span class="id" title="var">j</span><a class="idref" href="mathcomp.algebra.matrix.html#667138260bfba6c8c1be5dda11faf290"><span class="id" title="notation">)</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#667138260bfba6c8c1be5dda11faf290"><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.matrix.html#A"><span class="id" title="variable">A</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#i"><span class="id" title="variable">i</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#j"><span class="id" title="variable">j</span></a><a class="idref" href="mathcomp.algebra.matrix.html#667138260bfba6c8c1be5dda11faf290"><span class="id" title="notation">)</span></a>.<br/> +<span class="id" title="keyword">Definition</span> <a name="addmx"><span class="id" title="definition">addmx</span></a> <span class="id" title="var">A</span> <span class="id" title="var">B</span> := <a class="idref" href="mathcomp.algebra.matrix.html#667138260bfba6c8c1be5dda11faf290"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.algebra.matrix.html#667138260bfba6c8c1be5dda11faf290"><span class="id" title="notation">matrix</span></a><a class="idref" href="mathcomp.algebra.matrix.html#667138260bfba6c8c1be5dda11faf290"><span class="id" title="notation">[</span></a><a class="idref" href="mathcomp.algebra.matrix.html#addmx_key"><span class="id" title="lemma">addmx_key</span></a><a class="idref" href="mathcomp.algebra.matrix.html#667138260bfba6c8c1be5dda11faf290"><span class="id" title="notation">]</span></a><a class="idref" href="mathcomp.algebra.matrix.html#667138260bfba6c8c1be5dda11faf290"><span class="id" title="notation">_</span></a><a class="idref" href="mathcomp.algebra.matrix.html#667138260bfba6c8c1be5dda11faf290"><span class="id" title="notation">(</span></a><span class="id" title="var">i</span><a class="idref" href="mathcomp.algebra.matrix.html#667138260bfba6c8c1be5dda11faf290"><span class="id" title="notation">,</span></a> <span class="id" title="var">j</span><a class="idref" href="mathcomp.algebra.matrix.html#667138260bfba6c8c1be5dda11faf290"><span class="id" title="notation">)</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#667138260bfba6c8c1be5dda11faf290"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.matrix.html#A"><span class="id" title="variable">A</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#i"><span class="id" title="variable">i</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#j"><span class="id" title="variable">j</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#ae4d81913e6239182a9ac7467ffde8cd"><span class="id" title="notation">+</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#B"><span class="id" title="variable">B</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#i"><span class="id" title="variable">i</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#j"><span class="id" title="variable">j</span></a><a class="idref" href="mathcomp.algebra.matrix.html#667138260bfba6c8c1be5dda11faf290"><span class="id" title="notation">)</span></a>.<br/> +</div> + +<div class="doc"> + In principle, diag_mx and scalar_mx could be defined here, but since they + only make sense with the graded ring operations, we defer them to the + next section. +</div> +<div class="code"> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="addmxA"><span class="id" title="lemma">addmxA</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.matrix.html#addmx"><span class="id" title="definition">addmx</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="addmxC"><span class="id" title="lemma">addmxC</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.matrix.html#addmx"><span class="id" title="definition">addmx</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="add0mx"><span class="id" title="lemma">add0mx</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.matrix.html#const_mx"><span class="id" title="definition">const_mx</span></a> 0) <a class="idref" href="mathcomp.algebra.matrix.html#addmx"><span class="id" title="definition">addmx</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="addNmx"><span class="id" title="lemma">addNmx</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.matrix.html#const_mx"><span class="id" title="definition">const_mx</span></a> 0) <a class="idref" href="mathcomp.algebra.matrix.html#oppmx"><span class="id" title="definition">oppmx</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#addmx"><span class="id" title="definition">addmx</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Definition</span> <a name="matrix_zmodMixin"><span class="id" title="definition">matrix_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.matrix.html#addmxA"><span class="id" title="lemma">addmxA</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#addmxC"><span class="id" title="lemma">addmxC</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#add0mx"><span class="id" title="lemma">add0mx</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#addNmx"><span class="id" title="lemma">addNmx</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Canonical</span> <span class="id" title="var">matrix_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.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.matrix.html#MatrixZmodule.V"><span class="id" title="variable">V</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.matrix.html#MatrixZmodule.FixedDim.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.matrix.html#MatrixZmodule.FixedDim.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#matrix_zmodMixin"><span class="id" title="definition">matrix_zmodMixin</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="mulmxnE"><span class="id" title="lemma">mulmxnE</span></a> <span class="id" title="var">A</span> <span class="id" title="var">d</span> <span class="id" title="var">i</span> <span class="id" title="var">j</span> : (<a class="idref" href="mathcomp.algebra.matrix.html#A"><span class="id" title="variable">A</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#891e51846c7d1d63a9cb5458374cf308"><span class="id" title="notation">*+</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#d"><span class="id" title="variable">d</span></a>) <a class="idref" href="mathcomp.algebra.matrix.html#i"><span class="id" title="variable">i</span></a> <a class="idref" href="mathcomp.algebra.matrix.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.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#A"><span class="id" title="variable">A</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#i"><span class="id" title="variable">i</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#j"><span class="id" title="variable">j</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#891e51846c7d1d63a9cb5458374cf308"><span class="id" title="notation">*+</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#d"><span class="id" title="variable">d</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="summxE"><span class="id" title="lemma">summxE</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.matrix.html#I"><span class="id" title="variable">I</span></a>) (<span class="id" title="var">E</span> : <a class="idref" href="mathcomp.algebra.matrix.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.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.matrix.html#MatrixZmodule.FixedDim.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.matrix.html#MatrixZmodule.FixedDim.n"><span class="id" title="variable">n</span></a><a class="idref" href="mathcomp.algebra.matrix.html#cb37620352ad6b90a047a361359e2f04"><span class="id" title="notation">)</span></a>) <span class="id" title="var">i</span> <span class="id" title="var">j</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">k</span> <a class="idref" href="mathcomp.algebra.ssralg.html#cbc2f2ab11c1c376b5c4511d28b14d74"><span class="id" title="notation"><-</span></a> <a class="idref" href="mathcomp.algebra.matrix.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.matrix.html#P"><span class="id" title="variable">P</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#k"><span class="id" title="variable">k</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#cbc2f2ab11c1c376b5c4511d28b14d74"><span class="id" title="notation">)</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#E"><span class="id" title="variable">E</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#k"><span class="id" title="variable">k</span></a>) <a class="idref" href="mathcomp.algebra.matrix.html#i"><span class="id" title="variable">i</span></a> <a class="idref" href="mathcomp.algebra.matrix.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.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">k</span> <a class="idref" href="mathcomp.algebra.ssralg.html#cbc2f2ab11c1c376b5c4511d28b14d74"><span class="id" title="notation"><-</span></a> <a class="idref" href="mathcomp.algebra.matrix.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.matrix.html#P"><span class="id" title="variable">P</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#k"><span class="id" title="variable">k</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#cbc2f2ab11c1c376b5c4511d28b14d74"><span class="id" title="notation">)</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#E"><span class="id" title="variable">E</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#k"><span class="id" title="variable">k</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#i"><span class="id" title="variable">i</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#j"><span class="id" title="variable">j</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="const_mx_is_additive"><span class="id" title="lemma">const_mx_is_additive</span></a> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Additive.Exports.additive"><span class="id" title="abbreviation">additive</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#const_mx"><span class="id" title="definition">const_mx</span></a>.<br/> + <span class="id" title="keyword">Canonical</span> <span class="id" title="var">const_mx_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.matrix.html#const_mx_is_additive"><span class="id" title="lemma">const_mx_is_additive</span></a>.<br/> + +<br/> +<span class="id" title="keyword">End</span> <a class="idref" href="mathcomp.algebra.matrix.html#MatrixZmodule.FixedDim"><span class="id" title="section">FixedDim</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Section</span> <a name="MatrixZmodule.Additive"><span class="id" title="section">Additive</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Variables</span> (<a name="MatrixZmodule.Additive.m"><span class="id" title="variable">m</span></a> <a name="MatrixZmodule.Additive.n"><span class="id" title="variable">n</span></a> <a name="MatrixZmodule.Additive.p"><span class="id" title="variable">p</span></a> <a name="MatrixZmodule.Additive.q"><span class="id" title="variable">q</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="MatrixZmodule.Additive.f"><span class="id" title="variable">f</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_p</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.ssreflect.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_q</span></a> <a class="idref" href="http://coq.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.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_m</span></a>) (<a name="MatrixZmodule.Additive.g"><span class="id" title="variable">g</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_p</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.ssreflect.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_q</span></a> <a class="idref" href="http://coq.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.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/> + +<br/> +<span class="id" title="keyword">Definition</span> <a name="swizzle_mx"><span class="id" title="definition">swizzle_mx</span></a> <span class="id" title="var">k</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.matrix.html#MatrixZmodule.V"><span class="id" title="variable">V</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.matrix.html#MatrixZmodule.Additive.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.matrix.html#MatrixZmodule.Additive.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/> + <a class="idref" href="mathcomp.algebra.matrix.html#667138260bfba6c8c1be5dda11faf290"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.algebra.matrix.html#667138260bfba6c8c1be5dda11faf290"><span class="id" title="notation">matrix</span></a><a class="idref" href="mathcomp.algebra.matrix.html#667138260bfba6c8c1be5dda11faf290"><span class="id" title="notation">[</span></a><a class="idref" href="mathcomp.algebra.matrix.html#k"><span class="id" title="variable">k</span></a><a class="idref" href="mathcomp.algebra.matrix.html#667138260bfba6c8c1be5dda11faf290"><span class="id" title="notation">]</span></a><a class="idref" href="mathcomp.algebra.matrix.html#667138260bfba6c8c1be5dda11faf290"><span class="id" title="notation">_</span></a><a class="idref" href="mathcomp.algebra.matrix.html#667138260bfba6c8c1be5dda11faf290"><span class="id" title="notation">(</span></a><span class="id" title="var">i</span><a class="idref" href="mathcomp.algebra.matrix.html#667138260bfba6c8c1be5dda11faf290"><span class="id" title="notation">,</span></a> <span class="id" title="var">j</span><a class="idref" href="mathcomp.algebra.matrix.html#667138260bfba6c8c1be5dda11faf290"><span class="id" title="notation">)</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#A"><span class="id" title="variable">A</span></a> (<a class="idref" href="mathcomp.algebra.matrix.html#MatrixZmodule.Additive.f"><span class="id" title="variable">f</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#i"><span class="id" title="variable">i</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#j"><span class="id" title="variable">j</span></a>) (<a class="idref" href="mathcomp.algebra.matrix.html#MatrixZmodule.Additive.g"><span class="id" title="variable">g</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#i"><span class="id" title="variable">i</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#j"><span class="id" title="variable">j</span></a>).<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="swizzle_mx_is_additive"><span class="id" title="lemma">swizzle_mx_is_additive</span></a> <span class="id" title="var">k</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.matrix.html#swizzle_mx"><span class="id" title="definition">swizzle_mx</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#k"><span class="id" title="variable">k</span></a>).<br/> + <span class="id" title="keyword">Canonical</span> <span class="id" title="var">swizzle_mx_additive</span> <span class="id" title="var">k</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.matrix.html#swizzle_mx_is_additive"><span class="id" title="lemma">swizzle_mx_is_additive</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#k"><span class="id" title="variable">k</span></a>).<br/> + +<br/> +<span class="id" title="keyword">End</span> <a class="idref" href="mathcomp.algebra.matrix.html#MatrixZmodule.Additive"><span class="id" title="section">Additive</span></a>.<br/> + +<br/> + +<br/> +<span class="id" title="keyword">Canonical</span> <span class="id" title="var">trmx_additive</span> <span class="id" title="var">m</span> <span class="id" title="var">n</span> := <a class="idref" href="mathcomp.algebra.matrix.html#SwizzleAdd"><span class="id" title="abbreviation">SwizzleAdd</span></a> (@<a class="idref" href="mathcomp.algebra.matrix.html#trmx"><span class="id" title="definition">trmx</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#MatrixZmodule.V"><span class="id" title="variable">V</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#m"><span class="id" title="variable">m</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#n"><span class="id" title="variable">n</span></a>).<br/> +<span class="id" title="keyword">Canonical</span> <span class="id" title="var">row_additive</span> <span class="id" title="var">m</span> <span class="id" title="var">n</span> <span class="id" title="var">i</span> := <a class="idref" href="mathcomp.algebra.matrix.html#SwizzleAdd"><span class="id" title="abbreviation">SwizzleAdd</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.matrix.html#MatrixZmodule.V"><span class="id" title="variable">V</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#m"><span class="id" title="variable">m</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#n"><span class="id" title="variable">n</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#i"><span class="id" title="variable">i</span></a>).<br/> +<span class="id" title="keyword">Canonical</span> <span class="id" title="var">col_additive</span> <span class="id" title="var">m</span> <span class="id" title="var">n</span> <span class="id" title="var">j</span> := <a class="idref" href="mathcomp.algebra.matrix.html#SwizzleAdd"><span class="id" title="abbreviation">SwizzleAdd</span></a> (@<a class="idref" href="mathcomp.algebra.matrix.html#col"><span class="id" title="definition">col</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#MatrixZmodule.V"><span class="id" title="variable">V</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#m"><span class="id" title="variable">m</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#n"><span class="id" title="variable">n</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#j"><span class="id" title="variable">j</span></a>).<br/> +<span class="id" title="keyword">Canonical</span> <span class="id" title="var">row'_additive</span> <span class="id" title="var">m</span> <span class="id" title="var">n</span> <span class="id" title="var">i</span> := <a class="idref" href="mathcomp.algebra.matrix.html#SwizzleAdd"><span class="id" title="abbreviation">SwizzleAdd</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.matrix.html#MatrixZmodule.V"><span class="id" title="variable">V</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#m"><span class="id" title="variable">m</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#n"><span class="id" title="variable">n</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#i"><span class="id" title="variable">i</span></a>).<br/> +<span class="id" title="keyword">Canonical</span> <span class="id" title="var">col'_additive</span> <span class="id" title="var">m</span> <span class="id" title="var">n</span> <span class="id" title="var">j</span> := <a class="idref" href="mathcomp.algebra.matrix.html#SwizzleAdd"><span class="id" title="abbreviation">SwizzleAdd</span></a> (@<a class="idref" href="mathcomp.algebra.matrix.html#col'"><span class="id" title="definition">col'</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#MatrixZmodule.V"><span class="id" title="variable">V</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#m"><span class="id" title="variable">m</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#n"><span class="id" title="variable">n</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#j"><span class="id" title="variable">j</span></a>).<br/> +<span class="id" title="keyword">Canonical</span> <span class="id" title="var">row_perm_additive</span> <span class="id" title="var">m</span> <span class="id" title="var">n</span> <span class="id" title="var">s</span> := <a class="idref" href="mathcomp.algebra.matrix.html#SwizzleAdd"><span class="id" title="abbreviation">SwizzleAdd</span></a> (@<a class="idref" href="mathcomp.algebra.matrix.html#row_perm"><span class="id" title="definition">row_perm</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#MatrixZmodule.V"><span class="id" title="variable">V</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#m"><span class="id" title="variable">m</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#n"><span class="id" title="variable">n</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#s"><span class="id" title="variable">s</span></a>).<br/> +<span class="id" title="keyword">Canonical</span> <span class="id" title="var">col_perm_additive</span> <span class="id" title="var">m</span> <span class="id" title="var">n</span> <span class="id" title="var">s</span> := <a class="idref" href="mathcomp.algebra.matrix.html#SwizzleAdd"><span class="id" title="abbreviation">SwizzleAdd</span></a> (@<a class="idref" href="mathcomp.algebra.matrix.html#col_perm"><span class="id" title="definition">col_perm</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#MatrixZmodule.V"><span class="id" title="variable">V</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#m"><span class="id" title="variable">m</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#n"><span class="id" title="variable">n</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#s"><span class="id" title="variable">s</span></a>).<br/> +<span class="id" title="keyword">Canonical</span> <span class="id" title="var">xrow_additive</span> <span class="id" title="var">m</span> <span class="id" title="var">n</span> <span class="id" title="var">i1</span> <span class="id" title="var">i2</span> := <a class="idref" href="mathcomp.algebra.matrix.html#SwizzleAdd"><span class="id" title="abbreviation">SwizzleAdd</span></a> (@<a class="idref" href="mathcomp.algebra.matrix.html#xrow"><span class="id" title="definition">xrow</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#MatrixZmodule.V"><span class="id" title="variable">V</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#m"><span class="id" title="variable">m</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#n"><span class="id" title="variable">n</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#i1"><span class="id" title="variable">i1</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#i2"><span class="id" title="variable">i2</span></a>).<br/> +<span class="id" title="keyword">Canonical</span> <span class="id" title="var">xcol_additive</span> <span class="id" title="var">m</span> <span class="id" title="var">n</span> <span class="id" title="var">j1</span> <span class="id" title="var">j2</span> := <a class="idref" href="mathcomp.algebra.matrix.html#SwizzleAdd"><span class="id" title="abbreviation">SwizzleAdd</span></a> (@<a class="idref" href="mathcomp.algebra.matrix.html#xcol"><span class="id" title="definition">xcol</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#MatrixZmodule.V"><span class="id" title="variable">V</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#m"><span class="id" title="variable">m</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#n"><span class="id" title="variable">n</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#j1"><span class="id" title="variable">j1</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#j2"><span class="id" title="variable">j2</span></a>).<br/> +<span class="id" title="keyword">Canonical</span> <span class="id" title="var">lsubmx_additive</span> <span class="id" title="var">m</span> <span class="id" title="var">n1</span> <span class="id" title="var">n2</span> := <a class="idref" href="mathcomp.algebra.matrix.html#SwizzleAdd"><span class="id" title="abbreviation">SwizzleAdd</span></a> (@<a class="idref" href="mathcomp.algebra.matrix.html#lsubmx"><span class="id" title="definition">lsubmx</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#MatrixZmodule.V"><span class="id" title="variable">V</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#m"><span class="id" title="variable">m</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#n1"><span class="id" title="variable">n1</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#n2"><span class="id" title="variable">n2</span></a>).<br/> +<span class="id" title="keyword">Canonical</span> <span class="id" title="var">rsubmx_additive</span> <span class="id" title="var">m</span> <span class="id" title="var">n1</span> <span class="id" title="var">n2</span> := <a class="idref" href="mathcomp.algebra.matrix.html#SwizzleAdd"><span class="id" title="abbreviation">SwizzleAdd</span></a> (@<a class="idref" href="mathcomp.algebra.matrix.html#rsubmx"><span class="id" title="definition">rsubmx</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#MatrixZmodule.V"><span class="id" title="variable">V</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#m"><span class="id" title="variable">m</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#n1"><span class="id" title="variable">n1</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#n2"><span class="id" title="variable">n2</span></a>).<br/> +<span class="id" title="keyword">Canonical</span> <span class="id" title="var">usubmx_additive</span> <span class="id" title="var">m1</span> <span class="id" title="var">m2</span> <span class="id" title="var">n</span> := <a class="idref" href="mathcomp.algebra.matrix.html#SwizzleAdd"><span class="id" title="abbreviation">SwizzleAdd</span></a> (@<a class="idref" href="mathcomp.algebra.matrix.html#usubmx"><span class="id" title="definition">usubmx</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#MatrixZmodule.V"><span class="id" title="variable">V</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#m1"><span class="id" title="variable">m1</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#m2"><span class="id" title="variable">m2</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#n"><span class="id" title="variable">n</span></a>).<br/> +<span class="id" title="keyword">Canonical</span> <span class="id" title="var">dsubmx_additive</span> <span class="id" title="var">m1</span> <span class="id" title="var">m2</span> <span class="id" title="var">n</span> := <a class="idref" href="mathcomp.algebra.matrix.html#SwizzleAdd"><span class="id" title="abbreviation">SwizzleAdd</span></a> (@<a class="idref" href="mathcomp.algebra.matrix.html#dsubmx"><span class="id" title="definition">dsubmx</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#MatrixZmodule.V"><span class="id" title="variable">V</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#m1"><span class="id" title="variable">m1</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#m2"><span class="id" title="variable">m2</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#n"><span class="id" title="variable">n</span></a>).<br/> +<span class="id" title="keyword">Canonical</span> <span class="id" title="var">vec_mx_additive</span> <span class="id" title="var">m</span> <span class="id" title="var">n</span> := <a class="idref" href="mathcomp.algebra.matrix.html#SwizzleAdd"><span class="id" title="abbreviation">SwizzleAdd</span></a> (@<a class="idref" href="mathcomp.algebra.matrix.html#vec_mx"><span class="id" title="definition">vec_mx</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#MatrixZmodule.V"><span class="id" title="variable">V</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#m"><span class="id" title="variable">m</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#n"><span class="id" title="variable">n</span></a>).<br/> +<span class="id" title="keyword">Canonical</span> <span class="id" title="var">mxvec_additive</span> <span class="id" title="var">m</span> <span class="id" title="var">n</span> :=<br/> + <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Additive.Exports.Additive"><span class="id" title="abbreviation">Additive</span></a> (<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Theory.can2_additive"><span class="id" title="definition">can2_additive</span></a> (@<a class="idref" href="mathcomp.algebra.matrix.html#vec_mxK"><span class="id" title="lemma">vec_mxK</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#MatrixZmodule.V"><span class="id" title="variable">V</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#m"><span class="id" title="variable">m</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#n"><span class="id" title="variable">n</span></a>) <a class="idref" href="mathcomp.algebra.matrix.html#mxvecK"><span class="id" title="lemma">mxvecK</span></a>).<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="flatmx0"><span class="id" title="lemma">flatmx0</span></a> <span class="id" title="var">n</span> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#all_equal_to"><span class="id" title="definition">all_equal_to</span></a> (0 <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssreflect.html#4509b22bf26e3d6d771897e22bd8bc8f"><span class="id" title="notation">:</span></a> <a class="idref" href="mathcomp.algebra.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>0<a class="idref" href="mathcomp.algebra.matrix.html#cb37620352ad6b90a047a361359e2f04"><span class="id" title="notation">,</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#n"><span class="id" title="variable">n</span></a><a class="idref" href="mathcomp.algebra.matrix.html#cb37620352ad6b90a047a361359e2f04"><span class="id" title="notation">)</span></a>).<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="thinmx0"><span class="id" title="lemma">thinmx0</span></a> <span class="id" title="var">n</span> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#all_equal_to"><span class="id" title="definition">all_equal_to</span></a> (0 <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssreflect.html#4509b22bf26e3d6d771897e22bd8bc8f"><span class="id" title="notation">:</span></a> <a class="idref" href="mathcomp.algebra.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.matrix.html#n"><span class="id" title="variable">n</span></a><a class="idref" href="mathcomp.algebra.matrix.html#cb37620352ad6b90a047a361359e2f04"><span class="id" title="notation">,</span></a> 0<a class="idref" href="mathcomp.algebra.matrix.html#cb37620352ad6b90a047a361359e2f04"><span class="id" title="notation">)</span></a>).<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="trmx0"><span class="id" title="lemma">trmx0</span></a> <span class="id" title="var">m</span> <span class="id" title="var">n</span> : <a class="idref" href="mathcomp.algebra.matrix.html#0efdd62d084b88acb1b2860eed745d54"><span class="id" title="notation">(</span></a>0 <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssreflect.html#4509b22bf26e3d6d771897e22bd8bc8f"><span class="id" title="notation">:</span></a> <a class="idref" href="mathcomp.algebra.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.matrix.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.matrix.html#n"><span class="id" title="variable">n</span></a><a class="idref" href="mathcomp.algebra.matrix.html#cb37620352ad6b90a047a361359e2f04"><span class="id" title="notation">)</span></a><a class="idref" href="mathcomp.algebra.matrix.html#0efdd62d084b88acb1b2860eed745d54"><span class="id" title="notation">)^</span></a><a class="idref" href="mathcomp.algebra.matrix.html#0efdd62d084b88acb1b2860eed745d54"><span class="id" title="notation">T</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> 0.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="row0"><span class="id" title="lemma">row0</span></a> <span class="id" title="var">m</span> <span class="id" title="var">n</span> <span class="id" title="var">i0</span> : <a class="idref" href="mathcomp.algebra.matrix.html#row"><span class="id" title="definition">row</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#i0"><span class="id" title="variable">i0</span></a> (0 <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssreflect.html#4509b22bf26e3d6d771897e22bd8bc8f"><span class="id" title="notation">:</span></a> <a class="idref" href="mathcomp.algebra.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.matrix.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.matrix.html#n"><span class="id" title="variable">n</span></a><a class="idref" href="mathcomp.algebra.matrix.html#cb37620352ad6b90a047a361359e2f04"><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.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="col0"><span class="id" title="lemma">col0</span></a> <span class="id" title="var">m</span> <span class="id" title="var">n</span> <span class="id" title="var">j0</span> : <a class="idref" href="mathcomp.algebra.matrix.html#col"><span class="id" title="definition">col</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#j0"><span class="id" title="variable">j0</span></a> (0 <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssreflect.html#4509b22bf26e3d6d771897e22bd8bc8f"><span class="id" title="notation">:</span></a> <a class="idref" href="mathcomp.algebra.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.matrix.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.matrix.html#n"><span class="id" title="variable">n</span></a><a class="idref" href="mathcomp.algebra.matrix.html#cb37620352ad6b90a047a361359e2f04"><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.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="mxvec_eq0"><span class="id" title="lemma">mxvec_eq0</span></a> <span class="id" title="var">m</span> <span class="id" title="var">n</span> (<span class="id" title="var">A</span> : <a class="idref" href="mathcomp.algebra.matrix.html#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.matrix.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.matrix.html#n"><span class="id" title="variable">n</span></a><a class="idref" href="mathcomp.algebra.matrix.html#cb37620352ad6b90a047a361359e2f04"><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.matrix.html#mxvec"><span class="id" title="definition">mxvec</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#A"><span class="id" title="variable">A</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#17d28d004d0863cb022d4ce832ddaaae"><span class="id" title="notation">==</span></a> 0<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.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.matrix.html#A"><span class="id" title="variable">A</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#17d28d004d0863cb022d4ce832ddaaae"><span class="id" title="notation">==</span></a> 0<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">)</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="vec_mx_eq0"><span class="id" title="lemma">vec_mx_eq0</span></a> <span class="id" title="var">m</span> <span class="id" title="var">n</span> (<span class="id" title="var">v</span> : <a class="idref" href="mathcomp.algebra.matrix.html#2bf09b7202225c789149165667752fab"><span class="id" title="notation">'</span></a><a class="idref" href="mathcomp.algebra.matrix.html#2bf09b7202225c789149165667752fab"><span class="id" title="notation">rV_</span></a><a class="idref" href="mathcomp.algebra.matrix.html#2bf09b7202225c789149165667752fab"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.matrix.html#m"><span class="id" title="variable">m</span></a> <a class="idref" href="mathcomp.ssreflect.ssrnat.html#697e4695610f677ae98a52af81f779d2"><span class="id" title="notation">×</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#n"><span class="id" title="variable">n</span></a><a class="idref" href="mathcomp.algebra.matrix.html#2bf09b7202225c789149165667752fab"><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.matrix.html#vec_mx"><span class="id" title="definition">vec_mx</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#v"><span class="id" title="variable">v</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#17d28d004d0863cb022d4ce832ddaaae"><span class="id" title="notation">==</span></a> 0<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">)</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.matrix.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="row_mx0"><span class="id" title="lemma">row_mx0</span></a> <span class="id" title="var">m</span> <span class="id" title="var">n1</span> <span class="id" title="var">n2</span> : <a class="idref" href="mathcomp.algebra.matrix.html#row_mx"><span class="id" title="definition">row_mx</span></a> 0 0 <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#8f9364556521ebb498093f28eea2240f"><span class="id" title="notation">=</span></a> 0 <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#8f9364556521ebb498093f28eea2240f"><span class="id" title="notation">:></span></a> <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.matrix.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.matrix.html#n1"><span class="id" title="variable">n1</span></a> <a class="idref" href="mathcomp.ssreflect.ssrnat.html#b3eea360671e1b32b18a26e15b3aace3"><span class="id" title="notation">+</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#n2"><span class="id" title="variable">n2</span></a><a class="idref" href="mathcomp.algebra.matrix.html#cb37620352ad6b90a047a361359e2f04"><span class="id" title="notation">)</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="col_mx0"><span class="id" title="lemma">col_mx0</span></a> <span class="id" title="var">m1</span> <span class="id" title="var">m2</span> <span class="id" title="var">n</span> : <a class="idref" href="mathcomp.algebra.matrix.html#col_mx"><span class="id" title="definition">col_mx</span></a> 0 0 <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#8f9364556521ebb498093f28eea2240f"><span class="id" title="notation">=</span></a> 0 <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#8f9364556521ebb498093f28eea2240f"><span class="id" title="notation">:></span></a> <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.matrix.html#m1"><span class="id" title="variable">m1</span></a> <a class="idref" href="mathcomp.ssreflect.ssrnat.html#b3eea360671e1b32b18a26e15b3aace3"><span class="id" title="notation">+</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#m2"><span class="id" title="variable">m2</span></a><a class="idref" href="mathcomp.algebra.matrix.html#cb37620352ad6b90a047a361359e2f04"><span class="id" title="notation">,</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#n"><span class="id" title="variable">n</span></a><a class="idref" href="mathcomp.algebra.matrix.html#cb37620352ad6b90a047a361359e2f04"><span class="id" title="notation">)</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="block_mx0"><span class="id" title="lemma">block_mx0</span></a> <span class="id" title="var">m1</span> <span class="id" title="var">m2</span> <span class="id" title="var">n1</span> <span class="id" title="var">n2</span> : <a class="idref" href="mathcomp.algebra.matrix.html#block_mx"><span class="id" title="definition">block_mx</span></a> 0 0 0 0 <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#8f9364556521ebb498093f28eea2240f"><span class="id" title="notation">=</span></a> 0 <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#8f9364556521ebb498093f28eea2240f"><span class="id" title="notation">:></span></a> <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.matrix.html#m1"><span class="id" title="variable">m1</span></a> <a class="idref" href="mathcomp.ssreflect.ssrnat.html#b3eea360671e1b32b18a26e15b3aace3"><span class="id" title="notation">+</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#m2"><span class="id" title="variable">m2</span></a><a class="idref" href="mathcomp.algebra.matrix.html#cb37620352ad6b90a047a361359e2f04"><span class="id" title="notation">,</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#n1"><span class="id" title="variable">n1</span></a> <a class="idref" href="mathcomp.ssreflect.ssrnat.html#b3eea360671e1b32b18a26e15b3aace3"><span class="id" title="notation">+</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#n2"><span class="id" title="variable">n2</span></a><a class="idref" href="mathcomp.algebra.matrix.html#cb37620352ad6b90a047a361359e2f04"><span class="id" title="notation">)</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Ltac</span> <span class="id" title="var">split_mxE</span> := <span class="id" title="tactic">apply</span>/<a class="idref" href="mathcomp.algebra.matrix.html#matrixP"><span class="id" title="lemma">matrixP</span></a>⇒ <span class="id" title="var">i</span> <span class="id" title="var">j</span>; <span class="id" title="tactic">do</span> ![<span class="id" title="tactic">rewrite</span> <a class="idref" href="mathcomp.algebra.matrix.html#mxE"><span class="id" title="lemma">mxE</span></a> | <span class="id" title="tactic">case</span>: <a class="idref" href="mathcomp.ssreflect.fintype.html#split"><span class="id" title="definition">split</span></a> ⇒ ?].<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="opp_row_mx"><span class="id" title="lemma">opp_row_mx</span></a> <span class="id" title="var">m</span> <span class="id" title="var">n1</span> <span class="id" title="var">n2</span> (<span class="id" title="var">A1</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.matrix.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.matrix.html#n1"><span class="id" title="variable">n1</span></a><a class="idref" href="mathcomp.algebra.matrix.html#cb37620352ad6b90a047a361359e2f04"><span class="id" title="notation">)</span></a>) (<span class="id" title="var">A2</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.matrix.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.matrix.html#n2"><span class="id" title="variable">n2</span></a><a class="idref" href="mathcomp.algebra.matrix.html#cb37620352ad6b90a047a361359e2f04"><span class="id" title="notation">)</span></a>) :<br/> + <a class="idref" href="mathcomp.algebra.ssralg.html#941c6d086004545bd62614d0213e75e5"><span class="id" title="notation">-</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#row_mx"><span class="id" title="definition">row_mx</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#A1"><span class="id" title="variable">A1</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#A2"><span class="id" title="variable">A2</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#row_mx"><span class="id" title="definition">row_mx</span></a> (<a class="idref" href="mathcomp.algebra.ssralg.html#941c6d086004545bd62614d0213e75e5"><span class="id" title="notation">-</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#A1"><span class="id" title="variable">A1</span></a>) (<a class="idref" href="mathcomp.algebra.ssralg.html#941c6d086004545bd62614d0213e75e5"><span class="id" title="notation">-</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#A2"><span class="id" title="variable">A2</span></a>).<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="opp_col_mx"><span class="id" title="lemma">opp_col_mx</span></a> <span class="id" title="var">m1</span> <span class="id" title="var">m2</span> <span class="id" title="var">n</span> (<span class="id" title="var">A1</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.matrix.html#m1"><span class="id" title="variable">m1</span></a><a class="idref" href="mathcomp.algebra.matrix.html#cb37620352ad6b90a047a361359e2f04"><span class="id" title="notation">,</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#n"><span class="id" title="variable">n</span></a><a class="idref" href="mathcomp.algebra.matrix.html#cb37620352ad6b90a047a361359e2f04"><span class="id" title="notation">)</span></a>) (<span class="id" title="var">A2</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.matrix.html#m2"><span class="id" title="variable">m2</span></a><a class="idref" href="mathcomp.algebra.matrix.html#cb37620352ad6b90a047a361359e2f04"><span class="id" title="notation">,</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#n"><span class="id" title="variable">n</span></a><a class="idref" href="mathcomp.algebra.matrix.html#cb37620352ad6b90a047a361359e2f04"><span class="id" title="notation">)</span></a>) :<br/> + <a class="idref" href="mathcomp.algebra.ssralg.html#941c6d086004545bd62614d0213e75e5"><span class="id" title="notation">-</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#col_mx"><span class="id" title="definition">col_mx</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#A1"><span class="id" title="variable">A1</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#A2"><span class="id" title="variable">A2</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#col_mx"><span class="id" title="definition">col_mx</span></a> (<a class="idref" href="mathcomp.algebra.ssralg.html#941c6d086004545bd62614d0213e75e5"><span class="id" title="notation">-</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#A1"><span class="id" title="variable">A1</span></a>) (<a class="idref" href="mathcomp.algebra.ssralg.html#941c6d086004545bd62614d0213e75e5"><span class="id" title="notation">-</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#A2"><span class="id" title="variable">A2</span></a>).<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="opp_block_mx"><span class="id" title="lemma">opp_block_mx</span></a> <span class="id" title="var">m1</span> <span class="id" title="var">m2</span> <span class="id" title="var">n1</span> <span class="id" title="var">n2</span> (<span class="id" title="var">Aul</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.matrix.html#m1"><span class="id" title="variable">m1</span></a><a class="idref" href="mathcomp.algebra.matrix.html#cb37620352ad6b90a047a361359e2f04"><span class="id" title="notation">,</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#n1"><span class="id" title="variable">n1</span></a><a class="idref" href="mathcomp.algebra.matrix.html#cb37620352ad6b90a047a361359e2f04"><span class="id" title="notation">)</span></a>) <span class="id" title="var">Aur</span> <span class="id" title="var">Adl</span> (<span class="id" title="var">Adr</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.matrix.html#m2"><span class="id" title="variable">m2</span></a><a class="idref" href="mathcomp.algebra.matrix.html#cb37620352ad6b90a047a361359e2f04"><span class="id" title="notation">,</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#n2"><span class="id" title="variable">n2</span></a><a class="idref" href="mathcomp.algebra.matrix.html#cb37620352ad6b90a047a361359e2f04"><span class="id" title="notation">)</span></a>) :<br/> + <a class="idref" href="mathcomp.algebra.ssralg.html#941c6d086004545bd62614d0213e75e5"><span class="id" title="notation">-</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#block_mx"><span class="id" title="definition">block_mx</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#Aul"><span class="id" title="variable">Aul</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#Aur"><span class="id" title="variable">Aur</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#Adl"><span class="id" title="variable">Adl</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#Adr"><span class="id" title="variable">Adr</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#block_mx"><span class="id" title="definition">block_mx</span></a> (<a class="idref" href="mathcomp.algebra.ssralg.html#941c6d086004545bd62614d0213e75e5"><span class="id" title="notation">-</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#Aul"><span class="id" title="variable">Aul</span></a>) (<a class="idref" href="mathcomp.algebra.ssralg.html#941c6d086004545bd62614d0213e75e5"><span class="id" title="notation">-</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#Aur"><span class="id" title="variable">Aur</span></a>) (<a class="idref" href="mathcomp.algebra.ssralg.html#941c6d086004545bd62614d0213e75e5"><span class="id" title="notation">-</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#Adl"><span class="id" title="variable">Adl</span></a>) (<a class="idref" href="mathcomp.algebra.ssralg.html#941c6d086004545bd62614d0213e75e5"><span class="id" title="notation">-</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#Adr"><span class="id" title="variable">Adr</span></a>).<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="add_row_mx"><span class="id" title="lemma">add_row_mx</span></a> <span class="id" title="var">m</span> <span class="id" title="var">n1</span> <span class="id" title="var">n2</span> (<span class="id" title="var">A1</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.matrix.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.matrix.html#n1"><span class="id" title="variable">n1</span></a><a class="idref" href="mathcomp.algebra.matrix.html#cb37620352ad6b90a047a361359e2f04"><span class="id" title="notation">)</span></a>) (<span class="id" title="var">A2</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.matrix.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.matrix.html#n2"><span class="id" title="variable">n2</span></a><a class="idref" href="mathcomp.algebra.matrix.html#cb37620352ad6b90a047a361359e2f04"><span class="id" title="notation">)</span></a>) <span class="id" title="var">B1</span> <span class="id" title="var">B2</span> :<br/> + <a class="idref" href="mathcomp.algebra.matrix.html#row_mx"><span class="id" title="definition">row_mx</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#A1"><span class="id" title="variable">A1</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#A2"><span class="id" title="variable">A2</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#ae4d81913e6239182a9ac7467ffde8cd"><span class="id" title="notation">+</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#row_mx"><span class="id" title="definition">row_mx</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#B1"><span class="id" title="variable">B1</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#B2"><span class="id" title="variable">B2</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#row_mx"><span class="id" title="definition">row_mx</span></a> (<a class="idref" href="mathcomp.algebra.matrix.html#A1"><span class="id" title="variable">A1</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#ae4d81913e6239182a9ac7467ffde8cd"><span class="id" title="notation">+</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#B1"><span class="id" title="variable">B1</span></a>) (<a class="idref" href="mathcomp.algebra.matrix.html#A2"><span class="id" title="variable">A2</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#ae4d81913e6239182a9ac7467ffde8cd"><span class="id" title="notation">+</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#B2"><span class="id" title="variable">B2</span></a>).<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="add_col_mx"><span class="id" title="lemma">add_col_mx</span></a> <span class="id" title="var">m1</span> <span class="id" title="var">m2</span> <span class="id" title="var">n</span> (<span class="id" title="var">A1</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.matrix.html#m1"><span class="id" title="variable">m1</span></a><a class="idref" href="mathcomp.algebra.matrix.html#cb37620352ad6b90a047a361359e2f04"><span class="id" title="notation">,</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#n"><span class="id" title="variable">n</span></a><a class="idref" href="mathcomp.algebra.matrix.html#cb37620352ad6b90a047a361359e2f04"><span class="id" title="notation">)</span></a>) (<span class="id" title="var">A2</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.matrix.html#m2"><span class="id" title="variable">m2</span></a><a class="idref" href="mathcomp.algebra.matrix.html#cb37620352ad6b90a047a361359e2f04"><span class="id" title="notation">,</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#n"><span class="id" title="variable">n</span></a><a class="idref" href="mathcomp.algebra.matrix.html#cb37620352ad6b90a047a361359e2f04"><span class="id" title="notation">)</span></a>) <span class="id" title="var">B1</span> <span class="id" title="var">B2</span> :<br/> + <a class="idref" href="mathcomp.algebra.matrix.html#col_mx"><span class="id" title="definition">col_mx</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#A1"><span class="id" title="variable">A1</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#A2"><span class="id" title="variable">A2</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#ae4d81913e6239182a9ac7467ffde8cd"><span class="id" title="notation">+</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#col_mx"><span class="id" title="definition">col_mx</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#B1"><span class="id" title="variable">B1</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#B2"><span class="id" title="variable">B2</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#col_mx"><span class="id" title="definition">col_mx</span></a> (<a class="idref" href="mathcomp.algebra.matrix.html#A1"><span class="id" title="variable">A1</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#ae4d81913e6239182a9ac7467ffde8cd"><span class="id" title="notation">+</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#B1"><span class="id" title="variable">B1</span></a>) (<a class="idref" href="mathcomp.algebra.matrix.html#A2"><span class="id" title="variable">A2</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#ae4d81913e6239182a9ac7467ffde8cd"><span class="id" title="notation">+</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#B2"><span class="id" title="variable">B2</span></a>).<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="add_block_mx"><span class="id" title="lemma">add_block_mx</span></a> <span class="id" title="var">m1</span> <span class="id" title="var">m2</span> <span class="id" title="var">n1</span> <span class="id" title="var">n2</span> (<span class="id" title="var">Aul</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.matrix.html#m1"><span class="id" title="variable">m1</span></a><a class="idref" href="mathcomp.algebra.matrix.html#cb37620352ad6b90a047a361359e2f04"><span class="id" title="notation">,</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#n1"><span class="id" title="variable">n1</span></a><a class="idref" href="mathcomp.algebra.matrix.html#cb37620352ad6b90a047a361359e2f04"><span class="id" title="notation">)</span></a>) <span class="id" title="var">Aur</span> <span class="id" title="var">Adl</span> (<span class="id" title="var">Adr</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.matrix.html#m2"><span class="id" title="variable">m2</span></a><a class="idref" href="mathcomp.algebra.matrix.html#cb37620352ad6b90a047a361359e2f04"><span class="id" title="notation">,</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#n2"><span class="id" title="variable">n2</span></a><a class="idref" href="mathcomp.algebra.matrix.html#cb37620352ad6b90a047a361359e2f04"><span class="id" title="notation">)</span></a>)<br/> + <span class="id" title="var">Bul</span> <span class="id" title="var">Bur</span> <span class="id" title="var">Bdl</span> <span class="id" title="var">Bdr</span> :<br/> + <span class="id" title="keyword">let</span> <span class="id" title="var">A</span> := <a class="idref" href="mathcomp.algebra.matrix.html#block_mx"><span class="id" title="definition">block_mx</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#Aul"><span class="id" title="variable">Aul</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#Aur"><span class="id" title="variable">Aur</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#Adl"><span class="id" title="variable">Adl</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#Adr"><span class="id" title="variable">Adr</span></a> <span class="id" title="tactic">in</span> <span class="id" title="keyword">let</span> <span class="id" title="var">B</span> := <a class="idref" href="mathcomp.algebra.matrix.html#block_mx"><span class="id" title="definition">block_mx</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#Bul"><span class="id" title="variable">Bul</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#Bur"><span class="id" title="variable">Bur</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#Bdl"><span class="id" title="variable">Bdl</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#Bdr"><span class="id" title="variable">Bdr</span></a> <span class="id" title="tactic">in</span><br/> + <a class="idref" href="mathcomp.algebra.matrix.html#A"><span class="id" title="variable">A</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#ae4d81913e6239182a9ac7467ffde8cd"><span class="id" title="notation">+</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#B"><span class="id" title="variable">B</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#block_mx"><span class="id" title="definition">block_mx</span></a> (<a class="idref" href="mathcomp.algebra.matrix.html#Aul"><span class="id" title="variable">Aul</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#ae4d81913e6239182a9ac7467ffde8cd"><span class="id" title="notation">+</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#Bul"><span class="id" title="variable">Bul</span></a>) (<a class="idref" href="mathcomp.algebra.matrix.html#Aur"><span class="id" title="variable">Aur</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#ae4d81913e6239182a9ac7467ffde8cd"><span class="id" title="notation">+</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#Bur"><span class="id" title="variable">Bur</span></a>) (<a class="idref" href="mathcomp.algebra.matrix.html#Adl"><span class="id" title="variable">Adl</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#ae4d81913e6239182a9ac7467ffde8cd"><span class="id" title="notation">+</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#Bdl"><span class="id" title="variable">Bdl</span></a>) (<a class="idref" href="mathcomp.algebra.matrix.html#Adr"><span class="id" title="variable">Adr</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#ae4d81913e6239182a9ac7467ffde8cd"><span class="id" title="notation">+</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#Bdr"><span class="id" title="variable">Bdr</span></a>).<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="row_mx_eq0"><span class="id" title="lemma">row_mx_eq0</span></a> (<span class="id" title="var">m</span> <span class="id" title="var">n1</span> <span class="id" title="var">n2</span> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#nat"><span class="id" title="inductive">nat</span></a>) (<span class="id" title="var">A1</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.matrix.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.matrix.html#n1"><span class="id" title="variable">n1</span></a><a class="idref" href="mathcomp.algebra.matrix.html#cb37620352ad6b90a047a361359e2f04"><span class="id" title="notation">)</span></a>) (<span class="id" title="var">A2</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.matrix.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.matrix.html#n2"><span class="id" title="variable">n2</span></a><a class="idref" href="mathcomp.algebra.matrix.html#cb37620352ad6b90a047a361359e2f04"><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.matrix.html#row_mx"><span class="id" title="definition">row_mx</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#A1"><span class="id" title="variable">A1</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#A2"><span class="id" title="variable">A2</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#17d28d004d0863cb022d4ce832ddaaae"><span class="id" title="notation">==</span></a> 0<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">)</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#49ac24efa716d8b0ee8943bc1d1769a9"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.matrix.html#A1"><span class="id" title="variable">A1</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#17d28d004d0863cb022d4ce832ddaaae"><span class="id" title="notation">==</span></a> 0<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#49ac24efa716d8b0ee8943bc1d1769a9"><span class="id" title="notation">)</span></a> <a class="idref" href="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.matrix.html#A2"><span class="id" title="variable">A2</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#17d28d004d0863cb022d4ce832ddaaae"><span class="id" title="notation">==</span></a> 0<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#49ac24efa716d8b0ee8943bc1d1769a9"><span class="id" title="notation">)</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="col_mx_eq0"><span class="id" title="lemma">col_mx_eq0</span></a> (<span class="id" title="var">m1</span> <span class="id" title="var">m2</span> <span class="id" title="var">n</span> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#nat"><span class="id" title="inductive">nat</span></a>) (<span class="id" title="var">A1</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.matrix.html#m1"><span class="id" title="variable">m1</span></a><a class="idref" href="mathcomp.algebra.matrix.html#cb37620352ad6b90a047a361359e2f04"><span class="id" title="notation">,</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#n"><span class="id" title="variable">n</span></a><a class="idref" href="mathcomp.algebra.matrix.html#cb37620352ad6b90a047a361359e2f04"><span class="id" title="notation">)</span></a>) (<span class="id" title="var">A2</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.matrix.html#m2"><span class="id" title="variable">m2</span></a><a class="idref" href="mathcomp.algebra.matrix.html#cb37620352ad6b90a047a361359e2f04"><span class="id" title="notation">,</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#n"><span class="id" title="variable">n</span></a><a class="idref" href="mathcomp.algebra.matrix.html#cb37620352ad6b90a047a361359e2f04"><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.matrix.html#col_mx"><span class="id" title="definition">col_mx</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#A1"><span class="id" title="variable">A1</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#A2"><span class="id" title="variable">A2</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#17d28d004d0863cb022d4ce832ddaaae"><span class="id" title="notation">==</span></a> 0<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">)</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#49ac24efa716d8b0ee8943bc1d1769a9"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.matrix.html#A1"><span class="id" title="variable">A1</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#17d28d004d0863cb022d4ce832ddaaae"><span class="id" title="notation">==</span></a> 0<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#49ac24efa716d8b0ee8943bc1d1769a9"><span class="id" title="notation">)</span></a> <a class="idref" href="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.matrix.html#A2"><span class="id" title="variable">A2</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#17d28d004d0863cb022d4ce832ddaaae"><span class="id" title="notation">==</span></a> 0<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#49ac24efa716d8b0ee8943bc1d1769a9"><span class="id" title="notation">)</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="block_mx_eq0"><span class="id" title="lemma">block_mx_eq0</span></a> <span class="id" title="var">m1</span> <span class="id" title="var">m2</span> <span class="id" title="var">n1</span> <span class="id" title="var">n2</span> (<span class="id" title="var">Aul</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.matrix.html#m1"><span class="id" title="variable">m1</span></a><a class="idref" href="mathcomp.algebra.matrix.html#cb37620352ad6b90a047a361359e2f04"><span class="id" title="notation">,</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#n1"><span class="id" title="variable">n1</span></a><a class="idref" href="mathcomp.algebra.matrix.html#cb37620352ad6b90a047a361359e2f04"><span class="id" title="notation">)</span></a>) <span class="id" title="var">Aur</span> <span class="id" title="var">Adl</span> (<span class="id" title="var">Adr</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.matrix.html#m2"><span class="id" title="variable">m2</span></a><a class="idref" href="mathcomp.algebra.matrix.html#cb37620352ad6b90a047a361359e2f04"><span class="id" title="notation">,</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#n2"><span class="id" title="variable">n2</span></a><a class="idref" href="mathcomp.algebra.matrix.html#cb37620352ad6b90a047a361359e2f04"><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.matrix.html#block_mx"><span class="id" title="definition">block_mx</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#Aul"><span class="id" title="variable">Aul</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#Aur"><span class="id" title="variable">Aur</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#Adl"><span class="id" title="variable">Adl</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#Adr"><span class="id" title="variable">Adr</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><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="mathcomp.algebra.matrix.html#Aul"><span class="id" title="variable">Aul</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> <a class="idref" href="mathcomp.algebra.matrix.html#Aur"><span class="id" title="variable">Aur</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> <a class="idref" href="mathcomp.algebra.matrix.html#Adl"><span class="id" title="variable">Adl</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> <a class="idref" href="mathcomp.algebra.matrix.html#Adr"><span class="id" title="variable">Adr</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>.<br/> + +<br/> +<span class="id" title="keyword">Definition</span> <a name="nz_row"><span class="id" title="definition">nz_row</span></a> <span class="id" title="var">m</span> <span class="id" title="var">n</span> (<span class="id" title="var">A</span> : <a class="idref" href="mathcomp.algebra.matrix.html#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.matrix.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.matrix.html#n"><span class="id" title="variable">n</span></a><a class="idref" href="mathcomp.algebra.matrix.html#cb37620352ad6b90a047a361359e2f04"><span class="id" title="notation">)</span></a>) :=<br/> + <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#oapp"><span class="id" title="abbreviation">oapp</span></a> (<span class="id" title="keyword">fun</span> <span class="id" title="var">i</span> ⇒ <a class="idref" href="mathcomp.algebra.matrix.html#row"><span class="id" title="definition">row</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#i"><span class="id" title="variable">i</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#A"><span class="id" title="variable">A</span></a>) 0 <a class="idref" href="mathcomp.ssreflect.fintype.html#705e11e709bb3e1492e885a674508f9a"><span class="id" title="notation">[</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#705e11e709bb3e1492e885a674508f9a"><span class="id" title="notation">pick</span></a> <span class="id" title="var">i</span> <a class="idref" href="mathcomp.ssreflect.fintype.html#705e11e709bb3e1492e885a674508f9a"><span class="id" title="notation">|</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.matrix.html#i"><span class="id" title="variable">i</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#A"><span class="id" title="variable">A</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#b1eeadc2feabc7422252baa895418c7b"><span class="id" title="notation">!=</span></a> 0<a class="idref" href="mathcomp.ssreflect.fintype.html#705e11e709bb3e1492e885a674508f9a"><span class="id" title="notation">]</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="nz_row_eq0"><span class="id" title="lemma">nz_row_eq0</span></a> <span class="id" title="var">m</span> <span class="id" title="var">n</span> (<span class="id" title="var">A</span> : <a class="idref" href="mathcomp.algebra.matrix.html#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.matrix.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.matrix.html#n"><span class="id" title="variable">n</span></a><a class="idref" href="mathcomp.algebra.matrix.html#cb37620352ad6b90a047a361359e2f04"><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.matrix.html#nz_row"><span class="id" title="definition">nz_row</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#A"><span class="id" title="variable">A</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#17d28d004d0863cb022d4ce832ddaaae"><span class="id" title="notation">==</span></a> 0<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.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.matrix.html#A"><span class="id" title="variable">A</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#17d28d004d0863cb022d4ce832ddaaae"><span class="id" title="notation">==</span></a> 0<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">)</span></a>.<br/> + +<br/> +<span class="id" title="keyword">End</span> <a class="idref" href="mathcomp.algebra.matrix.html#MatrixZmodule"><span class="id" title="section">MatrixZmodule</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Section</span> <a name="FinZmodMatrix"><span class="id" title="section">FinZmodMatrix</span></a>.<br/> +<span class="id" title="keyword">Variables</span> (<a name="FinZmodMatrix.V"><span class="id" title="variable">V</span></a> : <a class="idref" href="mathcomp.algebra.finalg.html#FinRing.Zmodule.Exports.finZmodType"><span class="id" title="abbreviation">finZmodType</span></a>) (<a name="FinZmodMatrix.m"><span class="id" title="variable">m</span></a> <a name="FinZmodMatrix.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/> +<span class="id" title="keyword">Canonical</span> <span class="id" title="var">matrix_finZmodType</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.finalg.html#2980bb304205aec85bc1eeb5d0a573a5"><span class="id" title="notation">[</span></a><a class="idref" href="mathcomp.algebra.finalg.html#2980bb304205aec85bc1eeb5d0a573a5"><span class="id" title="notation">finZmodType</span></a> <a class="idref" href="mathcomp.algebra.finalg.html#2980bb304205aec85bc1eeb5d0a573a5"><span class="id" title="notation">of</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#MV"><span class="id" title="abbreviation">MV</span></a><a class="idref" href="mathcomp.algebra.finalg.html#2980bb304205aec85bc1eeb5d0a573a5"><span class="id" title="notation">]</span></a>.<br/> +<span class="id" title="keyword">Canonical</span> <span class="id" title="var">matrix_baseFinGroupType</span> :=<br/> + <span class="id" title="keyword">Eval</span> <span class="id" title="tactic">hnf</span> <span class="id" title="tactic">in</span> <a class="idref" href="mathcomp.algebra.finalg.html#ee332ddd6e3626489ee70ea4c624f1cd"><span class="id" title="notation">[</span></a><a class="idref" href="mathcomp.algebra.finalg.html#ee332ddd6e3626489ee70ea4c624f1cd"><span class="id" title="notation">baseFinGroupType</span></a> <a class="idref" href="mathcomp.algebra.finalg.html#ee332ddd6e3626489ee70ea4c624f1cd"><span class="id" title="notation">of</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#MV"><span class="id" title="abbreviation">MV</span></a> <a class="idref" href="mathcomp.algebra.finalg.html#ee332ddd6e3626489ee70ea4c624f1cd"><span class="id" title="notation">for</span></a> <a class="idref" href="mathcomp.algebra.finalg.html#ee332ddd6e3626489ee70ea4c624f1cd"><span class="id" title="notation">+%</span></a><a class="idref" href="mathcomp.algebra.finalg.html#ee332ddd6e3626489ee70ea4c624f1cd"><span class="id" title="notation">R</span></a><a class="idref" href="mathcomp.algebra.finalg.html#ee332ddd6e3626489ee70ea4c624f1cd"><span class="id" title="notation">]</span></a>.<br/> +<span class="id" title="keyword">Canonical</span> <span class="id" title="var">matrix_finGroupType</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.finalg.html#ad4d9ed93eeed8e8e57c81c6e35699c4"><span class="id" title="notation">[</span></a><a class="idref" href="mathcomp.algebra.finalg.html#ad4d9ed93eeed8e8e57c81c6e35699c4"><span class="id" title="notation">finGroupType</span></a> <a class="idref" href="mathcomp.algebra.finalg.html#ad4d9ed93eeed8e8e57c81c6e35699c4"><span class="id" title="notation">of</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#MV"><span class="id" title="abbreviation">MV</span></a> <a class="idref" href="mathcomp.algebra.finalg.html#ad4d9ed93eeed8e8e57c81c6e35699c4"><span class="id" title="notation">for</span></a> <a class="idref" href="mathcomp.algebra.finalg.html#ad4d9ed93eeed8e8e57c81c6e35699c4"><span class="id" title="notation">+%</span></a><a class="idref" href="mathcomp.algebra.finalg.html#ad4d9ed93eeed8e8e57c81c6e35699c4"><span class="id" title="notation">R</span></a><a class="idref" href="mathcomp.algebra.finalg.html#ad4d9ed93eeed8e8e57c81c6e35699c4"><span class="id" title="notation">]</span></a>.<br/> +<span class="id" title="keyword">End</span> <a class="idref" href="mathcomp.algebra.matrix.html#FinZmodMatrix"><span class="id" title="section">FinZmodMatrix</span></a>.<br/> + +<br/> +</div> + +<div class="doc"> + Parametricity over the additive structure. +</div> +<div class="code"> +<span class="id" title="keyword">Section</span> <a name="MapZmodMatrix"><span class="id" title="section">MapZmodMatrix</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Variables</span> (<a name="MapZmodMatrix.aR"><span class="id" title="variable">aR</span></a> <a name="MapZmodMatrix.rR"><span class="id" title="variable">rR</span></a> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Zmodule.Exports.zmodType"><span class="id" title="abbreviation">zmodType</span></a>) (<a name="MapZmodMatrix.f"><span class="id" title="variable">f</span></a> : <a class="idref" href="mathcomp.algebra.ssralg.html#6566b94c06c342b0768c3d2d73badf6e"><span class="id" title="notation">{</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#6566b94c06c342b0768c3d2d73badf6e"><span class="id" title="notation">additive</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#aR"><span class="id" title="variable">aR</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#rR"><span class="id" title="variable">rR</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#6566b94c06c342b0768c3d2d73badf6e"><span class="id" title="notation">}</span></a>) (<a name="MapZmodMatrix.m"><span class="id" title="variable">m</span></a> <a name="MapZmodMatrix.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/> +<span class="id" title="keyword">Implicit</span> <span class="id" title="keyword">Type</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.matrix.html#MapZmodMatrix.aR"><span class="id" title="variable">aR</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.matrix.html#MapZmodMatrix.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.matrix.html#MapZmodMatrix.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/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="map_mx0"><span class="id" title="lemma">map_mx0</span></a> : 0<a class="idref" href="mathcomp.algebra.matrix.html#479b17b45199ea1ed1c4afe064416af1"><span class="id" title="notation">^</span></a><a class="idref" href="mathcomp.algebra.matrix.html#479b17b45199ea1ed1c4afe064416af1"><span class="id" title="notation">f</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#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.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.matrix.html#MapZmodMatrix.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.matrix.html#MapZmodMatrix.n"><span class="id" title="variable">n</span></a><a class="idref" href="mathcomp.algebra.matrix.html#cb37620352ad6b90a047a361359e2f04"><span class="id" title="notation">)</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="map_mxN"><span class="id" title="lemma">map_mxN</span></a> <span class="id" title="var">A</span> : <a class="idref" href="mathcomp.algebra.matrix.html#479b17b45199ea1ed1c4afe064416af1"><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.matrix.html#A"><span class="id" title="variable">A</span></a><a class="idref" href="mathcomp.algebra.matrix.html#479b17b45199ea1ed1c4afe064416af1"><span class="id" title="notation">)^</span></a><a class="idref" href="mathcomp.algebra.matrix.html#479b17b45199ea1ed1c4afe064416af1"><span class="id" title="notation">f</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#941c6d086004545bd62614d0213e75e5"><span class="id" title="notation">-</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#A"><span class="id" title="variable">A</span></a><a class="idref" href="mathcomp.algebra.matrix.html#479b17b45199ea1ed1c4afe064416af1"><span class="id" title="notation">^</span></a><a class="idref" href="mathcomp.algebra.matrix.html#479b17b45199ea1ed1c4afe064416af1"><span class="id" title="notation">f</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="map_mxD"><span class="id" title="lemma">map_mxD</span></a> <span class="id" title="var">A</span> <span class="id" title="var">B</span> : <a class="idref" href="mathcomp.algebra.matrix.html#479b17b45199ea1ed1c4afe064416af1"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.matrix.html#A"><span class="id" title="variable">A</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#ae4d81913e6239182a9ac7467ffde8cd"><span class="id" title="notation">+</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#B"><span class="id" title="variable">B</span></a><a class="idref" href="mathcomp.algebra.matrix.html#479b17b45199ea1ed1c4afe064416af1"><span class="id" title="notation">)^</span></a><a class="idref" href="mathcomp.algebra.matrix.html#479b17b45199ea1ed1c4afe064416af1"><span class="id" title="notation">f</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#A"><span class="id" title="variable">A</span></a><a class="idref" href="mathcomp.algebra.matrix.html#479b17b45199ea1ed1c4afe064416af1"><span class="id" title="notation">^</span></a><a class="idref" href="mathcomp.algebra.matrix.html#479b17b45199ea1ed1c4afe064416af1"><span class="id" title="notation">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.matrix.html#B"><span class="id" title="variable">B</span></a><a class="idref" href="mathcomp.algebra.matrix.html#479b17b45199ea1ed1c4afe064416af1"><span class="id" title="notation">^</span></a><a class="idref" href="mathcomp.algebra.matrix.html#479b17b45199ea1ed1c4afe064416af1"><span class="id" title="notation">f</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="map_mx_sub"><span class="id" title="lemma">map_mx_sub</span></a> <span class="id" title="var">A</span> <span class="id" title="var">B</span> : <a class="idref" href="mathcomp.algebra.matrix.html#479b17b45199ea1ed1c4afe064416af1"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.matrix.html#A"><span class="id" title="variable">A</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#d70623330b2787db6b196e37db7d8f45"><span class="id" title="notation">-</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#B"><span class="id" title="variable">B</span></a><a class="idref" href="mathcomp.algebra.matrix.html#479b17b45199ea1ed1c4afe064416af1"><span class="id" title="notation">)^</span></a><a class="idref" href="mathcomp.algebra.matrix.html#479b17b45199ea1ed1c4afe064416af1"><span class="id" title="notation">f</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#A"><span class="id" title="variable">A</span></a><a class="idref" href="mathcomp.algebra.matrix.html#479b17b45199ea1ed1c4afe064416af1"><span class="id" title="notation">^</span></a><a class="idref" href="mathcomp.algebra.matrix.html#479b17b45199ea1ed1c4afe064416af1"><span class="id" title="notation">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.matrix.html#B"><span class="id" title="variable">B</span></a><a class="idref" href="mathcomp.algebra.matrix.html#479b17b45199ea1ed1c4afe064416af1"><span class="id" title="notation">^</span></a><a class="idref" href="mathcomp.algebra.matrix.html#479b17b45199ea1ed1c4afe064416af1"><span class="id" title="notation">f</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Definition</span> <a name="map_mx_sum"><span class="id" title="definition">map_mx_sum</span></a> := <a class="idref" href="mathcomp.ssreflect.bigop.html#big_morph"><span class="id" title="lemma">big_morph</span></a> <span class="id" title="var">_</span> <a class="idref" href="mathcomp.algebra.matrix.html#map_mxD"><span class="id" title="lemma">map_mxD</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#map_mx0"><span class="id" title="lemma">map_mx0</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Canonical</span> <span class="id" title="var">map_mx_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.matrix.html#map_mx_sub"><span class="id" title="lemma">map_mx_sub</span></a>.<br/> + +<br/> +<span class="id" title="keyword">End</span> <a class="idref" href="mathcomp.algebra.matrix.html#MapZmodMatrix"><span class="id" title="section">MapZmodMatrix</span></a>.<br/> + +<br/> +</div> + +<div class="doc"> + Matrix ring module, graded ring, and ring structures *********** +</div> +<div class="code"> + +<br/> +<span class="id" title="keyword">Section</span> <a name="MatrixAlgebra"><span class="id" title="section">MatrixAlgebra</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Variable</span> <a name="MatrixAlgebra.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">Section</span> <a name="MatrixAlgebra.RingModule"><span class="id" title="section">RingModule</span></a>.<br/> + +<br/> +</div> + +<div class="doc"> + The ring module/vector space structure +</div> +<div class="code"> + +<br/> +<span class="id" title="keyword">Variables</span> <a name="MatrixAlgebra.RingModule.m"><span class="id" title="variable">m</span></a> <a name="MatrixAlgebra.RingModule.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/> +<span class="id" title="keyword">Implicit</span> <span class="id" title="keyword">Types</span> <span class="id" title="var">A</span> <span class="id" title="var">B</span> : <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.matrix.html#MatrixAlgebra.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.matrix.html#MatrixAlgebra.RingModule.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.matrix.html#MatrixAlgebra.RingModule.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/> + +<br/> +<span class="id" title="keyword">Fact</span> <a name="scalemx_key"><span class="id" title="lemma">scalemx_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="scalemx"><span class="id" title="definition">scalemx</span></a> <span class="id" title="var">x</span> <span class="id" title="var">A</span> := <a class="idref" href="mathcomp.algebra.matrix.html#667138260bfba6c8c1be5dda11faf290"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.algebra.matrix.html#667138260bfba6c8c1be5dda11faf290"><span class="id" title="notation">matrix</span></a><a class="idref" href="mathcomp.algebra.matrix.html#667138260bfba6c8c1be5dda11faf290"><span class="id" title="notation">[</span></a><a class="idref" href="mathcomp.algebra.matrix.html#scalemx_key"><span class="id" title="lemma">scalemx_key</span></a><a class="idref" href="mathcomp.algebra.matrix.html#667138260bfba6c8c1be5dda11faf290"><span class="id" title="notation">]</span></a><a class="idref" href="mathcomp.algebra.matrix.html#667138260bfba6c8c1be5dda11faf290"><span class="id" title="notation">_</span></a><a class="idref" href="mathcomp.algebra.matrix.html#667138260bfba6c8c1be5dda11faf290"><span class="id" title="notation">(</span></a><span class="id" title="var">i</span><a class="idref" href="mathcomp.algebra.matrix.html#667138260bfba6c8c1be5dda11faf290"><span class="id" title="notation">,</span></a> <span class="id" title="var">j</span><a class="idref" href="mathcomp.algebra.matrix.html#667138260bfba6c8c1be5dda11faf290"><span class="id" title="notation">)</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#667138260bfba6c8c1be5dda11faf290"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.matrix.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#22058a36a53dac65c94ca403bc62650a"><span class="id" title="notation">×</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#A"><span class="id" title="variable">A</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#i"><span class="id" title="variable">i</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#j"><span class="id" title="variable">j</span></a><a class="idref" href="mathcomp.algebra.matrix.html#667138260bfba6c8c1be5dda11faf290"><span class="id" title="notation">)</span></a>.<br/> + +<br/> +</div> + +<div class="doc"> + Basis +</div> +<div class="code"> +<span class="id" title="keyword">Fact</span> <a name="delta_mx_key"><span class="id" title="lemma">delta_mx_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="delta_mx"><span class="id" title="definition">delta_mx</span></a> <span class="id" title="var">i0</span> <span class="id" title="var">j0</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.matrix.html#MatrixAlgebra.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.matrix.html#MatrixAlgebra.RingModule.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.matrix.html#MatrixAlgebra.RingModule.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/> + <a class="idref" href="mathcomp.algebra.matrix.html#667138260bfba6c8c1be5dda11faf290"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.algebra.matrix.html#667138260bfba6c8c1be5dda11faf290"><span class="id" title="notation">matrix</span></a><a class="idref" href="mathcomp.algebra.matrix.html#667138260bfba6c8c1be5dda11faf290"><span class="id" title="notation">[</span></a><a class="idref" href="mathcomp.algebra.matrix.html#delta_mx_key"><span class="id" title="lemma">delta_mx_key</span></a><a class="idref" href="mathcomp.algebra.matrix.html#667138260bfba6c8c1be5dda11faf290"><span class="id" title="notation">]</span></a><a class="idref" href="mathcomp.algebra.matrix.html#667138260bfba6c8c1be5dda11faf290"><span class="id" title="notation">_</span></a><a class="idref" href="mathcomp.algebra.matrix.html#667138260bfba6c8c1be5dda11faf290"><span class="id" title="notation">(</span></a><span class="id" title="var">i</span><a class="idref" href="mathcomp.algebra.matrix.html#667138260bfba6c8c1be5dda11faf290"><span class="id" title="notation">,</span></a> <span class="id" title="var">j</span><a class="idref" href="mathcomp.algebra.matrix.html#667138260bfba6c8c1be5dda11faf290"><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="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.matrix.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.matrix.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.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.matrix.html#j"><span class="id" title="variable">j</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#17d28d004d0863cb022d4ce832ddaaae"><span class="id" title="notation">==</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#j0"><span class="id" title="variable">j0</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#49ac24efa716d8b0ee8943bc1d1769a9"><span class="id" title="notation">)</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#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/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="scale1mx"><span class="id" title="lemma">scale1mx</span></a> <span class="id" title="var">A</span> : 1 <a class="idref" href="mathcomp.algebra.matrix.html#9f61d450b1c16584e53d42e9b80b7e9e"><span class="id" title="notation">×</span></a><a class="idref" href="mathcomp.algebra.matrix.html#9f61d450b1c16584e53d42e9b80b7e9e"><span class="id" title="notation">m</span></a><a class="idref" href="mathcomp.algebra.matrix.html#9f61d450b1c16584e53d42e9b80b7e9e"><span class="id" title="notation">:</span></a> <a class="idref" href="mathcomp.algebra.matrix.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.matrix.html#A"><span class="id" title="variable">A</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="scalemxDl"><span class="id" title="lemma">scalemxDl</span></a> <span class="id" title="var">A</span> <span class="id" title="var">x</span> <span class="id" title="var">y</span> : <a class="idref" href="mathcomp.algebra.matrix.html#9f61d450b1c16584e53d42e9b80b7e9e"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.matrix.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.matrix.html#y"><span class="id" title="variable">y</span></a><a class="idref" href="mathcomp.algebra.matrix.html#9f61d450b1c16584e53d42e9b80b7e9e"><span class="id" title="notation">)</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#9f61d450b1c16584e53d42e9b80b7e9e"><span class="id" title="notation">×</span></a><a class="idref" href="mathcomp.algebra.matrix.html#9f61d450b1c16584e53d42e9b80b7e9e"><span class="id" title="notation">m</span></a><a class="idref" href="mathcomp.algebra.matrix.html#9f61d450b1c16584e53d42e9b80b7e9e"><span class="id" title="notation">:</span></a> <a class="idref" href="mathcomp.algebra.matrix.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.matrix.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#9f61d450b1c16584e53d42e9b80b7e9e"><span class="id" title="notation">×</span></a><a class="idref" href="mathcomp.algebra.matrix.html#9f61d450b1c16584e53d42e9b80b7e9e"><span class="id" title="notation">m</span></a><a class="idref" href="mathcomp.algebra.matrix.html#9f61d450b1c16584e53d42e9b80b7e9e"><span class="id" title="notation">:</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#A"><span class="id" title="variable">A</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#ae4d81913e6239182a9ac7467ffde8cd"><span class="id" title="notation">+</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#y"><span class="id" title="variable">y</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#9f61d450b1c16584e53d42e9b80b7e9e"><span class="id" title="notation">×</span></a><a class="idref" href="mathcomp.algebra.matrix.html#9f61d450b1c16584e53d42e9b80b7e9e"><span class="id" title="notation">m</span></a><a class="idref" href="mathcomp.algebra.matrix.html#9f61d450b1c16584e53d42e9b80b7e9e"><span class="id" title="notation">:</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#A"><span class="id" title="variable">A</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="scalemxDr"><span class="id" title="lemma">scalemxDr</span></a> <span class="id" title="var">x</span> <span class="id" title="var">A</span> <span class="id" title="var">B</span> : <a class="idref" href="mathcomp.algebra.matrix.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#9f61d450b1c16584e53d42e9b80b7e9e"><span class="id" title="notation">×</span></a><a class="idref" href="mathcomp.algebra.matrix.html#9f61d450b1c16584e53d42e9b80b7e9e"><span class="id" title="notation">m</span></a><a class="idref" href="mathcomp.algebra.matrix.html#9f61d450b1c16584e53d42e9b80b7e9e"><span class="id" title="notation">:</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#9f61d450b1c16584e53d42e9b80b7e9e"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.matrix.html#A"><span class="id" title="variable">A</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#ae4d81913e6239182a9ac7467ffde8cd"><span class="id" title="notation">+</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#B"><span class="id" title="variable">B</span></a><a class="idref" href="mathcomp.algebra.matrix.html#9f61d450b1c16584e53d42e9b80b7e9e"><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.matrix.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#9f61d450b1c16584e53d42e9b80b7e9e"><span class="id" title="notation">×</span></a><a class="idref" href="mathcomp.algebra.matrix.html#9f61d450b1c16584e53d42e9b80b7e9e"><span class="id" title="notation">m</span></a><a class="idref" href="mathcomp.algebra.matrix.html#9f61d450b1c16584e53d42e9b80b7e9e"><span class="id" title="notation">:</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#A"><span class="id" title="variable">A</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#ae4d81913e6239182a9ac7467ffde8cd"><span class="id" title="notation">+</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#9f61d450b1c16584e53d42e9b80b7e9e"><span class="id" title="notation">×</span></a><a class="idref" href="mathcomp.algebra.matrix.html#9f61d450b1c16584e53d42e9b80b7e9e"><span class="id" title="notation">m</span></a><a class="idref" href="mathcomp.algebra.matrix.html#9f61d450b1c16584e53d42e9b80b7e9e"><span class="id" title="notation">:</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#B"><span class="id" title="variable">B</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="scalemxA"><span class="id" title="lemma">scalemxA</span></a> <span class="id" title="var">x</span> <span class="id" title="var">y</span> <span class="id" title="var">A</span> : <a class="idref" href="mathcomp.algebra.matrix.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#9f61d450b1c16584e53d42e9b80b7e9e"><span class="id" title="notation">×</span></a><a class="idref" href="mathcomp.algebra.matrix.html#9f61d450b1c16584e53d42e9b80b7e9e"><span class="id" title="notation">m</span></a><a class="idref" href="mathcomp.algebra.matrix.html#9f61d450b1c16584e53d42e9b80b7e9e"><span class="id" title="notation">:</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#9f61d450b1c16584e53d42e9b80b7e9e"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.matrix.html#y"><span class="id" title="variable">y</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#9f61d450b1c16584e53d42e9b80b7e9e"><span class="id" title="notation">×</span></a><a class="idref" href="mathcomp.algebra.matrix.html#9f61d450b1c16584e53d42e9b80b7e9e"><span class="id" title="notation">m</span></a><a class="idref" href="mathcomp.algebra.matrix.html#9f61d450b1c16584e53d42e9b80b7e9e"><span class="id" title="notation">:</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#A"><span class="id" title="variable">A</span></a><a class="idref" href="mathcomp.algebra.matrix.html#9f61d450b1c16584e53d42e9b80b7e9e"><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.matrix.html#9f61d450b1c16584e53d42e9b80b7e9e"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.matrix.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#22058a36a53dac65c94ca403bc62650a"><span class="id" title="notation">×</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#y"><span class="id" title="variable">y</span></a><a class="idref" href="mathcomp.algebra.matrix.html#9f61d450b1c16584e53d42e9b80b7e9e"><span class="id" title="notation">)</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#9f61d450b1c16584e53d42e9b80b7e9e"><span class="id" title="notation">×</span></a><a class="idref" href="mathcomp.algebra.matrix.html#9f61d450b1c16584e53d42e9b80b7e9e"><span class="id" title="notation">m</span></a><a class="idref" href="mathcomp.algebra.matrix.html#9f61d450b1c16584e53d42e9b80b7e9e"><span class="id" title="notation">:</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#A"><span class="id" title="variable">A</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Definition</span> <a name="matrix_lmodMixin"><span class="id" title="definition">matrix_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.matrix.html#scalemxA"><span class="id" title="lemma">scalemxA</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#scale1mx"><span class="id" title="lemma">scale1mx</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#scalemxDr"><span class="id" title="lemma">scalemxDr</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#scalemxDl"><span class="id" title="lemma">scalemxDl</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Canonical</span> <span class="id" title="var">matrix_lmodType</span> :=<br/> + <span class="id" title="keyword">Eval</span> <span class="id" title="tactic">hnf</span> <span class="id" title="tactic">in</span> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Lmodule.Exports.LmodType"><span class="id" title="abbreviation">LmodType</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#MatrixAlgebra.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.matrix.html#MatrixAlgebra.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.matrix.html#MatrixAlgebra.RingModule.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.matrix.html#MatrixAlgebra.RingModule.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#matrix_lmodMixin"><span class="id" title="definition">matrix_lmodMixin</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="scalemx_const"><span class="id" title="lemma">scalemx_const</span></a> <span class="id" title="var">a</span> <span class="id" title="var">b</span> : <a class="idref" href="mathcomp.algebra.matrix.html#a"><span class="id" title="variable">a</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#81f8078534dcbb7e13a32d292f766525"><span class="id" title="notation">*:</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#const_mx"><span class="id" title="definition">const_mx</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#b"><span class="id" title="variable">b</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#const_mx"><span class="id" title="definition">const_mx</span></a> (<a class="idref" href="mathcomp.algebra.matrix.html#a"><span class="id" title="variable">a</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#22058a36a53dac65c94ca403bc62650a"><span class="id" title="notation">×</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#b"><span class="id" title="variable">b</span></a>).<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="matrix_sum_delta"><span class="id" title="lemma">matrix_sum_delta</span></a> <span class="id" title="var">A</span> :<br/> + <a class="idref" href="mathcomp.algebra.matrix.html#A"><span class="id" title="variable">A</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#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.matrix.html#MatrixAlgebra.RingModule.m"><span class="id" title="variable">m</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">\</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">j</span> <a class="idref" href="mathcomp.algebra.ssralg.html#b2bfc5b99c28e2c89b336d5f86347706"><span class="id" title="notation"><</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#MatrixAlgebra.RingModule.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.matrix.html#A"><span class="id" title="variable">A</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#i"><span class="id" title="variable">i</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#j"><span class="id" title="variable">j</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#81f8078534dcbb7e13a32d292f766525"><span class="id" title="notation">*:</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#delta_mx"><span class="id" title="definition">delta_mx</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#i"><span class="id" title="variable">i</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#j"><span class="id" title="variable">j</span></a>.<br/> + +<br/> +<span class="id" title="keyword">End</span> <a class="idref" href="mathcomp.algebra.matrix.html#MatrixAlgebra.RingModule"><span class="id" title="section">RingModule</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Section</span> <a name="MatrixAlgebra.StructuralLinear"><span class="id" title="section">StructuralLinear</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="swizzle_mx_is_scalable"><span class="id" title="lemma">swizzle_mx_is_scalable</span></a> <span class="id" title="var">m</span> <span class="id" title="var">n</span> <span class="id" title="var">p</span> <span class="id" title="var">q</span> <span class="id" title="var">f</span> <span class="id" title="var">g</span> <span class="id" title="var">k</span> :<br/> + <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Linear.Exports.scalable"><span class="id" title="abbreviation">scalable</span></a> (@<a class="idref" href="mathcomp.algebra.matrix.html#swizzle_mx"><span class="id" title="definition">swizzle_mx</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#MatrixAlgebra.R"><span class="id" title="variable">R</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#m"><span class="id" title="variable">m</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#n"><span class="id" title="variable">n</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#p"><span class="id" title="variable">p</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#q"><span class="id" title="variable">q</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#f"><span class="id" title="variable">f</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#g"><span class="id" title="variable">g</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#k"><span class="id" title="variable">k</span></a>).<br/> + <span class="id" title="keyword">Canonical</span> <span class="id" title="var">swizzle_mx_scalable</span> <span class="id" title="var">m</span> <span class="id" title="var">n</span> <span class="id" title="var">p</span> <span class="id" title="var">q</span> <span class="id" title="var">f</span> <span class="id" title="var">g</span> <span class="id" title="var">k</span> :=<br/> + <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Linear.Exports.AddLinear"><span class="id" title="abbreviation">AddLinear</span></a> (@<a class="idref" href="mathcomp.algebra.matrix.html#swizzle_mx_is_scalable"><span class="id" title="lemma">swizzle_mx_is_scalable</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#m"><span class="id" title="variable">m</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#n"><span class="id" title="variable">n</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#p"><span class="id" title="variable">p</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#q"><span class="id" title="variable">q</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#f"><span class="id" title="variable">f</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#g"><span class="id" title="variable">g</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#k"><span class="id" title="variable">k</span></a>).<br/> + +<br/> + +<br/> +<span class="id" title="keyword">Canonical</span> <span class="id" title="var">trmx_linear</span> <span class="id" title="var">m</span> <span class="id" title="var">n</span> := <a class="idref" href="mathcomp.algebra.matrix.html#SwizzleLin"><span class="id" title="abbreviation">SwizzleLin</span></a> (@<a class="idref" href="mathcomp.algebra.matrix.html#trmx"><span class="id" title="definition">trmx</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#MatrixAlgebra.R"><span class="id" title="variable">R</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#m"><span class="id" title="variable">m</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#n"><span class="id" title="variable">n</span></a>).<br/> +<span class="id" title="keyword">Canonical</span> <span class="id" title="var">row_linear</span> <span class="id" title="var">m</span> <span class="id" title="var">n</span> <span class="id" title="var">i</span> := <a class="idref" href="mathcomp.algebra.matrix.html#SwizzleLin"><span class="id" title="abbreviation">SwizzleLin</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.matrix.html#MatrixAlgebra.R"><span class="id" title="variable">R</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#m"><span class="id" title="variable">m</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#n"><span class="id" title="variable">n</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#i"><span class="id" title="variable">i</span></a>).<br/> +<span class="id" title="keyword">Canonical</span> <span class="id" title="var">col_linear</span> <span class="id" title="var">m</span> <span class="id" title="var">n</span> <span class="id" title="var">j</span> := <a class="idref" href="mathcomp.algebra.matrix.html#SwizzleLin"><span class="id" title="abbreviation">SwizzleLin</span></a> (@<a class="idref" href="mathcomp.algebra.matrix.html#col"><span class="id" title="definition">col</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#MatrixAlgebra.R"><span class="id" title="variable">R</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#m"><span class="id" title="variable">m</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#n"><span class="id" title="variable">n</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#j"><span class="id" title="variable">j</span></a>).<br/> +<span class="id" title="keyword">Canonical</span> <span class="id" title="var">row'_linear</span> <span class="id" title="var">m</span> <span class="id" title="var">n</span> <span class="id" title="var">i</span> := <a class="idref" href="mathcomp.algebra.matrix.html#SwizzleLin"><span class="id" title="abbreviation">SwizzleLin</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.matrix.html#MatrixAlgebra.R"><span class="id" title="variable">R</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#m"><span class="id" title="variable">m</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#n"><span class="id" title="variable">n</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#i"><span class="id" title="variable">i</span></a>).<br/> +<span class="id" title="keyword">Canonical</span> <span class="id" title="var">col'_linear</span> <span class="id" title="var">m</span> <span class="id" title="var">n</span> <span class="id" title="var">j</span> := <a class="idref" href="mathcomp.algebra.matrix.html#SwizzleLin"><span class="id" title="abbreviation">SwizzleLin</span></a> (@<a class="idref" href="mathcomp.algebra.matrix.html#col'"><span class="id" title="definition">col'</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#MatrixAlgebra.R"><span class="id" title="variable">R</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#m"><span class="id" title="variable">m</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#n"><span class="id" title="variable">n</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#j"><span class="id" title="variable">j</span></a>).<br/> +<span class="id" title="keyword">Canonical</span> <span class="id" title="var">row_perm_linear</span> <span class="id" title="var">m</span> <span class="id" title="var">n</span> <span class="id" title="var">s</span> := <a class="idref" href="mathcomp.algebra.matrix.html#SwizzleLin"><span class="id" title="abbreviation">SwizzleLin</span></a> (@<a class="idref" href="mathcomp.algebra.matrix.html#row_perm"><span class="id" title="definition">row_perm</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#MatrixAlgebra.R"><span class="id" title="variable">R</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#m"><span class="id" title="variable">m</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#n"><span class="id" title="variable">n</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#s"><span class="id" title="variable">s</span></a>).<br/> +<span class="id" title="keyword">Canonical</span> <span class="id" title="var">col_perm_linear</span> <span class="id" title="var">m</span> <span class="id" title="var">n</span> <span class="id" title="var">s</span> := <a class="idref" href="mathcomp.algebra.matrix.html#SwizzleLin"><span class="id" title="abbreviation">SwizzleLin</span></a> (@<a class="idref" href="mathcomp.algebra.matrix.html#col_perm"><span class="id" title="definition">col_perm</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#MatrixAlgebra.R"><span class="id" title="variable">R</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#m"><span class="id" title="variable">m</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#n"><span class="id" title="variable">n</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#s"><span class="id" title="variable">s</span></a>).<br/> +<span class="id" title="keyword">Canonical</span> <span class="id" title="var">xrow_linear</span> <span class="id" title="var">m</span> <span class="id" title="var">n</span> <span class="id" title="var">i1</span> <span class="id" title="var">i2</span> := <a class="idref" href="mathcomp.algebra.matrix.html#SwizzleLin"><span class="id" title="abbreviation">SwizzleLin</span></a> (@<a class="idref" href="mathcomp.algebra.matrix.html#xrow"><span class="id" title="definition">xrow</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#MatrixAlgebra.R"><span class="id" title="variable">R</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#m"><span class="id" title="variable">m</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#n"><span class="id" title="variable">n</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#i1"><span class="id" title="variable">i1</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#i2"><span class="id" title="variable">i2</span></a>).<br/> +<span class="id" title="keyword">Canonical</span> <span class="id" title="var">xcol_linear</span> <span class="id" title="var">m</span> <span class="id" title="var">n</span> <span class="id" title="var">j1</span> <span class="id" title="var">j2</span> := <a class="idref" href="mathcomp.algebra.matrix.html#SwizzleLin"><span class="id" title="abbreviation">SwizzleLin</span></a> (@<a class="idref" href="mathcomp.algebra.matrix.html#xcol"><span class="id" title="definition">xcol</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#MatrixAlgebra.R"><span class="id" title="variable">R</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#m"><span class="id" title="variable">m</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#n"><span class="id" title="variable">n</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#j1"><span class="id" title="variable">j1</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#j2"><span class="id" title="variable">j2</span></a>).<br/> +<span class="id" title="keyword">Canonical</span> <span class="id" title="var">lsubmx_linear</span> <span class="id" title="var">m</span> <span class="id" title="var">n1</span> <span class="id" title="var">n2</span> := <a class="idref" href="mathcomp.algebra.matrix.html#SwizzleLin"><span class="id" title="abbreviation">SwizzleLin</span></a> (@<a class="idref" href="mathcomp.algebra.matrix.html#lsubmx"><span class="id" title="definition">lsubmx</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#MatrixAlgebra.R"><span class="id" title="variable">R</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#m"><span class="id" title="variable">m</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#n1"><span class="id" title="variable">n1</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#n2"><span class="id" title="variable">n2</span></a>).<br/> +<span class="id" title="keyword">Canonical</span> <span class="id" title="var">rsubmx_linear</span> <span class="id" title="var">m</span> <span class="id" title="var">n1</span> <span class="id" title="var">n2</span> := <a class="idref" href="mathcomp.algebra.matrix.html#SwizzleLin"><span class="id" title="abbreviation">SwizzleLin</span></a> (@<a class="idref" href="mathcomp.algebra.matrix.html#rsubmx"><span class="id" title="definition">rsubmx</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#MatrixAlgebra.R"><span class="id" title="variable">R</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#m"><span class="id" title="variable">m</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#n1"><span class="id" title="variable">n1</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#n2"><span class="id" title="variable">n2</span></a>).<br/> +<span class="id" title="keyword">Canonical</span> <span class="id" title="var">usubmx_linear</span> <span class="id" title="var">m1</span> <span class="id" title="var">m2</span> <span class="id" title="var">n</span> := <a class="idref" href="mathcomp.algebra.matrix.html#SwizzleLin"><span class="id" title="abbreviation">SwizzleLin</span></a> (@<a class="idref" href="mathcomp.algebra.matrix.html#usubmx"><span class="id" title="definition">usubmx</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#MatrixAlgebra.R"><span class="id" title="variable">R</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#m1"><span class="id" title="variable">m1</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#m2"><span class="id" title="variable">m2</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#n"><span class="id" title="variable">n</span></a>).<br/> +<span class="id" title="keyword">Canonical</span> <span class="id" title="var">dsubmx_linear</span> <span class="id" title="var">m1</span> <span class="id" title="var">m2</span> <span class="id" title="var">n</span> := <a class="idref" href="mathcomp.algebra.matrix.html#SwizzleLin"><span class="id" title="abbreviation">SwizzleLin</span></a> (@<a class="idref" href="mathcomp.algebra.matrix.html#dsubmx"><span class="id" title="definition">dsubmx</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#MatrixAlgebra.R"><span class="id" title="variable">R</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#m1"><span class="id" title="variable">m1</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#m2"><span class="id" title="variable">m2</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#n"><span class="id" title="variable">n</span></a>).<br/> +<span class="id" title="keyword">Canonical</span> <span class="id" title="var">vec_mx_linear</span> <span class="id" title="var">m</span> <span class="id" title="var">n</span> := <a class="idref" href="mathcomp.algebra.matrix.html#SwizzleLin"><span class="id" title="abbreviation">SwizzleLin</span></a> (@<a class="idref" href="mathcomp.algebra.matrix.html#vec_mx"><span class="id" title="definition">vec_mx</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#MatrixAlgebra.R"><span class="id" title="variable">R</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#m"><span class="id" title="variable">m</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#n"><span class="id" title="variable">n</span></a>).<br/> +<span class="id" title="keyword">Definition</span> <a name="mxvec_is_linear"><span class="id" title="definition">mxvec_is_linear</span></a> <span class="id" title="var">m</span> <span class="id" title="var">n</span> := <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.matrix.html#vec_mxK"><span class="id" title="lemma">vec_mxK</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#MatrixAlgebra.R"><span class="id" title="variable">R</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#m"><span class="id" title="variable">m</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#n"><span class="id" title="variable">n</span></a>) <a class="idref" href="mathcomp.algebra.matrix.html#mxvecK"><span class="id" title="lemma">mxvecK</span></a>.<br/> +<span class="id" title="keyword">Canonical</span> <span class="id" title="var">mxvec_linear</span> <span class="id" title="var">m</span> <span class="id" title="var">n</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.matrix.html#mxvec_is_linear"><span class="id" title="definition">mxvec_is_linear</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#m"><span class="id" title="variable">m</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#n"><span class="id" title="variable">n</span></a>).<br/> + +<br/> +<span class="id" title="keyword">End</span> <a class="idref" href="mathcomp.algebra.matrix.html#MatrixAlgebra.StructuralLinear"><span class="id" title="section">StructuralLinear</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="trmx_delta"><span class="id" title="lemma">trmx_delta</span></a> <span class="id" title="var">m</span> <span class="id" title="var">n</span> <span class="id" title="var">i</span> <span class="id" title="var">j</span> : <a class="idref" href="mathcomp.algebra.matrix.html#0efdd62d084b88acb1b2860eed745d54"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.matrix.html#delta_mx"><span class="id" title="definition">delta_mx</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#i"><span class="id" title="variable">i</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#j"><span class="id" title="variable">j</span></a><a class="idref" href="mathcomp.algebra.matrix.html#0efdd62d084b88acb1b2860eed745d54"><span class="id" title="notation">)^</span></a><a class="idref" href="mathcomp.algebra.matrix.html#0efdd62d084b88acb1b2860eed745d54"><span class="id" title="notation">T</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#8f9364556521ebb498093f28eea2240f"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#delta_mx"><span class="id" title="definition">delta_mx</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#j"><span class="id" title="variable">j</span></a> <a class="idref" href="mathcomp.algebra.matrix.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#8f9364556521ebb498093f28eea2240f"><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">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.matrix.html#MatrixAlgebra.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.matrix.html#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#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>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="row_sum_delta"><span class="id" title="lemma">row_sum_delta</span></a> <span class="id" title="var">n</span> (<span class="id" title="var">u</span> : <a class="idref" href="mathcomp.algebra.matrix.html#2bf09b7202225c789149165667752fab"><span class="id" title="notation">'</span></a><a class="idref" href="mathcomp.algebra.matrix.html#2bf09b7202225c789149165667752fab"><span class="id" title="notation">rV_n</span></a>) : <a class="idref" href="mathcomp.algebra.matrix.html#u"><span class="id" title="variable">u</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#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">j</span> <a class="idref" href="mathcomp.algebra.ssralg.html#b2bfc5b99c28e2c89b336d5f86347706"><span class="id" title="notation"><</span></a> <a class="idref" href="mathcomp.algebra.matrix.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.matrix.html#u"><span class="id" title="variable">u</span></a> 0 <a class="idref" href="mathcomp.algebra.matrix.html#j"><span class="id" title="variable">j</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#81f8078534dcbb7e13a32d292f766525"><span class="id" title="notation">*:</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#delta_mx"><span class="id" title="definition">delta_mx</span></a> 0 <a class="idref" href="mathcomp.algebra.matrix.html#j"><span class="id" title="variable">j</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="delta_mx_lshift"><span class="id" title="lemma">delta_mx_lshift</span></a> <span class="id" title="var">m</span> <span class="id" title="var">n1</span> <span class="id" title="var">n2</span> <span class="id" title="var">i</span> <span class="id" title="var">j</span> :<br/> + <a class="idref" href="mathcomp.algebra.matrix.html#delta_mx"><span class="id" title="definition">delta_mx</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#i"><span class="id" title="variable">i</span></a> (<a class="idref" href="mathcomp.ssreflect.fintype.html#lshift"><span class="id" title="definition">lshift</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#n2"><span class="id" title="variable">n2</span></a> <a class="idref" href="mathcomp.algebra.matrix.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.Logic.html#8f9364556521ebb498093f28eea2240f"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#row_mx"><span class="id" title="definition">row_mx</span></a> (<a class="idref" href="mathcomp.algebra.matrix.html#delta_mx"><span class="id" title="definition">delta_mx</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#i"><span class="id" title="variable">i</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#j"><span class="id" title="variable">j</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.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.matrix.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.matrix.html#n1"><span class="id" title="variable">n1</span></a> <a class="idref" href="mathcomp.ssreflect.ssrnat.html#b3eea360671e1b32b18a26e15b3aace3"><span class="id" title="notation">+</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#n2"><span class="id" title="variable">n2</span></a><a class="idref" href="mathcomp.algebra.matrix.html#cb37620352ad6b90a047a361359e2f04"><span class="id" title="notation">)</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="delta_mx_rshift"><span class="id" title="lemma">delta_mx_rshift</span></a> <span class="id" title="var">m</span> <span class="id" title="var">n1</span> <span class="id" title="var">n2</span> <span class="id" title="var">i</span> <span class="id" title="var">j</span> :<br/> + <a class="idref" href="mathcomp.algebra.matrix.html#delta_mx"><span class="id" title="definition">delta_mx</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#i"><span class="id" title="variable">i</span></a> (<a class="idref" href="mathcomp.ssreflect.fintype.html#rshift"><span class="id" title="definition">rshift</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#n1"><span class="id" title="variable">n1</span></a> <a class="idref" href="mathcomp.algebra.matrix.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.Logic.html#8f9364556521ebb498093f28eea2240f"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#row_mx"><span class="id" title="definition">row_mx</span></a> 0 (<a class="idref" href="mathcomp.algebra.matrix.html#delta_mx"><span class="id" title="definition">delta_mx</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#i"><span class="id" title="variable">i</span></a> <a class="idref" href="mathcomp.algebra.matrix.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.Logic.html#8f9364556521ebb498093f28eea2240f"><span class="id" title="notation">:></span></a> <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.matrix.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.matrix.html#n1"><span class="id" title="variable">n1</span></a> <a class="idref" href="mathcomp.ssreflect.ssrnat.html#b3eea360671e1b32b18a26e15b3aace3"><span class="id" title="notation">+</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#n2"><span class="id" title="variable">n2</span></a><a class="idref" href="mathcomp.algebra.matrix.html#cb37620352ad6b90a047a361359e2f04"><span class="id" title="notation">)</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="delta_mx_ushift"><span class="id" title="lemma">delta_mx_ushift</span></a> <span class="id" title="var">m1</span> <span class="id" title="var">m2</span> <span class="id" title="var">n</span> <span class="id" title="var">i</span> <span class="id" title="var">j</span> :<br/> + <a class="idref" href="mathcomp.algebra.matrix.html#delta_mx"><span class="id" title="definition">delta_mx</span></a> (<a class="idref" href="mathcomp.ssreflect.fintype.html#lshift"><span class="id" title="definition">lshift</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#m2"><span class="id" title="variable">m2</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#i"><span class="id" title="variable">i</span></a>) <a class="idref" href="mathcomp.algebra.matrix.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.Logic.html#8f9364556521ebb498093f28eea2240f"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#col_mx"><span class="id" title="definition">col_mx</span></a> (<a class="idref" href="mathcomp.algebra.matrix.html#delta_mx"><span class="id" title="definition">delta_mx</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#i"><span class="id" title="variable">i</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#j"><span class="id" title="variable">j</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.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.matrix.html#m1"><span class="id" title="variable">m1</span></a> <a class="idref" href="mathcomp.ssreflect.ssrnat.html#b3eea360671e1b32b18a26e15b3aace3"><span class="id" title="notation">+</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#m2"><span class="id" title="variable">m2</span></a><a class="idref" href="mathcomp.algebra.matrix.html#cb37620352ad6b90a047a361359e2f04"><span class="id" title="notation">,</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#n"><span class="id" title="variable">n</span></a><a class="idref" href="mathcomp.algebra.matrix.html#cb37620352ad6b90a047a361359e2f04"><span class="id" title="notation">)</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="delta_mx_dshift"><span class="id" title="lemma">delta_mx_dshift</span></a> <span class="id" title="var">m1</span> <span class="id" title="var">m2</span> <span class="id" title="var">n</span> <span class="id" title="var">i</span> <span class="id" title="var">j</span> :<br/> + <a class="idref" href="mathcomp.algebra.matrix.html#delta_mx"><span class="id" title="definition">delta_mx</span></a> (<a class="idref" href="mathcomp.ssreflect.fintype.html#rshift"><span class="id" title="definition">rshift</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#m1"><span class="id" title="variable">m1</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#i"><span class="id" title="variable">i</span></a>) <a class="idref" href="mathcomp.algebra.matrix.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.Logic.html#8f9364556521ebb498093f28eea2240f"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#col_mx"><span class="id" title="definition">col_mx</span></a> 0 (<a class="idref" href="mathcomp.algebra.matrix.html#delta_mx"><span class="id" title="definition">delta_mx</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#i"><span class="id" title="variable">i</span></a> <a class="idref" href="mathcomp.algebra.matrix.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.Logic.html#8f9364556521ebb498093f28eea2240f"><span class="id" title="notation">:></span></a> <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.matrix.html#m1"><span class="id" title="variable">m1</span></a> <a class="idref" href="mathcomp.ssreflect.ssrnat.html#b3eea360671e1b32b18a26e15b3aace3"><span class="id" title="notation">+</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#m2"><span class="id" title="variable">m2</span></a><a class="idref" href="mathcomp.algebra.matrix.html#cb37620352ad6b90a047a361359e2f04"><span class="id" title="notation">,</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#n"><span class="id" title="variable">n</span></a><a class="idref" href="mathcomp.algebra.matrix.html#cb37620352ad6b90a047a361359e2f04"><span class="id" title="notation">)</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="vec_mx_delta"><span class="id" title="lemma">vec_mx_delta</span></a> <span class="id" title="var">m</span> <span class="id" title="var">n</span> <span class="id" title="var">i</span> <span class="id" title="var">j</span> :<br/> + <a class="idref" href="mathcomp.algebra.matrix.html#vec_mx"><span class="id" title="definition">vec_mx</span></a> (<a class="idref" href="mathcomp.algebra.matrix.html#delta_mx"><span class="id" title="definition">delta_mx</span></a> 0 (<a class="idref" href="mathcomp.algebra.matrix.html#mxvec_index"><span class="id" title="definition">mxvec_index</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#i"><span class="id" title="variable">i</span></a> <a class="idref" href="mathcomp.algebra.matrix.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.Logic.html#8f9364556521ebb498093f28eea2240f"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#delta_mx"><span class="id" title="definition">delta_mx</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#i"><span class="id" title="variable">i</span></a> <a class="idref" href="mathcomp.algebra.matrix.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.Logic.html#8f9364556521ebb498093f28eea2240f"><span class="id" title="notation">:></span></a> <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.matrix.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.matrix.html#n"><span class="id" title="variable">n</span></a><a class="idref" href="mathcomp.algebra.matrix.html#cb37620352ad6b90a047a361359e2f04"><span class="id" title="notation">)</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="mxvec_delta"><span class="id" title="lemma">mxvec_delta</span></a> <span class="id" title="var">m</span> <span class="id" title="var">n</span> <span class="id" title="var">i</span> <span class="id" title="var">j</span> :<br/> + <a class="idref" href="mathcomp.algebra.matrix.html#mxvec"><span class="id" title="definition">mxvec</span></a> (<a class="idref" href="mathcomp.algebra.matrix.html#delta_mx"><span class="id" title="definition">delta_mx</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#i"><span class="id" title="variable">i</span></a> <a class="idref" href="mathcomp.algebra.matrix.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.Logic.html#8f9364556521ebb498093f28eea2240f"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#delta_mx"><span class="id" title="definition">delta_mx</span></a> 0 (<a class="idref" href="mathcomp.algebra.matrix.html#mxvec_index"><span class="id" title="definition">mxvec_index</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#i"><span class="id" title="variable">i</span></a> <a class="idref" href="mathcomp.algebra.matrix.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.Logic.html#8f9364556521ebb498093f28eea2240f"><span class="id" title="notation">:></span></a> <a class="idref" href="mathcomp.algebra.matrix.html#2bf09b7202225c789149165667752fab"><span class="id" title="notation">'</span></a><a class="idref" href="mathcomp.algebra.matrix.html#2bf09b7202225c789149165667752fab"><span class="id" title="notation">rV_</span></a><a class="idref" href="mathcomp.algebra.matrix.html#2bf09b7202225c789149165667752fab"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.matrix.html#m"><span class="id" title="variable">m</span></a> <a class="idref" href="mathcomp.ssreflect.ssrnat.html#697e4695610f677ae98a52af81f779d2"><span class="id" title="notation">×</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#n"><span class="id" title="variable">n</span></a><a class="idref" href="mathcomp.algebra.matrix.html#2bf09b7202225c789149165667752fab"><span class="id" title="notation">)</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Ltac</span> <span class="id" title="var">split_mxE</span> := <span class="id" title="tactic">apply</span>/<a class="idref" href="mathcomp.algebra.matrix.html#matrixP"><span class="id" title="lemma">matrixP</span></a>⇒ <span class="id" title="var">i</span> <span class="id" title="var">j</span>; <span class="id" title="tactic">do</span> ![<span class="id" title="tactic">rewrite</span> <a class="idref" href="mathcomp.algebra.matrix.html#mxE"><span class="id" title="lemma">mxE</span></a> | <span class="id" title="tactic">case</span>: <a class="idref" href="mathcomp.ssreflect.fintype.html#split"><span class="id" title="definition">split</span></a> ⇒ ?].<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="scale_row_mx"><span class="id" title="lemma">scale_row_mx</span></a> <span class="id" title="var">m</span> <span class="id" title="var">n1</span> <span class="id" title="var">n2</span> <span class="id" title="var">a</span> (<span class="id" title="var">A1</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.matrix.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.matrix.html#n1"><span class="id" title="variable">n1</span></a><a class="idref" href="mathcomp.algebra.matrix.html#cb37620352ad6b90a047a361359e2f04"><span class="id" title="notation">)</span></a>) (<span class="id" title="var">A2</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.matrix.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.matrix.html#n2"><span class="id" title="variable">n2</span></a><a class="idref" href="mathcomp.algebra.matrix.html#cb37620352ad6b90a047a361359e2f04"><span class="id" title="notation">)</span></a>) :<br/> + <a class="idref" href="mathcomp.algebra.matrix.html#a"><span class="id" title="variable">a</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#81f8078534dcbb7e13a32d292f766525"><span class="id" title="notation">*:</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#row_mx"><span class="id" title="definition">row_mx</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#A1"><span class="id" title="variable">A1</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#A2"><span class="id" title="variable">A2</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#row_mx"><span class="id" title="definition">row_mx</span></a> (<a class="idref" href="mathcomp.algebra.matrix.html#a"><span class="id" title="variable">a</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#81f8078534dcbb7e13a32d292f766525"><span class="id" title="notation">*:</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#A1"><span class="id" title="variable">A1</span></a>) (<a class="idref" href="mathcomp.algebra.matrix.html#a"><span class="id" title="variable">a</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#81f8078534dcbb7e13a32d292f766525"><span class="id" title="notation">*:</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#A2"><span class="id" title="variable">A2</span></a>).<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="scale_col_mx"><span class="id" title="lemma">scale_col_mx</span></a> <span class="id" title="var">m1</span> <span class="id" title="var">m2</span> <span class="id" title="var">n</span> <span class="id" title="var">a</span> (<span class="id" title="var">A1</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.matrix.html#m1"><span class="id" title="variable">m1</span></a><a class="idref" href="mathcomp.algebra.matrix.html#cb37620352ad6b90a047a361359e2f04"><span class="id" title="notation">,</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#n"><span class="id" title="variable">n</span></a><a class="idref" href="mathcomp.algebra.matrix.html#cb37620352ad6b90a047a361359e2f04"><span class="id" title="notation">)</span></a>) (<span class="id" title="var">A2</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.matrix.html#m2"><span class="id" title="variable">m2</span></a><a class="idref" href="mathcomp.algebra.matrix.html#cb37620352ad6b90a047a361359e2f04"><span class="id" title="notation">,</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#n"><span class="id" title="variable">n</span></a><a class="idref" href="mathcomp.algebra.matrix.html#cb37620352ad6b90a047a361359e2f04"><span class="id" title="notation">)</span></a>) :<br/> + <a class="idref" href="mathcomp.algebra.matrix.html#a"><span class="id" title="variable">a</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#81f8078534dcbb7e13a32d292f766525"><span class="id" title="notation">*:</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#col_mx"><span class="id" title="definition">col_mx</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#A1"><span class="id" title="variable">A1</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#A2"><span class="id" title="variable">A2</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#col_mx"><span class="id" title="definition">col_mx</span></a> (<a class="idref" href="mathcomp.algebra.matrix.html#a"><span class="id" title="variable">a</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#81f8078534dcbb7e13a32d292f766525"><span class="id" title="notation">*:</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#A1"><span class="id" title="variable">A1</span></a>) (<a class="idref" href="mathcomp.algebra.matrix.html#a"><span class="id" title="variable">a</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#81f8078534dcbb7e13a32d292f766525"><span class="id" title="notation">*:</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#A2"><span class="id" title="variable">A2</span></a>).<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="scale_block_mx"><span class="id" title="lemma">scale_block_mx</span></a> <span class="id" title="var">m1</span> <span class="id" title="var">m2</span> <span class="id" title="var">n1</span> <span class="id" title="var">n2</span> <span class="id" title="var">a</span> (<span class="id" title="var">Aul</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.matrix.html#m1"><span class="id" title="variable">m1</span></a><a class="idref" href="mathcomp.algebra.matrix.html#cb37620352ad6b90a047a361359e2f04"><span class="id" title="notation">,</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#n1"><span class="id" title="variable">n1</span></a><a class="idref" href="mathcomp.algebra.matrix.html#cb37620352ad6b90a047a361359e2f04"><span class="id" title="notation">)</span></a>) (<span class="id" title="var">Aur</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.matrix.html#m1"><span class="id" title="variable">m1</span></a><a class="idref" href="mathcomp.algebra.matrix.html#cb37620352ad6b90a047a361359e2f04"><span class="id" title="notation">,</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#n2"><span class="id" title="variable">n2</span></a><a class="idref" href="mathcomp.algebra.matrix.html#cb37620352ad6b90a047a361359e2f04"><span class="id" title="notation">)</span></a>)<br/> + (<span class="id" title="var">Adl</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.matrix.html#m2"><span class="id" title="variable">m2</span></a><a class="idref" href="mathcomp.algebra.matrix.html#cb37620352ad6b90a047a361359e2f04"><span class="id" title="notation">,</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#n1"><span class="id" title="variable">n1</span></a><a class="idref" href="mathcomp.algebra.matrix.html#cb37620352ad6b90a047a361359e2f04"><span class="id" title="notation">)</span></a>) (<span class="id" title="var">Adr</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.matrix.html#m2"><span class="id" title="variable">m2</span></a><a class="idref" href="mathcomp.algebra.matrix.html#cb37620352ad6b90a047a361359e2f04"><span class="id" title="notation">,</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#n2"><span class="id" title="variable">n2</span></a><a class="idref" href="mathcomp.algebra.matrix.html#cb37620352ad6b90a047a361359e2f04"><span class="id" title="notation">)</span></a>) :<br/> + <a class="idref" href="mathcomp.algebra.matrix.html#a"><span class="id" title="variable">a</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#81f8078534dcbb7e13a32d292f766525"><span class="id" title="notation">*:</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#block_mx"><span class="id" title="definition">block_mx</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#Aul"><span class="id" title="variable">Aul</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#Aur"><span class="id" title="variable">Aur</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#Adl"><span class="id" title="variable">Adl</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#Adr"><span class="id" title="variable">Adr</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.matrix.html#block_mx"><span class="id" title="definition">block_mx</span></a> (<a class="idref" href="mathcomp.algebra.matrix.html#a"><span class="id" title="variable">a</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#81f8078534dcbb7e13a32d292f766525"><span class="id" title="notation">*:</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#Aul"><span class="id" title="variable">Aul</span></a>) (<a class="idref" href="mathcomp.algebra.matrix.html#a"><span class="id" title="variable">a</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#81f8078534dcbb7e13a32d292f766525"><span class="id" title="notation">*:</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#Aur"><span class="id" title="variable">Aur</span></a>) (<a class="idref" href="mathcomp.algebra.matrix.html#a"><span class="id" title="variable">a</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#81f8078534dcbb7e13a32d292f766525"><span class="id" title="notation">*:</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#Adl"><span class="id" title="variable">Adl</span></a>) (<a class="idref" href="mathcomp.algebra.matrix.html#a"><span class="id" title="variable">a</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#81f8078534dcbb7e13a32d292f766525"><span class="id" title="notation">*:</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#Adr"><span class="id" title="variable">Adr</span></a>).<br/> + +<br/> +</div> + +<div class="doc"> + Diagonal matrices +</div> +<div class="code"> + +<br/> +<span class="id" title="keyword">Fact</span> <a name="diag_mx_key"><span class="id" title="lemma">diag_mx_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="diag_mx"><span class="id" title="definition">diag_mx</span></a> <span class="id" title="var">n</span> (<span class="id" title="var">d</span> : <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.matrix.html#MatrixAlgebra.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>) :=<br/> + <a class="idref" href="mathcomp.algebra.matrix.html#667138260bfba6c8c1be5dda11faf290"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.algebra.matrix.html#667138260bfba6c8c1be5dda11faf290"><span class="id" title="notation">matrix</span></a><a class="idref" href="mathcomp.algebra.matrix.html#667138260bfba6c8c1be5dda11faf290"><span class="id" title="notation">[</span></a><a class="idref" href="mathcomp.algebra.matrix.html#diag_mx_key"><span class="id" title="lemma">diag_mx_key</span></a><a class="idref" href="mathcomp.algebra.matrix.html#667138260bfba6c8c1be5dda11faf290"><span class="id" title="notation">]</span></a><a class="idref" href="mathcomp.algebra.matrix.html#667138260bfba6c8c1be5dda11faf290"><span class="id" title="notation">_</span></a><a class="idref" href="mathcomp.algebra.matrix.html#667138260bfba6c8c1be5dda11faf290"><span class="id" title="notation">(</span></a><span class="id" title="var">i</span><a class="idref" href="mathcomp.algebra.matrix.html#667138260bfba6c8c1be5dda11faf290"><span class="id" title="notation">,</span></a> <span class="id" title="var">j</span><a class="idref" href="mathcomp.algebra.matrix.html#667138260bfba6c8c1be5dda11faf290"><span class="id" title="notation">)</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#667138260bfba6c8c1be5dda11faf290"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.matrix.html#d"><span class="id" title="variable">d</span></a> 0 <a class="idref" href="mathcomp.algebra.matrix.html#i"><span class="id" title="variable">i</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#891e51846c7d1d63a9cb5458374cf308"><span class="id" title="notation">*+</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#891e51846c7d1d63a9cb5458374cf308"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.matrix.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.matrix.html#j"><span class="id" title="variable">j</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#891e51846c7d1d63a9cb5458374cf308"><span class="id" title="notation">)</span></a><a class="idref" href="mathcomp.algebra.matrix.html#667138260bfba6c8c1be5dda11faf290"><span class="id" title="notation">)</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="tr_diag_mx"><span class="id" title="lemma">tr_diag_mx</span></a> <span class="id" title="var">n</span> (<span class="id" title="var">d</span> : <a class="idref" href="mathcomp.algebra.matrix.html#2bf09b7202225c789149165667752fab"><span class="id" title="notation">'</span></a><a class="idref" href="mathcomp.algebra.matrix.html#2bf09b7202225c789149165667752fab"><span class="id" title="notation">rV_n</span></a>) : <a class="idref" href="mathcomp.algebra.matrix.html#0efdd62d084b88acb1b2860eed745d54"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.matrix.html#diag_mx"><span class="id" title="definition">diag_mx</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#d"><span class="id" title="variable">d</span></a><a class="idref" href="mathcomp.algebra.matrix.html#0efdd62d084b88acb1b2860eed745d54"><span class="id" title="notation">)^</span></a><a class="idref" href="mathcomp.algebra.matrix.html#0efdd62d084b88acb1b2860eed745d54"><span class="id" title="notation">T</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#diag_mx"><span class="id" title="definition">diag_mx</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#d"><span class="id" title="variable">d</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="diag_mx_is_linear"><span class="id" title="lemma">diag_mx_is_linear</span></a> <span class="id" title="var">n</span> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Linear.Exports.linear"><span class="id" title="abbreviation">linear</span></a> (@<a class="idref" href="mathcomp.algebra.matrix.html#diag_mx"><span class="id" title="definition">diag_mx</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#n"><span class="id" title="variable">n</span></a>).<br/> +<span class="id" title="keyword">Canonical</span> <span class="id" title="var">diag_mx_additive</span> <span class="id" title="var">n</span> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Additive.Exports.Additive"><span class="id" title="abbreviation">Additive</span></a> (@<a class="idref" href="mathcomp.algebra.matrix.html#diag_mx_is_linear"><span class="id" title="lemma">diag_mx_is_linear</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#n"><span class="id" title="variable">n</span></a>).<br/> +<span class="id" title="keyword">Canonical</span> <span class="id" title="var">diag_mx_linear</span> <span class="id" title="var">n</span> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Linear.Exports.Linear"><span class="id" title="abbreviation">Linear</span></a> (@<a class="idref" href="mathcomp.algebra.matrix.html#diag_mx_is_linear"><span class="id" title="lemma">diag_mx_is_linear</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#n"><span class="id" title="variable">n</span></a>).<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="diag_mx_sum_delta"><span class="id" title="lemma">diag_mx_sum_delta</span></a> <span class="id" title="var">n</span> (<span class="id" title="var">d</span> : <a class="idref" href="mathcomp.algebra.matrix.html#2bf09b7202225c789149165667752fab"><span class="id" title="notation">'</span></a><a class="idref" href="mathcomp.algebra.matrix.html#2bf09b7202225c789149165667752fab"><span class="id" title="notation">rV_n</span></a>) :<br/> + <a class="idref" href="mathcomp.algebra.matrix.html#diag_mx"><span class="id" title="definition">diag_mx</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#d"><span class="id" title="variable">d</span></a> <a class="idref" href="http://coq.inria.fr/distrib/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.matrix.html#d"><span class="id" title="variable">d</span></a> 0 <a class="idref" href="mathcomp.algebra.matrix.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.matrix.html#delta_mx"><span class="id" title="definition">delta_mx</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#i"><span class="id" title="variable">i</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#i"><span class="id" title="variable">i</span></a>.<br/> + +<br/> +</div> + +<div class="doc"> + Scalar matrix : a diagonal matrix with a constant on the diagonal +</div> +<div class="code"> +<span class="id" title="keyword">Section</span> <a name="MatrixAlgebra.ScalarMx"><span class="id" title="section">ScalarMx</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Variable</span> <a name="MatrixAlgebra.ScalarMx.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/> +<span class="id" title="keyword">Fact</span> <a name="scalar_mx_key"><span class="id" title="lemma">scalar_mx_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="scalar_mx"><span class="id" title="definition">scalar_mx</span></a> <span class="id" title="var">x</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.matrix.html#MatrixAlgebra.R"><span class="id" title="variable">R</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">_n</span></a> :=<br/> + <a class="idref" href="mathcomp.algebra.matrix.html#667138260bfba6c8c1be5dda11faf290"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.algebra.matrix.html#667138260bfba6c8c1be5dda11faf290"><span class="id" title="notation">matrix</span></a><a class="idref" href="mathcomp.algebra.matrix.html#667138260bfba6c8c1be5dda11faf290"><span class="id" title="notation">[</span></a><a class="idref" href="mathcomp.algebra.matrix.html#scalar_mx_key"><span class="id" title="lemma">scalar_mx_key</span></a><a class="idref" href="mathcomp.algebra.matrix.html#667138260bfba6c8c1be5dda11faf290"><span class="id" title="notation">]</span></a><a class="idref" href="mathcomp.algebra.matrix.html#667138260bfba6c8c1be5dda11faf290"><span class="id" title="notation">_</span></a><a class="idref" href="mathcomp.algebra.matrix.html#667138260bfba6c8c1be5dda11faf290"><span class="id" title="notation">(</span></a><span class="id" title="var">i</span> <a class="idref" href="mathcomp.algebra.matrix.html#667138260bfba6c8c1be5dda11faf290"><span class="id" title="notation">,</span></a> <span class="id" title="var">j</span><a class="idref" href="mathcomp.algebra.matrix.html#667138260bfba6c8c1be5dda11faf290"><span class="id" title="notation">)</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#667138260bfba6c8c1be5dda11faf290"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.matrix.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#891e51846c7d1d63a9cb5458374cf308"><span class="id" title="notation">*+</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#891e51846c7d1d63a9cb5458374cf308"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.matrix.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.matrix.html#j"><span class="id" title="variable">j</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#891e51846c7d1d63a9cb5458374cf308"><span class="id" title="notation">)</span></a><a class="idref" href="mathcomp.algebra.matrix.html#667138260bfba6c8c1be5dda11faf290"><span class="id" title="notation">)</span></a>.<br/> +<span class="id" title="keyword">Notation</span> <a name="7e0a687e8b3ecbe9dc390072328f2a02"><span class="id" title="notation">"</span></a>x %:M" := (<a class="idref" href="mathcomp.algebra.matrix.html#scalar_mx"><span class="id" title="definition">scalar_mx</span></a> <span class="id" title="var">x</span>) : <span class="id" title="var">ring_scope</span>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="diag_const_mx"><span class="id" title="lemma">diag_const_mx</span></a> <span class="id" title="var">a</span> : <a class="idref" href="mathcomp.algebra.matrix.html#diag_mx"><span class="id" title="definition">diag_mx</span></a> (<a class="idref" href="mathcomp.algebra.matrix.html#const_mx"><span class="id" title="definition">const_mx</span></a> <a class="idref" href="mathcomp.algebra.matrix.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#8f9364556521ebb498093f28eea2240f"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#a"><span class="id" title="variable">a</span></a><a class="idref" href="mathcomp.algebra.matrix.html#7e0a687e8b3ecbe9dc390072328f2a02"><span class="id" title="notation">%:</span></a><a class="idref" href="mathcomp.algebra.matrix.html#7e0a687e8b3ecbe9dc390072328f2a02"><span class="id" title="notation">M</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.matrix.html#1ce49b162eb757fc4a2e0ce4df0ee5cd"><span class="id" title="notation">'</span></a><a class="idref" href="mathcomp.algebra.matrix.html#1ce49b162eb757fc4a2e0ce4df0ee5cd"><span class="id" title="notation">M_n</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="tr_scalar_mx"><span class="id" title="lemma">tr_scalar_mx</span></a> <span class="id" title="var">a</span> : <a class="idref" href="mathcomp.algebra.matrix.html#0efdd62d084b88acb1b2860eed745d54"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.matrix.html#a"><span class="id" title="variable">a</span></a><a class="idref" href="mathcomp.algebra.matrix.html#7e0a687e8b3ecbe9dc390072328f2a02"><span class="id" title="notation">%:</span></a><a class="idref" href="mathcomp.algebra.matrix.html#7e0a687e8b3ecbe9dc390072328f2a02"><span class="id" title="notation">M</span></a><a class="idref" href="mathcomp.algebra.matrix.html#0efdd62d084b88acb1b2860eed745d54"><span class="id" title="notation">)^</span></a><a class="idref" href="mathcomp.algebra.matrix.html#0efdd62d084b88acb1b2860eed745d54"><span class="id" title="notation">T</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#a"><span class="id" title="variable">a</span></a><a class="idref" href="mathcomp.algebra.matrix.html#7e0a687e8b3ecbe9dc390072328f2a02"><span class="id" title="notation">%:</span></a><a class="idref" href="mathcomp.algebra.matrix.html#7e0a687e8b3ecbe9dc390072328f2a02"><span class="id" title="notation">M</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="trmx1"><span class="id" title="lemma">trmx1</span></a> : <a class="idref" href="mathcomp.algebra.matrix.html#0efdd62d084b88acb1b2860eed745d54"><span class="id" title="notation">(</span></a>1<a class="idref" href="mathcomp.algebra.matrix.html#7e0a687e8b3ecbe9dc390072328f2a02"><span class="id" title="notation">%:</span></a><a class="idref" href="mathcomp.algebra.matrix.html#7e0a687e8b3ecbe9dc390072328f2a02"><span class="id" title="notation">M</span></a><a class="idref" href="mathcomp.algebra.matrix.html#0efdd62d084b88acb1b2860eed745d54"><span class="id" title="notation">)^</span></a><a class="idref" href="mathcomp.algebra.matrix.html#0efdd62d084b88acb1b2860eed745d54"><span class="id" title="notation">T</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> 1<a class="idref" href="mathcomp.algebra.matrix.html#7e0a687e8b3ecbe9dc390072328f2a02"><span class="id" title="notation">%:</span></a><a class="idref" href="mathcomp.algebra.matrix.html#7e0a687e8b3ecbe9dc390072328f2a02"><span class="id" title="notation">M</span></a>. <br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="scalar_mx_is_additive"><span class="id" title="lemma">scalar_mx_is_additive</span></a> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Additive.Exports.additive"><span class="id" title="abbreviation">additive</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#scalar_mx"><span class="id" title="definition">scalar_mx</span></a>.<br/> + <span class="id" title="keyword">Canonical</span> <span class="id" title="var">scalar_mx_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.matrix.html#scalar_mx_is_additive"><span class="id" title="lemma">scalar_mx_is_additive</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="scale_scalar_mx"><span class="id" title="lemma">scale_scalar_mx</span></a> <span class="id" title="var">a1</span> <span class="id" title="var">a2</span> : <a class="idref" href="mathcomp.algebra.matrix.html#a1"><span class="id" title="variable">a1</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#81f8078534dcbb7e13a32d292f766525"><span class="id" title="notation">*:</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#a2"><span class="id" title="variable">a2</span></a><a class="idref" href="mathcomp.algebra.matrix.html#7e0a687e8b3ecbe9dc390072328f2a02"><span class="id" title="notation">%:</span></a><a class="idref" href="mathcomp.algebra.matrix.html#7e0a687e8b3ecbe9dc390072328f2a02"><span class="id" title="notation">M</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.matrix.html#7e0a687e8b3ecbe9dc390072328f2a02"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.matrix.html#a1"><span class="id" title="variable">a1</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#22058a36a53dac65c94ca403bc62650a"><span class="id" title="notation">×</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#a2"><span class="id" title="variable">a2</span></a><a class="idref" href="mathcomp.algebra.matrix.html#7e0a687e8b3ecbe9dc390072328f2a02"><span class="id" title="notation">)%:</span></a><a class="idref" href="mathcomp.algebra.matrix.html#7e0a687e8b3ecbe9dc390072328f2a02"><span class="id" title="notation">M</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.matrix.html#1ce49b162eb757fc4a2e0ce4df0ee5cd"><span class="id" title="notation">'</span></a><a class="idref" href="mathcomp.algebra.matrix.html#1ce49b162eb757fc4a2e0ce4df0ee5cd"><span class="id" title="notation">M_n</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="scalemx1"><span class="id" title="lemma">scalemx1</span></a> <span class="id" title="var">a</span> : <a class="idref" href="mathcomp.algebra.matrix.html#a"><span class="id" title="variable">a</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#81f8078534dcbb7e13a32d292f766525"><span class="id" title="notation">*:</span></a> 1<a class="idref" href="mathcomp.algebra.matrix.html#7e0a687e8b3ecbe9dc390072328f2a02"><span class="id" title="notation">%:</span></a><a class="idref" href="mathcomp.algebra.matrix.html#7e0a687e8b3ecbe9dc390072328f2a02"><span class="id" title="notation">M</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#a"><span class="id" title="variable">a</span></a><a class="idref" href="mathcomp.algebra.matrix.html#7e0a687e8b3ecbe9dc390072328f2a02"><span class="id" title="notation">%:</span></a><a class="idref" href="mathcomp.algebra.matrix.html#7e0a687e8b3ecbe9dc390072328f2a02"><span class="id" title="notation">M</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="scalar_mx_sum_delta"><span class="id" title="lemma">scalar_mx_sum_delta</span></a> <span class="id" title="var">a</span> : <a class="idref" href="mathcomp.algebra.matrix.html#a"><span class="id" title="variable">a</span></a><a class="idref" href="mathcomp.algebra.matrix.html#7e0a687e8b3ecbe9dc390072328f2a02"><span class="id" title="notation">%:</span></a><a class="idref" href="mathcomp.algebra.matrix.html#7e0a687e8b3ecbe9dc390072328f2a02"><span class="id" title="notation">M</span></a> <a class="idref" href="http://coq.inria.fr/distrib/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.matrix.html#a"><span class="id" title="variable">a</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#81f8078534dcbb7e13a32d292f766525"><span class="id" title="notation">*:</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#delta_mx"><span class="id" title="definition">delta_mx</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#i"><span class="id" title="variable">i</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#i"><span class="id" title="variable">i</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="mx1_sum_delta"><span class="id" title="lemma">mx1_sum_delta</span></a> : 1<a class="idref" href="mathcomp.algebra.matrix.html#7e0a687e8b3ecbe9dc390072328f2a02"><span class="id" title="notation">%:</span></a><a class="idref" href="mathcomp.algebra.matrix.html#7e0a687e8b3ecbe9dc390072328f2a02"><span class="id" title="notation">M</span></a> <a class="idref" href="http://coq.inria.fr/distrib/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.matrix.html#delta_mx"><span class="id" title="definition">delta_mx</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#i"><span class="id" title="variable">i</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#i"><span class="id" title="variable">i</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="row1"><span class="id" title="lemma">row1</span></a> <span class="id" title="var">i</span> : <a class="idref" href="mathcomp.algebra.matrix.html#row"><span class="id" title="definition">row</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#i"><span class="id" title="variable">i</span></a> 1<a class="idref" href="mathcomp.algebra.matrix.html#7e0a687e8b3ecbe9dc390072328f2a02"><span class="id" title="notation">%:</span></a><a class="idref" href="mathcomp.algebra.matrix.html#7e0a687e8b3ecbe9dc390072328f2a02"><span class="id" title="notation">M</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#delta_mx"><span class="id" title="definition">delta_mx</span></a> 0 <a class="idref" href="mathcomp.algebra.matrix.html#i"><span class="id" title="variable">i</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Definition</span> <a name="is_scalar_mx"><span class="id" title="definition">is_scalar_mx</span></a> (<span class="id" title="var">A</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.matrix.html#MatrixAlgebra.R"><span class="id" title="variable">R</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">_n</span></a>) :=<br/> + <span class="id" title="keyword">if</span> <a class="idref" href="mathcomp.ssreflect.eqtype.html#insub"><span class="id" title="definition">insub</span></a> 0%<span class="id" title="var">N</span> <span class="id" title="keyword">is</span> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#Some"><span class="id" title="constructor">Some</span></a> <span class="id" title="var">i</span> <span class="id" title="keyword">then</span> <a class="idref" href="mathcomp.algebra.matrix.html#A"><span class="id" title="variable">A</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#17d28d004d0863cb022d4ce832ddaaae"><span class="id" title="notation">==</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#7e0a687e8b3ecbe9dc390072328f2a02"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.matrix.html#A"><span class="id" title="variable">A</span></a> <span class="id" title="var">i</span> <span class="id" title="var">i</span><a class="idref" href="mathcomp.algebra.matrix.html#7e0a687e8b3ecbe9dc390072328f2a02"><span class="id" title="notation">)%:</span></a><a class="idref" href="mathcomp.algebra.matrix.html#7e0a687e8b3ecbe9dc390072328f2a02"><span class="id" title="notation">M</span></a> <span class="id" title="keyword">else</span> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#true"><span class="id" title="constructor">true</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="is_scalar_mxP"><span class="id" title="lemma">is_scalar_mxP</span></a> <span class="id" title="var">A</span> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#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">a</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.matrix.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.matrix.html#a"><span class="id" title="variable">a</span></a><a class="idref" href="mathcomp.algebra.matrix.html#7e0a687e8b3ecbe9dc390072328f2a02"><span class="id" title="notation">%:</span></a><a class="idref" href="mathcomp.algebra.matrix.html#7e0a687e8b3ecbe9dc390072328f2a02"><span class="id" title="notation">M</span></a>) (<a class="idref" href="mathcomp.algebra.matrix.html#is_scalar_mx"><span class="id" title="definition">is_scalar_mx</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#A"><span class="id" title="variable">A</span></a>).<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="scalar_mx_is_scalar"><span class="id" title="lemma">scalar_mx_is_scalar</span></a> <span class="id" title="var">a</span> : <a class="idref" href="mathcomp.algebra.matrix.html#is_scalar_mx"><span class="id" title="definition">is_scalar_mx</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#a"><span class="id" title="variable">a</span></a><a class="idref" href="mathcomp.algebra.matrix.html#7e0a687e8b3ecbe9dc390072328f2a02"><span class="id" title="notation">%:</span></a><a class="idref" href="mathcomp.algebra.matrix.html#7e0a687e8b3ecbe9dc390072328f2a02"><span class="id" title="notation">M</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="mx0_is_scalar"><span class="id" title="lemma">mx0_is_scalar</span></a> : <a class="idref" href="mathcomp.algebra.matrix.html#is_scalar_mx"><span class="id" title="definition">is_scalar_mx</span></a> 0.<br/> + +<br/> +<span class="id" title="keyword">End</span> <a class="idref" href="mathcomp.algebra.matrix.html#MatrixAlgebra.ScalarMx"><span class="id" title="section">ScalarMx</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Notation</span> <a name="f0439935524a049a771823d6a7a44496"><span class="id" title="notation">"</span></a>x %:M" := (<a class="idref" href="mathcomp.algebra.matrix.html#scalar_mx"><span class="id" title="definition">scalar_mx</span></a> <span class="id" title="var">_</span> <span class="id" title="var">x</span>) : <span class="id" title="var">ring_scope</span>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="mx11_scalar"><span class="id" title="lemma">mx11_scalar</span></a> (<span class="id" title="var">A</span> : <a class="idref" href="mathcomp.algebra.matrix.html#1ce49b162eb757fc4a2e0ce4df0ee5cd"><span class="id" title="notation">'</span></a><a class="idref" href="mathcomp.algebra.matrix.html#1ce49b162eb757fc4a2e0ce4df0ee5cd"><span class="id" title="notation">M_1</span></a>) : <a class="idref" href="mathcomp.algebra.matrix.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.matrix.html#f0439935524a049a771823d6a7a44496"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.matrix.html#A"><span class="id" title="variable">A</span></a> 0 0<a class="idref" href="mathcomp.algebra.matrix.html#f0439935524a049a771823d6a7a44496"><span class="id" title="notation">)%:</span></a><a class="idref" href="mathcomp.algebra.matrix.html#f0439935524a049a771823d6a7a44496"><span class="id" title="notation">M</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="scalar_mx_block"><span class="id" title="lemma">scalar_mx_block</span></a> <span class="id" title="var">n1</span> <span class="id" title="var">n2</span> <span class="id" title="var">a</span> : <a class="idref" href="mathcomp.algebra.matrix.html#a"><span class="id" title="variable">a</span></a><a class="idref" href="mathcomp.algebra.matrix.html#f0439935524a049a771823d6a7a44496"><span class="id" title="notation">%:</span></a><a class="idref" href="mathcomp.algebra.matrix.html#f0439935524a049a771823d6a7a44496"><span class="id" title="notation">M</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.matrix.html#block_mx"><span class="id" title="definition">block_mx</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#a"><span class="id" title="variable">a</span></a><a class="idref" href="mathcomp.algebra.matrix.html#f0439935524a049a771823d6a7a44496"><span class="id" title="notation">%:</span></a><a class="idref" href="mathcomp.algebra.matrix.html#f0439935524a049a771823d6a7a44496"><span class="id" title="notation">M</span></a> 0 0 <a class="idref" href="mathcomp.algebra.matrix.html#a"><span class="id" title="variable">a</span></a><a class="idref" href="mathcomp.algebra.matrix.html#f0439935524a049a771823d6a7a44496"><span class="id" title="notation">%:</span></a><a class="idref" href="mathcomp.algebra.matrix.html#f0439935524a049a771823d6a7a44496"><span class="id" title="notation">M</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.matrix.html#ff2814b13b0b9cfba84a98df9a2ac866"><span class="id" title="notation">'</span></a><a class="idref" href="mathcomp.algebra.matrix.html#ff2814b13b0b9cfba84a98df9a2ac866"><span class="id" title="notation">M_</span></a><a class="idref" href="mathcomp.algebra.matrix.html#ff2814b13b0b9cfba84a98df9a2ac866"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.matrix.html#n1"><span class="id" title="variable">n1</span></a> <a class="idref" href="mathcomp.ssreflect.ssrnat.html#b3eea360671e1b32b18a26e15b3aace3"><span class="id" title="notation">+</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#n2"><span class="id" title="variable">n2</span></a><a class="idref" href="mathcomp.algebra.matrix.html#ff2814b13b0b9cfba84a98df9a2ac866"><span class="id" title="notation">)</span></a>.<br/> + +<br/> +</div> + +<div class="doc"> + Matrix multiplication using bigops. +</div> +<div class="code"> +<span class="id" title="keyword">Fact</span> <a name="mulmx_key"><span class="id" title="lemma">mulmx_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="mulmx"><span class="id" title="definition">mulmx</span></a> {<span class="id" title="var">m</span> <span class="id" title="var">n</span> <span class="id" title="var">p</span>} (<span class="id" title="var">A</span> : <a class="idref" href="mathcomp.algebra.matrix.html#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.matrix.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.matrix.html#n"><span class="id" title="variable">n</span></a><a class="idref" href="mathcomp.algebra.matrix.html#cb37620352ad6b90a047a361359e2f04"><span class="id" title="notation">)</span></a>) (<span class="id" title="var">B</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.matrix.html#n"><span class="id" title="variable">n</span></a><a class="idref" href="mathcomp.algebra.matrix.html#cb37620352ad6b90a047a361359e2f04"><span class="id" title="notation">,</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#p"><span class="id" title="variable">p</span></a><a class="idref" href="mathcomp.algebra.matrix.html#cb37620352ad6b90a047a361359e2f04"><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">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.matrix.html#MatrixAlgebra.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.matrix.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.matrix.html#p"><span class="id" title="variable">p</span></a><a class="idref" href="mathcomp.algebra.matrix.html#e36c289fb249221b43b9c978a67340fb"><span class="id" title="notation">)</span></a> :=<br/> + <a class="idref" href="mathcomp.algebra.matrix.html#667138260bfba6c8c1be5dda11faf290"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.algebra.matrix.html#667138260bfba6c8c1be5dda11faf290"><span class="id" title="notation">matrix</span></a><a class="idref" href="mathcomp.algebra.matrix.html#667138260bfba6c8c1be5dda11faf290"><span class="id" title="notation">[</span></a><a class="idref" href="mathcomp.algebra.matrix.html#mulmx_key"><span class="id" title="lemma">mulmx_key</span></a><a class="idref" href="mathcomp.algebra.matrix.html#667138260bfba6c8c1be5dda11faf290"><span class="id" title="notation">]</span></a><a class="idref" href="mathcomp.algebra.matrix.html#667138260bfba6c8c1be5dda11faf290"><span class="id" title="notation">_</span></a><a class="idref" href="mathcomp.algebra.matrix.html#667138260bfba6c8c1be5dda11faf290"><span class="id" title="notation">(</span></a><span class="id" title="var">i</span><a class="idref" href="mathcomp.algebra.matrix.html#667138260bfba6c8c1be5dda11faf290"><span class="id" title="notation">,</span></a> <span class="id" title="var">k</span><a class="idref" href="mathcomp.algebra.matrix.html#667138260bfba6c8c1be5dda11faf290"><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_j</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#640778742e86daa97d31c9911c679af3"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.matrix.html#A"><span class="id" title="variable">A</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#i"><span class="id" title="variable">i</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#j"><span class="id" title="variable">j</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#22058a36a53dac65c94ca403bc62650a"><span class="id" title="notation">×</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#B"><span class="id" title="variable">B</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#j"><span class="id" title="variable">j</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#k"><span class="id" title="variable">k</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#640778742e86daa97d31c9911c679af3"><span class="id" title="notation">)</span></a>.<br/> + +<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="mulmxA"><span class="id" title="lemma">mulmxA</span></a> <span class="id" title="var">m</span> <span class="id" title="var">n</span> <span class="id" title="var">p</span> <span class="id" title="var">q</span> (<span class="id" title="var">A</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.matrix.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.matrix.html#n"><span class="id" title="variable">n</span></a><a class="idref" href="mathcomp.algebra.matrix.html#cb37620352ad6b90a047a361359e2f04"><span class="id" title="notation">)</span></a>) (<span class="id" title="var">B</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.matrix.html#n"><span class="id" title="variable">n</span></a><a class="idref" href="mathcomp.algebra.matrix.html#cb37620352ad6b90a047a361359e2f04"><span class="id" title="notation">,</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#p"><span class="id" title="variable">p</span></a><a class="idref" href="mathcomp.algebra.matrix.html#cb37620352ad6b90a047a361359e2f04"><span class="id" title="notation">)</span></a>) (<span class="id" title="var">C</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.matrix.html#p"><span class="id" title="variable">p</span></a><a class="idref" href="mathcomp.algebra.matrix.html#cb37620352ad6b90a047a361359e2f04"><span class="id" title="notation">,</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#q"><span class="id" title="variable">q</span></a><a class="idref" href="mathcomp.algebra.matrix.html#cb37620352ad6b90a047a361359e2f04"><span class="id" title="notation">)</span></a>) :<br/> + <a class="idref" href="mathcomp.algebra.matrix.html#A"><span class="id" title="variable">A</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#214a0bf07a0a0de5c6aebf03e1f2a5c7"><span class="id" title="notation">×</span></a><a class="idref" href="mathcomp.algebra.matrix.html#214a0bf07a0a0de5c6aebf03e1f2a5c7"><span class="id" title="notation">m</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#214a0bf07a0a0de5c6aebf03e1f2a5c7"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.matrix.html#B"><span class="id" title="variable">B</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#214a0bf07a0a0de5c6aebf03e1f2a5c7"><span class="id" title="notation">×</span></a><a class="idref" href="mathcomp.algebra.matrix.html#214a0bf07a0a0de5c6aebf03e1f2a5c7"><span class="id" title="notation">m</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#C"><span class="id" title="variable">C</span></a><a class="idref" href="mathcomp.algebra.matrix.html#214a0bf07a0a0de5c6aebf03e1f2a5c7"><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.matrix.html#A"><span class="id" title="variable">A</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#214a0bf07a0a0de5c6aebf03e1f2a5c7"><span class="id" title="notation">×</span></a><a class="idref" href="mathcomp.algebra.matrix.html#214a0bf07a0a0de5c6aebf03e1f2a5c7"><span class="id" title="notation">m</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#B"><span class="id" title="variable">B</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#214a0bf07a0a0de5c6aebf03e1f2a5c7"><span class="id" title="notation">×</span></a><a class="idref" href="mathcomp.algebra.matrix.html#214a0bf07a0a0de5c6aebf03e1f2a5c7"><span class="id" title="notation">m</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#C"><span class="id" title="variable">C</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="mul0mx"><span class="id" title="lemma">mul0mx</span></a> <span class="id" title="var">m</span> <span class="id" title="var">n</span> <span class="id" title="var">p</span> (<span class="id" title="var">A</span> : <a class="idref" href="mathcomp.algebra.matrix.html#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.matrix.html#n"><span class="id" title="variable">n</span></a><a class="idref" href="mathcomp.algebra.matrix.html#cb37620352ad6b90a047a361359e2f04"><span class="id" title="notation">,</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#p"><span class="id" title="variable">p</span></a><a class="idref" href="mathcomp.algebra.matrix.html#cb37620352ad6b90a047a361359e2f04"><span class="id" title="notation">)</span></a>) : 0 <a class="idref" href="mathcomp.algebra.matrix.html#214a0bf07a0a0de5c6aebf03e1f2a5c7"><span class="id" title="notation">×</span></a><a class="idref" href="mathcomp.algebra.matrix.html#214a0bf07a0a0de5c6aebf03e1f2a5c7"><span class="id" title="notation">m</span></a> <a class="idref" href="mathcomp.algebra.matrix.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#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.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.matrix.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.matrix.html#p"><span class="id" title="variable">p</span></a><a class="idref" href="mathcomp.algebra.matrix.html#cb37620352ad6b90a047a361359e2f04"><span class="id" title="notation">)</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="mulmx0"><span class="id" title="lemma">mulmx0</span></a> <span class="id" title="var">m</span> <span class="id" title="var">n</span> <span class="id" title="var">p</span> (<span class="id" title="var">A</span> : <a class="idref" href="mathcomp.algebra.matrix.html#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.matrix.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.matrix.html#n"><span class="id" title="variable">n</span></a><a class="idref" href="mathcomp.algebra.matrix.html#cb37620352ad6b90a047a361359e2f04"><span class="id" title="notation">)</span></a>) : <a class="idref" href="mathcomp.algebra.matrix.html#A"><span class="id" title="variable">A</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#214a0bf07a0a0de5c6aebf03e1f2a5c7"><span class="id" title="notation">×</span></a><a class="idref" href="mathcomp.algebra.matrix.html#214a0bf07a0a0de5c6aebf03e1f2a5c7"><span class="id" title="notation">m</span></a> 0 <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#8f9364556521ebb498093f28eea2240f"><span class="id" title="notation">=</span></a> 0 <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#8f9364556521ebb498093f28eea2240f"><span class="id" title="notation">:></span></a> <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.matrix.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.matrix.html#p"><span class="id" title="variable">p</span></a><a class="idref" href="mathcomp.algebra.matrix.html#cb37620352ad6b90a047a361359e2f04"><span class="id" title="notation">)</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="mulmxN"><span class="id" title="lemma">mulmxN</span></a> <span class="id" title="var">m</span> <span class="id" title="var">n</span> <span class="id" title="var">p</span> (<span class="id" title="var">A</span> : <a class="idref" href="mathcomp.algebra.matrix.html#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.matrix.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.matrix.html#n"><span class="id" title="variable">n</span></a><a class="idref" href="mathcomp.algebra.matrix.html#cb37620352ad6b90a047a361359e2f04"><span class="id" title="notation">)</span></a>) (<span class="id" title="var">B</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.matrix.html#n"><span class="id" title="variable">n</span></a><a class="idref" href="mathcomp.algebra.matrix.html#cb37620352ad6b90a047a361359e2f04"><span class="id" title="notation">,</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#p"><span class="id" title="variable">p</span></a><a class="idref" href="mathcomp.algebra.matrix.html#cb37620352ad6b90a047a361359e2f04"><span class="id" title="notation">)</span></a>) : <a class="idref" href="mathcomp.algebra.matrix.html#A"><span class="id" title="variable">A</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#214a0bf07a0a0de5c6aebf03e1f2a5c7"><span class="id" title="notation">×</span></a><a class="idref" href="mathcomp.algebra.matrix.html#214a0bf07a0a0de5c6aebf03e1f2a5c7"><span class="id" title="notation">m</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#214a0bf07a0a0de5c6aebf03e1f2a5c7"><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.matrix.html#B"><span class="id" title="variable">B</span></a><a class="idref" href="mathcomp.algebra.matrix.html#214a0bf07a0a0de5c6aebf03e1f2a5c7"><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.matrix.html#A"><span class="id" title="variable">A</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#214a0bf07a0a0de5c6aebf03e1f2a5c7"><span class="id" title="notation">×</span></a><a class="idref" href="mathcomp.algebra.matrix.html#214a0bf07a0a0de5c6aebf03e1f2a5c7"><span class="id" title="notation">m</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#B"><span class="id" title="variable">B</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#941c6d086004545bd62614d0213e75e5"><span class="id" title="notation">)</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="mulNmx"><span class="id" title="lemma">mulNmx</span></a> <span class="id" title="var">m</span> <span class="id" title="var">n</span> <span class="id" title="var">p</span> (<span class="id" title="var">A</span> : <a class="idref" href="mathcomp.algebra.matrix.html#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.matrix.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.matrix.html#n"><span class="id" title="variable">n</span></a><a class="idref" href="mathcomp.algebra.matrix.html#cb37620352ad6b90a047a361359e2f04"><span class="id" title="notation">)</span></a>) (<span class="id" title="var">B</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.matrix.html#n"><span class="id" title="variable">n</span></a><a class="idref" href="mathcomp.algebra.matrix.html#cb37620352ad6b90a047a361359e2f04"><span class="id" title="notation">,</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#p"><span class="id" title="variable">p</span></a><a class="idref" href="mathcomp.algebra.matrix.html#cb37620352ad6b90a047a361359e2f04"><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.matrix.html#A"><span class="id" title="variable">A</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#214a0bf07a0a0de5c6aebf03e1f2a5c7"><span class="id" title="notation">×</span></a><a class="idref" href="mathcomp.algebra.matrix.html#214a0bf07a0a0de5c6aebf03e1f2a5c7"><span class="id" title="notation">m</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#B"><span class="id" title="variable">B</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="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.matrix.html#A"><span class="id" title="variable">A</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#214a0bf07a0a0de5c6aebf03e1f2a5c7"><span class="id" title="notation">×</span></a><a class="idref" href="mathcomp.algebra.matrix.html#214a0bf07a0a0de5c6aebf03e1f2a5c7"><span class="id" title="notation">m</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#B"><span class="id" title="variable">B</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#941c6d086004545bd62614d0213e75e5"><span class="id" title="notation">)</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="mulmxDl"><span class="id" title="lemma">mulmxDl</span></a> <span class="id" title="var">m</span> <span class="id" title="var">n</span> <span class="id" title="var">p</span> (<span class="id" title="var">A1</span> <span class="id" title="var">A2</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.matrix.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.matrix.html#n"><span class="id" title="variable">n</span></a><a class="idref" href="mathcomp.algebra.matrix.html#cb37620352ad6b90a047a361359e2f04"><span class="id" title="notation">)</span></a>) (<span class="id" title="var">B</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.matrix.html#n"><span class="id" title="variable">n</span></a><a class="idref" href="mathcomp.algebra.matrix.html#cb37620352ad6b90a047a361359e2f04"><span class="id" title="notation">,</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#p"><span class="id" title="variable">p</span></a><a class="idref" href="mathcomp.algebra.matrix.html#cb37620352ad6b90a047a361359e2f04"><span class="id" title="notation">)</span></a>) :<br/> + <a class="idref" href="mathcomp.algebra.matrix.html#214a0bf07a0a0de5c6aebf03e1f2a5c7"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.matrix.html#A1"><span class="id" title="variable">A1</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#ae4d81913e6239182a9ac7467ffde8cd"><span class="id" title="notation">+</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#A2"><span class="id" title="variable">A2</span></a><a class="idref" href="mathcomp.algebra.matrix.html#214a0bf07a0a0de5c6aebf03e1f2a5c7"><span class="id" title="notation">)</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#214a0bf07a0a0de5c6aebf03e1f2a5c7"><span class="id" title="notation">×</span></a><a class="idref" href="mathcomp.algebra.matrix.html#214a0bf07a0a0de5c6aebf03e1f2a5c7"><span class="id" title="notation">m</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#B"><span class="id" title="variable">B</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#A1"><span class="id" title="variable">A1</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#214a0bf07a0a0de5c6aebf03e1f2a5c7"><span class="id" title="notation">×</span></a><a class="idref" href="mathcomp.algebra.matrix.html#214a0bf07a0a0de5c6aebf03e1f2a5c7"><span class="id" title="notation">m</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#B"><span class="id" title="variable">B</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#ae4d81913e6239182a9ac7467ffde8cd"><span class="id" title="notation">+</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#A2"><span class="id" title="variable">A2</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#214a0bf07a0a0de5c6aebf03e1f2a5c7"><span class="id" title="notation">×</span></a><a class="idref" href="mathcomp.algebra.matrix.html#214a0bf07a0a0de5c6aebf03e1f2a5c7"><span class="id" title="notation">m</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#B"><span class="id" title="variable">B</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="mulmxDr"><span class="id" title="lemma">mulmxDr</span></a> <span class="id" title="var">m</span> <span class="id" title="var">n</span> <span class="id" title="var">p</span> (<span class="id" title="var">A</span> : <a class="idref" href="mathcomp.algebra.matrix.html#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.matrix.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.matrix.html#n"><span class="id" title="variable">n</span></a><a class="idref" href="mathcomp.algebra.matrix.html#cb37620352ad6b90a047a361359e2f04"><span class="id" title="notation">)</span></a>) (<span class="id" title="var">B1</span> <span class="id" title="var">B2</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.matrix.html#n"><span class="id" title="variable">n</span></a><a class="idref" href="mathcomp.algebra.matrix.html#cb37620352ad6b90a047a361359e2f04"><span class="id" title="notation">,</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#p"><span class="id" title="variable">p</span></a><a class="idref" href="mathcomp.algebra.matrix.html#cb37620352ad6b90a047a361359e2f04"><span class="id" title="notation">)</span></a>) :<br/> + <a class="idref" href="mathcomp.algebra.matrix.html#A"><span class="id" title="variable">A</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#214a0bf07a0a0de5c6aebf03e1f2a5c7"><span class="id" title="notation">×</span></a><a class="idref" href="mathcomp.algebra.matrix.html#214a0bf07a0a0de5c6aebf03e1f2a5c7"><span class="id" title="notation">m</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#214a0bf07a0a0de5c6aebf03e1f2a5c7"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.matrix.html#B1"><span class="id" title="variable">B1</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#ae4d81913e6239182a9ac7467ffde8cd"><span class="id" title="notation">+</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#B2"><span class="id" title="variable">B2</span></a><a class="idref" href="mathcomp.algebra.matrix.html#214a0bf07a0a0de5c6aebf03e1f2a5c7"><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.matrix.html#A"><span class="id" title="variable">A</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#214a0bf07a0a0de5c6aebf03e1f2a5c7"><span class="id" title="notation">×</span></a><a class="idref" href="mathcomp.algebra.matrix.html#214a0bf07a0a0de5c6aebf03e1f2a5c7"><span class="id" title="notation">m</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#B1"><span class="id" title="variable">B1</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#ae4d81913e6239182a9ac7467ffde8cd"><span class="id" title="notation">+</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#A"><span class="id" title="variable">A</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#214a0bf07a0a0de5c6aebf03e1f2a5c7"><span class="id" title="notation">×</span></a><a class="idref" href="mathcomp.algebra.matrix.html#214a0bf07a0a0de5c6aebf03e1f2a5c7"><span class="id" title="notation">m</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#B2"><span class="id" title="variable">B2</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="mulmxBl"><span class="id" title="lemma">mulmxBl</span></a> <span class="id" title="var">m</span> <span class="id" title="var">n</span> <span class="id" title="var">p</span> (<span class="id" title="var">A1</span> <span class="id" title="var">A2</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.matrix.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.matrix.html#n"><span class="id" title="variable">n</span></a><a class="idref" href="mathcomp.algebra.matrix.html#cb37620352ad6b90a047a361359e2f04"><span class="id" title="notation">)</span></a>) (<span class="id" title="var">B</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.matrix.html#n"><span class="id" title="variable">n</span></a><a class="idref" href="mathcomp.algebra.matrix.html#cb37620352ad6b90a047a361359e2f04"><span class="id" title="notation">,</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#p"><span class="id" title="variable">p</span></a><a class="idref" href="mathcomp.algebra.matrix.html#cb37620352ad6b90a047a361359e2f04"><span class="id" title="notation">)</span></a>) :<br/> + <a class="idref" href="mathcomp.algebra.matrix.html#214a0bf07a0a0de5c6aebf03e1f2a5c7"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.matrix.html#A1"><span class="id" title="variable">A1</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#d70623330b2787db6b196e37db7d8f45"><span class="id" title="notation">-</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#A2"><span class="id" title="variable">A2</span></a><a class="idref" href="mathcomp.algebra.matrix.html#214a0bf07a0a0de5c6aebf03e1f2a5c7"><span class="id" title="notation">)</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#214a0bf07a0a0de5c6aebf03e1f2a5c7"><span class="id" title="notation">×</span></a><a class="idref" href="mathcomp.algebra.matrix.html#214a0bf07a0a0de5c6aebf03e1f2a5c7"><span class="id" title="notation">m</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#B"><span class="id" title="variable">B</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#A1"><span class="id" title="variable">A1</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#214a0bf07a0a0de5c6aebf03e1f2a5c7"><span class="id" title="notation">×</span></a><a class="idref" href="mathcomp.algebra.matrix.html#214a0bf07a0a0de5c6aebf03e1f2a5c7"><span class="id" title="notation">m</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#B"><span class="id" title="variable">B</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#d70623330b2787db6b196e37db7d8f45"><span class="id" title="notation">-</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#A2"><span class="id" title="variable">A2</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#214a0bf07a0a0de5c6aebf03e1f2a5c7"><span class="id" title="notation">×</span></a><a class="idref" href="mathcomp.algebra.matrix.html#214a0bf07a0a0de5c6aebf03e1f2a5c7"><span class="id" title="notation">m</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#B"><span class="id" title="variable">B</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="mulmxBr"><span class="id" title="lemma">mulmxBr</span></a> <span class="id" title="var">m</span> <span class="id" title="var">n</span> <span class="id" title="var">p</span> (<span class="id" title="var">A</span> : <a class="idref" href="mathcomp.algebra.matrix.html#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.matrix.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.matrix.html#n"><span class="id" title="variable">n</span></a><a class="idref" href="mathcomp.algebra.matrix.html#cb37620352ad6b90a047a361359e2f04"><span class="id" title="notation">)</span></a>) (<span class="id" title="var">B1</span> <span class="id" title="var">B2</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.matrix.html#n"><span class="id" title="variable">n</span></a><a class="idref" href="mathcomp.algebra.matrix.html#cb37620352ad6b90a047a361359e2f04"><span class="id" title="notation">,</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#p"><span class="id" title="variable">p</span></a><a class="idref" href="mathcomp.algebra.matrix.html#cb37620352ad6b90a047a361359e2f04"><span class="id" title="notation">)</span></a>) :<br/> + <a class="idref" href="mathcomp.algebra.matrix.html#A"><span class="id" title="variable">A</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#214a0bf07a0a0de5c6aebf03e1f2a5c7"><span class="id" title="notation">×</span></a><a class="idref" href="mathcomp.algebra.matrix.html#214a0bf07a0a0de5c6aebf03e1f2a5c7"><span class="id" title="notation">m</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#214a0bf07a0a0de5c6aebf03e1f2a5c7"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.matrix.html#B1"><span class="id" title="variable">B1</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#d70623330b2787db6b196e37db7d8f45"><span class="id" title="notation">-</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#B2"><span class="id" title="variable">B2</span></a><a class="idref" href="mathcomp.algebra.matrix.html#214a0bf07a0a0de5c6aebf03e1f2a5c7"><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.matrix.html#A"><span class="id" title="variable">A</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#214a0bf07a0a0de5c6aebf03e1f2a5c7"><span class="id" title="notation">×</span></a><a class="idref" href="mathcomp.algebra.matrix.html#214a0bf07a0a0de5c6aebf03e1f2a5c7"><span class="id" title="notation">m</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#B1"><span class="id" title="variable">B1</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#d70623330b2787db6b196e37db7d8f45"><span class="id" title="notation">-</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#A"><span class="id" title="variable">A</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#214a0bf07a0a0de5c6aebf03e1f2a5c7"><span class="id" title="notation">×</span></a><a class="idref" href="mathcomp.algebra.matrix.html#214a0bf07a0a0de5c6aebf03e1f2a5c7"><span class="id" title="notation">m</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#B2"><span class="id" title="variable">B2</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="mulmx_suml"><span class="id" title="lemma">mulmx_suml</span></a> <span class="id" title="var">m</span> <span class="id" title="var">n</span> <span class="id" title="var">p</span> (<span class="id" title="var">A</span> : <a class="idref" href="mathcomp.algebra.matrix.html#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.matrix.html#n"><span class="id" title="variable">n</span></a><a class="idref" href="mathcomp.algebra.matrix.html#cb37620352ad6b90a047a361359e2f04"><span class="id" title="notation">,</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#p"><span class="id" title="variable">p</span></a><a class="idref" href="mathcomp.algebra.matrix.html#cb37620352ad6b90a047a361359e2f04"><span class="id" title="notation">)</span></a>) <span class="id" title="var">I</span> <span class="id" title="var">r</span> <span class="id" title="var">P</span> (<span class="id" title="var">B_</span> : <a class="idref" href="mathcomp.algebra.matrix.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.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.matrix.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.matrix.html#n"><span class="id" title="variable">n</span></a><a class="idref" href="mathcomp.algebra.matrix.html#cb37620352ad6b90a047a361359e2f04"><span class="id" title="notation">)</span></a>) :<br/> + <a class="idref" href="mathcomp.algebra.matrix.html#214a0bf07a0a0de5c6aebf03e1f2a5c7"><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.matrix.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.matrix.html#P"><span class="id" title="variable">P</span></a> <a class="idref" href="mathcomp.algebra.matrix.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.matrix.html#B_"><span class="id" title="variable">B_</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#i"><span class="id" title="variable">i</span></a><a class="idref" href="mathcomp.algebra.matrix.html#214a0bf07a0a0de5c6aebf03e1f2a5c7"><span class="id" title="notation">)</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#214a0bf07a0a0de5c6aebf03e1f2a5c7"><span class="id" title="notation">×</span></a><a class="idref" href="mathcomp.algebra.matrix.html#214a0bf07a0a0de5c6aebf03e1f2a5c7"><span class="id" title="notation">m</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#A"><span class="id" title="variable">A</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#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.matrix.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.matrix.html#P"><span class="id" title="variable">P</span></a> <a class="idref" href="mathcomp.algebra.matrix.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.matrix.html#B_"><span class="id" title="variable">B_</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#i"><span class="id" title="variable">i</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#214a0bf07a0a0de5c6aebf03e1f2a5c7"><span class="id" title="notation">×</span></a><a class="idref" href="mathcomp.algebra.matrix.html#214a0bf07a0a0de5c6aebf03e1f2a5c7"><span class="id" title="notation">m</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#A"><span class="id" title="variable">A</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="mulmx_sumr"><span class="id" title="lemma">mulmx_sumr</span></a> <span class="id" title="var">m</span> <span class="id" title="var">n</span> <span class="id" title="var">p</span> (<span class="id" title="var">A</span> : <a class="idref" href="mathcomp.algebra.matrix.html#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.matrix.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.matrix.html#n"><span class="id" title="variable">n</span></a><a class="idref" href="mathcomp.algebra.matrix.html#cb37620352ad6b90a047a361359e2f04"><span class="id" title="notation">)</span></a>) <span class="id" title="var">I</span> <span class="id" title="var">r</span> <span class="id" title="var">P</span> (<span class="id" title="var">B_</span> : <a class="idref" href="mathcomp.algebra.matrix.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.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.matrix.html#n"><span class="id" title="variable">n</span></a><a class="idref" href="mathcomp.algebra.matrix.html#cb37620352ad6b90a047a361359e2f04"><span class="id" title="notation">,</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#p"><span class="id" title="variable">p</span></a><a class="idref" href="mathcomp.algebra.matrix.html#cb37620352ad6b90a047a361359e2f04"><span class="id" title="notation">)</span></a>) :<br/> + <a class="idref" href="mathcomp.algebra.matrix.html#A"><span class="id" title="variable">A</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#214a0bf07a0a0de5c6aebf03e1f2a5c7"><span class="id" title="notation">×</span></a><a class="idref" href="mathcomp.algebra.matrix.html#214a0bf07a0a0de5c6aebf03e1f2a5c7"><span class="id" title="notation">m</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#214a0bf07a0a0de5c6aebf03e1f2a5c7"><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.matrix.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.matrix.html#P"><span class="id" title="variable">P</span></a> <a class="idref" href="mathcomp.algebra.matrix.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.matrix.html#B_"><span class="id" title="variable">B_</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#i"><span class="id" title="variable">i</span></a><a class="idref" href="mathcomp.algebra.matrix.html#214a0bf07a0a0de5c6aebf03e1f2a5c7"><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#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.matrix.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.matrix.html#P"><span class="id" title="variable">P</span></a> <a class="idref" href="mathcomp.algebra.matrix.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.matrix.html#A"><span class="id" title="variable">A</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#214a0bf07a0a0de5c6aebf03e1f2a5c7"><span class="id" title="notation">×</span></a><a class="idref" href="mathcomp.algebra.matrix.html#214a0bf07a0a0de5c6aebf03e1f2a5c7"><span class="id" title="notation">m</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#B_"><span class="id" title="variable">B_</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#i"><span class="id" title="variable">i</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="scalemxAl"><span class="id" title="lemma">scalemxAl</span></a> <span class="id" title="var">m</span> <span class="id" title="var">n</span> <span class="id" title="var">p</span> <span class="id" title="var">a</span> (<span class="id" title="var">A</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.matrix.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.matrix.html#n"><span class="id" title="variable">n</span></a><a class="idref" href="mathcomp.algebra.matrix.html#cb37620352ad6b90a047a361359e2f04"><span class="id" title="notation">)</span></a>) (<span class="id" title="var">B</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.matrix.html#n"><span class="id" title="variable">n</span></a><a class="idref" href="mathcomp.algebra.matrix.html#cb37620352ad6b90a047a361359e2f04"><span class="id" title="notation">,</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#p"><span class="id" title="variable">p</span></a><a class="idref" href="mathcomp.algebra.matrix.html#cb37620352ad6b90a047a361359e2f04"><span class="id" title="notation">)</span></a>) :<br/> + <a class="idref" href="mathcomp.algebra.matrix.html#a"><span class="id" title="variable">a</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#81f8078534dcbb7e13a32d292f766525"><span class="id" title="notation">*:</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#81f8078534dcbb7e13a32d292f766525"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.matrix.html#A"><span class="id" title="variable">A</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#214a0bf07a0a0de5c6aebf03e1f2a5c7"><span class="id" title="notation">×</span></a><a class="idref" href="mathcomp.algebra.matrix.html#214a0bf07a0a0de5c6aebf03e1f2a5c7"><span class="id" title="notation">m</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#B"><span class="id" title="variable">B</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.matrix.html#214a0bf07a0a0de5c6aebf03e1f2a5c7"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.matrix.html#a"><span class="id" title="variable">a</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#81f8078534dcbb7e13a32d292f766525"><span class="id" title="notation">*:</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#A"><span class="id" title="variable">A</span></a><a class="idref" href="mathcomp.algebra.matrix.html#214a0bf07a0a0de5c6aebf03e1f2a5c7"><span class="id" title="notation">)</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#214a0bf07a0a0de5c6aebf03e1f2a5c7"><span class="id" title="notation">×</span></a><a class="idref" href="mathcomp.algebra.matrix.html#214a0bf07a0a0de5c6aebf03e1f2a5c7"><span class="id" title="notation">m</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#B"><span class="id" title="variable">B</span></a>.<br/> +</div> + +<div class="doc"> + Right scaling associativity requires a commutative ring +</div> +<div class="code"> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="rowE"><span class="id" title="lemma">rowE</span></a> <span class="id" title="var">m</span> <span class="id" title="var">n</span> <span class="id" title="var">i</span> (<span class="id" title="var">A</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.matrix.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.matrix.html#n"><span class="id" title="variable">n</span></a><a class="idref" href="mathcomp.algebra.matrix.html#cb37620352ad6b90a047a361359e2f04"><span class="id" title="notation">)</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.matrix.html#i"><span class="id" title="variable">i</span></a> <a class="idref" href="mathcomp.algebra.matrix.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.matrix.html#delta_mx"><span class="id" title="definition">delta_mx</span></a> 0 <a class="idref" href="mathcomp.algebra.matrix.html#i"><span class="id" title="variable">i</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#214a0bf07a0a0de5c6aebf03e1f2a5c7"><span class="id" title="notation">×</span></a><a class="idref" href="mathcomp.algebra.matrix.html#214a0bf07a0a0de5c6aebf03e1f2a5c7"><span class="id" title="notation">m</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#A"><span class="id" title="variable">A</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="row_mul"><span class="id" title="lemma">row_mul</span></a> <span class="id" title="var">m</span> <span class="id" title="var">n</span> <span class="id" title="var">p</span> (<span class="id" title="var">i</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_m</span></a>) <span class="id" title="var">A</span> (<span class="id" title="var">B</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.matrix.html#n"><span class="id" title="variable">n</span></a><a class="idref" href="mathcomp.algebra.matrix.html#cb37620352ad6b90a047a361359e2f04"><span class="id" title="notation">,</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#p"><span class="id" title="variable">p</span></a><a class="idref" href="mathcomp.algebra.matrix.html#cb37620352ad6b90a047a361359e2f04"><span class="id" title="notation">)</span></a>) :<br/> + <a class="idref" href="mathcomp.algebra.matrix.html#row"><span class="id" title="definition">row</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#i"><span class="id" title="variable">i</span></a> (<a class="idref" href="mathcomp.algebra.matrix.html#A"><span class="id" title="variable">A</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#214a0bf07a0a0de5c6aebf03e1f2a5c7"><span class="id" title="notation">×</span></a><a class="idref" href="mathcomp.algebra.matrix.html#214a0bf07a0a0de5c6aebf03e1f2a5c7"><span class="id" title="notation">m</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#B"><span class="id" title="variable">B</span></a>) <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#row"><span class="id" title="definition">row</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#i"><span class="id" title="variable">i</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#A"><span class="id" title="variable">A</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#214a0bf07a0a0de5c6aebf03e1f2a5c7"><span class="id" title="notation">×</span></a><a class="idref" href="mathcomp.algebra.matrix.html#214a0bf07a0a0de5c6aebf03e1f2a5c7"><span class="id" title="notation">m</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#B"><span class="id" title="variable">B</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="mulmx_sum_row"><span class="id" title="lemma">mulmx_sum_row</span></a> <span class="id" title="var">m</span> <span class="id" title="var">n</span> (<span class="id" title="var">u</span> : <a class="idref" href="mathcomp.algebra.matrix.html#2bf09b7202225c789149165667752fab"><span class="id" title="notation">'</span></a><a class="idref" href="mathcomp.algebra.matrix.html#2bf09b7202225c789149165667752fab"><span class="id" title="notation">rV_m</span></a>) (<span class="id" title="var">A</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.matrix.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.matrix.html#n"><span class="id" title="variable">n</span></a><a class="idref" href="mathcomp.algebra.matrix.html#cb37620352ad6b90a047a361359e2f04"><span class="id" title="notation">)</span></a>) :<br/> + <a class="idref" href="mathcomp.algebra.matrix.html#u"><span class="id" title="variable">u</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#214a0bf07a0a0de5c6aebf03e1f2a5c7"><span class="id" title="notation">×</span></a><a class="idref" href="mathcomp.algebra.matrix.html#214a0bf07a0a0de5c6aebf03e1f2a5c7"><span class="id" title="notation">m</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#A"><span class="id" title="variable">A</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#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.matrix.html#u"><span class="id" title="variable">u</span></a> 0 <a class="idref" href="mathcomp.algebra.matrix.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.matrix.html#row"><span class="id" title="definition">row</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#i"><span class="id" title="variable">i</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#A"><span class="id" title="variable">A</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="mul_delta_mx_cond"><span class="id" title="lemma">mul_delta_mx_cond</span></a> <span class="id" title="var">m</span> <span class="id" title="var">n</span> <span class="id" title="var">p</span> (<span class="id" title="var">j1</span> <span class="id" title="var">j2</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>) (<span class="id" title="var">i1</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_m</span></a>) (<span class="id" title="var">k2</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_p</span></a>) :<br/> + <a class="idref" href="mathcomp.algebra.matrix.html#delta_mx"><span class="id" title="definition">delta_mx</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#i1"><span class="id" title="variable">i1</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#j1"><span class="id" title="variable">j1</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#214a0bf07a0a0de5c6aebf03e1f2a5c7"><span class="id" title="notation">×</span></a><a class="idref" href="mathcomp.algebra.matrix.html#214a0bf07a0a0de5c6aebf03e1f2a5c7"><span class="id" title="notation">m</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#delta_mx"><span class="id" title="definition">delta_mx</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#j2"><span class="id" title="variable">j2</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#k2"><span class="id" title="variable">k2</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#delta_mx"><span class="id" title="definition">delta_mx</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#i1"><span class="id" title="variable">i1</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#k2"><span class="id" title="variable">k2</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#891e51846c7d1d63a9cb5458374cf308"><span class="id" title="notation">*+</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#891e51846c7d1d63a9cb5458374cf308"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.matrix.html#j1"><span class="id" title="variable">j1</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#17d28d004d0863cb022d4ce832ddaaae"><span class="id" title="notation">==</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#j2"><span class="id" title="variable">j2</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#891e51846c7d1d63a9cb5458374cf308"><span class="id" title="notation">)</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="mul_delta_mx"><span class="id" title="lemma">mul_delta_mx</span></a> <span class="id" title="var">m</span> <span class="id" title="var">n</span> <span class="id" title="var">p</span> (<span class="id" title="var">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>) (<span class="id" title="var">i</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_m</span></a>) (<span class="id" title="var">k</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_p</span></a>) :<br/> + <a class="idref" href="mathcomp.algebra.matrix.html#delta_mx"><span class="id" title="definition">delta_mx</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#i"><span class="id" title="variable">i</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#j"><span class="id" title="variable">j</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#214a0bf07a0a0de5c6aebf03e1f2a5c7"><span class="id" title="notation">×</span></a><a class="idref" href="mathcomp.algebra.matrix.html#214a0bf07a0a0de5c6aebf03e1f2a5c7"><span class="id" title="notation">m</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#delta_mx"><span class="id" title="definition">delta_mx</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#j"><span class="id" title="variable">j</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#k"><span class="id" title="variable">k</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#delta_mx"><span class="id" title="definition">delta_mx</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#i"><span class="id" title="variable">i</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#k"><span class="id" title="variable">k</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="mul_delta_mx_0"><span class="id" title="lemma">mul_delta_mx_0</span></a> <span class="id" title="var">m</span> <span class="id" title="var">n</span> <span class="id" title="var">p</span> (<span class="id" title="var">j1</span> <span class="id" title="var">j2</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>) (<span class="id" title="var">i1</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_m</span></a>) (<span class="id" title="var">k2</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_p</span></a>) :<br/> + <a class="idref" href="mathcomp.algebra.matrix.html#j1"><span class="id" title="variable">j1</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#b1eeadc2feabc7422252baa895418c7b"><span class="id" title="notation">!=</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#j2"><span class="id" title="variable">j2</span></a> <a class="idref" href="http://coq.inria.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#delta_mx"><span class="id" title="definition">delta_mx</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#i1"><span class="id" title="variable">i1</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#j1"><span class="id" title="variable">j1</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#214a0bf07a0a0de5c6aebf03e1f2a5c7"><span class="id" title="notation">×</span></a><a class="idref" href="mathcomp.algebra.matrix.html#214a0bf07a0a0de5c6aebf03e1f2a5c7"><span class="id" title="notation">m</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#delta_mx"><span class="id" title="definition">delta_mx</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#j2"><span class="id" title="variable">j2</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#k2"><span class="id" title="variable">k2</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> 0.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="mul_diag_mx"><span class="id" title="lemma">mul_diag_mx</span></a> <span class="id" title="var">m</span> <span class="id" title="var">n</span> <span class="id" title="var">d</span> (<span class="id" title="var">A</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.matrix.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.matrix.html#n"><span class="id" title="variable">n</span></a><a class="idref" href="mathcomp.algebra.matrix.html#cb37620352ad6b90a047a361359e2f04"><span class="id" title="notation">)</span></a>) :<br/> + <a class="idref" href="mathcomp.algebra.matrix.html#diag_mx"><span class="id" title="definition">diag_mx</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#d"><span class="id" title="variable">d</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#214a0bf07a0a0de5c6aebf03e1f2a5c7"><span class="id" title="notation">×</span></a><a class="idref" href="mathcomp.algebra.matrix.html#214a0bf07a0a0de5c6aebf03e1f2a5c7"><span class="id" title="notation">m</span></a> <a class="idref" href="mathcomp.algebra.matrix.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.matrix.html#2c5155dd82e4555ad208e1f95e711672"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.algebra.matrix.html#2c5155dd82e4555ad208e1f95e711672"><span class="id" title="notation">matrix_</span></a><a class="idref" href="mathcomp.algebra.matrix.html#2c5155dd82e4555ad208e1f95e711672"><span class="id" title="notation">(</span></a><span class="id" title="var">i</span><a class="idref" href="mathcomp.algebra.matrix.html#2c5155dd82e4555ad208e1f95e711672"><span class="id" title="notation">,</span></a> <span class="id" title="var">j</span><a class="idref" href="mathcomp.algebra.matrix.html#2c5155dd82e4555ad208e1f95e711672"><span class="id" title="notation">)</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#2c5155dd82e4555ad208e1f95e711672"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.matrix.html#d"><span class="id" title="variable">d</span></a> 0 <a class="idref" href="mathcomp.algebra.matrix.html#i"><span class="id" title="variable">i</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#22058a36a53dac65c94ca403bc62650a"><span class="id" title="notation">×</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#A"><span class="id" title="variable">A</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#i"><span class="id" title="variable">i</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#j"><span class="id" title="variable">j</span></a><a class="idref" href="mathcomp.algebra.matrix.html#2c5155dd82e4555ad208e1f95e711672"><span class="id" title="notation">)</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="mul_mx_diag"><span class="id" title="lemma">mul_mx_diag</span></a> <span class="id" title="var">m</span> <span class="id" title="var">n</span> (<span class="id" title="var">A</span> : <a class="idref" href="mathcomp.algebra.matrix.html#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.matrix.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.matrix.html#n"><span class="id" title="variable">n</span></a><a class="idref" href="mathcomp.algebra.matrix.html#cb37620352ad6b90a047a361359e2f04"><span class="id" title="notation">)</span></a>) <span class="id" title="var">d</span> :<br/> + <a class="idref" href="mathcomp.algebra.matrix.html#A"><span class="id" title="variable">A</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#214a0bf07a0a0de5c6aebf03e1f2a5c7"><span class="id" title="notation">×</span></a><a class="idref" href="mathcomp.algebra.matrix.html#214a0bf07a0a0de5c6aebf03e1f2a5c7"><span class="id" title="notation">m</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#diag_mx"><span class="id" title="definition">diag_mx</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#d"><span class="id" title="variable">d</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#2c5155dd82e4555ad208e1f95e711672"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.algebra.matrix.html#2c5155dd82e4555ad208e1f95e711672"><span class="id" title="notation">matrix_</span></a><a class="idref" href="mathcomp.algebra.matrix.html#2c5155dd82e4555ad208e1f95e711672"><span class="id" title="notation">(</span></a><span class="id" title="var">i</span><a class="idref" href="mathcomp.algebra.matrix.html#2c5155dd82e4555ad208e1f95e711672"><span class="id" title="notation">,</span></a> <span class="id" title="var">j</span><a class="idref" href="mathcomp.algebra.matrix.html#2c5155dd82e4555ad208e1f95e711672"><span class="id" title="notation">)</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#2c5155dd82e4555ad208e1f95e711672"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.matrix.html#A"><span class="id" title="variable">A</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#i"><span class="id" title="variable">i</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#j"><span class="id" title="variable">j</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#22058a36a53dac65c94ca403bc62650a"><span class="id" title="notation">×</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#d"><span class="id" title="variable">d</span></a> 0 <a class="idref" href="mathcomp.algebra.matrix.html#j"><span class="id" title="variable">j</span></a><a class="idref" href="mathcomp.algebra.matrix.html#2c5155dd82e4555ad208e1f95e711672"><span class="id" title="notation">)</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="mulmx_diag"><span class="id" title="lemma">mulmx_diag</span></a> <span class="id" title="var">n</span> (<span class="id" title="var">d</span> <span class="id" title="var">e</span> : <a class="idref" href="mathcomp.algebra.matrix.html#2bf09b7202225c789149165667752fab"><span class="id" title="notation">'</span></a><a class="idref" href="mathcomp.algebra.matrix.html#2bf09b7202225c789149165667752fab"><span class="id" title="notation">rV_n</span></a>) :<br/> + <a class="idref" href="mathcomp.algebra.matrix.html#diag_mx"><span class="id" title="definition">diag_mx</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#d"><span class="id" title="variable">d</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#214a0bf07a0a0de5c6aebf03e1f2a5c7"><span class="id" title="notation">×</span></a><a class="idref" href="mathcomp.algebra.matrix.html#214a0bf07a0a0de5c6aebf03e1f2a5c7"><span class="id" title="notation">m</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#diag_mx"><span class="id" title="definition">diag_mx</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#e"><span class="id" title="variable">e</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#diag_mx"><span class="id" title="definition">diag_mx</span></a> (<a class="idref" href="mathcomp.algebra.matrix.html#cf6654c80d96ae2da5730746e8dfeac4"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.algebra.matrix.html#cf6654c80d96ae2da5730746e8dfeac4"><span class="id" title="notation">row_j</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#cf6654c80d96ae2da5730746e8dfeac4"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.matrix.html#d"><span class="id" title="variable">d</span></a> 0 <a class="idref" href="mathcomp.algebra.matrix.html#j"><span class="id" title="variable">j</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#22058a36a53dac65c94ca403bc62650a"><span class="id" title="notation">×</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#e"><span class="id" title="variable">e</span></a> 0 <a class="idref" href="mathcomp.algebra.matrix.html#j"><span class="id" title="variable">j</span></a><a class="idref" href="mathcomp.algebra.matrix.html#cf6654c80d96ae2da5730746e8dfeac4"><span class="id" title="notation">)</span></a>).<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="mul_scalar_mx"><span class="id" title="lemma">mul_scalar_mx</span></a> <span class="id" title="var">m</span> <span class="id" title="var">n</span> <span class="id" title="var">a</span> (<span class="id" title="var">A</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.matrix.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.matrix.html#n"><span class="id" title="variable">n</span></a><a class="idref" href="mathcomp.algebra.matrix.html#cb37620352ad6b90a047a361359e2f04"><span class="id" title="notation">)</span></a>) : <a class="idref" href="mathcomp.algebra.matrix.html#a"><span class="id" title="variable">a</span></a><a class="idref" href="mathcomp.algebra.matrix.html#f0439935524a049a771823d6a7a44496"><span class="id" title="notation">%:</span></a><a class="idref" href="mathcomp.algebra.matrix.html#f0439935524a049a771823d6a7a44496"><span class="id" title="notation">M</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#214a0bf07a0a0de5c6aebf03e1f2a5c7"><span class="id" title="notation">×</span></a><a class="idref" href="mathcomp.algebra.matrix.html#214a0bf07a0a0de5c6aebf03e1f2a5c7"><span class="id" title="notation">m</span></a> <a class="idref" href="mathcomp.algebra.matrix.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.matrix.html#a"><span class="id" title="variable">a</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#81f8078534dcbb7e13a32d292f766525"><span class="id" title="notation">*:</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#A"><span class="id" title="variable">A</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="scalar_mxM"><span class="id" title="lemma">scalar_mxM</span></a> <span class="id" title="var">n</span> <span class="id" title="var">a</span> <span class="id" title="var">b</span> : <a class="idref" href="mathcomp.algebra.matrix.html#f0439935524a049a771823d6a7a44496"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.matrix.html#a"><span class="id" title="variable">a</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#22058a36a53dac65c94ca403bc62650a"><span class="id" title="notation">×</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#b"><span class="id" title="variable">b</span></a><a class="idref" href="mathcomp.algebra.matrix.html#f0439935524a049a771823d6a7a44496"><span class="id" title="notation">)%:</span></a><a class="idref" href="mathcomp.algebra.matrix.html#f0439935524a049a771823d6a7a44496"><span class="id" title="notation">M</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.matrix.html#a"><span class="id" title="variable">a</span></a><a class="idref" href="mathcomp.algebra.matrix.html#f0439935524a049a771823d6a7a44496"><span class="id" title="notation">%:</span></a><a class="idref" href="mathcomp.algebra.matrix.html#f0439935524a049a771823d6a7a44496"><span class="id" title="notation">M</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#214a0bf07a0a0de5c6aebf03e1f2a5c7"><span class="id" title="notation">×</span></a><a class="idref" href="mathcomp.algebra.matrix.html#214a0bf07a0a0de5c6aebf03e1f2a5c7"><span class="id" title="notation">m</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#b"><span class="id" title="variable">b</span></a><a class="idref" href="mathcomp.algebra.matrix.html#f0439935524a049a771823d6a7a44496"><span class="id" title="notation">%:</span></a><a class="idref" href="mathcomp.algebra.matrix.html#f0439935524a049a771823d6a7a44496"><span class="id" title="notation">M</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.matrix.html#1ce49b162eb757fc4a2e0ce4df0ee5cd"><span class="id" title="notation">'</span></a><a class="idref" href="mathcomp.algebra.matrix.html#1ce49b162eb757fc4a2e0ce4df0ee5cd"><span class="id" title="notation">M_n</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="mul1mx"><span class="id" title="lemma">mul1mx</span></a> <span class="id" title="var">m</span> <span class="id" title="var">n</span> (<span class="id" title="var">A</span> : <a class="idref" href="mathcomp.algebra.matrix.html#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.matrix.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.matrix.html#n"><span class="id" title="variable">n</span></a><a class="idref" href="mathcomp.algebra.matrix.html#cb37620352ad6b90a047a361359e2f04"><span class="id" title="notation">)</span></a>) : 1<a class="idref" href="mathcomp.algebra.matrix.html#f0439935524a049a771823d6a7a44496"><span class="id" title="notation">%:</span></a><a class="idref" href="mathcomp.algebra.matrix.html#f0439935524a049a771823d6a7a44496"><span class="id" title="notation">M</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#214a0bf07a0a0de5c6aebf03e1f2a5c7"><span class="id" title="notation">×</span></a><a class="idref" href="mathcomp.algebra.matrix.html#214a0bf07a0a0de5c6aebf03e1f2a5c7"><span class="id" title="notation">m</span></a> <a class="idref" href="mathcomp.algebra.matrix.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.matrix.html#A"><span class="id" title="variable">A</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="mulmx1"><span class="id" title="lemma">mulmx1</span></a> <span class="id" title="var">m</span> <span class="id" title="var">n</span> (<span class="id" title="var">A</span> : <a class="idref" href="mathcomp.algebra.matrix.html#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.matrix.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.matrix.html#n"><span class="id" title="variable">n</span></a><a class="idref" href="mathcomp.algebra.matrix.html#cb37620352ad6b90a047a361359e2f04"><span class="id" title="notation">)</span></a>) : <a class="idref" href="mathcomp.algebra.matrix.html#A"><span class="id" title="variable">A</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#214a0bf07a0a0de5c6aebf03e1f2a5c7"><span class="id" title="notation">×</span></a><a class="idref" href="mathcomp.algebra.matrix.html#214a0bf07a0a0de5c6aebf03e1f2a5c7"><span class="id" title="notation">m</span></a> 1<a class="idref" href="mathcomp.algebra.matrix.html#f0439935524a049a771823d6a7a44496"><span class="id" title="notation">%:</span></a><a class="idref" href="mathcomp.algebra.matrix.html#f0439935524a049a771823d6a7a44496"><span class="id" title="notation">M</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#A"><span class="id" title="variable">A</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="mul_col_perm"><span class="id" title="lemma">mul_col_perm</span></a> <span class="id" title="var">m</span> <span class="id" title="var">n</span> <span class="id" title="var">p</span> <span class="id" title="var">s</span> (<span class="id" title="var">A</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.matrix.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.matrix.html#n"><span class="id" title="variable">n</span></a><a class="idref" href="mathcomp.algebra.matrix.html#cb37620352ad6b90a047a361359e2f04"><span class="id" title="notation">)</span></a>) (<span class="id" title="var">B</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.matrix.html#n"><span class="id" title="variable">n</span></a><a class="idref" href="mathcomp.algebra.matrix.html#cb37620352ad6b90a047a361359e2f04"><span class="id" title="notation">,</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#p"><span class="id" title="variable">p</span></a><a class="idref" href="mathcomp.algebra.matrix.html#cb37620352ad6b90a047a361359e2f04"><span class="id" title="notation">)</span></a>) :<br/> + <a class="idref" href="mathcomp.algebra.matrix.html#col_perm"><span class="id" title="definition">col_perm</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#s"><span class="id" title="variable">s</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#A"><span class="id" title="variable">A</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#214a0bf07a0a0de5c6aebf03e1f2a5c7"><span class="id" title="notation">×</span></a><a class="idref" href="mathcomp.algebra.matrix.html#214a0bf07a0a0de5c6aebf03e1f2a5c7"><span class="id" title="notation">m</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#B"><span class="id" title="variable">B</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#A"><span class="id" title="variable">A</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#214a0bf07a0a0de5c6aebf03e1f2a5c7"><span class="id" title="notation">×</span></a><a class="idref" href="mathcomp.algebra.matrix.html#214a0bf07a0a0de5c6aebf03e1f2a5c7"><span class="id" title="notation">m</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#row_perm"><span class="id" title="definition">row_perm</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#s"><span class="id" title="variable">s</span></a><a class="idref" href="mathcomp.fingroup.fingroup.html#a605acbeae7597f74f5a9b816ed8a717"><span class="id" title="notation">^-1</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#B"><span class="id" title="variable">B</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="mul_row_perm"><span class="id" title="lemma">mul_row_perm</span></a> <span class="id" title="var">m</span> <span class="id" title="var">n</span> <span class="id" title="var">p</span> <span class="id" title="var">s</span> (<span class="id" title="var">A</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.matrix.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.matrix.html#n"><span class="id" title="variable">n</span></a><a class="idref" href="mathcomp.algebra.matrix.html#cb37620352ad6b90a047a361359e2f04"><span class="id" title="notation">)</span></a>) (<span class="id" title="var">B</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.matrix.html#n"><span class="id" title="variable">n</span></a><a class="idref" href="mathcomp.algebra.matrix.html#cb37620352ad6b90a047a361359e2f04"><span class="id" title="notation">,</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#p"><span class="id" title="variable">p</span></a><a class="idref" href="mathcomp.algebra.matrix.html#cb37620352ad6b90a047a361359e2f04"><span class="id" title="notation">)</span></a>) :<br/> + <a class="idref" href="mathcomp.algebra.matrix.html#A"><span class="id" title="variable">A</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#214a0bf07a0a0de5c6aebf03e1f2a5c7"><span class="id" title="notation">×</span></a><a class="idref" href="mathcomp.algebra.matrix.html#214a0bf07a0a0de5c6aebf03e1f2a5c7"><span class="id" title="notation">m</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#row_perm"><span class="id" title="definition">row_perm</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#s"><span class="id" title="variable">s</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#B"><span class="id" title="variable">B</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#col_perm"><span class="id" title="definition">col_perm</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#s"><span class="id" title="variable">s</span></a><a class="idref" href="mathcomp.fingroup.fingroup.html#a605acbeae7597f74f5a9b816ed8a717"><span class="id" title="notation">^-1</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#A"><span class="id" title="variable">A</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#214a0bf07a0a0de5c6aebf03e1f2a5c7"><span class="id" title="notation">×</span></a><a class="idref" href="mathcomp.algebra.matrix.html#214a0bf07a0a0de5c6aebf03e1f2a5c7"><span class="id" title="notation">m</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#B"><span class="id" title="variable">B</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="mul_xcol"><span class="id" title="lemma">mul_xcol</span></a> <span class="id" title="var">m</span> <span class="id" title="var">n</span> <span class="id" title="var">p</span> <span class="id" title="var">j1</span> <span class="id" title="var">j2</span> (<span class="id" title="var">A</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.matrix.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.matrix.html#n"><span class="id" title="variable">n</span></a><a class="idref" href="mathcomp.algebra.matrix.html#cb37620352ad6b90a047a361359e2f04"><span class="id" title="notation">)</span></a>) (<span class="id" title="var">B</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.matrix.html#n"><span class="id" title="variable">n</span></a><a class="idref" href="mathcomp.algebra.matrix.html#cb37620352ad6b90a047a361359e2f04"><span class="id" title="notation">,</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#p"><span class="id" title="variable">p</span></a><a class="idref" href="mathcomp.algebra.matrix.html#cb37620352ad6b90a047a361359e2f04"><span class="id" title="notation">)</span></a>) :<br/> + <a class="idref" href="mathcomp.algebra.matrix.html#xcol"><span class="id" title="definition">xcol</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#j1"><span class="id" title="variable">j1</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#j2"><span class="id" title="variable">j2</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#A"><span class="id" title="variable">A</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#214a0bf07a0a0de5c6aebf03e1f2a5c7"><span class="id" title="notation">×</span></a><a class="idref" href="mathcomp.algebra.matrix.html#214a0bf07a0a0de5c6aebf03e1f2a5c7"><span class="id" title="notation">m</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#B"><span class="id" title="variable">B</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#A"><span class="id" title="variable">A</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#214a0bf07a0a0de5c6aebf03e1f2a5c7"><span class="id" title="notation">×</span></a><a class="idref" href="mathcomp.algebra.matrix.html#214a0bf07a0a0de5c6aebf03e1f2a5c7"><span class="id" title="notation">m</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#xrow"><span class="id" title="definition">xrow</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#j1"><span class="id" title="variable">j1</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#j2"><span class="id" title="variable">j2</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#B"><span class="id" title="variable">B</span></a>.<br/> + +<br/> +</div> + +<div class="doc"> + Permutation matrix +</div> +<div class="code"> + +<br/> +<span class="id" title="keyword">Definition</span> <a name="perm_mx"><span class="id" title="definition">perm_mx</span></a> <span class="id" title="var">n</span> <span class="id" title="var">s</span> : <a class="idref" href="mathcomp.algebra.matrix.html#1ce49b162eb757fc4a2e0ce4df0ee5cd"><span class="id" title="notation">'</span></a><a class="idref" href="mathcomp.algebra.matrix.html#1ce49b162eb757fc4a2e0ce4df0ee5cd"><span class="id" title="notation">M_n</span></a> := <a class="idref" href="mathcomp.algebra.matrix.html#row_perm"><span class="id" title="definition">row_perm</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#s"><span class="id" title="variable">s</span></a> 1<a class="idref" href="mathcomp.algebra.matrix.html#f0439935524a049a771823d6a7a44496"><span class="id" title="notation">%:</span></a><a class="idref" href="mathcomp.algebra.matrix.html#f0439935524a049a771823d6a7a44496"><span class="id" title="notation">M</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Definition</span> <a name="tperm_mx"><span class="id" title="definition">tperm_mx</span></a> <span class="id" title="var">n</span> <span class="id" title="var">i1</span> <span class="id" title="var">i2</span> : <a class="idref" href="mathcomp.algebra.matrix.html#1ce49b162eb757fc4a2e0ce4df0ee5cd"><span class="id" title="notation">'</span></a><a class="idref" href="mathcomp.algebra.matrix.html#1ce49b162eb757fc4a2e0ce4df0ee5cd"><span class="id" title="notation">M_n</span></a> := <a class="idref" href="mathcomp.algebra.matrix.html#perm_mx"><span class="id" title="definition">perm_mx</span></a> (<a class="idref" href="mathcomp.fingroup.perm.html#tperm"><span class="id" title="definition">tperm</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#i1"><span class="id" title="variable">i1</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#i2"><span class="id" title="variable">i2</span></a>).<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="col_permE"><span class="id" title="lemma">col_permE</span></a> <span class="id" title="var">m</span> <span class="id" title="var">n</span> <span class="id" title="var">s</span> (<span class="id" title="var">A</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.matrix.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.matrix.html#n"><span class="id" title="variable">n</span></a><a class="idref" href="mathcomp.algebra.matrix.html#cb37620352ad6b90a047a361359e2f04"><span class="id" title="notation">)</span></a>) : <a class="idref" href="mathcomp.algebra.matrix.html#col_perm"><span class="id" title="definition">col_perm</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#s"><span class="id" title="variable">s</span></a> <a class="idref" href="mathcomp.algebra.matrix.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.matrix.html#A"><span class="id" title="variable">A</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#214a0bf07a0a0de5c6aebf03e1f2a5c7"><span class="id" title="notation">×</span></a><a class="idref" href="mathcomp.algebra.matrix.html#214a0bf07a0a0de5c6aebf03e1f2a5c7"><span class="id" title="notation">m</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#perm_mx"><span class="id" title="definition">perm_mx</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#s"><span class="id" title="variable">s</span></a><a class="idref" href="mathcomp.fingroup.fingroup.html#a605acbeae7597f74f5a9b816ed8a717"><span class="id" title="notation">^-1</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="row_permE"><span class="id" title="lemma">row_permE</span></a> <span class="id" title="var">m</span> <span class="id" title="var">n</span> <span class="id" title="var">s</span> (<span class="id" title="var">A</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.matrix.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.matrix.html#n"><span class="id" title="variable">n</span></a><a class="idref" href="mathcomp.algebra.matrix.html#cb37620352ad6b90a047a361359e2f04"><span class="id" title="notation">)</span></a>) : <a class="idref" href="mathcomp.algebra.matrix.html#row_perm"><span class="id" title="definition">row_perm</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#s"><span class="id" title="variable">s</span></a> <a class="idref" href="mathcomp.algebra.matrix.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.matrix.html#perm_mx"><span class="id" title="definition">perm_mx</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#s"><span class="id" title="variable">s</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#214a0bf07a0a0de5c6aebf03e1f2a5c7"><span class="id" title="notation">×</span></a><a class="idref" href="mathcomp.algebra.matrix.html#214a0bf07a0a0de5c6aebf03e1f2a5c7"><span class="id" title="notation">m</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#A"><span class="id" title="variable">A</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="xcolE"><span class="id" title="lemma">xcolE</span></a> <span class="id" title="var">m</span> <span class="id" title="var">n</span> <span class="id" title="var">j1</span> <span class="id" title="var">j2</span> (<span class="id" title="var">A</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.matrix.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.matrix.html#n"><span class="id" title="variable">n</span></a><a class="idref" href="mathcomp.algebra.matrix.html#cb37620352ad6b90a047a361359e2f04"><span class="id" title="notation">)</span></a>) : <a class="idref" href="mathcomp.algebra.matrix.html#xcol"><span class="id" title="definition">xcol</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#j1"><span class="id" title="variable">j1</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#j2"><span class="id" title="variable">j2</span></a> <a class="idref" href="mathcomp.algebra.matrix.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.matrix.html#A"><span class="id" title="variable">A</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#214a0bf07a0a0de5c6aebf03e1f2a5c7"><span class="id" title="notation">×</span></a><a class="idref" href="mathcomp.algebra.matrix.html#214a0bf07a0a0de5c6aebf03e1f2a5c7"><span class="id" title="notation">m</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#tperm_mx"><span class="id" title="definition">tperm_mx</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#j1"><span class="id" title="variable">j1</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#j2"><span class="id" title="variable">j2</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="xrowE"><span class="id" title="lemma">xrowE</span></a> <span class="id" title="var">m</span> <span class="id" title="var">n</span> <span class="id" title="var">i1</span> <span class="id" title="var">i2</span> (<span class="id" title="var">A</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.matrix.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.matrix.html#n"><span class="id" title="variable">n</span></a><a class="idref" href="mathcomp.algebra.matrix.html#cb37620352ad6b90a047a361359e2f04"><span class="id" title="notation">)</span></a>) : <a class="idref" href="mathcomp.algebra.matrix.html#xrow"><span class="id" title="definition">xrow</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#i1"><span class="id" title="variable">i1</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#i2"><span class="id" title="variable">i2</span></a> <a class="idref" href="mathcomp.algebra.matrix.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.matrix.html#tperm_mx"><span class="id" title="definition">tperm_mx</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#i1"><span class="id" title="variable">i1</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#i2"><span class="id" title="variable">i2</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#214a0bf07a0a0de5c6aebf03e1f2a5c7"><span class="id" title="notation">×</span></a><a class="idref" href="mathcomp.algebra.matrix.html#214a0bf07a0a0de5c6aebf03e1f2a5c7"><span class="id" title="notation">m</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#A"><span class="id" title="variable">A</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="tr_perm_mx"><span class="id" title="lemma">tr_perm_mx</span></a> <span class="id" title="var">n</span> (<span class="id" title="var">s</span> : <a class="idref" href="mathcomp.fingroup.perm.html#ea6fcc91866185ddfad466ada7c10b27"><span class="id" title="notation">'</span></a><a class="idref" href="mathcomp.fingroup.perm.html#ea6fcc91866185ddfad466ada7c10b27"><span class="id" title="notation">S_n</span></a>) : <a class="idref" href="mathcomp.algebra.matrix.html#0efdd62d084b88acb1b2860eed745d54"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.matrix.html#perm_mx"><span class="id" title="definition">perm_mx</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#s"><span class="id" title="variable">s</span></a><a class="idref" href="mathcomp.algebra.matrix.html#0efdd62d084b88acb1b2860eed745d54"><span class="id" title="notation">)^</span></a><a class="idref" href="mathcomp.algebra.matrix.html#0efdd62d084b88acb1b2860eed745d54"><span class="id" title="notation">T</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#perm_mx"><span class="id" title="definition">perm_mx</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#s"><span class="id" title="variable">s</span></a><a class="idref" href="mathcomp.fingroup.fingroup.html#a605acbeae7597f74f5a9b816ed8a717"><span class="id" title="notation">^-1</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="tr_tperm_mx"><span class="id" title="lemma">tr_tperm_mx</span></a> <span class="id" title="var">n</span> <span class="id" title="var">i1</span> <span class="id" title="var">i2</span> : <a class="idref" href="mathcomp.algebra.matrix.html#0efdd62d084b88acb1b2860eed745d54"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.matrix.html#tperm_mx"><span class="id" title="definition">tperm_mx</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#i1"><span class="id" title="variable">i1</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#i2"><span class="id" title="variable">i2</span></a><a class="idref" href="mathcomp.algebra.matrix.html#0efdd62d084b88acb1b2860eed745d54"><span class="id" title="notation">)^</span></a><a class="idref" href="mathcomp.algebra.matrix.html#0efdd62d084b88acb1b2860eed745d54"><span class="id" title="notation">T</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#8f9364556521ebb498093f28eea2240f"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#tperm_mx"><span class="id" title="definition">tperm_mx</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#i1"><span class="id" title="variable">i1</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#i2"><span class="id" title="variable">i2</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.matrix.html#1ce49b162eb757fc4a2e0ce4df0ee5cd"><span class="id" title="notation">'</span></a><a class="idref" href="mathcomp.algebra.matrix.html#1ce49b162eb757fc4a2e0ce4df0ee5cd"><span class="id" title="notation">M_n</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="perm_mx1"><span class="id" title="lemma">perm_mx1</span></a> <span class="id" title="var">n</span> : <a class="idref" href="mathcomp.algebra.matrix.html#perm_mx"><span class="id" title="definition">perm_mx</span></a> 1 <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#8f9364556521ebb498093f28eea2240f"><span class="id" title="notation">=</span></a> 1<a class="idref" href="mathcomp.algebra.matrix.html#f0439935524a049a771823d6a7a44496"><span class="id" title="notation">%:</span></a><a class="idref" href="mathcomp.algebra.matrix.html#f0439935524a049a771823d6a7a44496"><span class="id" title="notation">M</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.matrix.html#1ce49b162eb757fc4a2e0ce4df0ee5cd"><span class="id" title="notation">'</span></a><a class="idref" href="mathcomp.algebra.matrix.html#1ce49b162eb757fc4a2e0ce4df0ee5cd"><span class="id" title="notation">M_n</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="perm_mxM"><span class="id" title="lemma">perm_mxM</span></a> <span class="id" title="var">n</span> (<span class="id" title="var">s</span> <span class="id" title="var">t</span> : <a class="idref" href="mathcomp.fingroup.perm.html#ea6fcc91866185ddfad466ada7c10b27"><span class="id" title="notation">'</span></a><a class="idref" href="mathcomp.fingroup.perm.html#ea6fcc91866185ddfad466ada7c10b27"><span class="id" title="notation">S_n</span></a>) : <a class="idref" href="mathcomp.algebra.matrix.html#perm_mx"><span class="id" title="definition">perm_mx</span></a> (<a class="idref" href="mathcomp.algebra.matrix.html#s"><span class="id" title="variable">s</span></a> <a class="idref" href="mathcomp.fingroup.fingroup.html#169fb610eeaa28cebf8ec36928167473"><span class="id" title="notation">×</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#t"><span class="id" title="variable">t</span></a>) <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#perm_mx"><span class="id" title="definition">perm_mx</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#s"><span class="id" title="variable">s</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#214a0bf07a0a0de5c6aebf03e1f2a5c7"><span class="id" title="notation">×</span></a><a class="idref" href="mathcomp.algebra.matrix.html#214a0bf07a0a0de5c6aebf03e1f2a5c7"><span class="id" title="notation">m</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#perm_mx"><span class="id" title="definition">perm_mx</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#t"><span class="id" title="variable">t</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Definition</span> <a name="is_perm_mx"><span class="id" title="definition">is_perm_mx</span></a> <span class="id" title="var">n</span> (<span class="id" title="var">A</span> : <a class="idref" href="mathcomp.algebra.matrix.html#1ce49b162eb757fc4a2e0ce4df0ee5cd"><span class="id" title="notation">'</span></a><a class="idref" href="mathcomp.algebra.matrix.html#1ce49b162eb757fc4a2e0ce4df0ee5cd"><span class="id" title="notation">M_n</span></a>) := <a class="idref" href="mathcomp.ssreflect.fintype.html#e1fcc6c8b4370f06a39f9b1b3c9764b2"><span class="id" title="notation">[</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#e1fcc6c8b4370f06a39f9b1b3c9764b2"><span class="id" title="notation">∃</span></a> <span class="id" title="var">s</span><a class="idref" href="mathcomp.ssreflect.fintype.html#46e5a4123d46e6b126f7788a77176785"><span class="id" title="notation">,</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#A"><span class="id" title="variable">A</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#17d28d004d0863cb022d4ce832ddaaae"><span class="id" title="notation">==</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#perm_mx"><span class="id" title="definition">perm_mx</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#s"><span class="id" title="variable">s</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#e1fcc6c8b4370f06a39f9b1b3c9764b2"><span class="id" title="notation">]</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="is_perm_mxP"><span class="id" title="lemma">is_perm_mxP</span></a> <span class="id" title="var">n</span> (<span class="id" title="var">A</span> : <a class="idref" href="mathcomp.algebra.matrix.html#1ce49b162eb757fc4a2e0ce4df0ee5cd"><span class="id" title="notation">'</span></a><a class="idref" href="mathcomp.algebra.matrix.html#1ce49b162eb757fc4a2e0ce4df0ee5cd"><span class="id" title="notation">M_n</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#84eb6d2849dbf3581b1c0c05add5f2d8"><span class="id" title="notation">∃</span></a> <span class="id" title="var">s</span><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#84eb6d2849dbf3581b1c0c05add5f2d8"><span class="id" title="notation">,</span></a> <a class="idref" href="mathcomp.algebra.matrix.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.matrix.html#perm_mx"><span class="id" title="definition">perm_mx</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#s"><span class="id" title="variable">s</span></a>) (<a class="idref" href="mathcomp.algebra.matrix.html#is_perm_mx"><span class="id" title="definition">is_perm_mx</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#A"><span class="id" title="variable">A</span></a>).<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="perm_mx_is_perm"><span class="id" title="lemma">perm_mx_is_perm</span></a> <span class="id" title="var">n</span> (<span class="id" title="var">s</span> : <a class="idref" href="mathcomp.fingroup.perm.html#ea6fcc91866185ddfad466ada7c10b27"><span class="id" title="notation">'</span></a><a class="idref" href="mathcomp.fingroup.perm.html#ea6fcc91866185ddfad466ada7c10b27"><span class="id" title="notation">S_n</span></a>) : <a class="idref" href="mathcomp.algebra.matrix.html#is_perm_mx"><span class="id" title="definition">is_perm_mx</span></a> (<a class="idref" href="mathcomp.algebra.matrix.html#perm_mx"><span class="id" title="definition">perm_mx</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#s"><span class="id" title="variable">s</span></a>).<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="is_perm_mx1"><span class="id" title="lemma">is_perm_mx1</span></a> <span class="id" title="var">n</span> : <a class="idref" href="mathcomp.algebra.matrix.html#is_perm_mx"><span class="id" title="definition">is_perm_mx</span></a> (1<a class="idref" href="mathcomp.algebra.matrix.html#f0439935524a049a771823d6a7a44496"><span class="id" title="notation">%:</span></a><a class="idref" href="mathcomp.algebra.matrix.html#f0439935524a049a771823d6a7a44496"><span class="id" title="notation">M</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.matrix.html#1ce49b162eb757fc4a2e0ce4df0ee5cd"><span class="id" title="notation">'</span></a><a class="idref" href="mathcomp.algebra.matrix.html#1ce49b162eb757fc4a2e0ce4df0ee5cd"><span class="id" title="notation">M_n</span></a>).<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="is_perm_mxMl"><span class="id" title="lemma">is_perm_mxMl</span></a> <span class="id" title="var">n</span> (<span class="id" title="var">A</span> <span class="id" title="var">B</span> : <a class="idref" href="mathcomp.algebra.matrix.html#1ce49b162eb757fc4a2e0ce4df0ee5cd"><span class="id" title="notation">'</span></a><a class="idref" href="mathcomp.algebra.matrix.html#1ce49b162eb757fc4a2e0ce4df0ee5cd"><span class="id" title="notation">M_n</span></a>) :<br/> + <a class="idref" href="mathcomp.algebra.matrix.html#is_perm_mx"><span class="id" title="definition">is_perm_mx</span></a> <a class="idref" href="mathcomp.algebra.matrix.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#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#is_perm_mx"><span class="id" title="definition">is_perm_mx</span></a> (<a class="idref" href="mathcomp.algebra.matrix.html#A"><span class="id" title="variable">A</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#214a0bf07a0a0de5c6aebf03e1f2a5c7"><span class="id" title="notation">×</span></a><a class="idref" href="mathcomp.algebra.matrix.html#214a0bf07a0a0de5c6aebf03e1f2a5c7"><span class="id" title="notation">m</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#B"><span class="id" title="variable">B</span></a>) <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#is_perm_mx"><span class="id" title="definition">is_perm_mx</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#B"><span class="id" title="variable">B</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="is_perm_mx_tr"><span class="id" title="lemma">is_perm_mx_tr</span></a> <span class="id" title="var">n</span> (<span class="id" title="var">A</span> : <a class="idref" href="mathcomp.algebra.matrix.html#1ce49b162eb757fc4a2e0ce4df0ee5cd"><span class="id" title="notation">'</span></a><a class="idref" href="mathcomp.algebra.matrix.html#1ce49b162eb757fc4a2e0ce4df0ee5cd"><span class="id" title="notation">M_n</span></a>) : <a class="idref" href="mathcomp.algebra.matrix.html#is_perm_mx"><span class="id" title="definition">is_perm_mx</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#A"><span class="id" title="variable">A</span></a><a class="idref" href="mathcomp.algebra.matrix.html#0efdd62d084b88acb1b2860eed745d54"><span class="id" title="notation">^</span></a><a class="idref" href="mathcomp.algebra.matrix.html#0efdd62d084b88acb1b2860eed745d54"><span class="id" title="notation">T</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#is_perm_mx"><span class="id" title="definition">is_perm_mx</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#A"><span class="id" title="variable">A</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="is_perm_mxMr"><span class="id" title="lemma">is_perm_mxMr</span></a> <span class="id" title="var">n</span> (<span class="id" title="var">A</span> <span class="id" title="var">B</span> : <a class="idref" href="mathcomp.algebra.matrix.html#1ce49b162eb757fc4a2e0ce4df0ee5cd"><span class="id" title="notation">'</span></a><a class="idref" href="mathcomp.algebra.matrix.html#1ce49b162eb757fc4a2e0ce4df0ee5cd"><span class="id" title="notation">M_n</span></a>) :<br/> + <a class="idref" href="mathcomp.algebra.matrix.html#is_perm_mx"><span class="id" title="definition">is_perm_mx</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#B"><span class="id" title="variable">B</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#is_perm_mx"><span class="id" title="definition">is_perm_mx</span></a> (<a class="idref" href="mathcomp.algebra.matrix.html#A"><span class="id" title="variable">A</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#214a0bf07a0a0de5c6aebf03e1f2a5c7"><span class="id" title="notation">×</span></a><a class="idref" href="mathcomp.algebra.matrix.html#214a0bf07a0a0de5c6aebf03e1f2a5c7"><span class="id" title="notation">m</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#B"><span class="id" title="variable">B</span></a>) <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#is_perm_mx"><span class="id" title="definition">is_perm_mx</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#A"><span class="id" title="variable">A</span></a>.<br/> + +<br/> +</div> + +<div class="doc"> + Partial identity matrix (used in rank decomposition). +</div> +<div class="code"> + +<br/> +<span class="id" title="keyword">Fact</span> <a name="pid_mx_key"><span class="id" title="lemma">pid_mx_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="pid_mx"><span class="id" title="definition">pid_mx</span></a> {<span class="id" title="var">m</span> <span class="id" title="var">n</span>} <span class="id" title="var">r</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.matrix.html#MatrixAlgebra.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.matrix.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.matrix.html#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/> + <a class="idref" href="mathcomp.algebra.matrix.html#667138260bfba6c8c1be5dda11faf290"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.algebra.matrix.html#667138260bfba6c8c1be5dda11faf290"><span class="id" title="notation">matrix</span></a><a class="idref" href="mathcomp.algebra.matrix.html#667138260bfba6c8c1be5dda11faf290"><span class="id" title="notation">[</span></a><a class="idref" href="mathcomp.algebra.matrix.html#pid_mx_key"><span class="id" title="lemma">pid_mx_key</span></a><a class="idref" href="mathcomp.algebra.matrix.html#667138260bfba6c8c1be5dda11faf290"><span class="id" title="notation">]</span></a><a class="idref" href="mathcomp.algebra.matrix.html#667138260bfba6c8c1be5dda11faf290"><span class="id" title="notation">_</span></a><a class="idref" href="mathcomp.algebra.matrix.html#667138260bfba6c8c1be5dda11faf290"><span class="id" title="notation">(</span></a><span class="id" title="var">i</span><a class="idref" href="mathcomp.algebra.matrix.html#667138260bfba6c8c1be5dda11faf290"><span class="id" title="notation">,</span></a> <span class="id" title="var">j</span><a class="idref" href="mathcomp.algebra.matrix.html#667138260bfba6c8c1be5dda11faf290"><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="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.matrix.html#i"><span class="id" title="variable">i</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#340b60eb5a3e9913f807040630cb8d43"><span class="id" title="notation">==</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#j"><span class="id" title="variable">j</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#340b60eb5a3e9913f807040630cb8d43"><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="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.matrix.html#i"><span class="id" title="variable">i</span></a> <a class="idref" href="mathcomp.ssreflect.ssrnat.html#989c98e7ddd65d5bf37c334ff2076de8"><span class="id" title="notation"><</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#r"><span class="id" title="variable">r</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#49ac24efa716d8b0ee8943bc1d1769a9"><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.ssralg.html#af5c1d7e13410a0a6c3dff5441ac8477"><span class="id" title="notation">R</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="pid_mx_0"><span class="id" title="lemma">pid_mx_0</span></a> <span class="id" title="var">m</span> <span class="id" title="var">n</span> : <a class="idref" href="mathcomp.algebra.matrix.html#pid_mx"><span class="id" title="definition">pid_mx</span></a> 0 <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#8f9364556521ebb498093f28eea2240f"><span class="id" title="notation">=</span></a> 0 <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#8f9364556521ebb498093f28eea2240f"><span class="id" title="notation">:></span></a> <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.matrix.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.matrix.html#n"><span class="id" title="variable">n</span></a><a class="idref" href="mathcomp.algebra.matrix.html#cb37620352ad6b90a047a361359e2f04"><span class="id" title="notation">)</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="pid_mx_1"><span class="id" title="lemma">pid_mx_1</span></a> <span class="id" title="var">r</span> : <a class="idref" href="mathcomp.algebra.matrix.html#pid_mx"><span class="id" title="definition">pid_mx</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#r"><span class="id" title="variable">r</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#8f9364556521ebb498093f28eea2240f"><span class="id" title="notation">=</span></a> 1<a class="idref" href="mathcomp.algebra.matrix.html#f0439935524a049a771823d6a7a44496"><span class="id" title="notation">%:</span></a><a class="idref" href="mathcomp.algebra.matrix.html#f0439935524a049a771823d6a7a44496"><span class="id" title="notation">M</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.matrix.html#1ce49b162eb757fc4a2e0ce4df0ee5cd"><span class="id" title="notation">'</span></a><a class="idref" href="mathcomp.algebra.matrix.html#1ce49b162eb757fc4a2e0ce4df0ee5cd"><span class="id" title="notation">M_r</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="pid_mx_row"><span class="id" title="lemma">pid_mx_row</span></a> <span class="id" title="var">n</span> <span class="id" title="var">r</span> : <a class="idref" href="mathcomp.algebra.matrix.html#pid_mx"><span class="id" title="definition">pid_mx</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#r"><span class="id" title="variable">r</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#8f9364556521ebb498093f28eea2240f"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#row_mx"><span class="id" title="definition">row_mx</span></a> 1<a class="idref" href="mathcomp.algebra.matrix.html#f0439935524a049a771823d6a7a44496"><span class="id" title="notation">%:</span></a><a class="idref" href="mathcomp.algebra.matrix.html#f0439935524a049a771823d6a7a44496"><span class="id" title="notation">M</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.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.matrix.html#r"><span class="id" title="variable">r</span></a><a class="idref" href="mathcomp.algebra.matrix.html#cb37620352ad6b90a047a361359e2f04"><span class="id" title="notation">,</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#r"><span class="id" title="variable">r</span></a> <a class="idref" href="mathcomp.ssreflect.ssrnat.html#b3eea360671e1b32b18a26e15b3aace3"><span class="id" title="notation">+</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#n"><span class="id" title="variable">n</span></a><a class="idref" href="mathcomp.algebra.matrix.html#cb37620352ad6b90a047a361359e2f04"><span class="id" title="notation">)</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="pid_mx_col"><span class="id" title="lemma">pid_mx_col</span></a> <span class="id" title="var">m</span> <span class="id" title="var">r</span> : <a class="idref" href="mathcomp.algebra.matrix.html#pid_mx"><span class="id" title="definition">pid_mx</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#r"><span class="id" title="variable">r</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#8f9364556521ebb498093f28eea2240f"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#col_mx"><span class="id" title="definition">col_mx</span></a> 1<a class="idref" href="mathcomp.algebra.matrix.html#f0439935524a049a771823d6a7a44496"><span class="id" title="notation">%:</span></a><a class="idref" href="mathcomp.algebra.matrix.html#f0439935524a049a771823d6a7a44496"><span class="id" title="notation">M</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.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.matrix.html#r"><span class="id" title="variable">r</span></a> <a class="idref" href="mathcomp.ssreflect.ssrnat.html#b3eea360671e1b32b18a26e15b3aace3"><span class="id" title="notation">+</span></a> <a class="idref" href="mathcomp.algebra.matrix.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.matrix.html#r"><span class="id" title="variable">r</span></a><a class="idref" href="mathcomp.algebra.matrix.html#cb37620352ad6b90a047a361359e2f04"><span class="id" title="notation">)</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="pid_mx_block"><span class="id" title="lemma">pid_mx_block</span></a> <span class="id" title="var">m</span> <span class="id" title="var">n</span> <span class="id" title="var">r</span> : <a class="idref" href="mathcomp.algebra.matrix.html#pid_mx"><span class="id" title="definition">pid_mx</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#r"><span class="id" title="variable">r</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#8f9364556521ebb498093f28eea2240f"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#block_mx"><span class="id" title="definition">block_mx</span></a> 1<a class="idref" href="mathcomp.algebra.matrix.html#f0439935524a049a771823d6a7a44496"><span class="id" title="notation">%:</span></a><a class="idref" href="mathcomp.algebra.matrix.html#f0439935524a049a771823d6a7a44496"><span class="id" title="notation">M</span></a> 0 0 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.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.matrix.html#r"><span class="id" title="variable">r</span></a> <a class="idref" href="mathcomp.ssreflect.ssrnat.html#b3eea360671e1b32b18a26e15b3aace3"><span class="id" title="notation">+</span></a> <a class="idref" href="mathcomp.algebra.matrix.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.matrix.html#r"><span class="id" title="variable">r</span></a> <a class="idref" href="mathcomp.ssreflect.ssrnat.html#b3eea360671e1b32b18a26e15b3aace3"><span class="id" title="notation">+</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#n"><span class="id" title="variable">n</span></a><a class="idref" href="mathcomp.algebra.matrix.html#cb37620352ad6b90a047a361359e2f04"><span class="id" title="notation">)</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="tr_pid_mx"><span class="id" title="lemma">tr_pid_mx</span></a> <span class="id" title="var">m</span> <span class="id" title="var">n</span> <span class="id" title="var">r</span> : <a class="idref" href="mathcomp.algebra.matrix.html#0efdd62d084b88acb1b2860eed745d54"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.matrix.html#pid_mx"><span class="id" title="definition">pid_mx</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#r"><span class="id" title="variable">r</span></a><a class="idref" href="mathcomp.algebra.matrix.html#0efdd62d084b88acb1b2860eed745d54"><span class="id" title="notation">)^</span></a><a class="idref" href="mathcomp.algebra.matrix.html#0efdd62d084b88acb1b2860eed745d54"><span class="id" title="notation">T</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#8f9364556521ebb498093f28eea2240f"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#pid_mx"><span class="id" title="definition">pid_mx</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#r"><span class="id" title="variable">r</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#8f9364556521ebb498093f28eea2240f"><span class="id" title="notation">:></span></a> <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.matrix.html#n"><span class="id" title="variable">n</span></a><a class="idref" href="mathcomp.algebra.matrix.html#cb37620352ad6b90a047a361359e2f04"><span class="id" title="notation">,</span></a> <a class="idref" href="mathcomp.algebra.matrix.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>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="pid_mx_minv"><span class="id" title="lemma">pid_mx_minv</span></a> <span class="id" title="var">m</span> <span class="id" title="var">n</span> <span class="id" title="var">r</span> : <a class="idref" href="mathcomp.algebra.matrix.html#pid_mx"><span class="id" title="definition">pid_mx</span></a> (<a class="idref" href="mathcomp.ssreflect.ssrnat.html#minn"><span class="id" title="definition">minn</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#m"><span class="id" title="variable">m</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#r"><span class="id" title="variable">r</span></a>) <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#8f9364556521ebb498093f28eea2240f"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#pid_mx"><span class="id" title="definition">pid_mx</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#r"><span class="id" title="variable">r</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#8f9364556521ebb498093f28eea2240f"><span class="id" title="notation">:></span></a> <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.matrix.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.matrix.html#n"><span class="id" title="variable">n</span></a><a class="idref" href="mathcomp.algebra.matrix.html#cb37620352ad6b90a047a361359e2f04"><span class="id" title="notation">)</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="pid_mx_minh"><span class="id" title="lemma">pid_mx_minh</span></a> <span class="id" title="var">m</span> <span class="id" title="var">n</span> <span class="id" title="var">r</span> : <a class="idref" href="mathcomp.algebra.matrix.html#pid_mx"><span class="id" title="definition">pid_mx</span></a> (<a class="idref" href="mathcomp.ssreflect.ssrnat.html#minn"><span class="id" title="definition">minn</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#n"><span class="id" title="variable">n</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#r"><span class="id" title="variable">r</span></a>) <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#8f9364556521ebb498093f28eea2240f"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#pid_mx"><span class="id" title="definition">pid_mx</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#r"><span class="id" title="variable">r</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#8f9364556521ebb498093f28eea2240f"><span class="id" title="notation">:></span></a> <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.matrix.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.matrix.html#n"><span class="id" title="variable">n</span></a><a class="idref" href="mathcomp.algebra.matrix.html#cb37620352ad6b90a047a361359e2f04"><span class="id" title="notation">)</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="mul_pid_mx"><span class="id" title="lemma">mul_pid_mx</span></a> <span class="id" title="var">m</span> <span class="id" title="var">n</span> <span class="id" title="var">p</span> <span class="id" title="var">q</span> <span class="id" title="var">r</span> :<br/> + <a class="idref" href="mathcomp.algebra.matrix.html#214a0bf07a0a0de5c6aebf03e1f2a5c7"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.matrix.html#pid_mx"><span class="id" title="definition">pid_mx</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#q"><span class="id" title="variable">q</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.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.matrix.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.matrix.html#n"><span class="id" title="variable">n</span></a><a class="idref" href="mathcomp.algebra.matrix.html#cb37620352ad6b90a047a361359e2f04"><span class="id" title="notation">)</span></a><a class="idref" href="mathcomp.algebra.matrix.html#214a0bf07a0a0de5c6aebf03e1f2a5c7"><span class="id" title="notation">)</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#214a0bf07a0a0de5c6aebf03e1f2a5c7"><span class="id" title="notation">×</span></a><a class="idref" href="mathcomp.algebra.matrix.html#214a0bf07a0a0de5c6aebf03e1f2a5c7"><span class="id" title="notation">m</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#214a0bf07a0a0de5c6aebf03e1f2a5c7"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.matrix.html#pid_mx"><span class="id" title="definition">pid_mx</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#r"><span class="id" title="variable">r</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssreflect.html#4509b22bf26e3d6d771897e22bd8bc8f"><span class="id" title="notation">:</span></a> <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.matrix.html#n"><span class="id" title="variable">n</span></a><a class="idref" href="mathcomp.algebra.matrix.html#cb37620352ad6b90a047a361359e2f04"><span class="id" title="notation">,</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#p"><span class="id" title="variable">p</span></a><a class="idref" href="mathcomp.algebra.matrix.html#cb37620352ad6b90a047a361359e2f04"><span class="id" title="notation">)</span></a><a class="idref" href="mathcomp.algebra.matrix.html#214a0bf07a0a0de5c6aebf03e1f2a5c7"><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.matrix.html#pid_mx"><span class="id" title="definition">pid_mx</span></a> (<a class="idref" href="mathcomp.ssreflect.ssrnat.html#minn"><span class="id" title="definition">minn</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#n"><span class="id" title="variable">n</span></a> (<a class="idref" href="mathcomp.ssreflect.ssrnat.html#minn"><span class="id" title="definition">minn</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#q"><span class="id" title="variable">q</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#r"><span class="id" title="variable">r</span></a>)).<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="pid_mx_id"><span class="id" title="lemma">pid_mx_id</span></a> <span class="id" title="var">m</span> <span class="id" title="var">n</span> <span class="id" title="var">p</span> <span class="id" title="var">r</span> :<br/> + <a class="idref" href="mathcomp.algebra.matrix.html#r"><span class="id" title="variable">r</span></a> <a class="idref" href="mathcomp.ssreflect.ssrnat.html#9b077c369e19739ef880736ba34623ff"><span class="id" title="notation">≤</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#n"><span class="id" title="variable">n</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#214a0bf07a0a0de5c6aebf03e1f2a5c7"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.matrix.html#pid_mx"><span class="id" title="definition">pid_mx</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#r"><span class="id" title="variable">r</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssreflect.html#4509b22bf26e3d6d771897e22bd8bc8f"><span class="id" title="notation">:</span></a> <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.matrix.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.matrix.html#n"><span class="id" title="variable">n</span></a><a class="idref" href="mathcomp.algebra.matrix.html#cb37620352ad6b90a047a361359e2f04"><span class="id" title="notation">)</span></a><a class="idref" href="mathcomp.algebra.matrix.html#214a0bf07a0a0de5c6aebf03e1f2a5c7"><span class="id" title="notation">)</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#214a0bf07a0a0de5c6aebf03e1f2a5c7"><span class="id" title="notation">×</span></a><a class="idref" href="mathcomp.algebra.matrix.html#214a0bf07a0a0de5c6aebf03e1f2a5c7"><span class="id" title="notation">m</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#214a0bf07a0a0de5c6aebf03e1f2a5c7"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.matrix.html#pid_mx"><span class="id" title="definition">pid_mx</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#r"><span class="id" title="variable">r</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssreflect.html#4509b22bf26e3d6d771897e22bd8bc8f"><span class="id" title="notation">:</span></a> <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.matrix.html#n"><span class="id" title="variable">n</span></a><a class="idref" href="mathcomp.algebra.matrix.html#cb37620352ad6b90a047a361359e2f04"><span class="id" title="notation">,</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#p"><span class="id" title="variable">p</span></a><a class="idref" href="mathcomp.algebra.matrix.html#cb37620352ad6b90a047a361359e2f04"><span class="id" title="notation">)</span></a><a class="idref" href="mathcomp.algebra.matrix.html#214a0bf07a0a0de5c6aebf03e1f2a5c7"><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.matrix.html#pid_mx"><span class="id" title="definition">pid_mx</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#r"><span class="id" title="variable">r</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Definition</span> <a name="copid_mx"><span class="id" title="definition">copid_mx</span></a> {<span class="id" title="var">n</span>} <span class="id" title="var">r</span> : <a class="idref" href="mathcomp.algebra.matrix.html#1ce49b162eb757fc4a2e0ce4df0ee5cd"><span class="id" title="notation">'</span></a><a class="idref" href="mathcomp.algebra.matrix.html#1ce49b162eb757fc4a2e0ce4df0ee5cd"><span class="id" title="notation">M_n</span></a> := 1<a class="idref" href="mathcomp.algebra.matrix.html#f0439935524a049a771823d6a7a44496"><span class="id" title="notation">%:</span></a><a class="idref" href="mathcomp.algebra.matrix.html#f0439935524a049a771823d6a7a44496"><span class="id" title="notation">M</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#d70623330b2787db6b196e37db7d8f45"><span class="id" title="notation">-</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#pid_mx"><span class="id" title="definition">pid_mx</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#r"><span class="id" title="variable">r</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="mul_copid_mx_pid"><span class="id" title="lemma">mul_copid_mx_pid</span></a> <span class="id" title="var">m</span> <span class="id" title="var">n</span> <span class="id" title="var">r</span> :<br/> + <a class="idref" href="mathcomp.algebra.matrix.html#r"><span class="id" title="variable">r</span></a> <a class="idref" href="mathcomp.ssreflect.ssrnat.html#9b077c369e19739ef880736ba34623ff"><span class="id" title="notation">≤</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#m"><span class="id" title="variable">m</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#copid_mx"><span class="id" title="definition">copid_mx</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#r"><span class="id" title="variable">r</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#214a0bf07a0a0de5c6aebf03e1f2a5c7"><span class="id" title="notation">×</span></a><a class="idref" href="mathcomp.algebra.matrix.html#214a0bf07a0a0de5c6aebf03e1f2a5c7"><span class="id" title="notation">m</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#pid_mx"><span class="id" title="definition">pid_mx</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#r"><span class="id" title="variable">r</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#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.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.matrix.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.matrix.html#n"><span class="id" title="variable">n</span></a><a class="idref" href="mathcomp.algebra.matrix.html#cb37620352ad6b90a047a361359e2f04"><span class="id" title="notation">)</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="mul_pid_mx_copid"><span class="id" title="lemma">mul_pid_mx_copid</span></a> <span class="id" title="var">m</span> <span class="id" title="var">n</span> <span class="id" title="var">r</span> :<br/> + <a class="idref" href="mathcomp.algebra.matrix.html#r"><span class="id" title="variable">r</span></a> <a class="idref" href="mathcomp.ssreflect.ssrnat.html#9b077c369e19739ef880736ba34623ff"><span class="id" title="notation">≤</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#n"><span class="id" title="variable">n</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#pid_mx"><span class="id" title="definition">pid_mx</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#r"><span class="id" title="variable">r</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#214a0bf07a0a0de5c6aebf03e1f2a5c7"><span class="id" title="notation">×</span></a><a class="idref" href="mathcomp.algebra.matrix.html#214a0bf07a0a0de5c6aebf03e1f2a5c7"><span class="id" title="notation">m</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#copid_mx"><span class="id" title="definition">copid_mx</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#r"><span class="id" title="variable">r</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#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.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.matrix.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.matrix.html#n"><span class="id" title="variable">n</span></a><a class="idref" href="mathcomp.algebra.matrix.html#cb37620352ad6b90a047a361359e2f04"><span class="id" title="notation">)</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="copid_mx_id"><span class="id" title="lemma">copid_mx_id</span></a> <span class="id" title="var">n</span> <span class="id" title="var">r</span> :<br/> + <a class="idref" href="mathcomp.algebra.matrix.html#r"><span class="id" title="variable">r</span></a> <a class="idref" href="mathcomp.ssreflect.ssrnat.html#9b077c369e19739ef880736ba34623ff"><span class="id" title="notation">≤</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#n"><span class="id" title="variable">n</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#copid_mx"><span class="id" title="definition">copid_mx</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#r"><span class="id" title="variable">r</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#214a0bf07a0a0de5c6aebf03e1f2a5c7"><span class="id" title="notation">×</span></a><a class="idref" href="mathcomp.algebra.matrix.html#214a0bf07a0a0de5c6aebf03e1f2a5c7"><span class="id" title="notation">m</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#copid_mx"><span class="id" title="definition">copid_mx</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#r"><span class="id" title="variable">r</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#8f9364556521ebb498093f28eea2240f"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#copid_mx"><span class="id" title="definition">copid_mx</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#r"><span class="id" title="variable">r</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#8f9364556521ebb498093f28eea2240f"><span class="id" title="notation">:></span></a> <a class="idref" href="mathcomp.algebra.matrix.html#1ce49b162eb757fc4a2e0ce4df0ee5cd"><span class="id" title="notation">'</span></a><a class="idref" href="mathcomp.algebra.matrix.html#1ce49b162eb757fc4a2e0ce4df0ee5cd"><span class="id" title="notation">M_n</span></a>.<br/> + +<br/> +</div> + +<div class="doc"> + Block products; we cover all 1 x 2, 2 x 1, and 2 x 2 block products. +</div> +<div class="code"> +<span class="id" title="keyword">Lemma</span> <a name="mul_mx_row"><span class="id" title="lemma">mul_mx_row</span></a> <span class="id" title="var">m</span> <span class="id" title="var">n</span> <span class="id" title="var">p1</span> <span class="id" title="var">p2</span> (<span class="id" title="var">A</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.matrix.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.matrix.html#n"><span class="id" title="variable">n</span></a><a class="idref" href="mathcomp.algebra.matrix.html#cb37620352ad6b90a047a361359e2f04"><span class="id" title="notation">)</span></a>) (<span class="id" title="var">Bl</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.matrix.html#n"><span class="id" title="variable">n</span></a><a class="idref" href="mathcomp.algebra.matrix.html#cb37620352ad6b90a047a361359e2f04"><span class="id" title="notation">,</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#p1"><span class="id" title="variable">p1</span></a><a class="idref" href="mathcomp.algebra.matrix.html#cb37620352ad6b90a047a361359e2f04"><span class="id" title="notation">)</span></a>) (<span class="id" title="var">Br</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.matrix.html#n"><span class="id" title="variable">n</span></a><a class="idref" href="mathcomp.algebra.matrix.html#cb37620352ad6b90a047a361359e2f04"><span class="id" title="notation">,</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#p2"><span class="id" title="variable">p2</span></a><a class="idref" href="mathcomp.algebra.matrix.html#cb37620352ad6b90a047a361359e2f04"><span class="id" title="notation">)</span></a>) :<br/> + <a class="idref" href="mathcomp.algebra.matrix.html#A"><span class="id" title="variable">A</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#214a0bf07a0a0de5c6aebf03e1f2a5c7"><span class="id" title="notation">×</span></a><a class="idref" href="mathcomp.algebra.matrix.html#214a0bf07a0a0de5c6aebf03e1f2a5c7"><span class="id" title="notation">m</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#row_mx"><span class="id" title="definition">row_mx</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#Bl"><span class="id" title="variable">Bl</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#Br"><span class="id" title="variable">Br</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#row_mx"><span class="id" title="definition">row_mx</span></a> (<a class="idref" href="mathcomp.algebra.matrix.html#A"><span class="id" title="variable">A</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#214a0bf07a0a0de5c6aebf03e1f2a5c7"><span class="id" title="notation">×</span></a><a class="idref" href="mathcomp.algebra.matrix.html#214a0bf07a0a0de5c6aebf03e1f2a5c7"><span class="id" title="notation">m</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#Bl"><span class="id" title="variable">Bl</span></a>) (<a class="idref" href="mathcomp.algebra.matrix.html#A"><span class="id" title="variable">A</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#214a0bf07a0a0de5c6aebf03e1f2a5c7"><span class="id" title="notation">×</span></a><a class="idref" href="mathcomp.algebra.matrix.html#214a0bf07a0a0de5c6aebf03e1f2a5c7"><span class="id" title="notation">m</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#Br"><span class="id" title="variable">Br</span></a>).<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="mul_col_mx"><span class="id" title="lemma">mul_col_mx</span></a> <span class="id" title="var">m1</span> <span class="id" title="var">m2</span> <span class="id" title="var">n</span> <span class="id" title="var">p</span> (<span class="id" title="var">Au</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.matrix.html#m1"><span class="id" title="variable">m1</span></a><a class="idref" href="mathcomp.algebra.matrix.html#cb37620352ad6b90a047a361359e2f04"><span class="id" title="notation">,</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#n"><span class="id" title="variable">n</span></a><a class="idref" href="mathcomp.algebra.matrix.html#cb37620352ad6b90a047a361359e2f04"><span class="id" title="notation">)</span></a>) (<span class="id" title="var">Ad</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.matrix.html#m2"><span class="id" title="variable">m2</span></a><a class="idref" href="mathcomp.algebra.matrix.html#cb37620352ad6b90a047a361359e2f04"><span class="id" title="notation">,</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#n"><span class="id" title="variable">n</span></a><a class="idref" href="mathcomp.algebra.matrix.html#cb37620352ad6b90a047a361359e2f04"><span class="id" title="notation">)</span></a>) (<span class="id" title="var">B</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.matrix.html#n"><span class="id" title="variable">n</span></a><a class="idref" href="mathcomp.algebra.matrix.html#cb37620352ad6b90a047a361359e2f04"><span class="id" title="notation">,</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#p"><span class="id" title="variable">p</span></a><a class="idref" href="mathcomp.algebra.matrix.html#cb37620352ad6b90a047a361359e2f04"><span class="id" title="notation">)</span></a>) :<br/> + <a class="idref" href="mathcomp.algebra.matrix.html#col_mx"><span class="id" title="definition">col_mx</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#Au"><span class="id" title="variable">Au</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#Ad"><span class="id" title="variable">Ad</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#214a0bf07a0a0de5c6aebf03e1f2a5c7"><span class="id" title="notation">×</span></a><a class="idref" href="mathcomp.algebra.matrix.html#214a0bf07a0a0de5c6aebf03e1f2a5c7"><span class="id" title="notation">m</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#B"><span class="id" title="variable">B</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#col_mx"><span class="id" title="definition">col_mx</span></a> (<a class="idref" href="mathcomp.algebra.matrix.html#Au"><span class="id" title="variable">Au</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#214a0bf07a0a0de5c6aebf03e1f2a5c7"><span class="id" title="notation">×</span></a><a class="idref" href="mathcomp.algebra.matrix.html#214a0bf07a0a0de5c6aebf03e1f2a5c7"><span class="id" title="notation">m</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#B"><span class="id" title="variable">B</span></a>) (<a class="idref" href="mathcomp.algebra.matrix.html#Ad"><span class="id" title="variable">Ad</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#214a0bf07a0a0de5c6aebf03e1f2a5c7"><span class="id" title="notation">×</span></a><a class="idref" href="mathcomp.algebra.matrix.html#214a0bf07a0a0de5c6aebf03e1f2a5c7"><span class="id" title="notation">m</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#B"><span class="id" title="variable">B</span></a>).<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="mul_row_col"><span class="id" title="lemma">mul_row_col</span></a> <span class="id" title="var">m</span> <span class="id" title="var">n1</span> <span class="id" title="var">n2</span> <span class="id" title="var">p</span> (<span class="id" title="var">Al</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.matrix.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.matrix.html#n1"><span class="id" title="variable">n1</span></a><a class="idref" href="mathcomp.algebra.matrix.html#cb37620352ad6b90a047a361359e2f04"><span class="id" title="notation">)</span></a>) (<span class="id" title="var">Ar</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.matrix.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.matrix.html#n2"><span class="id" title="variable">n2</span></a><a class="idref" href="mathcomp.algebra.matrix.html#cb37620352ad6b90a047a361359e2f04"><span class="id" title="notation">)</span></a>)<br/> + (<span class="id" title="var">Bu</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.matrix.html#n1"><span class="id" title="variable">n1</span></a><a class="idref" href="mathcomp.algebra.matrix.html#cb37620352ad6b90a047a361359e2f04"><span class="id" title="notation">,</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#p"><span class="id" title="variable">p</span></a><a class="idref" href="mathcomp.algebra.matrix.html#cb37620352ad6b90a047a361359e2f04"><span class="id" title="notation">)</span></a>) (<span class="id" title="var">Bd</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.matrix.html#n2"><span class="id" title="variable">n2</span></a><a class="idref" href="mathcomp.algebra.matrix.html#cb37620352ad6b90a047a361359e2f04"><span class="id" title="notation">,</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#p"><span class="id" title="variable">p</span></a><a class="idref" href="mathcomp.algebra.matrix.html#cb37620352ad6b90a047a361359e2f04"><span class="id" title="notation">)</span></a>) :<br/> + <a class="idref" href="mathcomp.algebra.matrix.html#row_mx"><span class="id" title="definition">row_mx</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#Al"><span class="id" title="variable">Al</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#Ar"><span class="id" title="variable">Ar</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#214a0bf07a0a0de5c6aebf03e1f2a5c7"><span class="id" title="notation">×</span></a><a class="idref" href="mathcomp.algebra.matrix.html#214a0bf07a0a0de5c6aebf03e1f2a5c7"><span class="id" title="notation">m</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#col_mx"><span class="id" title="definition">col_mx</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#Bu"><span class="id" title="variable">Bu</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#Bd"><span class="id" title="variable">Bd</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#Al"><span class="id" title="variable">Al</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#214a0bf07a0a0de5c6aebf03e1f2a5c7"><span class="id" title="notation">×</span></a><a class="idref" href="mathcomp.algebra.matrix.html#214a0bf07a0a0de5c6aebf03e1f2a5c7"><span class="id" title="notation">m</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#Bu"><span class="id" title="variable">Bu</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#ae4d81913e6239182a9ac7467ffde8cd"><span class="id" title="notation">+</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#Ar"><span class="id" title="variable">Ar</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#214a0bf07a0a0de5c6aebf03e1f2a5c7"><span class="id" title="notation">×</span></a><a class="idref" href="mathcomp.algebra.matrix.html#214a0bf07a0a0de5c6aebf03e1f2a5c7"><span class="id" title="notation">m</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#Bd"><span class="id" title="variable">Bd</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="mul_col_row"><span class="id" title="lemma">mul_col_row</span></a> <span class="id" title="var">m1</span> <span class="id" title="var">m2</span> <span class="id" title="var">n</span> <span class="id" title="var">p1</span> <span class="id" title="var">p2</span> (<span class="id" title="var">Au</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.matrix.html#m1"><span class="id" title="variable">m1</span></a><a class="idref" href="mathcomp.algebra.matrix.html#cb37620352ad6b90a047a361359e2f04"><span class="id" title="notation">,</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#n"><span class="id" title="variable">n</span></a><a class="idref" href="mathcomp.algebra.matrix.html#cb37620352ad6b90a047a361359e2f04"><span class="id" title="notation">)</span></a>) (<span class="id" title="var">Ad</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.matrix.html#m2"><span class="id" title="variable">m2</span></a><a class="idref" href="mathcomp.algebra.matrix.html#cb37620352ad6b90a047a361359e2f04"><span class="id" title="notation">,</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#n"><span class="id" title="variable">n</span></a><a class="idref" href="mathcomp.algebra.matrix.html#cb37620352ad6b90a047a361359e2f04"><span class="id" title="notation">)</span></a>)<br/> + (<span class="id" title="var">Bl</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.matrix.html#n"><span class="id" title="variable">n</span></a><a class="idref" href="mathcomp.algebra.matrix.html#cb37620352ad6b90a047a361359e2f04"><span class="id" title="notation">,</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#p1"><span class="id" title="variable">p1</span></a><a class="idref" href="mathcomp.algebra.matrix.html#cb37620352ad6b90a047a361359e2f04"><span class="id" title="notation">)</span></a>) (<span class="id" title="var">Br</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.matrix.html#n"><span class="id" title="variable">n</span></a><a class="idref" href="mathcomp.algebra.matrix.html#cb37620352ad6b90a047a361359e2f04"><span class="id" title="notation">,</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#p2"><span class="id" title="variable">p2</span></a><a class="idref" href="mathcomp.algebra.matrix.html#cb37620352ad6b90a047a361359e2f04"><span class="id" title="notation">)</span></a>) :<br/> + <a class="idref" href="mathcomp.algebra.matrix.html#col_mx"><span class="id" title="definition">col_mx</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#Au"><span class="id" title="variable">Au</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#Ad"><span class="id" title="variable">Ad</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#214a0bf07a0a0de5c6aebf03e1f2a5c7"><span class="id" title="notation">×</span></a><a class="idref" href="mathcomp.algebra.matrix.html#214a0bf07a0a0de5c6aebf03e1f2a5c7"><span class="id" title="notation">m</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#row_mx"><span class="id" title="definition">row_mx</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#Bl"><span class="id" title="variable">Bl</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#Br"><span class="id" title="variable">Br</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.matrix.html#block_mx"><span class="id" title="definition">block_mx</span></a> (<a class="idref" href="mathcomp.algebra.matrix.html#Au"><span class="id" title="variable">Au</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#214a0bf07a0a0de5c6aebf03e1f2a5c7"><span class="id" title="notation">×</span></a><a class="idref" href="mathcomp.algebra.matrix.html#214a0bf07a0a0de5c6aebf03e1f2a5c7"><span class="id" title="notation">m</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#Bl"><span class="id" title="variable">Bl</span></a>) (<a class="idref" href="mathcomp.algebra.matrix.html#Au"><span class="id" title="variable">Au</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#214a0bf07a0a0de5c6aebf03e1f2a5c7"><span class="id" title="notation">×</span></a><a class="idref" href="mathcomp.algebra.matrix.html#214a0bf07a0a0de5c6aebf03e1f2a5c7"><span class="id" title="notation">m</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#Br"><span class="id" title="variable">Br</span></a>) (<a class="idref" href="mathcomp.algebra.matrix.html#Ad"><span class="id" title="variable">Ad</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#214a0bf07a0a0de5c6aebf03e1f2a5c7"><span class="id" title="notation">×</span></a><a class="idref" href="mathcomp.algebra.matrix.html#214a0bf07a0a0de5c6aebf03e1f2a5c7"><span class="id" title="notation">m</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#Bl"><span class="id" title="variable">Bl</span></a>) (<a class="idref" href="mathcomp.algebra.matrix.html#Ad"><span class="id" title="variable">Ad</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#214a0bf07a0a0de5c6aebf03e1f2a5c7"><span class="id" title="notation">×</span></a><a class="idref" href="mathcomp.algebra.matrix.html#214a0bf07a0a0de5c6aebf03e1f2a5c7"><span class="id" title="notation">m</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#Br"><span class="id" title="variable">Br</span></a>).<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="mul_row_block"><span class="id" title="lemma">mul_row_block</span></a> <span class="id" title="var">m</span> <span class="id" title="var">n1</span> <span class="id" title="var">n2</span> <span class="id" title="var">p1</span> <span class="id" title="var">p2</span> (<span class="id" title="var">Al</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.matrix.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.matrix.html#n1"><span class="id" title="variable">n1</span></a><a class="idref" href="mathcomp.algebra.matrix.html#cb37620352ad6b90a047a361359e2f04"><span class="id" title="notation">)</span></a>) (<span class="id" title="var">Ar</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.matrix.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.matrix.html#n2"><span class="id" title="variable">n2</span></a><a class="idref" href="mathcomp.algebra.matrix.html#cb37620352ad6b90a047a361359e2f04"><span class="id" title="notation">)</span></a>)<br/> + (<span class="id" title="var">Bul</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.matrix.html#n1"><span class="id" title="variable">n1</span></a><a class="idref" href="mathcomp.algebra.matrix.html#cb37620352ad6b90a047a361359e2f04"><span class="id" title="notation">,</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#p1"><span class="id" title="variable">p1</span></a><a class="idref" href="mathcomp.algebra.matrix.html#cb37620352ad6b90a047a361359e2f04"><span class="id" title="notation">)</span></a>) (<span class="id" title="var">Bur</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.matrix.html#n1"><span class="id" title="variable">n1</span></a><a class="idref" href="mathcomp.algebra.matrix.html#cb37620352ad6b90a047a361359e2f04"><span class="id" title="notation">,</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#p2"><span class="id" title="variable">p2</span></a><a class="idref" href="mathcomp.algebra.matrix.html#cb37620352ad6b90a047a361359e2f04"><span class="id" title="notation">)</span></a>)<br/> + (<span class="id" title="var">Bdl</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.matrix.html#n2"><span class="id" title="variable">n2</span></a><a class="idref" href="mathcomp.algebra.matrix.html#cb37620352ad6b90a047a361359e2f04"><span class="id" title="notation">,</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#p1"><span class="id" title="variable">p1</span></a><a class="idref" href="mathcomp.algebra.matrix.html#cb37620352ad6b90a047a361359e2f04"><span class="id" title="notation">)</span></a>) (<span class="id" title="var">Bdr</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.matrix.html#n2"><span class="id" title="variable">n2</span></a><a class="idref" href="mathcomp.algebra.matrix.html#cb37620352ad6b90a047a361359e2f04"><span class="id" title="notation">,</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#p2"><span class="id" title="variable">p2</span></a><a class="idref" href="mathcomp.algebra.matrix.html#cb37620352ad6b90a047a361359e2f04"><span class="id" title="notation">)</span></a>) :<br/> + <a class="idref" href="mathcomp.algebra.matrix.html#row_mx"><span class="id" title="definition">row_mx</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#Al"><span class="id" title="variable">Al</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#Ar"><span class="id" title="variable">Ar</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#214a0bf07a0a0de5c6aebf03e1f2a5c7"><span class="id" title="notation">×</span></a><a class="idref" href="mathcomp.algebra.matrix.html#214a0bf07a0a0de5c6aebf03e1f2a5c7"><span class="id" title="notation">m</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#block_mx"><span class="id" title="definition">block_mx</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#Bul"><span class="id" title="variable">Bul</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#Bur"><span class="id" title="variable">Bur</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#Bdl"><span class="id" title="variable">Bdl</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#Bdr"><span class="id" title="variable">Bdr</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.matrix.html#row_mx"><span class="id" title="definition">row_mx</span></a> (<a class="idref" href="mathcomp.algebra.matrix.html#Al"><span class="id" title="variable">Al</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#214a0bf07a0a0de5c6aebf03e1f2a5c7"><span class="id" title="notation">×</span></a><a class="idref" href="mathcomp.algebra.matrix.html#214a0bf07a0a0de5c6aebf03e1f2a5c7"><span class="id" title="notation">m</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#Bul"><span class="id" title="variable">Bul</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#ae4d81913e6239182a9ac7467ffde8cd"><span class="id" title="notation">+</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#Ar"><span class="id" title="variable">Ar</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#214a0bf07a0a0de5c6aebf03e1f2a5c7"><span class="id" title="notation">×</span></a><a class="idref" href="mathcomp.algebra.matrix.html#214a0bf07a0a0de5c6aebf03e1f2a5c7"><span class="id" title="notation">m</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#Bdl"><span class="id" title="variable">Bdl</span></a>) (<a class="idref" href="mathcomp.algebra.matrix.html#Al"><span class="id" title="variable">Al</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#214a0bf07a0a0de5c6aebf03e1f2a5c7"><span class="id" title="notation">×</span></a><a class="idref" href="mathcomp.algebra.matrix.html#214a0bf07a0a0de5c6aebf03e1f2a5c7"><span class="id" title="notation">m</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#Bur"><span class="id" title="variable">Bur</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#ae4d81913e6239182a9ac7467ffde8cd"><span class="id" title="notation">+</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#Ar"><span class="id" title="variable">Ar</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#214a0bf07a0a0de5c6aebf03e1f2a5c7"><span class="id" title="notation">×</span></a><a class="idref" href="mathcomp.algebra.matrix.html#214a0bf07a0a0de5c6aebf03e1f2a5c7"><span class="id" title="notation">m</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#Bdr"><span class="id" title="variable">Bdr</span></a>).<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="mul_block_col"><span class="id" title="lemma">mul_block_col</span></a> <span class="id" title="var">m1</span> <span class="id" title="var">m2</span> <span class="id" title="var">n1</span> <span class="id" title="var">n2</span> <span class="id" title="var">p</span> (<span class="id" title="var">Aul</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.matrix.html#m1"><span class="id" title="variable">m1</span></a><a class="idref" href="mathcomp.algebra.matrix.html#cb37620352ad6b90a047a361359e2f04"><span class="id" title="notation">,</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#n1"><span class="id" title="variable">n1</span></a><a class="idref" href="mathcomp.algebra.matrix.html#cb37620352ad6b90a047a361359e2f04"><span class="id" title="notation">)</span></a>) (<span class="id" title="var">Aur</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.matrix.html#m1"><span class="id" title="variable">m1</span></a><a class="idref" href="mathcomp.algebra.matrix.html#cb37620352ad6b90a047a361359e2f04"><span class="id" title="notation">,</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#n2"><span class="id" title="variable">n2</span></a><a class="idref" href="mathcomp.algebra.matrix.html#cb37620352ad6b90a047a361359e2f04"><span class="id" title="notation">)</span></a>)<br/> + (<span class="id" title="var">Adl</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.matrix.html#m2"><span class="id" title="variable">m2</span></a><a class="idref" href="mathcomp.algebra.matrix.html#cb37620352ad6b90a047a361359e2f04"><span class="id" title="notation">,</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#n1"><span class="id" title="variable">n1</span></a><a class="idref" href="mathcomp.algebra.matrix.html#cb37620352ad6b90a047a361359e2f04"><span class="id" title="notation">)</span></a>) (<span class="id" title="var">Adr</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.matrix.html#m2"><span class="id" title="variable">m2</span></a><a class="idref" href="mathcomp.algebra.matrix.html#cb37620352ad6b90a047a361359e2f04"><span class="id" title="notation">,</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#n2"><span class="id" title="variable">n2</span></a><a class="idref" href="mathcomp.algebra.matrix.html#cb37620352ad6b90a047a361359e2f04"><span class="id" title="notation">)</span></a>)<br/> + (<span class="id" title="var">Bu</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.matrix.html#n1"><span class="id" title="variable">n1</span></a><a class="idref" href="mathcomp.algebra.matrix.html#cb37620352ad6b90a047a361359e2f04"><span class="id" title="notation">,</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#p"><span class="id" title="variable">p</span></a><a class="idref" href="mathcomp.algebra.matrix.html#cb37620352ad6b90a047a361359e2f04"><span class="id" title="notation">)</span></a>) (<span class="id" title="var">Bd</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.matrix.html#n2"><span class="id" title="variable">n2</span></a><a class="idref" href="mathcomp.algebra.matrix.html#cb37620352ad6b90a047a361359e2f04"><span class="id" title="notation">,</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#p"><span class="id" title="variable">p</span></a><a class="idref" href="mathcomp.algebra.matrix.html#cb37620352ad6b90a047a361359e2f04"><span class="id" title="notation">)</span></a>) :<br/> + <a class="idref" href="mathcomp.algebra.matrix.html#block_mx"><span class="id" title="definition">block_mx</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#Aul"><span class="id" title="variable">Aul</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#Aur"><span class="id" title="variable">Aur</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#Adl"><span class="id" title="variable">Adl</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#Adr"><span class="id" title="variable">Adr</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#214a0bf07a0a0de5c6aebf03e1f2a5c7"><span class="id" title="notation">×</span></a><a class="idref" href="mathcomp.algebra.matrix.html#214a0bf07a0a0de5c6aebf03e1f2a5c7"><span class="id" title="notation">m</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#col_mx"><span class="id" title="definition">col_mx</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#Bu"><span class="id" title="variable">Bu</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#Bd"><span class="id" title="variable">Bd</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.matrix.html#col_mx"><span class="id" title="definition">col_mx</span></a> (<a class="idref" href="mathcomp.algebra.matrix.html#Aul"><span class="id" title="variable">Aul</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#214a0bf07a0a0de5c6aebf03e1f2a5c7"><span class="id" title="notation">×</span></a><a class="idref" href="mathcomp.algebra.matrix.html#214a0bf07a0a0de5c6aebf03e1f2a5c7"><span class="id" title="notation">m</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#Bu"><span class="id" title="variable">Bu</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#ae4d81913e6239182a9ac7467ffde8cd"><span class="id" title="notation">+</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#Aur"><span class="id" title="variable">Aur</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#214a0bf07a0a0de5c6aebf03e1f2a5c7"><span class="id" title="notation">×</span></a><a class="idref" href="mathcomp.algebra.matrix.html#214a0bf07a0a0de5c6aebf03e1f2a5c7"><span class="id" title="notation">m</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#Bd"><span class="id" title="variable">Bd</span></a>) (<a class="idref" href="mathcomp.algebra.matrix.html#Adl"><span class="id" title="variable">Adl</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#214a0bf07a0a0de5c6aebf03e1f2a5c7"><span class="id" title="notation">×</span></a><a class="idref" href="mathcomp.algebra.matrix.html#214a0bf07a0a0de5c6aebf03e1f2a5c7"><span class="id" title="notation">m</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#Bu"><span class="id" title="variable">Bu</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#ae4d81913e6239182a9ac7467ffde8cd"><span class="id" title="notation">+</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#Adr"><span class="id" title="variable">Adr</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#214a0bf07a0a0de5c6aebf03e1f2a5c7"><span class="id" title="notation">×</span></a><a class="idref" href="mathcomp.algebra.matrix.html#214a0bf07a0a0de5c6aebf03e1f2a5c7"><span class="id" title="notation">m</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#Bd"><span class="id" title="variable">Bd</span></a>).<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="mulmx_block"><span class="id" title="lemma">mulmx_block</span></a> <span class="id" title="var">m1</span> <span class="id" title="var">m2</span> <span class="id" title="var">n1</span> <span class="id" title="var">n2</span> <span class="id" title="var">p1</span> <span class="id" title="var">p2</span> (<span class="id" title="var">Aul</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.matrix.html#m1"><span class="id" title="variable">m1</span></a><a class="idref" href="mathcomp.algebra.matrix.html#cb37620352ad6b90a047a361359e2f04"><span class="id" title="notation">,</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#n1"><span class="id" title="variable">n1</span></a><a class="idref" href="mathcomp.algebra.matrix.html#cb37620352ad6b90a047a361359e2f04"><span class="id" title="notation">)</span></a>) (<span class="id" title="var">Aur</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.matrix.html#m1"><span class="id" title="variable">m1</span></a><a class="idref" href="mathcomp.algebra.matrix.html#cb37620352ad6b90a047a361359e2f04"><span class="id" title="notation">,</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#n2"><span class="id" title="variable">n2</span></a><a class="idref" href="mathcomp.algebra.matrix.html#cb37620352ad6b90a047a361359e2f04"><span class="id" title="notation">)</span></a>)<br/> + (<span class="id" title="var">Adl</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.matrix.html#m2"><span class="id" title="variable">m2</span></a><a class="idref" href="mathcomp.algebra.matrix.html#cb37620352ad6b90a047a361359e2f04"><span class="id" title="notation">,</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#n1"><span class="id" title="variable">n1</span></a><a class="idref" href="mathcomp.algebra.matrix.html#cb37620352ad6b90a047a361359e2f04"><span class="id" title="notation">)</span></a>) (<span class="id" title="var">Adr</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.matrix.html#m2"><span class="id" title="variable">m2</span></a><a class="idref" href="mathcomp.algebra.matrix.html#cb37620352ad6b90a047a361359e2f04"><span class="id" title="notation">,</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#n2"><span class="id" title="variable">n2</span></a><a class="idref" href="mathcomp.algebra.matrix.html#cb37620352ad6b90a047a361359e2f04"><span class="id" title="notation">)</span></a>)<br/> + (<span class="id" title="var">Bul</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.matrix.html#n1"><span class="id" title="variable">n1</span></a><a class="idref" href="mathcomp.algebra.matrix.html#cb37620352ad6b90a047a361359e2f04"><span class="id" title="notation">,</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#p1"><span class="id" title="variable">p1</span></a><a class="idref" href="mathcomp.algebra.matrix.html#cb37620352ad6b90a047a361359e2f04"><span class="id" title="notation">)</span></a>) (<span class="id" title="var">Bur</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.matrix.html#n1"><span class="id" title="variable">n1</span></a><a class="idref" href="mathcomp.algebra.matrix.html#cb37620352ad6b90a047a361359e2f04"><span class="id" title="notation">,</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#p2"><span class="id" title="variable">p2</span></a><a class="idref" href="mathcomp.algebra.matrix.html#cb37620352ad6b90a047a361359e2f04"><span class="id" title="notation">)</span></a>)<br/> + (<span class="id" title="var">Bdl</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.matrix.html#n2"><span class="id" title="variable">n2</span></a><a class="idref" href="mathcomp.algebra.matrix.html#cb37620352ad6b90a047a361359e2f04"><span class="id" title="notation">,</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#p1"><span class="id" title="variable">p1</span></a><a class="idref" href="mathcomp.algebra.matrix.html#cb37620352ad6b90a047a361359e2f04"><span class="id" title="notation">)</span></a>) (<span class="id" title="var">Bdr</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.matrix.html#n2"><span class="id" title="variable">n2</span></a><a class="idref" href="mathcomp.algebra.matrix.html#cb37620352ad6b90a047a361359e2f04"><span class="id" title="notation">,</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#p2"><span class="id" title="variable">p2</span></a><a class="idref" href="mathcomp.algebra.matrix.html#cb37620352ad6b90a047a361359e2f04"><span class="id" title="notation">)</span></a>) :<br/> + <a class="idref" href="mathcomp.algebra.matrix.html#block_mx"><span class="id" title="definition">block_mx</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#Aul"><span class="id" title="variable">Aul</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#Aur"><span class="id" title="variable">Aur</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#Adl"><span class="id" title="variable">Adl</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#Adr"><span class="id" title="variable">Adr</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#214a0bf07a0a0de5c6aebf03e1f2a5c7"><span class="id" title="notation">×</span></a><a class="idref" href="mathcomp.algebra.matrix.html#214a0bf07a0a0de5c6aebf03e1f2a5c7"><span class="id" title="notation">m</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#block_mx"><span class="id" title="definition">block_mx</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#Bul"><span class="id" title="variable">Bul</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#Bur"><span class="id" title="variable">Bur</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#Bdl"><span class="id" title="variable">Bdl</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#Bdr"><span class="id" title="variable">Bdr</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.matrix.html#block_mx"><span class="id" title="definition">block_mx</span></a> (<a class="idref" href="mathcomp.algebra.matrix.html#Aul"><span class="id" title="variable">Aul</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#214a0bf07a0a0de5c6aebf03e1f2a5c7"><span class="id" title="notation">×</span></a><a class="idref" href="mathcomp.algebra.matrix.html#214a0bf07a0a0de5c6aebf03e1f2a5c7"><span class="id" title="notation">m</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#Bul"><span class="id" title="variable">Bul</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#ae4d81913e6239182a9ac7467ffde8cd"><span class="id" title="notation">+</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#Aur"><span class="id" title="variable">Aur</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#214a0bf07a0a0de5c6aebf03e1f2a5c7"><span class="id" title="notation">×</span></a><a class="idref" href="mathcomp.algebra.matrix.html#214a0bf07a0a0de5c6aebf03e1f2a5c7"><span class="id" title="notation">m</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#Bdl"><span class="id" title="variable">Bdl</span></a>) (<a class="idref" href="mathcomp.algebra.matrix.html#Aul"><span class="id" title="variable">Aul</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#214a0bf07a0a0de5c6aebf03e1f2a5c7"><span class="id" title="notation">×</span></a><a class="idref" href="mathcomp.algebra.matrix.html#214a0bf07a0a0de5c6aebf03e1f2a5c7"><span class="id" title="notation">m</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#Bur"><span class="id" title="variable">Bur</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#ae4d81913e6239182a9ac7467ffde8cd"><span class="id" title="notation">+</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#Aur"><span class="id" title="variable">Aur</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#214a0bf07a0a0de5c6aebf03e1f2a5c7"><span class="id" title="notation">×</span></a><a class="idref" href="mathcomp.algebra.matrix.html#214a0bf07a0a0de5c6aebf03e1f2a5c7"><span class="id" title="notation">m</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#Bdr"><span class="id" title="variable">Bdr</span></a>)<br/> + (<a class="idref" href="mathcomp.algebra.matrix.html#Adl"><span class="id" title="variable">Adl</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#214a0bf07a0a0de5c6aebf03e1f2a5c7"><span class="id" title="notation">×</span></a><a class="idref" href="mathcomp.algebra.matrix.html#214a0bf07a0a0de5c6aebf03e1f2a5c7"><span class="id" title="notation">m</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#Bul"><span class="id" title="variable">Bul</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#ae4d81913e6239182a9ac7467ffde8cd"><span class="id" title="notation">+</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#Adr"><span class="id" title="variable">Adr</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#214a0bf07a0a0de5c6aebf03e1f2a5c7"><span class="id" title="notation">×</span></a><a class="idref" href="mathcomp.algebra.matrix.html#214a0bf07a0a0de5c6aebf03e1f2a5c7"><span class="id" title="notation">m</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#Bdl"><span class="id" title="variable">Bdl</span></a>) (<a class="idref" href="mathcomp.algebra.matrix.html#Adl"><span class="id" title="variable">Adl</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#214a0bf07a0a0de5c6aebf03e1f2a5c7"><span class="id" title="notation">×</span></a><a class="idref" href="mathcomp.algebra.matrix.html#214a0bf07a0a0de5c6aebf03e1f2a5c7"><span class="id" title="notation">m</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#Bur"><span class="id" title="variable">Bur</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#ae4d81913e6239182a9ac7467ffde8cd"><span class="id" title="notation">+</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#Adr"><span class="id" title="variable">Adr</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#214a0bf07a0a0de5c6aebf03e1f2a5c7"><span class="id" title="notation">×</span></a><a class="idref" href="mathcomp.algebra.matrix.html#214a0bf07a0a0de5c6aebf03e1f2a5c7"><span class="id" title="notation">m</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#Bdr"><span class="id" title="variable">Bdr</span></a>).<br/> + +<br/> +</div> + +<div class="doc"> + Correspondance between matrices and linear function on row vectors. +</div> +<div class="code"> +<span class="id" title="keyword">Section</span> <a name="MatrixAlgebra.LinRowVector"><span class="id" title="section">LinRowVector</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Variables</span> <a name="MatrixAlgebra.LinRowVector.m"><span class="id" title="variable">m</span></a> <a name="MatrixAlgebra.LinRowVector.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/> +<span class="id" title="keyword">Fact</span> <a name="lin1_mx_key"><span class="id" title="lemma">lin1_mx_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="lin1_mx"><span class="id" title="definition">lin1_mx</span></a> (<span class="id" title="var">f</span> : <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.matrix.html#MatrixAlgebra.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">_m</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.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.matrix.html#MatrixAlgebra.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>) :=<br/> + <a class="idref" href="mathcomp.algebra.matrix.html#667138260bfba6c8c1be5dda11faf290"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.algebra.matrix.html#667138260bfba6c8c1be5dda11faf290"><span class="id" title="notation">matrix</span></a><a class="idref" href="mathcomp.algebra.matrix.html#667138260bfba6c8c1be5dda11faf290"><span class="id" title="notation">[</span></a><a class="idref" href="mathcomp.algebra.matrix.html#lin1_mx_key"><span class="id" title="lemma">lin1_mx_key</span></a><a class="idref" href="mathcomp.algebra.matrix.html#667138260bfba6c8c1be5dda11faf290"><span class="id" title="notation">]</span></a><a class="idref" href="mathcomp.algebra.matrix.html#667138260bfba6c8c1be5dda11faf290"><span class="id" title="notation">_</span></a><a class="idref" href="mathcomp.algebra.matrix.html#667138260bfba6c8c1be5dda11faf290"><span class="id" title="notation">(</span></a><span class="id" title="var">i</span><a class="idref" href="mathcomp.algebra.matrix.html#667138260bfba6c8c1be5dda11faf290"><span class="id" title="notation">,</span></a> <span class="id" title="var">j</span><a class="idref" href="mathcomp.algebra.matrix.html#667138260bfba6c8c1be5dda11faf290"><span class="id" title="notation">)</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#f"><span class="id" title="variable">f</span></a> (<a class="idref" href="mathcomp.algebra.matrix.html#delta_mx"><span class="id" title="definition">delta_mx</span></a> 0 <a class="idref" href="mathcomp.algebra.matrix.html#i"><span class="id" title="variable">i</span></a>) 0 <a class="idref" href="mathcomp.algebra.matrix.html#j"><span class="id" title="variable">j</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Variable</span> <a name="MatrixAlgebra.LinRowVector.f"><span class="id" title="variable">f</span></a> : <a class="idref" href="mathcomp.algebra.ssralg.html#697e59dccfd7ad4519680ddb16ef82da"><span class="id" title="notation">{</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#697e59dccfd7ad4519680ddb16ef82da"><span class="id" title="notation">linear</span></a> <a class="idref" href="mathcomp.algebra.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.matrix.html#MatrixAlgebra.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">_m</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.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.matrix.html#MatrixAlgebra.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="mathcomp.algebra.ssralg.html#697e59dccfd7ad4519680ddb16ef82da"><span class="id" title="notation">}</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="mul_rV_lin1"><span class="id" title="lemma">mul_rV_lin1</span></a> <span class="id" title="var">u</span> : <a class="idref" href="mathcomp.algebra.matrix.html#u"><span class="id" title="variable">u</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#214a0bf07a0a0de5c6aebf03e1f2a5c7"><span class="id" title="notation">×</span></a><a class="idref" href="mathcomp.algebra.matrix.html#214a0bf07a0a0de5c6aebf03e1f2a5c7"><span class="id" title="notation">m</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.matrix.html#MatrixAlgebra.LinRowVector.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.matrix.html#MatrixAlgebra.LinRowVector.f"><span class="id" title="variable">f</span></a> <a class="idref" href="mathcomp.algebra.matrix.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.matrix.html#MatrixAlgebra.LinRowVector"><span class="id" title="section">LinRowVector</span></a>.<br/> + +<br/> +</div> + +<div class="doc"> + Correspondance between matrices and linear function on matrices. +</div> +<div class="code"> +<span class="id" title="keyword">Section</span> <a name="MatrixAlgebra.LinMatrix"><span class="id" title="section">LinMatrix</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Variables</span> <a name="MatrixAlgebra.LinMatrix.m1"><span class="id" title="variable">m1</span></a> <a name="MatrixAlgebra.LinMatrix.n1"><span class="id" title="variable">n1</span></a> <a name="MatrixAlgebra.LinMatrix.m2"><span class="id" title="variable">m2</span></a> <a name="MatrixAlgebra.LinMatrix.n2"><span class="id" title="variable">n2</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/> +<span class="id" title="keyword">Definition</span> <a name="lin_mx"><span class="id" title="definition">lin_mx</span></a> (<span class="id" title="var">f</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.matrix.html#MatrixAlgebra.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.matrix.html#MatrixAlgebra.LinMatrix.m1"><span class="id" title="variable">m1</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#MatrixAlgebra.LinMatrix.n1"><span class="id" title="variable">n1</span></a><a class="idref" href="mathcomp.algebra.matrix.html#e36c289fb249221b43b9c978a67340fb"><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.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.matrix.html#MatrixAlgebra.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.matrix.html#MatrixAlgebra.LinMatrix.m2"><span class="id" title="variable">m2</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#MatrixAlgebra.LinMatrix.n2"><span class="id" title="variable">n2</span></a><a class="idref" href="mathcomp.algebra.matrix.html#e36c289fb249221b43b9c978a67340fb"><span class="id" title="notation">)</span></a>) :=<br/> + <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.matrix.html#mxvec"><span class="id" title="definition">mxvec</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#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.matrix.html#vec_mx"><span class="id" title="definition">vec_mx</span></a>).<br/> + +<br/> +<span class="id" title="keyword">Variable</span> <a name="MatrixAlgebra.LinMatrix.f"><span class="id" title="variable">f</span></a> : <a class="idref" href="mathcomp.algebra.ssralg.html#697e59dccfd7ad4519680ddb16ef82da"><span class="id" title="notation">{</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#697e59dccfd7ad4519680ddb16ef82da"><span class="id" title="notation">linear</span></a> <a class="idref" href="mathcomp.algebra.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.matrix.html#MatrixAlgebra.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.matrix.html#MatrixAlgebra.LinMatrix.m1"><span class="id" title="variable">m1</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#MatrixAlgebra.LinMatrix.n1"><span class="id" title="variable">n1</span></a><a class="idref" href="mathcomp.algebra.matrix.html#e36c289fb249221b43b9c978a67340fb"><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.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.matrix.html#MatrixAlgebra.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.matrix.html#MatrixAlgebra.LinMatrix.m2"><span class="id" title="variable">m2</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#MatrixAlgebra.LinMatrix.n2"><span class="id" title="variable">n2</span></a><a class="idref" href="mathcomp.algebra.matrix.html#e36c289fb249221b43b9c978a67340fb"><span class="id" title="notation">)</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#697e59dccfd7ad4519680ddb16ef82da"><span class="id" title="notation">}</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="mul_rV_lin"><span class="id" title="lemma">mul_rV_lin</span></a> <span class="id" title="var">u</span> : <a class="idref" href="mathcomp.algebra.matrix.html#u"><span class="id" title="variable">u</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#214a0bf07a0a0de5c6aebf03e1f2a5c7"><span class="id" title="notation">×</span></a><a class="idref" href="mathcomp.algebra.matrix.html#214a0bf07a0a0de5c6aebf03e1f2a5c7"><span class="id" title="notation">m</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#lin_mx"><span class="id" title="definition">lin_mx</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#MatrixAlgebra.LinMatrix.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.matrix.html#mxvec"><span class="id" title="definition">mxvec</span></a> (<a class="idref" href="mathcomp.algebra.matrix.html#MatrixAlgebra.LinMatrix.f"><span class="id" title="variable">f</span></a> (<a class="idref" href="mathcomp.algebra.matrix.html#vec_mx"><span class="id" title="definition">vec_mx</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#u"><span class="id" title="variable">u</span></a>)).<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="mul_vec_lin"><span class="id" title="lemma">mul_vec_lin</span></a> <span class="id" title="var">A</span> : <a class="idref" href="mathcomp.algebra.matrix.html#mxvec"><span class="id" title="definition">mxvec</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#A"><span class="id" title="variable">A</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#214a0bf07a0a0de5c6aebf03e1f2a5c7"><span class="id" title="notation">×</span></a><a class="idref" href="mathcomp.algebra.matrix.html#214a0bf07a0a0de5c6aebf03e1f2a5c7"><span class="id" title="notation">m</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#lin_mx"><span class="id" title="definition">lin_mx</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#MatrixAlgebra.LinMatrix.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.matrix.html#mxvec"><span class="id" title="definition">mxvec</span></a> (<a class="idref" href="mathcomp.algebra.matrix.html#MatrixAlgebra.LinMatrix.f"><span class="id" title="variable">f</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#A"><span class="id" title="variable">A</span></a>).<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="mx_rV_lin"><span class="id" title="lemma">mx_rV_lin</span></a> <span class="id" title="var">u</span> : <a class="idref" href="mathcomp.algebra.matrix.html#vec_mx"><span class="id" title="definition">vec_mx</span></a> (<a class="idref" href="mathcomp.algebra.matrix.html#u"><span class="id" title="variable">u</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#214a0bf07a0a0de5c6aebf03e1f2a5c7"><span class="id" title="notation">×</span></a><a class="idref" href="mathcomp.algebra.matrix.html#214a0bf07a0a0de5c6aebf03e1f2a5c7"><span class="id" title="notation">m</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#lin_mx"><span class="id" title="definition">lin_mx</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#MatrixAlgebra.LinMatrix.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.matrix.html#MatrixAlgebra.LinMatrix.f"><span class="id" title="variable">f</span></a> (<a class="idref" href="mathcomp.algebra.matrix.html#vec_mx"><span class="id" title="definition">vec_mx</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#u"><span class="id" title="variable">u</span></a>).<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="mx_vec_lin"><span class="id" title="lemma">mx_vec_lin</span></a> <span class="id" title="var">A</span> : <a class="idref" href="mathcomp.algebra.matrix.html#vec_mx"><span class="id" title="definition">vec_mx</span></a> (<a class="idref" href="mathcomp.algebra.matrix.html#mxvec"><span class="id" title="definition">mxvec</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#A"><span class="id" title="variable">A</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#214a0bf07a0a0de5c6aebf03e1f2a5c7"><span class="id" title="notation">×</span></a><a class="idref" href="mathcomp.algebra.matrix.html#214a0bf07a0a0de5c6aebf03e1f2a5c7"><span class="id" title="notation">m</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#lin_mx"><span class="id" title="definition">lin_mx</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#MatrixAlgebra.LinMatrix.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.matrix.html#MatrixAlgebra.LinMatrix.f"><span class="id" title="variable">f</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#A"><span class="id" title="variable">A</span></a>.<br/> + +<br/> +<span class="id" title="keyword">End</span> <a class="idref" href="mathcomp.algebra.matrix.html#MatrixAlgebra.LinMatrix"><span class="id" title="section">LinMatrix</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Canonical</span> <span class="id" title="var">mulmx_additive</span> <span class="id" title="var">m</span> <span class="id" title="var">n</span> <span class="id" title="var">p</span> <span class="id" title="var">A</span> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Additive.Exports.Additive"><span class="id" title="abbreviation">Additive</span></a> (@<a class="idref" href="mathcomp.algebra.matrix.html#mulmxBr"><span class="id" title="lemma">mulmxBr</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#m"><span class="id" title="variable">m</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#n"><span class="id" title="variable">n</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#p"><span class="id" title="variable">p</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#A"><span class="id" title="variable">A</span></a>).<br/> + +<br/> +<span class="id" title="keyword">Section</span> <a name="MatrixAlgebra.Mulmxr"><span class="id" title="section">Mulmxr</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Variables</span> <a name="MatrixAlgebra.Mulmxr.m"><span class="id" title="variable">m</span></a> <a name="MatrixAlgebra.Mulmxr.n"><span class="id" title="variable">n</span></a> <a name="MatrixAlgebra.Mulmxr.p"><span class="id" title="variable">p</span></a> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#nat"><span class="id" title="inductive">nat</span></a>.<br/> +<span class="id" title="keyword">Implicit</span> <span class="id" title="keyword">Type</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.matrix.html#MatrixAlgebra.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.matrix.html#MatrixAlgebra.Mulmxr.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.matrix.html#MatrixAlgebra.Mulmxr.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">Implicit</span> <span class="id" title="keyword">Type</span> <span class="id" title="var">B</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.matrix.html#MatrixAlgebra.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.matrix.html#MatrixAlgebra.Mulmxr.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#MatrixAlgebra.Mulmxr.p"><span class="id" title="variable">p</span></a><a class="idref" href="mathcomp.algebra.matrix.html#e36c289fb249221b43b9c978a67340fb"><span class="id" title="notation">)</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Definition</span> <a name="mulmxr_head"><span class="id" title="definition">mulmxr_head</span></a> <span class="id" title="var">t</span> <span class="id" title="var">B</span> <span class="id" title="var">A</span> := <span class="id" title="keyword">let</span>: <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#tt"><span class="id" title="constructor">tt</span></a> := <a class="idref" href="mathcomp.algebra.matrix.html#t"><span class="id" title="variable">t</span></a> <span class="id" title="tactic">in</span> <a class="idref" href="mathcomp.algebra.matrix.html#A"><span class="id" title="variable">A</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#214a0bf07a0a0de5c6aebf03e1f2a5c7"><span class="id" title="notation">×</span></a><a class="idref" href="mathcomp.algebra.matrix.html#214a0bf07a0a0de5c6aebf03e1f2a5c7"><span class="id" title="notation">m</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#B"><span class="id" title="variable">B</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Definition</span> <a name="lin_mulmxr"><span class="id" title="definition">lin_mulmxr</span></a> <span class="id" title="var">B</span> := <a class="idref" href="mathcomp.algebra.matrix.html#lin_mx"><span class="id" title="definition">lin_mx</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.matrix.html#B"><span class="id" title="variable">B</span></a>).<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="mulmxr_is_linear"><span class="id" title="lemma">mulmxr_is_linear</span></a> <span class="id" title="var">B</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.matrix.html#mulmxr"><span class="id" title="abbreviation">mulmxr</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#B"><span class="id" title="variable">B</span></a>).<br/> + <span class="id" title="keyword">Canonical</span> <span class="id" title="var">mulmxr_additive</span> <span class="id" title="var">B</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.matrix.html#mulmxr_is_linear"><span class="id" title="lemma">mulmxr_is_linear</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#B"><span class="id" title="variable">B</span></a>).<br/> +<span class="id" title="keyword">Canonical</span> <span class="id" title="var">mulmxr_linear</span> <span class="id" title="var">B</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.matrix.html#mulmxr_is_linear"><span class="id" title="lemma">mulmxr_is_linear</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#B"><span class="id" title="variable">B</span></a>).<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="lin_mulmxr_is_linear"><span class="id" title="lemma">lin_mulmxr_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.matrix.html#lin_mulmxr"><span class="id" title="definition">lin_mulmxr</span></a>.<br/> +<span class="id" title="keyword">Canonical</span> <span class="id" title="var">lin_mulmxr_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.matrix.html#lin_mulmxr_is_linear"><span class="id" title="lemma">lin_mulmxr_is_linear</span></a>.<br/> +<span class="id" title="keyword">Canonical</span> <span class="id" title="var">lin_mulmxr_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.matrix.html#lin_mulmxr_is_linear"><span class="id" title="lemma">lin_mulmxr_is_linear</span></a>.<br/> + +<br/> +<span class="id" title="keyword">End</span> <a class="idref" href="mathcomp.algebra.matrix.html#MatrixAlgebra.Mulmxr"><span class="id" title="section">Mulmxr</span></a>.<br/> + +<br/> +</div> + +<div class="doc"> + The trace. +</div> +<div class="code"> +<span class="id" title="keyword">Section</span> <a name="MatrixAlgebra.Trace"><span class="id" title="section">Trace</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Variable</span> <a name="MatrixAlgebra.Trace.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/> +<span class="id" title="keyword">Definition</span> <a name="mxtrace"><span class="id" title="definition">mxtrace</span></a> (<span class="id" title="var">A</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.matrix.html#MatrixAlgebra.R"><span class="id" title="variable">R</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">_n</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.matrix.html#A"><span class="id" title="variable">A</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#i"><span class="id" title="variable">i</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#i"><span class="id" title="variable">i</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="mxtrace_tr"><span class="id" title="lemma">mxtrace_tr</span></a> <span class="id" title="var">A</span> : <a class="idref" href="mathcomp.algebra.matrix.html#dddd04618622462b0f6d04a328c9ed37"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.algebra.matrix.html#dddd04618622462b0f6d04a328c9ed37"><span class="id" title="notation">tr</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#A"><span class="id" title="variable">A</span></a><a class="idref" href="mathcomp.algebra.matrix.html#0efdd62d084b88acb1b2860eed745d54"><span class="id" title="notation">^</span></a><a class="idref" href="mathcomp.algebra.matrix.html#0efdd62d084b88acb1b2860eed745d54"><span class="id" title="notation">T</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#dddd04618622462b0f6d04a328c9ed37"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.algebra.matrix.html#dddd04618622462b0f6d04a328c9ed37"><span class="id" title="notation">tr</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#A"><span class="id" title="variable">A</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="mxtrace_is_scalar"><span class="id" title="lemma">mxtrace_is_scalar</span></a> : <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.matrix.html#mxtrace"><span class="id" title="definition">mxtrace</span></a>.<br/> +<span class="id" title="keyword">Canonical</span> <span class="id" title="var">mxtrace_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.matrix.html#mxtrace_is_scalar"><span class="id" title="lemma">mxtrace_is_scalar</span></a>.<br/> +<span class="id" title="keyword">Canonical</span> <span class="id" title="var">mxtrace_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.matrix.html#mxtrace_is_scalar"><span class="id" title="lemma">mxtrace_is_scalar</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="mxtrace0"><span class="id" title="lemma">mxtrace0</span></a> : <a class="idref" href="mathcomp.algebra.matrix.html#dddd04618622462b0f6d04a328c9ed37"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.algebra.matrix.html#dddd04618622462b0f6d04a328c9ed37"><span class="id" title="notation">tr</span></a> 0 <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> 0. <br/> +<span class="id" title="keyword">Lemma</span> <a name="mxtraceD"><span class="id" title="lemma">mxtraceD</span></a> <span class="id" title="var">A</span> <span class="id" title="var">B</span> : <a class="idref" href="mathcomp.algebra.matrix.html#dddd04618622462b0f6d04a328c9ed37"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.algebra.matrix.html#dddd04618622462b0f6d04a328c9ed37"><span class="id" title="notation">tr</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#dddd04618622462b0f6d04a328c9ed37"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.matrix.html#A"><span class="id" title="variable">A</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#ae4d81913e6239182a9ac7467ffde8cd"><span class="id" title="notation">+</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#B"><span class="id" title="variable">B</span></a><a class="idref" href="mathcomp.algebra.matrix.html#dddd04618622462b0f6d04a328c9ed37"><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.matrix.html#dddd04618622462b0f6d04a328c9ed37"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.algebra.matrix.html#dddd04618622462b0f6d04a328c9ed37"><span class="id" title="notation">tr</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#A"><span class="id" title="variable">A</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#ae4d81913e6239182a9ac7467ffde8cd"><span class="id" title="notation">+</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#dddd04618622462b0f6d04a328c9ed37"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.algebra.matrix.html#dddd04618622462b0f6d04a328c9ed37"><span class="id" title="notation">tr</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#B"><span class="id" title="variable">B</span></a>. <br/> +<span class="id" title="keyword">Lemma</span> <a name="mxtraceZ"><span class="id" title="lemma">mxtraceZ</span></a> <span class="id" title="var">a</span> <span class="id" title="var">A</span> : <a class="idref" href="mathcomp.algebra.matrix.html#dddd04618622462b0f6d04a328c9ed37"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.algebra.matrix.html#dddd04618622462b0f6d04a328c9ed37"><span class="id" title="notation">tr</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#dddd04618622462b0f6d04a328c9ed37"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.matrix.html#a"><span class="id" title="variable">a</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#81f8078534dcbb7e13a32d292f766525"><span class="id" title="notation">*:</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#A"><span class="id" title="variable">A</span></a><a class="idref" href="mathcomp.algebra.matrix.html#dddd04618622462b0f6d04a328c9ed37"><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.matrix.html#a"><span class="id" title="variable">a</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#22058a36a53dac65c94ca403bc62650a"><span class="id" title="notation">×</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#dddd04618622462b0f6d04a328c9ed37"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.algebra.matrix.html#dddd04618622462b0f6d04a328c9ed37"><span class="id" title="notation">tr</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#A"><span class="id" title="variable">A</span></a>. <br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="mxtrace_diag"><span class="id" title="lemma">mxtrace_diag</span></a> <span class="id" title="var">D</span> : <a class="idref" href="mathcomp.algebra.matrix.html#dddd04618622462b0f6d04a328c9ed37"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.algebra.matrix.html#dddd04618622462b0f6d04a328c9ed37"><span class="id" title="notation">tr</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#dddd04618622462b0f6d04a328c9ed37"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.matrix.html#diag_mx"><span class="id" title="definition">diag_mx</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#D"><span class="id" title="variable">D</span></a><a class="idref" href="mathcomp.algebra.matrix.html#dddd04618622462b0f6d04a328c9ed37"><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#640778742e86daa97d31c9911c679af3"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#640778742e86daa97d31c9911c679af3"><span class="id" title="notation">sum_j</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#D"><span class="id" title="variable">D</span></a> 0 <a class="idref" href="mathcomp.algebra.matrix.html#j"><span class="id" title="variable">j</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="mxtrace_scalar"><span class="id" title="lemma">mxtrace_scalar</span></a> <span class="id" title="var">a</span> : <a class="idref" href="mathcomp.algebra.matrix.html#dddd04618622462b0f6d04a328c9ed37"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.algebra.matrix.html#dddd04618622462b0f6d04a328c9ed37"><span class="id" title="notation">tr</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#a"><span class="id" title="variable">a</span></a><a class="idref" href="mathcomp.algebra.matrix.html#f0439935524a049a771823d6a7a44496"><span class="id" title="notation">%:</span></a><a class="idref" href="mathcomp.algebra.matrix.html#f0439935524a049a771823d6a7a44496"><span class="id" title="notation">M</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#a"><span class="id" title="variable">a</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#891e51846c7d1d63a9cb5458374cf308"><span class="id" title="notation">*+</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#MatrixAlgebra.Trace.n"><span class="id" title="variable">n</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="mxtrace1"><span class="id" title="lemma">mxtrace1</span></a> : <a class="idref" href="mathcomp.algebra.matrix.html#dddd04618622462b0f6d04a328c9ed37"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.algebra.matrix.html#dddd04618622462b0f6d04a328c9ed37"><span class="id" title="notation">tr</span></a> 1<a class="idref" href="mathcomp.algebra.matrix.html#f0439935524a049a771823d6a7a44496"><span class="id" title="notation">%:</span></a><a class="idref" href="mathcomp.algebra.matrix.html#f0439935524a049a771823d6a7a44496"><span class="id" title="notation">M</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#MatrixAlgebra.Trace.n"><span class="id" title="variable">n</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">End</span> <a class="idref" href="mathcomp.algebra.matrix.html#MatrixAlgebra.Trace"><span class="id" title="section">Trace</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="trace_mx11"><span class="id" title="lemma">trace_mx11</span></a> (<span class="id" title="var">A</span> : <a class="idref" href="mathcomp.algebra.matrix.html#1ce49b162eb757fc4a2e0ce4df0ee5cd"><span class="id" title="notation">'</span></a><a class="idref" href="mathcomp.algebra.matrix.html#1ce49b162eb757fc4a2e0ce4df0ee5cd"><span class="id" title="notation">M_1</span></a>) : <a class="idref" href="mathcomp.algebra.matrix.html#96a53c40395815f168804b3e9251775e"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.algebra.matrix.html#96a53c40395815f168804b3e9251775e"><span class="id" title="notation">tr</span></a> <a class="idref" href="mathcomp.algebra.matrix.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.matrix.html#A"><span class="id" title="variable">A</span></a> 0 0.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="mxtrace_block"><span class="id" title="lemma">mxtrace_block</span></a> <span class="id" title="var">n1</span> <span class="id" title="var">n2</span> (<span class="id" title="var">Aul</span> : <a class="idref" href="mathcomp.algebra.matrix.html#1ce49b162eb757fc4a2e0ce4df0ee5cd"><span class="id" title="notation">'</span></a><a class="idref" href="mathcomp.algebra.matrix.html#1ce49b162eb757fc4a2e0ce4df0ee5cd"><span class="id" title="notation">M_n1</span></a>) <span class="id" title="var">Aur</span> <span class="id" title="var">Adl</span> (<span class="id" title="var">Adr</span> : <a class="idref" href="mathcomp.algebra.matrix.html#1ce49b162eb757fc4a2e0ce4df0ee5cd"><span class="id" title="notation">'</span></a><a class="idref" href="mathcomp.algebra.matrix.html#1ce49b162eb757fc4a2e0ce4df0ee5cd"><span class="id" title="notation">M_n2</span></a>) :<br/> + <a class="idref" href="mathcomp.algebra.matrix.html#96a53c40395815f168804b3e9251775e"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.algebra.matrix.html#96a53c40395815f168804b3e9251775e"><span class="id" title="notation">tr</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#96a53c40395815f168804b3e9251775e"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.matrix.html#block_mx"><span class="id" title="definition">block_mx</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#Aul"><span class="id" title="variable">Aul</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#Aur"><span class="id" title="variable">Aur</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#Adl"><span class="id" title="variable">Adl</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#Adr"><span class="id" title="variable">Adr</span></a><a class="idref" href="mathcomp.algebra.matrix.html#96a53c40395815f168804b3e9251775e"><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.matrix.html#96a53c40395815f168804b3e9251775e"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.algebra.matrix.html#96a53c40395815f168804b3e9251775e"><span class="id" title="notation">tr</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#Aul"><span class="id" title="variable">Aul</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#ae4d81913e6239182a9ac7467ffde8cd"><span class="id" title="notation">+</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#96a53c40395815f168804b3e9251775e"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.algebra.matrix.html#96a53c40395815f168804b3e9251775e"><span class="id" title="notation">tr</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#Adr"><span class="id" title="variable">Adr</span></a>.<br/> + +<br/> +</div> + +<div class="doc"> + The matrix ring structure requires a strutural condition (dimension of the + form n.+1) to statisfy the nontriviality condition we have imposed. +</div> +<div class="code"> +<span class="id" title="keyword">Section</span> <a name="MatrixAlgebra.MatrixRing"><span class="id" title="section">MatrixRing</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Variable</span> <a name="MatrixAlgebra.MatrixRing.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/> +<span class="id" title="keyword">Lemma</span> <a name="matrix_nonzero1"><span class="id" title="lemma">matrix_nonzero1</span></a> : 1<a class="idref" href="mathcomp.algebra.matrix.html#f0439935524a049a771823d6a7a44496"><span class="id" title="notation">%:</span></a><a class="idref" href="mathcomp.algebra.matrix.html#f0439935524a049a771823d6a7a44496"><span class="id" title="notation">M</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#9e45f909d1732d6d9e153b650829bccf"><span class="id" title="notation">!=</span></a> 0 <a class="idref" href="mathcomp.ssreflect.eqtype.html#9e45f909d1732d6d9e153b650829bccf"><span class="id" title="notation">:></span></a> <a class="idref" href="mathcomp.algebra.matrix.html#1ce49b162eb757fc4a2e0ce4df0ee5cd"><span class="id" title="notation">'</span></a><a class="idref" href="mathcomp.algebra.matrix.html#1ce49b162eb757fc4a2e0ce4df0ee5cd"><span class="id" title="notation">M_n</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Definition</span> <a name="matrix_ringMixin"><span class="id" title="definition">matrix_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.matrix.html#mulmxA"><span class="id" title="lemma">mulmxA</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#n"><span class="id" title="abbreviation">n</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#n"><span class="id" title="abbreviation">n</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#n"><span class="id" title="abbreviation">n</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#n"><span class="id" title="abbreviation">n</span></a>) (@<a class="idref" href="mathcomp.algebra.matrix.html#mul1mx"><span class="id" title="lemma">mul1mx</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#n"><span class="id" title="abbreviation">n</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#n"><span class="id" title="abbreviation">n</span></a>) (@<a class="idref" href="mathcomp.algebra.matrix.html#mulmx1"><span class="id" title="lemma">mulmx1</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#n"><span class="id" title="abbreviation">n</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#n"><span class="id" title="abbreviation">n</span></a>)<br/> + (@<a class="idref" href="mathcomp.algebra.matrix.html#mulmxDl"><span class="id" title="lemma">mulmxDl</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#n"><span class="id" title="abbreviation">n</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#n"><span class="id" title="abbreviation">n</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#n"><span class="id" title="abbreviation">n</span></a>) (@<a class="idref" href="mathcomp.algebra.matrix.html#mulmxDr"><span class="id" title="lemma">mulmxDr</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#n"><span class="id" title="abbreviation">n</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#n"><span class="id" title="abbreviation">n</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#n"><span class="id" title="abbreviation">n</span></a>) <a class="idref" href="mathcomp.algebra.matrix.html#matrix_nonzero1"><span class="id" title="lemma">matrix_nonzero1</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Canonical</span> <span class="id" title="var">matrix_ringType</span> := <span class="id" title="keyword">Eval</span> <span class="id" title="tactic">hnf</span> <span class="id" title="tactic">in</span> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Ring.Exports.RingType"><span class="id" title="abbreviation">RingType</span></a> <a class="idref" href="mathcomp.algebra.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.matrix.html#MatrixAlgebra.R"><span class="id" title="variable">R</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">_n</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#matrix_ringMixin"><span class="id" title="definition">matrix_ringMixin</span></a>.<br/> +<span class="id" title="keyword">Canonical</span> <span class="id" title="var">matrix_lAlgType</span> := <span class="id" title="keyword">Eval</span> <span class="id" title="tactic">hnf</span> <span class="id" title="tactic">in</span> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Lalgebra.Exports.LalgType"><span class="id" title="abbreviation">LalgType</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#MatrixAlgebra.R"><span class="id" title="variable">R</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">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.matrix.html#MatrixAlgebra.R"><span class="id" title="variable">R</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">_n</span></a> (@<a class="idref" href="mathcomp.algebra.matrix.html#scalemxAl"><span class="id" title="lemma">scalemxAl</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#n"><span class="id" title="abbreviation">n</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#n"><span class="id" title="abbreviation">n</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#n"><span class="id" title="abbreviation">n</span></a>).<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="mulmxE"><span class="id" title="lemma">mulmxE</span></a> : <a class="idref" href="mathcomp.algebra.matrix.html#mulmx"><span class="id" title="definition">mulmx</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#d5d4e2467843f67554f1a8a22d125de9"><span class="id" title="notation">*%</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#d5d4e2467843f67554f1a8a22d125de9"><span class="id" title="notation">R</span></a>. <br/> +<span class="id" title="keyword">Lemma</span> <a name="idmxE"><span class="id" title="lemma">idmxE</span></a> : 1<a class="idref" href="mathcomp.algebra.matrix.html#f0439935524a049a771823d6a7a44496"><span class="id" title="notation">%:</span></a><a class="idref" href="mathcomp.algebra.matrix.html#f0439935524a049a771823d6a7a44496"><span class="id" title="notation">M</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#8f9364556521ebb498093f28eea2240f"><span class="id" title="notation">=</span></a> 1 <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#8f9364556521ebb498093f28eea2240f"><span class="id" title="notation">:></span></a> <a class="idref" href="mathcomp.algebra.matrix.html#1ce49b162eb757fc4a2e0ce4df0ee5cd"><span class="id" title="notation">'</span></a><a class="idref" href="mathcomp.algebra.matrix.html#1ce49b162eb757fc4a2e0ce4df0ee5cd"><span class="id" title="notation">M_n</span></a>. <br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="scalar_mx_is_multiplicative"><span class="id" title="lemma">scalar_mx_is_multiplicative</span></a> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.RMorphism.Exports.multiplicative"><span class="id" title="abbreviation">multiplicative</span></a> (@<a class="idref" href="mathcomp.algebra.matrix.html#scalar_mx"><span class="id" title="definition">scalar_mx</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#n"><span class="id" title="abbreviation">n</span></a>).<br/> + <span class="id" title="keyword">Canonical</span> <span class="id" title="var">scalar_mx_rmorphism</span> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.RMorphism.Exports.AddRMorphism"><span class="id" title="abbreviation">AddRMorphism</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#scalar_mx_is_multiplicative"><span class="id" title="lemma">scalar_mx_is_multiplicative</span></a>.<br/> + +<br/> +<span class="id" title="keyword">End</span> <a class="idref" href="mathcomp.algebra.matrix.html#MatrixAlgebra.MatrixRing"><span class="id" title="section">MatrixRing</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Section</span> <a name="MatrixAlgebra.LiftPerm"><span class="id" title="section">LiftPerm</span></a>.<br/> + +<br/> +</div> + +<div class="doc"> + Block expresssion of a lifted permutation matrix, for the Cormen LUP. +</div> +<div class="code"> + +<br/> +<span class="id" title="keyword">Variable</span> <a name="MatrixAlgebra.LiftPerm.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"> + These could be in zmodp, but that would introduce a dependency on perm. +</div> +<div class="code"> + +<br/> +<span class="id" title="keyword">Definition</span> <a name="lift0_perm"><span class="id" title="definition">lift0_perm</span></a> <span class="id" title="var">s</span> : <a class="idref" href="mathcomp.fingroup.perm.html#ea6fcc91866185ddfad466ada7c10b27"><span class="id" title="notation">'</span></a><a class="idref" href="mathcomp.fingroup.perm.html#ea6fcc91866185ddfad466ada7c10b27"><span class="id" title="notation">S_n</span></a><a class="idref" href="mathcomp.ssreflect.ssrnat.html#361454269931ea8643f7b402f2ab7222"><span class="id" title="notation">.+1</span></a> := <a class="idref" href="mathcomp.fingroup.perm.html#lift_perm"><span class="id" title="definition">lift_perm</span></a> 0 0 <a class="idref" href="mathcomp.algebra.matrix.html#s"><span class="id" title="variable">s</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="lift0_perm0"><span class="id" title="lemma">lift0_perm0</span></a> <span class="id" title="var">s</span> : <a class="idref" href="mathcomp.algebra.matrix.html#lift0_perm"><span class="id" title="definition">lift0_perm</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#s"><span class="id" title="variable">s</span></a> 0 <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> 0.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="lift0_perm_lift"><span class="id" title="lemma">lift0_perm_lift</span></a> <span class="id" title="var">s</span> <span class="id" title="var">k'</span> :<br/> + <a class="idref" href="mathcomp.algebra.matrix.html#lift0_perm"><span class="id" title="definition">lift0_perm</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#s"><span class="id" title="variable">s</span></a> (<a class="idref" href="mathcomp.ssreflect.fintype.html#lift"><span class="id" title="definition">lift</span></a> 0 <a class="idref" href="mathcomp.algebra.matrix.html#k'"><span class="id" title="variable">k'</span></a>) <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#lift"><span class="id" title="definition">lift</span></a> (0 <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssreflect.html#4509b22bf26e3d6d771897e22bd8bc8f"><span class="id" title="notation">:</span></a> <a class="idref" href="mathcomp.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.ssrnat.html#361454269931ea8643f7b402f2ab7222"><span class="id" title="notation">.+1</span></a>) (<a class="idref" href="mathcomp.algebra.matrix.html#s"><span class="id" title="variable">s</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#k'"><span class="id" title="variable">k'</span></a>).<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="lift0_permK"><span class="id" title="lemma">lift0_permK</span></a> <span class="id" title="var">s</span> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#cancel"><span class="id" title="definition">cancel</span></a> (<a class="idref" href="mathcomp.algebra.matrix.html#lift0_perm"><span class="id" title="definition">lift0_perm</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#s"><span class="id" title="variable">s</span></a>) (<a class="idref" href="mathcomp.algebra.matrix.html#lift0_perm"><span class="id" title="definition">lift0_perm</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#s"><span class="id" title="variable">s</span></a><a class="idref" href="mathcomp.fingroup.fingroup.html#a605acbeae7597f74f5a9b816ed8a717"><span class="id" title="notation">^-1</span></a>).<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="lift0_perm_eq0"><span class="id" title="lemma">lift0_perm_eq0</span></a> <span class="id" title="var">s</span> <span class="id" title="var">i</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.matrix.html#lift0_perm"><span class="id" title="definition">lift0_perm</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#s"><span class="id" title="variable">s</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#i"><span class="id" title="variable">i</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#17d28d004d0863cb022d4ce832ddaaae"><span class="id" title="notation">==</span></a> 0<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">)</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.matrix.html#i"><span class="id" title="variable">i</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#17d28d004d0863cb022d4ce832ddaaae"><span class="id" title="notation">==</span></a> 0<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">)</span></a>.<br/> + +<br/> +</div> + +<div class="doc"> + Block expresssion of a lifted permutation matrix +</div> +<div class="code"> + +<br/> +<span class="id" title="keyword">Definition</span> <a name="lift0_mx"><span class="id" title="definition">lift0_mx</span></a> <span class="id" title="var">A</span> : <a class="idref" href="mathcomp.algebra.matrix.html#ff2814b13b0b9cfba84a98df9a2ac866"><span class="id" title="notation">'</span></a><a class="idref" href="mathcomp.algebra.matrix.html#ff2814b13b0b9cfba84a98df9a2ac866"><span class="id" title="notation">M_</span></a><a class="idref" href="mathcomp.algebra.matrix.html#ff2814b13b0b9cfba84a98df9a2ac866"><span class="id" title="notation">(</span></a>1 <a class="idref" href="mathcomp.ssreflect.ssrnat.html#b3eea360671e1b32b18a26e15b3aace3"><span class="id" title="notation">+</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#MatrixAlgebra.LiftPerm.n"><span class="id" title="variable">n</span></a><a class="idref" href="mathcomp.algebra.matrix.html#ff2814b13b0b9cfba84a98df9a2ac866"><span class="id" title="notation">)</span></a> := <a class="idref" href="mathcomp.algebra.matrix.html#block_mx"><span class="id" title="definition">block_mx</span></a> 1 0 0 <a class="idref" href="mathcomp.algebra.matrix.html#A"><span class="id" title="variable">A</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="lift0_mx_perm"><span class="id" title="lemma">lift0_mx_perm</span></a> <span class="id" title="var">s</span> : <a class="idref" href="mathcomp.algebra.matrix.html#lift0_mx"><span class="id" title="definition">lift0_mx</span></a> (<a class="idref" href="mathcomp.algebra.matrix.html#perm_mx"><span class="id" title="definition">perm_mx</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#s"><span class="id" title="variable">s</span></a>) <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#perm_mx"><span class="id" title="definition">perm_mx</span></a> (<a class="idref" href="mathcomp.algebra.matrix.html#lift0_perm"><span class="id" title="definition">lift0_perm</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#s"><span class="id" title="variable">s</span></a>).<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="lift0_mx_is_perm"><span class="id" title="lemma">lift0_mx_is_perm</span></a> <span class="id" title="var">s</span> : <a class="idref" href="mathcomp.algebra.matrix.html#is_perm_mx"><span class="id" title="definition">is_perm_mx</span></a> (<a class="idref" href="mathcomp.algebra.matrix.html#lift0_mx"><span class="id" title="definition">lift0_mx</span></a> (<a class="idref" href="mathcomp.algebra.matrix.html#perm_mx"><span class="id" title="definition">perm_mx</span></a> <a class="idref" href="mathcomp.algebra.matrix.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.matrix.html#MatrixAlgebra.LiftPerm"><span class="id" title="section">LiftPerm</span></a>.<br/> + +<br/> +</div> + +<div class="doc"> + Determinants and adjugates are defined here, but most of their properties + only hold for matrices over a commutative ring, so their theory is + deferred to that section. +<div class="paragraph"> </div> + + The determinant, in one line with the Leibniz Formula +</div> +<div class="code"> +<span class="id" title="keyword">Definition</span> <a name="determinant"><span class="id" title="definition">determinant</span></a> <span class="id" title="var">n</span> (<span class="id" title="var">A</span> : <a class="idref" href="mathcomp.algebra.matrix.html#1ce49b162eb757fc4a2e0ce4df0ee5cd"><span class="id" title="notation">'</span></a><a class="idref" href="mathcomp.algebra.matrix.html#1ce49b162eb757fc4a2e0ce4df0ee5cd"><span class="id" title="notation">M_n</span></a>) : <a class="idref" href="mathcomp.algebra.matrix.html#MatrixAlgebra.R"><span class="id" title="variable">R</span></a> :=<br/> + <a class="idref" href="mathcomp.algebra.ssralg.html#7c248898732684ddfab856fc78d32a15"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#7c248898732684ddfab856fc78d32a15"><span class="id" title="notation">sum_</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#7c248898732684ddfab856fc78d32a15"><span class="id" title="notation">(</span></a><span class="id" title="var">s</span> <a class="idref" href="mathcomp.algebra.ssralg.html#7c248898732684ddfab856fc78d32a15"><span class="id" title="notation">:</span></a> <a class="idref" href="mathcomp.fingroup.perm.html#ea6fcc91866185ddfad466ada7c10b27"><span class="id" title="notation">'</span></a><a class="idref" href="mathcomp.fingroup.perm.html#ea6fcc91866185ddfad466ada7c10b27"><span class="id" title="notation">S_n</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#7c248898732684ddfab856fc78d32a15"><span class="id" title="notation">)</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#fb22424322c3d7eb9b837dfca65ce21e"><span class="id" title="notation">(</span></a>-1<a class="idref" href="mathcomp.algebra.ssralg.html#fb22424322c3d7eb9b837dfca65ce21e"><span class="id" title="notation">)</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#fb22424322c3d7eb9b837dfca65ce21e"><span class="id" title="notation">^+</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#s"><span class="id" title="variable">s</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#22058a36a53dac65c94ca403bc62650a"><span class="id" title="notation">×</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#24846b5795605f82696a43aa191874ea"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#24846b5795605f82696a43aa191874ea"><span class="id" title="notation">prod_i</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#A"><span class="id" title="variable">A</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#i"><span class="id" title="variable">i</span></a> (<a class="idref" href="mathcomp.algebra.matrix.html#s"><span class="id" title="variable">s</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#i"><span class="id" title="variable">i</span></a>).<br/> + +<br/> +</div> + +<div class="doc"> + The cofactor of a matrix on the indexes i and j +</div> +<div class="code"> +<span class="id" title="keyword">Definition</span> <a name="cofactor"><span class="id" title="definition">cofactor</span></a> <span class="id" title="var">n</span> <span class="id" title="var">A</span> (<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>) : <a class="idref" href="mathcomp.algebra.matrix.html#MatrixAlgebra.R"><span class="id" title="variable">R</span></a> :=<br/> + <a class="idref" href="mathcomp.algebra.ssralg.html#fb22424322c3d7eb9b837dfca65ce21e"><span class="id" title="notation">(</span></a>-1<a class="idref" href="mathcomp.algebra.ssralg.html#fb22424322c3d7eb9b837dfca65ce21e"><span class="id" title="notation">)</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#fb22424322c3d7eb9b837dfca65ce21e"><span class="id" title="notation">^+</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#fb22424322c3d7eb9b837dfca65ce21e"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.matrix.html#i"><span class="id" title="variable">i</span></a> <a class="idref" href="mathcomp.ssreflect.ssrnat.html#b3eea360671e1b32b18a26e15b3aace3"><span class="id" title="notation">+</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#j"><span class="id" title="variable">j</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#fb22424322c3d7eb9b837dfca65ce21e"><span class="id" title="notation">)</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#22058a36a53dac65c94ca403bc62650a"><span class="id" title="notation">×</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#determinant"><span class="id" title="definition">determinant</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.matrix.html#i"><span class="id" title="variable">i</span></a> (<a class="idref" href="mathcomp.algebra.matrix.html#col'"><span class="id" title="definition">col'</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#j"><span class="id" title="variable">j</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#A"><span class="id" title="variable">A</span></a>)).<br/> + +<br/> +</div> + +<div class="doc"> + The adjugate matrix : defined as the transpose of the matrix of cofactors +</div> +<div class="code"> +<span class="id" title="keyword">Fact</span> <a name="adjugate_key"><span class="id" title="lemma">adjugate_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="adjugate"><span class="id" title="definition">adjugate</span></a> <span class="id" title="var">n</span> (<span class="id" title="var">A</span> : <a class="idref" href="mathcomp.algebra.matrix.html#1ce49b162eb757fc4a2e0ce4df0ee5cd"><span class="id" title="notation">'</span></a><a class="idref" href="mathcomp.algebra.matrix.html#1ce49b162eb757fc4a2e0ce4df0ee5cd"><span class="id" title="notation">M_n</span></a>) := <a class="idref" href="mathcomp.algebra.matrix.html#667138260bfba6c8c1be5dda11faf290"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.algebra.matrix.html#667138260bfba6c8c1be5dda11faf290"><span class="id" title="notation">matrix</span></a><a class="idref" href="mathcomp.algebra.matrix.html#667138260bfba6c8c1be5dda11faf290"><span class="id" title="notation">[</span></a><a class="idref" href="mathcomp.algebra.matrix.html#adjugate_key"><span class="id" title="lemma">adjugate_key</span></a><a class="idref" href="mathcomp.algebra.matrix.html#667138260bfba6c8c1be5dda11faf290"><span class="id" title="notation">]</span></a><a class="idref" href="mathcomp.algebra.matrix.html#667138260bfba6c8c1be5dda11faf290"><span class="id" title="notation">_</span></a><a class="idref" href="mathcomp.algebra.matrix.html#667138260bfba6c8c1be5dda11faf290"><span class="id" title="notation">(</span></a><span class="id" title="var">i</span><a class="idref" href="mathcomp.algebra.matrix.html#667138260bfba6c8c1be5dda11faf290"><span class="id" title="notation">,</span></a> <span class="id" title="var">j</span><a class="idref" href="mathcomp.algebra.matrix.html#667138260bfba6c8c1be5dda11faf290"><span class="id" title="notation">)</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#cofactor"><span class="id" title="definition">cofactor</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#A"><span class="id" title="variable">A</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#j"><span class="id" title="variable">j</span></a> <a class="idref" href="mathcomp.algebra.matrix.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.matrix.html#MatrixAlgebra"><span class="id" title="section">MatrixAlgebra</span></a>.<br/> + +<br/> + +<br/> + +<br/> +<span class="id" title="keyword">Notation</span> <a name="6bc5aad53caab585f4bb088e10501342"><span class="id" title="notation">"</span></a>a %:M" := (<a class="idref" href="mathcomp.algebra.matrix.html#scalar_mx"><span class="id" title="definition">scalar_mx</span></a> <span class="id" title="var">a</span>) : <span class="id" title="var">ring_scope</span>.<br/> +<span class="id" title="keyword">Notation</span> <a name="9c6b777e699b0b93592b907e7450465e"><span class="id" title="notation">"</span></a>A *m B" := (<a class="idref" href="mathcomp.algebra.matrix.html#mulmx"><span class="id" title="definition">mulmx</span></a> <span class="id" title="var">A</span> <span class="id" title="var">B</span>) : <span class="id" title="var">ring_scope</span>.<br/> +<span class="id" title="keyword">Notation</span> <a name="mulmxr"><span class="id" title="abbreviation">mulmxr</span></a> := (<a class="idref" href="mathcomp.algebra.matrix.html#mulmxr_head"><span class="id" title="definition">mulmxr_head</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#tt"><span class="id" title="constructor">tt</span></a>).<br/> +<span class="id" title="keyword">Notation</span> <a name="9e9debb16249584408eaef095f6716eb"><span class="id" title="notation">"</span></a>\tr A" := (<a class="idref" href="mathcomp.algebra.matrix.html#mxtrace"><span class="id" title="definition">mxtrace</span></a> <span class="id" title="var">A</span>) : <span class="id" title="var">ring_scope</span>.<br/> +<span class="id" title="keyword">Notation</span> <a name="eb4ffa5ff7cedec9d00c8af444fb9631"><span class="id" title="notation">"</span></a>'\det' A" := (<a class="idref" href="mathcomp.algebra.matrix.html#determinant"><span class="id" title="definition">determinant</span></a> <span class="id" title="var">A</span>) : <span class="id" title="var">ring_scope</span>.<br/> +<span class="id" title="keyword">Notation</span> <a name="200993d97f5688db8592e178c042bf0a"><span class="id" title="notation">"</span></a>'\adj' A" := (<a class="idref" href="mathcomp.algebra.matrix.html#adjugate"><span class="id" title="definition">adjugate</span></a> <span class="id" title="var">A</span>) : <span class="id" title="var">ring_scope</span>.<br/> + +<br/> +</div> + +<div class="doc"> + Non-commutative transpose requires multiplication in the converse ring. +</div> +<div class="code"> +<span class="id" title="keyword">Lemma</span> <a name="trmx_mul_rev"><span class="id" title="lemma">trmx_mul_rev</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">m</span> <span class="id" title="var">n</span> <span class="id" title="var">p</span> (<span class="id" title="var">A</span> : <a class="idref" href="mathcomp.algebra.matrix.html#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.matrix.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.matrix.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.matrix.html#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>) (<span class="id" title="var">B</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.matrix.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.matrix.html#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#p"><span class="id" title="variable">p</span></a><a class="idref" href="mathcomp.algebra.matrix.html#e36c289fb249221b43b9c978a67340fb"><span class="id" title="notation">)</span></a>) :<br/> + <a class="idref" href="mathcomp.algebra.matrix.html#0efdd62d084b88acb1b2860eed745d54"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.matrix.html#A"><span class="id" title="variable">A</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.matrix.html#B"><span class="id" title="variable">B</span></a><a class="idref" href="mathcomp.algebra.matrix.html#0efdd62d084b88acb1b2860eed745d54"><span class="id" title="notation">)^</span></a><a class="idref" href="mathcomp.algebra.matrix.html#0efdd62d084b88acb1b2860eed745d54"><span class="id" title="notation">T</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#0efdd62d084b88acb1b2860eed745d54"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.matrix.html#B"><span class="id" title="variable">B</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssreflect.html#4509b22bf26e3d6d771897e22bd8bc8f"><span class="id" title="notation">:</span></a> <a class="idref" href="mathcomp.algebra.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.matrix.html#R"><span class="id" title="variable">R</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#abeaac58e2ece5987d9505e93275b38a"><span class="id" title="notation">^</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#abeaac58e2ece5987d9505e93275b38a"><span class="id" title="notation">c</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.matrix.html#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#p"><span class="id" title="variable">p</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#0efdd62d084b88acb1b2860eed745d54"><span class="id" title="notation">)^</span></a><a class="idref" href="mathcomp.algebra.matrix.html#0efdd62d084b88acb1b2860eed745d54"><span class="id" title="notation">T</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.matrix.html#0efdd62d084b88acb1b2860eed745d54"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.matrix.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.ssreflect.html#4509b22bf26e3d6d771897e22bd8bc8f"><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">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.matrix.html#R"><span class="id" title="variable">R</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#abeaac58e2ece5987d9505e93275b38a"><span class="id" title="notation">^</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#abeaac58e2ece5987d9505e93275b38a"><span class="id" title="notation">c</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.matrix.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.matrix.html#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#0efdd62d084b88acb1b2860eed745d54"><span class="id" title="notation">)^</span></a><a class="idref" href="mathcomp.algebra.matrix.html#0efdd62d084b88acb1b2860eed745d54"><span class="id" title="notation">T</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Canonical</span> <span class="id" title="var">matrix_finLmodType</span> (<span class="id" title="var">R</span> : <a class="idref" href="mathcomp.algebra.finalg.html#FinRing.Ring.Exports.finRingType"><span class="id" title="abbreviation">finRingType</span></a>) <span class="id" title="var">m</span> <span class="id" title="var">n</span> :=<br/> + <a class="idref" href="mathcomp.algebra.finalg.html#73928e07fdf596d7d0d44cccaf9a9cb3"><span class="id" title="notation">[</span></a><a class="idref" href="mathcomp.algebra.finalg.html#73928e07fdf596d7d0d44cccaf9a9cb3"><span class="id" title="notation">finLmodType</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#R"><span class="id" title="variable">R</span></a> <a class="idref" href="mathcomp.algebra.finalg.html#73928e07fdf596d7d0d44cccaf9a9cb3"><span class="id" title="notation">of</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.matrix.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.matrix.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.matrix.html#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.finalg.html#73928e07fdf596d7d0d44cccaf9a9cb3"><span class="id" title="notation">]</span></a>.<br/> +<span class="id" title="keyword">Canonical</span> <span class="id" title="var">matrix_finRingType</span> (<span class="id" title="var">R</span> : <a class="idref" href="mathcomp.algebra.finalg.html#FinRing.Ring.Exports.finRingType"><span class="id" title="abbreviation">finRingType</span></a>) <span class="id" title="var">n'</span> :=<br/> + <span class="id" title="keyword">Eval</span> <span class="id" title="tactic">hnf</span> <span class="id" title="tactic">in</span> <a class="idref" href="mathcomp.algebra.finalg.html#cf58bd711195f609ec57107fc402496c"><span class="id" title="notation">[</span></a><a class="idref" href="mathcomp.algebra.finalg.html#cf58bd711195f609ec57107fc402496c"><span class="id" title="notation">finRingType</span></a> <a class="idref" href="mathcomp.algebra.finalg.html#cf58bd711195f609ec57107fc402496c"><span class="id" title="notation">of</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">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.matrix.html#R"><span class="id" title="variable">R</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">_n'</span></a><a class="idref" href="mathcomp.ssreflect.ssrnat.html#361454269931ea8643f7b402f2ab7222"><span class="id" title="notation">.+1</span></a><a class="idref" href="mathcomp.algebra.finalg.html#cf58bd711195f609ec57107fc402496c"><span class="id" title="notation">]</span></a>.<br/> +<span class="id" title="keyword">Canonical</span> <span class="id" title="var">matrix_finLalgType</span> (<span class="id" title="var">R</span> : <a class="idref" href="mathcomp.algebra.finalg.html#FinRing.Ring.Exports.finRingType"><span class="id" title="abbreviation">finRingType</span></a>) <span class="id" title="var">n'</span> :=<br/> + <a class="idref" href="mathcomp.algebra.finalg.html#f791552e58608a16cb248da4e7f34691"><span class="id" title="notation">[</span></a><a class="idref" href="mathcomp.algebra.finalg.html#f791552e58608a16cb248da4e7f34691"><span class="id" title="notation">finLalgType</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#R"><span class="id" title="variable">R</span></a> <a class="idref" href="mathcomp.algebra.finalg.html#f791552e58608a16cb248da4e7f34691"><span class="id" title="notation">of</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">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.matrix.html#R"><span class="id" title="variable">R</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">_n'</span></a><a class="idref" href="mathcomp.ssreflect.ssrnat.html#361454269931ea8643f7b402f2ab7222"><span class="id" title="notation">.+1</span></a><a class="idref" href="mathcomp.algebra.finalg.html#f791552e58608a16cb248da4e7f34691"><span class="id" title="notation">]</span></a>.<br/> + +<br/> +</div> + +<div class="doc"> + Parametricity over the algebra structure. +</div> +<div class="code"> +<span class="id" title="keyword">Section</span> <a name="MapRingMatrix"><span class="id" title="section">MapRingMatrix</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Variables</span> (<a name="MapRingMatrix.aR"><span class="id" title="variable">aR</span></a> <a name="MapRingMatrix.rR"><span class="id" title="variable">rR</span></a> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Ring.Exports.ringType"><span class="id" title="abbreviation">ringType</span></a>) (<a name="MapRingMatrix.f"><span class="id" title="variable">f</span></a> : <a class="idref" href="mathcomp.algebra.ssralg.html#0c709ebe43ddbd7719f75250a7b916d9"><span class="id" title="notation">{</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#0c709ebe43ddbd7719f75250a7b916d9"><span class="id" title="notation">rmorphism</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#aR"><span class="id" title="variable">aR</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#rR"><span class="id" title="variable">rR</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#0c709ebe43ddbd7719f75250a7b916d9"><span class="id" title="notation">}</span></a>).<br/> + +<br/> +<span class="id" title="keyword">Section</span> <a name="MapRingMatrix.FixedSize"><span class="id" title="section">FixedSize</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Variables</span> <a name="MapRingMatrix.FixedSize.m"><span class="id" title="variable">m</span></a> <a name="MapRingMatrix.FixedSize.n"><span class="id" title="variable">n</span></a> <a name="MapRingMatrix.FixedSize.p"><span class="id" title="variable">p</span></a> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#nat"><span class="id" title="inductive">nat</span></a>.<br/> +<span class="id" title="keyword">Implicit</span> <span class="id" title="keyword">Type</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.matrix.html#MapRingMatrix.aR"><span class="id" title="variable">aR</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.matrix.html#MapRingMatrix.FixedSize.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.matrix.html#MapRingMatrix.FixedSize.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/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="map_mxZ"><span class="id" title="lemma">map_mxZ</span></a> <span class="id" title="var">a</span> <span class="id" title="var">A</span> : <a class="idref" href="mathcomp.algebra.matrix.html#9f6c421a139de435ca847198e46df8c0"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.matrix.html#a"><span class="id" title="variable">a</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#81f8078534dcbb7e13a32d292f766525"><span class="id" title="notation">*:</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#A"><span class="id" title="variable">A</span></a><a class="idref" href="mathcomp.algebra.matrix.html#9f6c421a139de435ca847198e46df8c0"><span class="id" title="notation">)^</span></a><a class="idref" href="mathcomp.algebra.matrix.html#9f6c421a139de435ca847198e46df8c0"><span class="id" title="notation">f</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#MapRingMatrix.f"><span class="id" title="variable">f</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#a"><span class="id" title="variable">a</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#81f8078534dcbb7e13a32d292f766525"><span class="id" title="notation">*:</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#A"><span class="id" title="variable">A</span></a><a class="idref" href="mathcomp.algebra.matrix.html#9f6c421a139de435ca847198e46df8c0"><span class="id" title="notation">^</span></a><a class="idref" href="mathcomp.algebra.matrix.html#9f6c421a139de435ca847198e46df8c0"><span class="id" title="notation">f</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="map_mxM"><span class="id" title="lemma">map_mxM</span></a> <span class="id" title="var">A</span> <span class="id" title="var">B</span> : <a class="idref" href="mathcomp.algebra.matrix.html#9f6c421a139de435ca847198e46df8c0"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.matrix.html#A"><span class="id" title="variable">A</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.matrix.html#B"><span class="id" title="variable">B</span></a><a class="idref" href="mathcomp.algebra.matrix.html#9f6c421a139de435ca847198e46df8c0"><span class="id" title="notation">)^</span></a><a class="idref" href="mathcomp.algebra.matrix.html#9f6c421a139de435ca847198e46df8c0"><span class="id" title="notation">f</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#8f9364556521ebb498093f28eea2240f"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#A"><span class="id" title="variable">A</span></a><a class="idref" href="mathcomp.algebra.matrix.html#9f6c421a139de435ca847198e46df8c0"><span class="id" title="notation">^</span></a><a class="idref" href="mathcomp.algebra.matrix.html#9f6c421a139de435ca847198e46df8c0"><span class="id" title="notation">f</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.matrix.html#B"><span class="id" title="variable">B</span></a><a class="idref" href="mathcomp.algebra.matrix.html#9f6c421a139de435ca847198e46df8c0"><span class="id" title="notation">^</span></a><a class="idref" href="mathcomp.algebra.matrix.html#9f6c421a139de435ca847198e46df8c0"><span class="id" title="notation">f</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#8f9364556521ebb498093f28eea2240f"><span class="id" title="notation">:></span></a> <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.matrix.html#MapRingMatrix.FixedSize.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.matrix.html#MapRingMatrix.FixedSize.p"><span class="id" title="variable">p</span></a><a class="idref" href="mathcomp.algebra.matrix.html#cb37620352ad6b90a047a361359e2f04"><span class="id" title="notation">)</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="map_delta_mx"><span class="id" title="lemma">map_delta_mx</span></a> <span class="id" title="var">i</span> <span class="id" title="var">j</span> : <a class="idref" href="mathcomp.algebra.matrix.html#9f6c421a139de435ca847198e46df8c0"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.matrix.html#delta_mx"><span class="id" title="definition">delta_mx</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#i"><span class="id" title="variable">i</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#j"><span class="id" title="variable">j</span></a><a class="idref" href="mathcomp.algebra.matrix.html#9f6c421a139de435ca847198e46df8c0"><span class="id" title="notation">)^</span></a><a class="idref" href="mathcomp.algebra.matrix.html#9f6c421a139de435ca847198e46df8c0"><span class="id" title="notation">f</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#8f9364556521ebb498093f28eea2240f"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#delta_mx"><span class="id" title="definition">delta_mx</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#i"><span class="id" title="variable">i</span></a> <a class="idref" href="mathcomp.algebra.matrix.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.Logic.html#8f9364556521ebb498093f28eea2240f"><span class="id" title="notation">:></span></a> <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.matrix.html#MapRingMatrix.FixedSize.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.matrix.html#MapRingMatrix.FixedSize.n"><span class="id" title="variable">n</span></a><a class="idref" href="mathcomp.algebra.matrix.html#cb37620352ad6b90a047a361359e2f04"><span class="id" title="notation">)</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="map_diag_mx"><span class="id" title="lemma">map_diag_mx</span></a> <span class="id" title="var">d</span> : <a class="idref" href="mathcomp.algebra.matrix.html#9f6c421a139de435ca847198e46df8c0"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.matrix.html#diag_mx"><span class="id" title="definition">diag_mx</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#d"><span class="id" title="variable">d</span></a><a class="idref" href="mathcomp.algebra.matrix.html#9f6c421a139de435ca847198e46df8c0"><span class="id" title="notation">)^</span></a><a class="idref" href="mathcomp.algebra.matrix.html#9f6c421a139de435ca847198e46df8c0"><span class="id" title="notation">f</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#8f9364556521ebb498093f28eea2240f"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#diag_mx"><span class="id" title="definition">diag_mx</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#d"><span class="id" title="variable">d</span></a><a class="idref" href="mathcomp.algebra.matrix.html#9f6c421a139de435ca847198e46df8c0"><span class="id" title="notation">^</span></a><a class="idref" href="mathcomp.algebra.matrix.html#9f6c421a139de435ca847198e46df8c0"><span class="id" title="notation">f</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#8f9364556521ebb498093f28eea2240f"><span class="id" title="notation">:></span></a> <a class="idref" href="mathcomp.algebra.matrix.html#1ce49b162eb757fc4a2e0ce4df0ee5cd"><span class="id" title="notation">'</span></a><a class="idref" href="mathcomp.algebra.matrix.html#1ce49b162eb757fc4a2e0ce4df0ee5cd"><span class="id" title="notation">M_n</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="map_scalar_mx"><span class="id" title="lemma">map_scalar_mx</span></a> <span class="id" title="var">a</span> : <a class="idref" href="mathcomp.algebra.matrix.html#a"><span class="id" title="variable">a</span></a><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><a class="idref" href="mathcomp.algebra.matrix.html#9f6c421a139de435ca847198e46df8c0"><span class="id" title="notation">^</span></a><a class="idref" href="mathcomp.algebra.matrix.html#9f6c421a139de435ca847198e46df8c0"><span class="id" title="notation">f</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#8f9364556521ebb498093f28eea2240f"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#6bc5aad53caab585f4bb088e10501342"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.matrix.html#MapRingMatrix.f"><span class="id" title="variable">f</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#a"><span class="id" title="variable">a</span></a><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> <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.matrix.html#1ce49b162eb757fc4a2e0ce4df0ee5cd"><span class="id" title="notation">'</span></a><a class="idref" href="mathcomp.algebra.matrix.html#1ce49b162eb757fc4a2e0ce4df0ee5cd"><span class="id" title="notation">M_n</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="map_mx1"><span class="id" title="lemma">map_mx1</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><a class="idref" href="mathcomp.algebra.matrix.html#9f6c421a139de435ca847198e46df8c0"><span class="id" title="notation">^</span></a><a class="idref" href="mathcomp.algebra.matrix.html#9f6c421a139de435ca847198e46df8c0"><span class="id" title="notation">f</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#8f9364556521ebb498093f28eea2240f"><span class="id" title="notation">=</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> <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.matrix.html#1ce49b162eb757fc4a2e0ce4df0ee5cd"><span class="id" title="notation">'</span></a><a class="idref" href="mathcomp.algebra.matrix.html#1ce49b162eb757fc4a2e0ce4df0ee5cd"><span class="id" title="notation">M_n</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="map_perm_mx"><span class="id" title="lemma">map_perm_mx</span></a> (<span class="id" title="var">s</span> : <a class="idref" href="mathcomp.fingroup.perm.html#ea6fcc91866185ddfad466ada7c10b27"><span class="id" title="notation">'</span></a><a class="idref" href="mathcomp.fingroup.perm.html#ea6fcc91866185ddfad466ada7c10b27"><span class="id" title="notation">S_n</span></a>) : <a class="idref" href="mathcomp.algebra.matrix.html#9f6c421a139de435ca847198e46df8c0"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.matrix.html#perm_mx"><span class="id" title="definition">perm_mx</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#s"><span class="id" title="variable">s</span></a><a class="idref" href="mathcomp.algebra.matrix.html#9f6c421a139de435ca847198e46df8c0"><span class="id" title="notation">)^</span></a><a class="idref" href="mathcomp.algebra.matrix.html#9f6c421a139de435ca847198e46df8c0"><span class="id" title="notation">f</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#perm_mx"><span class="id" title="definition">perm_mx</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#s"><span class="id" title="variable">s</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="map_tperm_mx"><span class="id" title="lemma">map_tperm_mx</span></a> (<span class="id" title="var">i1</span> <span class="id" title="var">i2</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>) : <a class="idref" href="mathcomp.algebra.matrix.html#9f6c421a139de435ca847198e46df8c0"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.matrix.html#tperm_mx"><span class="id" title="definition">tperm_mx</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#i1"><span class="id" title="variable">i1</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#i2"><span class="id" title="variable">i2</span></a><a class="idref" href="mathcomp.algebra.matrix.html#9f6c421a139de435ca847198e46df8c0"><span class="id" title="notation">)^</span></a><a class="idref" href="mathcomp.algebra.matrix.html#9f6c421a139de435ca847198e46df8c0"><span class="id" title="notation">f</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#tperm_mx"><span class="id" title="definition">tperm_mx</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#i1"><span class="id" title="variable">i1</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#i2"><span class="id" title="variable">i2</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="map_pid_mx"><span class="id" title="lemma">map_pid_mx</span></a> <span class="id" title="var">r</span> : <a class="idref" href="mathcomp.algebra.matrix.html#9f6c421a139de435ca847198e46df8c0"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.matrix.html#pid_mx"><span class="id" title="definition">pid_mx</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#r"><span class="id" title="variable">r</span></a><a class="idref" href="mathcomp.algebra.matrix.html#9f6c421a139de435ca847198e46df8c0"><span class="id" title="notation">)^</span></a><a class="idref" href="mathcomp.algebra.matrix.html#9f6c421a139de435ca847198e46df8c0"><span class="id" title="notation">f</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#8f9364556521ebb498093f28eea2240f"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#pid_mx"><span class="id" title="definition">pid_mx</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#r"><span class="id" title="variable">r</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#8f9364556521ebb498093f28eea2240f"><span class="id" title="notation">:></span></a> <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.matrix.html#MapRingMatrix.FixedSize.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.matrix.html#MapRingMatrix.FixedSize.n"><span class="id" title="variable">n</span></a><a class="idref" href="mathcomp.algebra.matrix.html#cb37620352ad6b90a047a361359e2f04"><span class="id" title="notation">)</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="trace_map_mx"><span class="id" title="lemma">trace_map_mx</span></a> (<span class="id" title="var">A</span> : <a class="idref" href="mathcomp.algebra.matrix.html#1ce49b162eb757fc4a2e0ce4df0ee5cd"><span class="id" title="notation">'</span></a><a class="idref" href="mathcomp.algebra.matrix.html#1ce49b162eb757fc4a2e0ce4df0ee5cd"><span class="id" title="notation">M_n</span></a>) : <a class="idref" href="mathcomp.algebra.matrix.html#9e9debb16249584408eaef095f6716eb"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.algebra.matrix.html#9e9debb16249584408eaef095f6716eb"><span class="id" title="notation">tr</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#A"><span class="id" title="variable">A</span></a><a class="idref" href="mathcomp.algebra.matrix.html#9f6c421a139de435ca847198e46df8c0"><span class="id" title="notation">^</span></a><a class="idref" href="mathcomp.algebra.matrix.html#9f6c421a139de435ca847198e46df8c0"><span class="id" title="notation">f</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#MapRingMatrix.f"><span class="id" title="variable">f</span></a> (<a class="idref" href="mathcomp.algebra.matrix.html#9e9debb16249584408eaef095f6716eb"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.algebra.matrix.html#9e9debb16249584408eaef095f6716eb"><span class="id" title="notation">tr</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#A"><span class="id" title="variable">A</span></a>).<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="det_map_mx"><span class="id" title="lemma">det_map_mx</span></a> <span class="id" title="var">n'</span> (<span class="id" title="var">A</span> : <a class="idref" href="mathcomp.algebra.matrix.html#1ce49b162eb757fc4a2e0ce4df0ee5cd"><span class="id" title="notation">'</span></a><a class="idref" href="mathcomp.algebra.matrix.html#1ce49b162eb757fc4a2e0ce4df0ee5cd"><span class="id" title="notation">M_n'</span></a>) : <a class="idref" href="mathcomp.algebra.matrix.html#eb4ffa5ff7cedec9d00c8af444fb9631"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.algebra.matrix.html#eb4ffa5ff7cedec9d00c8af444fb9631"><span class="id" title="notation">det</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#A"><span class="id" title="variable">A</span></a><a class="idref" href="mathcomp.algebra.matrix.html#9f6c421a139de435ca847198e46df8c0"><span class="id" title="notation">^</span></a><a class="idref" href="mathcomp.algebra.matrix.html#9f6c421a139de435ca847198e46df8c0"><span class="id" title="notation">f</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#MapRingMatrix.f"><span class="id" title="variable">f</span></a> (<a class="idref" href="mathcomp.algebra.matrix.html#eb4ffa5ff7cedec9d00c8af444fb9631"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.algebra.matrix.html#eb4ffa5ff7cedec9d00c8af444fb9631"><span class="id" title="notation">det</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#A"><span class="id" title="variable">A</span></a>).<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="cofactor_map_mx"><span class="id" title="lemma">cofactor_map_mx</span></a> (<span class="id" title="var">A</span> : <a class="idref" href="mathcomp.algebra.matrix.html#1ce49b162eb757fc4a2e0ce4df0ee5cd"><span class="id" title="notation">'</span></a><a class="idref" href="mathcomp.algebra.matrix.html#1ce49b162eb757fc4a2e0ce4df0ee5cd"><span class="id" title="notation">M_n</span></a>) <span class="id" title="var">i</span> <span class="id" title="var">j</span> : <a class="idref" href="mathcomp.algebra.matrix.html#cofactor"><span class="id" title="definition">cofactor</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#A"><span class="id" title="variable">A</span></a><a class="idref" href="mathcomp.algebra.matrix.html#9f6c421a139de435ca847198e46df8c0"><span class="id" title="notation">^</span></a><a class="idref" href="mathcomp.algebra.matrix.html#9f6c421a139de435ca847198e46df8c0"><span class="id" title="notation">f</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#i"><span class="id" title="variable">i</span></a> <a class="idref" href="mathcomp.algebra.matrix.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.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#MapRingMatrix.f"><span class="id" title="variable">f</span></a> (<a class="idref" href="mathcomp.algebra.matrix.html#cofactor"><span class="id" title="definition">cofactor</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#A"><span class="id" title="variable">A</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#i"><span class="id" title="variable">i</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#j"><span class="id" title="variable">j</span></a>).<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="map_mx_adj"><span class="id" title="lemma">map_mx_adj</span></a> (<span class="id" title="var">A</span> : <a class="idref" href="mathcomp.algebra.matrix.html#1ce49b162eb757fc4a2e0ce4df0ee5cd"><span class="id" title="notation">'</span></a><a class="idref" href="mathcomp.algebra.matrix.html#1ce49b162eb757fc4a2e0ce4df0ee5cd"><span class="id" title="notation">M_n</span></a>) : <a class="idref" href="mathcomp.algebra.matrix.html#9f6c421a139de435ca847198e46df8c0"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.matrix.html#200993d97f5688db8592e178c042bf0a"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.algebra.matrix.html#200993d97f5688db8592e178c042bf0a"><span class="id" title="notation">adj</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#A"><span class="id" title="variable">A</span></a><a class="idref" href="mathcomp.algebra.matrix.html#9f6c421a139de435ca847198e46df8c0"><span class="id" title="notation">)^</span></a><a class="idref" href="mathcomp.algebra.matrix.html#9f6c421a139de435ca847198e46df8c0"><span class="id" title="notation">f</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#200993d97f5688db8592e178c042bf0a"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.algebra.matrix.html#200993d97f5688db8592e178c042bf0a"><span class="id" title="notation">adj</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#A"><span class="id" title="variable">A</span></a><a class="idref" href="mathcomp.algebra.matrix.html#9f6c421a139de435ca847198e46df8c0"><span class="id" title="notation">^</span></a><a class="idref" href="mathcomp.algebra.matrix.html#9f6c421a139de435ca847198e46df8c0"><span class="id" title="notation">f</span></a>.<br/> + +<br/> +<span class="id" title="keyword">End</span> <a class="idref" href="mathcomp.algebra.matrix.html#MapRingMatrix.FixedSize"><span class="id" title="section">FixedSize</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="map_copid_mx"><span class="id" title="lemma">map_copid_mx</span></a> <span class="id" title="var">n</span> <span class="id" title="var">r</span> : <a class="idref" href="mathcomp.algebra.matrix.html#9f6c421a139de435ca847198e46df8c0"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.matrix.html#copid_mx"><span class="id" title="definition">copid_mx</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#r"><span class="id" title="variable">r</span></a><a class="idref" href="mathcomp.algebra.matrix.html#9f6c421a139de435ca847198e46df8c0"><span class="id" title="notation">)^</span></a><a class="idref" href="mathcomp.algebra.matrix.html#9f6c421a139de435ca847198e46df8c0"><span class="id" title="notation">f</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#8f9364556521ebb498093f28eea2240f"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#copid_mx"><span class="id" title="definition">copid_mx</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#r"><span class="id" title="variable">r</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#8f9364556521ebb498093f28eea2240f"><span class="id" title="notation">:></span></a> <a class="idref" href="mathcomp.algebra.matrix.html#1ce49b162eb757fc4a2e0ce4df0ee5cd"><span class="id" title="notation">'</span></a><a class="idref" href="mathcomp.algebra.matrix.html#1ce49b162eb757fc4a2e0ce4df0ee5cd"><span class="id" title="notation">M_n</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="map_mx_is_multiplicative"><span class="id" title="lemma">map_mx_is_multiplicative</span></a> <span class="id" title="var">n'</span> (<span class="id" title="var">n</span> := <a class="idref" href="mathcomp.algebra.matrix.html#n'"><span class="id" title="variable">n'</span></a><a class="idref" href="mathcomp.ssreflect.ssrnat.html#361454269931ea8643f7b402f2ab7222"><span class="id" title="notation">.+1</span></a>) :<br/> + <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.RMorphism.Exports.multiplicative"><span class="id" title="abbreviation">multiplicative</span></a> ((<a class="idref" href="mathcomp.algebra.matrix.html#map_mx"><span class="id" title="definition">map_mx</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#MapRingMatrix.f"><span class="id" title="variable">f</span></a>) <a class="idref" href="mathcomp.algebra.matrix.html#n"><span class="id" title="variable">n</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#n"><span class="id" title="variable">n</span></a>).<br/> + +<br/> +<span class="id" title="keyword">Canonical</span> <span class="id" title="var">map_mx_rmorphism</span> <span class="id" title="var">n'</span> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.RMorphism.Exports.AddRMorphism"><span class="id" title="abbreviation">AddRMorphism</span></a> (<a class="idref" href="mathcomp.algebra.matrix.html#map_mx_is_multiplicative"><span class="id" title="lemma">map_mx_is_multiplicative</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#n'"><span class="id" title="variable">n'</span></a>).<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="map_lin1_mx"><span class="id" title="lemma">map_lin1_mx</span></a> <span class="id" title="var">m</span> <span class="id" title="var">n</span> (<span class="id" title="var">g</span> : <a class="idref" href="mathcomp.algebra.matrix.html#2bf09b7202225c789149165667752fab"><span class="id" title="notation">'</span></a><a class="idref" href="mathcomp.algebra.matrix.html#2bf09b7202225c789149165667752fab"><span class="id" title="notation">rV_m</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#2bf09b7202225c789149165667752fab"><span class="id" title="notation">'</span></a><a class="idref" href="mathcomp.algebra.matrix.html#2bf09b7202225c789149165667752fab"><span class="id" title="notation">rV_n</span></a>) <span class="id" title="var">gf</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">v</span>, <a class="idref" href="mathcomp.algebra.matrix.html#9f6c421a139de435ca847198e46df8c0"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.matrix.html#g"><span class="id" title="variable">g</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#v"><span class="id" title="variable">v</span></a><a class="idref" href="mathcomp.algebra.matrix.html#9f6c421a139de435ca847198e46df8c0"><span class="id" title="notation">)^</span></a><a class="idref" href="mathcomp.algebra.matrix.html#9f6c421a139de435ca847198e46df8c0"><span class="id" title="notation">f</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#gf"><span class="id" title="variable">gf</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#v"><span class="id" title="variable">v</span></a><a class="idref" href="mathcomp.algebra.matrix.html#9f6c421a139de435ca847198e46df8c0"><span class="id" title="notation">^</span></a><a class="idref" href="mathcomp.algebra.matrix.html#9f6c421a139de435ca847198e46df8c0"><span class="id" title="notation">f</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#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.matrix.html#9f6c421a139de435ca847198e46df8c0"><span class="id" title="notation">(</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.matrix.html#g"><span class="id" title="variable">g</span></a><a class="idref" href="mathcomp.algebra.matrix.html#9f6c421a139de435ca847198e46df8c0"><span class="id" title="notation">)^</span></a><a class="idref" href="mathcomp.algebra.matrix.html#9f6c421a139de435ca847198e46df8c0"><span class="id" title="notation">f</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#lin1_mx"><span class="id" title="definition">lin1_mx</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#gf"><span class="id" title="variable">gf</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="map_lin_mx"><span class="id" title="lemma">map_lin_mx</span></a> <span class="id" title="var">m1</span> <span class="id" title="var">n1</span> <span class="id" title="var">m2</span> <span class="id" title="var">n2</span> (<span class="id" title="var">g</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.matrix.html#m1"><span class="id" title="variable">m1</span></a><a class="idref" href="mathcomp.algebra.matrix.html#cb37620352ad6b90a047a361359e2f04"><span class="id" title="notation">,</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#n1"><span class="id" title="variable">n1</span></a><a class="idref" href="mathcomp.algebra.matrix.html#cb37620352ad6b90a047a361359e2f04"><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.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.matrix.html#m2"><span class="id" title="variable">m2</span></a><a class="idref" href="mathcomp.algebra.matrix.html#cb37620352ad6b90a047a361359e2f04"><span class="id" title="notation">,</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#n2"><span class="id" title="variable">n2</span></a><a class="idref" href="mathcomp.algebra.matrix.html#cb37620352ad6b90a047a361359e2f04"><span class="id" title="notation">)</span></a>) <span class="id" title="var">gf</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">A</span>, <a class="idref" href="mathcomp.algebra.matrix.html#9f6c421a139de435ca847198e46df8c0"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.matrix.html#g"><span class="id" title="variable">g</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#A"><span class="id" title="variable">A</span></a><a class="idref" href="mathcomp.algebra.matrix.html#9f6c421a139de435ca847198e46df8c0"><span class="id" title="notation">)^</span></a><a class="idref" href="mathcomp.algebra.matrix.html#9f6c421a139de435ca847198e46df8c0"><span class="id" title="notation">f</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#gf"><span class="id" title="variable">gf</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#A"><span class="id" title="variable">A</span></a><a class="idref" href="mathcomp.algebra.matrix.html#9f6c421a139de435ca847198e46df8c0"><span class="id" title="notation">^</span></a><a class="idref" href="mathcomp.algebra.matrix.html#9f6c421a139de435ca847198e46df8c0"><span class="id" title="notation">f</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#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.matrix.html#9f6c421a139de435ca847198e46df8c0"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.matrix.html#lin_mx"><span class="id" title="definition">lin_mx</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#g"><span class="id" title="variable">g</span></a><a class="idref" href="mathcomp.algebra.matrix.html#9f6c421a139de435ca847198e46df8c0"><span class="id" title="notation">)^</span></a><a class="idref" href="mathcomp.algebra.matrix.html#9f6c421a139de435ca847198e46df8c0"><span class="id" title="notation">f</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#lin_mx"><span class="id" title="definition">lin_mx</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#gf"><span class="id" title="variable">gf</span></a>.<br/> + +<br/> +<span class="id" title="keyword">End</span> <a class="idref" href="mathcomp.algebra.matrix.html#MapRingMatrix"><span class="id" title="section">MapRingMatrix</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Section</span> <a name="ComMatrix"><span class="id" title="section">ComMatrix</span></a>.<br/> +</div> + +<div class="doc"> + Lemmas for matrices with coefficients in a commutative ring +</div> +<div class="code"> +<span class="id" title="keyword">Variable</span> <a name="ComMatrix.R"><span class="id" title="variable">R</span></a> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ComRing.Exports.comRingType"><span class="id" title="abbreviation">comRingType</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Section</span> <a name="ComMatrix.AssocLeft"><span class="id" title="section">AssocLeft</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Variables</span> <a name="ComMatrix.AssocLeft.m"><span class="id" title="variable">m</span></a> <a name="ComMatrix.AssocLeft.n"><span class="id" title="variable">n</span></a> <a name="ComMatrix.AssocLeft.p"><span class="id" title="variable">p</span></a> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#nat"><span class="id" title="inductive">nat</span></a>.<br/> +<span class="id" title="keyword">Implicit</span> <span class="id" title="keyword">Type</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.matrix.html#ComMatrix.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.matrix.html#ComMatrix.AssocLeft.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.matrix.html#ComMatrix.AssocLeft.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">Implicit</span> <span class="id" title="keyword">Type</span> <span class="id" title="var">B</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.matrix.html#ComMatrix.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.matrix.html#ComMatrix.AssocLeft.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#ComMatrix.AssocLeft.p"><span class="id" title="variable">p</span></a><a class="idref" href="mathcomp.algebra.matrix.html#e36c289fb249221b43b9c978a67340fb"><span class="id" title="notation">)</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="trmx_mul"><span class="id" title="lemma">trmx_mul</span></a> <span class="id" title="var">A</span> <span class="id" title="var">B</span> : <a class="idref" href="mathcomp.algebra.matrix.html#0efdd62d084b88acb1b2860eed745d54"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.matrix.html#A"><span class="id" title="variable">A</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.matrix.html#B"><span class="id" title="variable">B</span></a><a class="idref" href="mathcomp.algebra.matrix.html#0efdd62d084b88acb1b2860eed745d54"><span class="id" title="notation">)^</span></a><a class="idref" href="mathcomp.algebra.matrix.html#0efdd62d084b88acb1b2860eed745d54"><span class="id" title="notation">T</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#B"><span class="id" title="variable">B</span></a><a class="idref" href="mathcomp.algebra.matrix.html#0efdd62d084b88acb1b2860eed745d54"><span class="id" title="notation">^</span></a><a class="idref" href="mathcomp.algebra.matrix.html#0efdd62d084b88acb1b2860eed745d54"><span class="id" title="notation">T</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.matrix.html#A"><span class="id" title="variable">A</span></a><a class="idref" href="mathcomp.algebra.matrix.html#0efdd62d084b88acb1b2860eed745d54"><span class="id" title="notation">^</span></a><a class="idref" href="mathcomp.algebra.matrix.html#0efdd62d084b88acb1b2860eed745d54"><span class="id" title="notation">T</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="scalemxAr"><span class="id" title="lemma">scalemxAr</span></a> <span class="id" title="var">a</span> <span class="id" title="var">A</span> <span class="id" title="var">B</span> : <a class="idref" href="mathcomp.algebra.matrix.html#a"><span class="id" title="variable">a</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#81f8078534dcbb7e13a32d292f766525"><span class="id" title="notation">*:</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#81f8078534dcbb7e13a32d292f766525"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.matrix.html#A"><span class="id" title="variable">A</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.matrix.html#B"><span class="id" title="variable">B</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.matrix.html#A"><span class="id" title="variable">A</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.matrix.html#9c6b777e699b0b93592b907e7450465e"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.matrix.html#a"><span class="id" title="variable">a</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#81f8078534dcbb7e13a32d292f766525"><span class="id" title="notation">*:</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#B"><span class="id" title="variable">B</span></a><a class="idref" href="mathcomp.algebra.matrix.html#9c6b777e699b0b93592b907e7450465e"><span class="id" title="notation">)</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="mulmx_is_scalable"><span class="id" title="lemma">mulmx_is_scalable</span></a> <span class="id" title="var">A</span> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Linear.Exports.scalable"><span class="id" title="abbreviation">scalable</span></a> (@<a class="idref" href="mathcomp.algebra.matrix.html#mulmx"><span class="id" title="definition">mulmx</span></a> <span class="id" title="var">_</span> <a class="idref" href="mathcomp.algebra.matrix.html#ComMatrix.AssocLeft.m"><span class="id" title="variable">m</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#ComMatrix.AssocLeft.n"><span class="id" title="variable">n</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#ComMatrix.AssocLeft.p"><span class="id" title="variable">p</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#A"><span class="id" title="variable">A</span></a>).<br/> + <span class="id" title="keyword">Canonical</span> <span class="id" title="var">mulmx_linear</span> <span class="id" title="var">A</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.matrix.html#mulmx_is_scalable"><span class="id" title="lemma">mulmx_is_scalable</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#A"><span class="id" title="variable">A</span></a>).<br/> + +<br/> +<span class="id" title="keyword">Definition</span> <a name="lin_mulmx"><span class="id" title="definition">lin_mulmx</span></a> <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.matrix.html#ComMatrix.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.matrix.html#ComMatrix.AssocLeft.n"><span class="id" title="variable">n</span></a> <a class="idref" href="mathcomp.ssreflect.ssrnat.html#697e4695610f677ae98a52af81f779d2"><span class="id" title="notation">×</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#ComMatrix.AssocLeft.p"><span class="id" title="variable">p</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#ComMatrix.AssocLeft.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.matrix.html#ComMatrix.AssocLeft.p"><span class="id" title="variable">p</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#lin_mx"><span class="id" title="definition">lin_mx</span></a> (<a class="idref" href="mathcomp.algebra.matrix.html#mulmx"><span class="id" title="definition">mulmx</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#A"><span class="id" title="variable">A</span></a>).<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="lin_mulmx_is_linear"><span class="id" title="lemma">lin_mulmx_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.matrix.html#lin_mulmx"><span class="id" title="definition">lin_mulmx</span></a>.<br/> +<span class="id" title="keyword">Canonical</span> <span class="id" title="var">lin_mulmx_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.matrix.html#lin_mulmx_is_linear"><span class="id" title="lemma">lin_mulmx_is_linear</span></a>.<br/> +<span class="id" title="keyword">Canonical</span> <span class="id" title="var">lin_mulmx_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.matrix.html#lin_mulmx_is_linear"><span class="id" title="lemma">lin_mulmx_is_linear</span></a>.<br/> + +<br/> +<span class="id" title="keyword">End</span> <a class="idref" href="mathcomp.algebra.matrix.html#ComMatrix.AssocLeft"><span class="id" title="section">AssocLeft</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Section</span> <a name="ComMatrix.LinMulRow"><span class="id" title="section">LinMulRow</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Variables</span> <a name="ComMatrix.LinMulRow.m"><span class="id" title="variable">m</span></a> <a name="ComMatrix.LinMulRow.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/> +<span class="id" title="keyword">Definition</span> <a name="lin_mul_row"><span class="id" title="definition">lin_mul_row</span></a> <span class="id" title="var">u</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.matrix.html#ComMatrix.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.matrix.html#ComMatrix.LinMulRow.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.matrix.html#ComMatrix.LinMulRow.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#ComMatrix.LinMulRow.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#lin1_mx"><span class="id" title="definition">lin1_mx</span></a> (<a class="idref" href="mathcomp.algebra.matrix.html#mulmx"><span class="id" title="definition">mulmx</span></a> <a class="idref" href="mathcomp.algebra.matrix.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#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#vec_mx"><span class="id" title="definition">vec_mx</span></a>).<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="lin_mul_row_is_linear"><span class="id" title="lemma">lin_mul_row_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.matrix.html#lin_mul_row"><span class="id" title="definition">lin_mul_row</span></a>.<br/> +<span class="id" title="keyword">Canonical</span> <span class="id" title="var">lin_mul_row_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.matrix.html#lin_mul_row_is_linear"><span class="id" title="lemma">lin_mul_row_is_linear</span></a>.<br/> +<span class="id" title="keyword">Canonical</span> <span class="id" title="var">lin_mul_row_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.matrix.html#lin_mul_row_is_linear"><span class="id" title="lemma">lin_mul_row_is_linear</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="mul_vec_lin_row"><span class="id" title="lemma">mul_vec_lin_row</span></a> <span class="id" title="var">A</span> <span class="id" title="var">u</span> : <a class="idref" href="mathcomp.algebra.matrix.html#mxvec"><span class="id" title="definition">mxvec</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#A"><span class="id" title="variable">A</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.matrix.html#lin_mul_row"><span class="id" title="definition">lin_mul_row</span></a> <a class="idref" href="mathcomp.algebra.matrix.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.matrix.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.matrix.html#A"><span class="id" title="variable">A</span></a>.<br/> + +<br/> +<span class="id" title="keyword">End</span> <a class="idref" href="mathcomp.algebra.matrix.html#ComMatrix.LinMulRow"><span class="id" title="section">LinMulRow</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="mxvec_dotmul"><span class="id" title="lemma">mxvec_dotmul</span></a> <span class="id" title="var">m</span> <span class="id" title="var">n</span> (<span class="id" title="var">A</span> : <a class="idref" href="mathcomp.algebra.matrix.html#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.matrix.html#ComMatrix.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.matrix.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.matrix.html#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>) <span class="id" title="var">u</span> <span class="id" title="var">v</span> :<br/> + <a class="idref" href="mathcomp.algebra.matrix.html#mxvec"><span class="id" title="definition">mxvec</span></a> (<a class="idref" href="mathcomp.algebra.matrix.html#u"><span class="id" title="variable">u</span></a><a class="idref" href="mathcomp.algebra.matrix.html#0efdd62d084b88acb1b2860eed745d54"><span class="id" title="notation">^</span></a><a class="idref" href="mathcomp.algebra.matrix.html#0efdd62d084b88acb1b2860eed745d54"><span class="id" title="notation">T</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.matrix.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.matrix.html#0efdd62d084b88acb1b2860eed745d54"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.matrix.html#mxvec"><span class="id" title="definition">mxvec</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#A"><span class="id" title="variable">A</span></a><a class="idref" href="mathcomp.algebra.matrix.html#0efdd62d084b88acb1b2860eed745d54"><span class="id" title="notation">)^</span></a><a class="idref" href="mathcomp.algebra.matrix.html#0efdd62d084b88acb1b2860eed745d54"><span class="id" title="notation">T</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.matrix.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.matrix.html#A"><span class="id" title="variable">A</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.matrix.html#v"><span class="id" title="variable">v</span></a><a class="idref" href="mathcomp.algebra.matrix.html#0efdd62d084b88acb1b2860eed745d54"><span class="id" title="notation">^</span></a><a class="idref" href="mathcomp.algebra.matrix.html#0efdd62d084b88acb1b2860eed745d54"><span class="id" title="notation">T</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Section</span> <a name="ComMatrix.MatrixAlgType"><span class="id" title="section">MatrixAlgType</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Variable</span> <a name="ComMatrix.MatrixAlgType.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/> +<span class="id" title="keyword">Canonical</span> <span class="id" title="var">matrix_algType</span> :=<br/> + <span class="id" title="keyword">Eval</span> <span class="id" title="tactic">hnf</span> <span class="id" title="tactic">in</span> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Algebra.Exports.AlgType"><span class="id" title="abbreviation">AlgType</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#ComMatrix.R"><span class="id" title="variable">R</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">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.matrix.html#ComMatrix.R"><span class="id" title="variable">R</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">_n</span></a> (<span class="id" title="keyword">fun</span> <span class="id" title="var">k</span> ⇒ <a class="idref" href="mathcomp.algebra.matrix.html#scalemxAr"><span class="id" title="lemma">scalemxAr</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#k"><span class="id" title="variable">k</span></a>).<br/> + +<br/> +<span class="id" title="keyword">End</span> <a class="idref" href="mathcomp.algebra.matrix.html#ComMatrix.MatrixAlgType"><span class="id" title="section">MatrixAlgType</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="diag_mxC"><span class="id" title="lemma">diag_mxC</span></a> <span class="id" title="var">n</span> (<span class="id" title="var">d</span> <span class="id" title="var">e</span> : <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.matrix.html#ComMatrix.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>) :<br/> + <a class="idref" href="mathcomp.algebra.matrix.html#diag_mx"><span class="id" title="definition">diag_mx</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#d"><span class="id" title="variable">d</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.matrix.html#diag_mx"><span class="id" title="definition">diag_mx</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#e"><span class="id" title="variable">e</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#diag_mx"><span class="id" title="definition">diag_mx</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#e"><span class="id" title="variable">e</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.matrix.html#diag_mx"><span class="id" title="definition">diag_mx</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#d"><span class="id" title="variable">d</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="diag_mx_comm"><span class="id" title="lemma">diag_mx_comm</span></a> <span class="id" title="var">n'</span> (<span class="id" title="var">d</span> <span class="id" title="var">e</span> : <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.matrix.html#ComMatrix.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="mathcomp.ssreflect.ssrnat.html#361454269931ea8643f7b402f2ab7222"><span class="id" title="notation">.+1</span></a>) : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.comm"><span class="id" title="definition">GRing.comm</span></a> (<a class="idref" href="mathcomp.algebra.matrix.html#diag_mx"><span class="id" title="definition">diag_mx</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#d"><span class="id" title="variable">d</span></a>) (<a class="idref" href="mathcomp.algebra.matrix.html#diag_mx"><span class="id" title="definition">diag_mx</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#e"><span class="id" title="variable">e</span></a>).<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="scalar_mxC"><span class="id" title="lemma">scalar_mxC</span></a> <span class="id" title="var">m</span> <span class="id" title="var">n</span> <span class="id" title="var">a</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.matrix.html#ComMatrix.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.matrix.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.matrix.html#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#A"><span class="id" title="variable">A</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.matrix.html#a"><span class="id" title="variable">a</span></a><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> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#a"><span class="id" title="variable">a</span></a><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> <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.matrix.html#A"><span class="id" title="variable">A</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="scalar_mx_comm"><span class="id" title="lemma">scalar_mx_comm</span></a> <span class="id" title="var">n'</span> <span class="id" title="var">a</span> (<span class="id" title="var">A</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.matrix.html#ComMatrix.R"><span class="id" title="variable">R</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">_n'</span></a><a class="idref" href="mathcomp.ssreflect.ssrnat.html#361454269931ea8643f7b402f2ab7222"><span class="id" title="notation">.+1</span></a>) : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.comm"><span class="id" title="definition">GRing.comm</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#A"><span class="id" title="variable">A</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#a"><span class="id" title="variable">a</span></a><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/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="mul_mx_scalar"><span class="id" title="lemma">mul_mx_scalar</span></a> <span class="id" title="var">m</span> <span class="id" title="var">n</span> <span class="id" title="var">a</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.matrix.html#ComMatrix.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.matrix.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.matrix.html#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#A"><span class="id" title="variable">A</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.matrix.html#a"><span class="id" title="variable">a</span></a><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> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#a"><span class="id" title="variable">a</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#81f8078534dcbb7e13a32d292f766525"><span class="id" title="notation">*:</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#A"><span class="id" title="variable">A</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="mxtrace_mulC"><span class="id" title="lemma">mxtrace_mulC</span></a> <span class="id" title="var">m</span> <span class="id" title="var">n</span> (<span class="id" title="var">A</span> : <a class="idref" href="mathcomp.algebra.matrix.html#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.matrix.html#ComMatrix.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.matrix.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.matrix.html#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>) <span class="id" title="var">B</span> :<br/> + <a class="idref" href="mathcomp.algebra.matrix.html#9e9debb16249584408eaef095f6716eb"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.algebra.matrix.html#9e9debb16249584408eaef095f6716eb"><span class="id" title="notation">tr</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#9e9debb16249584408eaef095f6716eb"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.matrix.html#A"><span class="id" title="variable">A</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.matrix.html#B"><span class="id" title="variable">B</span></a><a class="idref" href="mathcomp.algebra.matrix.html#9e9debb16249584408eaef095f6716eb"><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.matrix.html#9e9debb16249584408eaef095f6716eb"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.algebra.matrix.html#9e9debb16249584408eaef095f6716eb"><span class="id" title="notation">tr</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#9e9debb16249584408eaef095f6716eb"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.matrix.html#B"><span class="id" title="variable">B</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.matrix.html#A"><span class="id" title="variable">A</span></a><a class="idref" href="mathcomp.algebra.matrix.html#9e9debb16249584408eaef095f6716eb"><span class="id" title="notation">)</span></a>.<br/> + +<br/> +</div> + +<div class="doc"> + The theory of determinants +</div> +<div class="code"> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="determinant_multilinear"><span class="id" title="lemma">determinant_multilinear</span></a> <span class="id" title="var">n</span> (<span class="id" title="var">A</span> <span class="id" title="var">B</span> <span class="id" title="var">C</span> : <a class="idref" href="mathcomp.algebra.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.matrix.html#ComMatrix.R"><span class="id" title="variable">R</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">_n</span></a>) <span class="id" title="var">i0</span> <span class="id" title="var">b</span> <span class="id" title="var">c</span> :<br/> + <a class="idref" href="mathcomp.algebra.matrix.html#row"><span class="id" title="definition">row</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#i0"><span class="id" title="variable">i0</span></a> <a class="idref" href="mathcomp.algebra.matrix.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.matrix.html#b"><span class="id" title="variable">b</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#81f8078534dcbb7e13a32d292f766525"><span class="id" title="notation">*:</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.matrix.html#i0"><span class="id" title="variable">i0</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#B"><span class="id" title="variable">B</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#ae4d81913e6239182a9ac7467ffde8cd"><span class="id" title="notation">+</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#c"><span class="id" title="variable">c</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#81f8078534dcbb7e13a32d292f766525"><span class="id" title="notation">*:</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.matrix.html#i0"><span class="id" title="variable">i0</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#C"><span class="id" title="variable">C</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a><br/> + <a class="idref" href="mathcomp.algebra.matrix.html#row'"><span class="id" title="definition">row'</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#i0"><span class="id" title="variable">i0</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#B"><span class="id" title="variable">B</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#row'"><span class="id" title="definition">row'</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#i0"><span class="id" title="variable">i0</span></a> <a class="idref" href="mathcomp.algebra.matrix.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#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a><br/> + <a class="idref" href="mathcomp.algebra.matrix.html#row'"><span class="id" title="definition">row'</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#i0"><span class="id" title="variable">i0</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#C"><span class="id" title="variable">C</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</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.matrix.html#i0"><span class="id" title="variable">i0</span></a> <a class="idref" href="mathcomp.algebra.matrix.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#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a><br/> + <a class="idref" href="mathcomp.algebra.matrix.html#eb4ffa5ff7cedec9d00c8af444fb9631"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.algebra.matrix.html#eb4ffa5ff7cedec9d00c8af444fb9631"><span class="id" title="notation">det</span></a> <a class="idref" href="mathcomp.algebra.matrix.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.matrix.html#b"><span class="id" title="variable">b</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#22058a36a53dac65c94ca403bc62650a"><span class="id" title="notation">×</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#eb4ffa5ff7cedec9d00c8af444fb9631"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.algebra.matrix.html#eb4ffa5ff7cedec9d00c8af444fb9631"><span class="id" title="notation">det</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#B"><span class="id" title="variable">B</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#ae4d81913e6239182a9ac7467ffde8cd"><span class="id" title="notation">+</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#c"><span class="id" title="variable">c</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#22058a36a53dac65c94ca403bc62650a"><span class="id" title="notation">×</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#eb4ffa5ff7cedec9d00c8af444fb9631"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.algebra.matrix.html#eb4ffa5ff7cedec9d00c8af444fb9631"><span class="id" title="notation">det</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#C"><span class="id" title="variable">C</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="determinant_alternate"><span class="id" title="lemma">determinant_alternate</span></a> <span class="id" title="var">n</span> (<span class="id" title="var">A</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.matrix.html#ComMatrix.R"><span class="id" title="variable">R</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">_n</span></a>) <span class="id" title="var">i1</span> <span class="id" title="var">i2</span> :<br/> + <a class="idref" href="mathcomp.algebra.matrix.html#i1"><span class="id" title="variable">i1</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#b1eeadc2feabc7422252baa895418c7b"><span class="id" title="notation">!=</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#i2"><span class="id" title="variable">i2</span></a> <a class="idref" href="http://coq.inria.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#A"><span class="id" title="variable">A</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#i1"><span class="id" title="variable">i1</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.matrix.html#A"><span class="id" title="variable">A</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#i2"><span class="id" title="variable">i2</span></a> <a class="idref" href="http://coq.inria.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#eb4ffa5ff7cedec9d00c8af444fb9631"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.algebra.matrix.html#eb4ffa5ff7cedec9d00c8af444fb9631"><span class="id" title="notation">det</span></a> <a class="idref" href="mathcomp.algebra.matrix.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> 0.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="det_tr"><span class="id" title="lemma">det_tr</span></a> <span class="id" title="var">n</span> (<span class="id" title="var">A</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.matrix.html#ComMatrix.R"><span class="id" title="variable">R</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">_n</span></a>) : <a class="idref" href="mathcomp.algebra.matrix.html#eb4ffa5ff7cedec9d00c8af444fb9631"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.algebra.matrix.html#eb4ffa5ff7cedec9d00c8af444fb9631"><span class="id" title="notation">det</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#A"><span class="id" title="variable">A</span></a><a class="idref" href="mathcomp.algebra.matrix.html#0efdd62d084b88acb1b2860eed745d54"><span class="id" title="notation">^</span></a><a class="idref" href="mathcomp.algebra.matrix.html#0efdd62d084b88acb1b2860eed745d54"><span class="id" title="notation">T</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#eb4ffa5ff7cedec9d00c8af444fb9631"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.algebra.matrix.html#eb4ffa5ff7cedec9d00c8af444fb9631"><span class="id" title="notation">det</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#A"><span class="id" title="variable">A</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="det_perm"><span class="id" title="lemma">det_perm</span></a> <span class="id" title="var">n</span> (<span class="id" title="var">s</span> : <a class="idref" href="mathcomp.fingroup.perm.html#ea6fcc91866185ddfad466ada7c10b27"><span class="id" title="notation">'</span></a><a class="idref" href="mathcomp.fingroup.perm.html#ea6fcc91866185ddfad466ada7c10b27"><span class="id" title="notation">S_n</span></a>) : <a class="idref" href="mathcomp.algebra.matrix.html#eb4ffa5ff7cedec9d00c8af444fb9631"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.algebra.matrix.html#eb4ffa5ff7cedec9d00c8af444fb9631"><span class="id" title="notation">det</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#eb4ffa5ff7cedec9d00c8af444fb9631"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.matrix.html#perm_mx"><span class="id" title="definition">perm_mx</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#s"><span class="id" title="variable">s</span></a><a class="idref" href="mathcomp.algebra.matrix.html#eb4ffa5ff7cedec9d00c8af444fb9631"><span class="id" title="notation">)</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#8f9364556521ebb498093f28eea2240f"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#fb22424322c3d7eb9b837dfca65ce21e"><span class="id" title="notation">(</span></a>-1<a class="idref" href="mathcomp.algebra.ssralg.html#fb22424322c3d7eb9b837dfca65ce21e"><span class="id" title="notation">)</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#fb22424322c3d7eb9b837dfca65ce21e"><span class="id" title="notation">^+</span></a> <a class="idref" href="mathcomp.algebra.matrix.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.matrix.html#ComMatrix.R"><span class="id" title="variable">R</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="det1"><span class="id" title="lemma">det1</span></a> <span class="id" title="var">n</span> : <a class="idref" href="mathcomp.algebra.matrix.html#eb4ffa5ff7cedec9d00c8af444fb9631"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.algebra.matrix.html#eb4ffa5ff7cedec9d00c8af444fb9631"><span class="id" title="notation">det</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#eb4ffa5ff7cedec9d00c8af444fb9631"><span class="id" title="notation">(</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> <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.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.matrix.html#ComMatrix.R"><span class="id" title="variable">R</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">_n</span></a><a class="idref" href="mathcomp.algebra.matrix.html#eb4ffa5ff7cedec9d00c8af444fb9631"><span class="id" title="notation">)</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> 1.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="det_mx00"><span class="id" title="lemma">det_mx00</span></a> (<span class="id" title="var">A</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.matrix.html#ComMatrix.R"><span class="id" title="variable">R</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">_0</span></a>) : <a class="idref" href="mathcomp.algebra.matrix.html#eb4ffa5ff7cedec9d00c8af444fb9631"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.algebra.matrix.html#eb4ffa5ff7cedec9d00c8af444fb9631"><span class="id" title="notation">det</span></a> <a class="idref" href="mathcomp.algebra.matrix.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> 1.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="detZ"><span class="id" title="lemma">detZ</span></a> <span class="id" title="var">n</span> <span class="id" title="var">a</span> (<span class="id" title="var">A</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.matrix.html#ComMatrix.R"><span class="id" title="variable">R</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">_n</span></a>) : <a class="idref" href="mathcomp.algebra.matrix.html#eb4ffa5ff7cedec9d00c8af444fb9631"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.algebra.matrix.html#eb4ffa5ff7cedec9d00c8af444fb9631"><span class="id" title="notation">det</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#eb4ffa5ff7cedec9d00c8af444fb9631"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.matrix.html#a"><span class="id" title="variable">a</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#81f8078534dcbb7e13a32d292f766525"><span class="id" title="notation">*:</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#A"><span class="id" title="variable">A</span></a><a class="idref" href="mathcomp.algebra.matrix.html#eb4ffa5ff7cedec9d00c8af444fb9631"><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.matrix.html#a"><span class="id" title="variable">a</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#fb22424322c3d7eb9b837dfca65ce21e"><span class="id" title="notation">^+</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#n"><span class="id" title="variable">n</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#22058a36a53dac65c94ca403bc62650a"><span class="id" title="notation">×</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#eb4ffa5ff7cedec9d00c8af444fb9631"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.algebra.matrix.html#eb4ffa5ff7cedec9d00c8af444fb9631"><span class="id" title="notation">det</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#A"><span class="id" title="variable">A</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="det0"><span class="id" title="lemma">det0</span></a> <span class="id" title="var">n'</span> : <a class="idref" href="mathcomp.algebra.matrix.html#eb4ffa5ff7cedec9d00c8af444fb9631"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.algebra.matrix.html#eb4ffa5ff7cedec9d00c8af444fb9631"><span class="id" title="notation">det</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#eb4ffa5ff7cedec9d00c8af444fb9631"><span class="id" title="notation">(</span></a>0 <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssreflect.html#4509b22bf26e3d6d771897e22bd8bc8f"><span class="id" title="notation">:</span></a> <a class="idref" href="mathcomp.algebra.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.matrix.html#ComMatrix.R"><span class="id" title="variable">R</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">_n'</span></a><a class="idref" href="mathcomp.ssreflect.ssrnat.html#361454269931ea8643f7b402f2ab7222"><span class="id" title="notation">.+1</span></a><a class="idref" href="mathcomp.algebra.matrix.html#eb4ffa5ff7cedec9d00c8af444fb9631"><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.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="det_scalar"><span class="id" title="lemma">det_scalar</span></a> <span class="id" title="var">n</span> <span class="id" title="var">a</span> : <a class="idref" href="mathcomp.algebra.matrix.html#eb4ffa5ff7cedec9d00c8af444fb9631"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.algebra.matrix.html#eb4ffa5ff7cedec9d00c8af444fb9631"><span class="id" title="notation">det</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#eb4ffa5ff7cedec9d00c8af444fb9631"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.matrix.html#a"><span class="id" title="variable">a</span></a><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> <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.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.matrix.html#ComMatrix.R"><span class="id" title="variable">R</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">_n</span></a><a class="idref" href="mathcomp.algebra.matrix.html#eb4ffa5ff7cedec9d00c8af444fb9631"><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.matrix.html#a"><span class="id" title="variable">a</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#fb22424322c3d7eb9b837dfca65ce21e"><span class="id" title="notation">^+</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#n"><span class="id" title="variable">n</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="det_scalar1"><span class="id" title="lemma">det_scalar1</span></a> <span class="id" title="var">a</span> : <a class="idref" href="mathcomp.algebra.matrix.html#eb4ffa5ff7cedec9d00c8af444fb9631"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.algebra.matrix.html#eb4ffa5ff7cedec9d00c8af444fb9631"><span class="id" title="notation">det</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#eb4ffa5ff7cedec9d00c8af444fb9631"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.matrix.html#a"><span class="id" title="variable">a</span></a><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> <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.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.matrix.html#ComMatrix.R"><span class="id" title="variable">R</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">_1</span></a><a class="idref" href="mathcomp.algebra.matrix.html#eb4ffa5ff7cedec9d00c8af444fb9631"><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.matrix.html#a"><span class="id" title="variable">a</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="det_mulmx"><span class="id" title="lemma">det_mulmx</span></a> <span class="id" title="var">n</span> (<span class="id" title="var">A</span> <span class="id" title="var">B</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.matrix.html#ComMatrix.R"><span class="id" title="variable">R</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">_n</span></a>) : <a class="idref" href="mathcomp.algebra.matrix.html#eb4ffa5ff7cedec9d00c8af444fb9631"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.algebra.matrix.html#eb4ffa5ff7cedec9d00c8af444fb9631"><span class="id" title="notation">det</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#eb4ffa5ff7cedec9d00c8af444fb9631"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.matrix.html#A"><span class="id" title="variable">A</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.matrix.html#B"><span class="id" title="variable">B</span></a><a class="idref" href="mathcomp.algebra.matrix.html#eb4ffa5ff7cedec9d00c8af444fb9631"><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.matrix.html#eb4ffa5ff7cedec9d00c8af444fb9631"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.algebra.matrix.html#eb4ffa5ff7cedec9d00c8af444fb9631"><span class="id" title="notation">det</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#A"><span class="id" title="variable">A</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#22058a36a53dac65c94ca403bc62650a"><span class="id" title="notation">×</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#eb4ffa5ff7cedec9d00c8af444fb9631"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.algebra.matrix.html#eb4ffa5ff7cedec9d00c8af444fb9631"><span class="id" title="notation">det</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#B"><span class="id" title="variable">B</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="detM"><span class="id" title="lemma">detM</span></a> <span class="id" title="var">n'</span> (<span class="id" title="var">A</span> <span class="id" title="var">B</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.matrix.html#ComMatrix.R"><span class="id" title="variable">R</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">_n'</span></a><a class="idref" href="mathcomp.ssreflect.ssrnat.html#361454269931ea8643f7b402f2ab7222"><span class="id" title="notation">.+1</span></a>) : <a class="idref" href="mathcomp.algebra.matrix.html#eb4ffa5ff7cedec9d00c8af444fb9631"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.algebra.matrix.html#eb4ffa5ff7cedec9d00c8af444fb9631"><span class="id" title="notation">det</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#eb4ffa5ff7cedec9d00c8af444fb9631"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.matrix.html#A"><span class="id" title="variable">A</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#22058a36a53dac65c94ca403bc62650a"><span class="id" title="notation">×</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#B"><span class="id" title="variable">B</span></a><a class="idref" href="mathcomp.algebra.matrix.html#eb4ffa5ff7cedec9d00c8af444fb9631"><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.matrix.html#eb4ffa5ff7cedec9d00c8af444fb9631"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.algebra.matrix.html#eb4ffa5ff7cedec9d00c8af444fb9631"><span class="id" title="notation">det</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#A"><span class="id" title="variable">A</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#22058a36a53dac65c94ca403bc62650a"><span class="id" title="notation">×</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#eb4ffa5ff7cedec9d00c8af444fb9631"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.algebra.matrix.html#eb4ffa5ff7cedec9d00c8af444fb9631"><span class="id" title="notation">det</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#B"><span class="id" title="variable">B</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="det_diag"><span class="id" title="lemma">det_diag</span></a> <span class="id" title="var">n</span> (<span class="id" title="var">d</span> : <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.matrix.html#ComMatrix.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="mathcomp.algebra.matrix.html#eb4ffa5ff7cedec9d00c8af444fb9631"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.algebra.matrix.html#eb4ffa5ff7cedec9d00c8af444fb9631"><span class="id" title="notation">det</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#eb4ffa5ff7cedec9d00c8af444fb9631"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.matrix.html#diag_mx"><span class="id" title="definition">diag_mx</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#d"><span class="id" title="variable">d</span></a><a class="idref" href="mathcomp.algebra.matrix.html#eb4ffa5ff7cedec9d00c8af444fb9631"><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#24846b5795605f82696a43aa191874ea"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#24846b5795605f82696a43aa191874ea"><span class="id" title="notation">prod_i</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#d"><span class="id" title="variable">d</span></a> 0 <a class="idref" href="mathcomp.algebra.matrix.html#i"><span class="id" title="variable">i</span></a>.<br/> + +<br/> +</div> + +<div class="doc"> + Laplace expansion lemma +</div> +<div class="code"> +<span class="id" title="keyword">Lemma</span> <a name="expand_cofactor"><span class="id" title="lemma">expand_cofactor</span></a> <span class="id" title="var">n</span> (<span class="id" title="var">A</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.matrix.html#ComMatrix.R"><span class="id" title="variable">R</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">_n</span></a>) <span class="id" title="var">i</span> <span class="id" title="var">j</span> :<br/> + <a class="idref" href="mathcomp.algebra.matrix.html#cofactor"><span class="id" title="definition">cofactor</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#A"><span class="id" title="variable">A</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#i"><span class="id" title="variable">i</span></a> <a class="idref" href="mathcomp.algebra.matrix.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.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a><br/> + <a class="idref" href="mathcomp.algebra.ssralg.html#82bcdd77f5db558bfca23caa38ed195a"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#82bcdd77f5db558bfca23caa38ed195a"><span class="id" title="notation">sum_</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#82bcdd77f5db558bfca23caa38ed195a"><span class="id" title="notation">(</span></a><span class="id" title="var">s</span> <a class="idref" href="mathcomp.algebra.ssralg.html#82bcdd77f5db558bfca23caa38ed195a"><span class="id" title="notation">:</span></a> <a class="idref" href="mathcomp.fingroup.perm.html#ea6fcc91866185ddfad466ada7c10b27"><span class="id" title="notation">'</span></a><a class="idref" href="mathcomp.fingroup.perm.html#ea6fcc91866185ddfad466ada7c10b27"><span class="id" title="notation">S_n</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#82bcdd77f5db558bfca23caa38ed195a"><span class="id" title="notation">|</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#s"><span class="id" title="variable">s</span></a> <a class="idref" href="mathcomp.algebra.matrix.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.matrix.html#j"><span class="id" title="variable">j</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#82bcdd77f5db558bfca23caa38ed195a"><span class="id" title="notation">)</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#fb22424322c3d7eb9b837dfca65ce21e"><span class="id" title="notation">(</span></a>-1<a class="idref" href="mathcomp.algebra.ssralg.html#fb22424322c3d7eb9b837dfca65ce21e"><span class="id" title="notation">)</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#fb22424322c3d7eb9b837dfca65ce21e"><span class="id" title="notation">^+</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#s"><span class="id" title="variable">s</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#22058a36a53dac65c94ca403bc62650a"><span class="id" title="notation">×</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#b29cd8e479370273da36336a1ca6eca7"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#b29cd8e479370273da36336a1ca6eca7"><span class="id" title="notation">prod_</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#b29cd8e479370273da36336a1ca6eca7"><span class="id" title="notation">(</span></a><span class="id" title="var">k</span> <a class="idref" href="mathcomp.algebra.ssralg.html#b29cd8e479370273da36336a1ca6eca7"><span class="id" title="notation">|</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#i"><span class="id" title="variable">i</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#b1eeadc2feabc7422252baa895418c7b"><span class="id" title="notation">!=</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#k"><span class="id" title="variable">k</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#b29cd8e479370273da36336a1ca6eca7"><span class="id" title="notation">)</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#A"><span class="id" title="variable">A</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#k"><span class="id" title="variable">k</span></a> (<a class="idref" href="mathcomp.algebra.matrix.html#s"><span class="id" title="variable">s</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#k"><span class="id" title="variable">k</span></a>).<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="expand_det_row"><span class="id" title="lemma">expand_det_row</span></a> <span class="id" title="var">n</span> (<span class="id" title="var">A</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.matrix.html#ComMatrix.R"><span class="id" title="variable">R</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">_n</span></a>) <span class="id" title="var">i0</span> :<br/> + <a class="idref" href="mathcomp.algebra.matrix.html#eb4ffa5ff7cedec9d00c8af444fb9631"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.algebra.matrix.html#eb4ffa5ff7cedec9d00c8af444fb9631"><span class="id" title="notation">det</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#A"><span class="id" title="variable">A</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#640778742e86daa97d31c9911c679af3"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#640778742e86daa97d31c9911c679af3"><span class="id" title="notation">sum_j</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#A"><span class="id" title="variable">A</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#i0"><span class="id" title="variable">i0</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#j"><span class="id" title="variable">j</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#22058a36a53dac65c94ca403bc62650a"><span class="id" title="notation">×</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#cofactor"><span class="id" title="definition">cofactor</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#A"><span class="id" title="variable">A</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#i0"><span class="id" title="variable">i0</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#j"><span class="id" title="variable">j</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="cofactor_tr"><span class="id" title="lemma">cofactor_tr</span></a> <span class="id" title="var">n</span> (<span class="id" title="var">A</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.matrix.html#ComMatrix.R"><span class="id" title="variable">R</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">_n</span></a>) <span class="id" title="var">i</span> <span class="id" title="var">j</span> : <a class="idref" href="mathcomp.algebra.matrix.html#cofactor"><span class="id" title="definition">cofactor</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#A"><span class="id" title="variable">A</span></a><a class="idref" href="mathcomp.algebra.matrix.html#0efdd62d084b88acb1b2860eed745d54"><span class="id" title="notation">^</span></a><a class="idref" href="mathcomp.algebra.matrix.html#0efdd62d084b88acb1b2860eed745d54"><span class="id" title="notation">T</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#i"><span class="id" title="variable">i</span></a> <a class="idref" href="mathcomp.algebra.matrix.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.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#cofactor"><span class="id" title="definition">cofactor</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#A"><span class="id" title="variable">A</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#j"><span class="id" title="variable">j</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#i"><span class="id" title="variable">i</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="cofactorZ"><span class="id" title="lemma">cofactorZ</span></a> <span class="id" title="var">n</span> <span class="id" title="var">a</span> (<span class="id" title="var">A</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.matrix.html#ComMatrix.R"><span class="id" title="variable">R</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">_n</span></a>) <span class="id" title="var">i</span> <span class="id" title="var">j</span> : <br/> + <a class="idref" href="mathcomp.algebra.matrix.html#cofactor"><span class="id" title="definition">cofactor</span></a> (<a class="idref" href="mathcomp.algebra.matrix.html#a"><span class="id" title="variable">a</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#81f8078534dcbb7e13a32d292f766525"><span class="id" title="notation">*:</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#A"><span class="id" title="variable">A</span></a>) <a class="idref" href="mathcomp.algebra.matrix.html#i"><span class="id" title="variable">i</span></a> <a class="idref" href="mathcomp.algebra.matrix.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.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#a"><span class="id" title="variable">a</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#fb22424322c3d7eb9b837dfca65ce21e"><span class="id" title="notation">^+</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#n"><span class="id" title="variable">n</span></a><a class="idref" href="mathcomp.ssreflect.ssrnat.html#1d63841e595f2805afd872744cbb1cce"><span class="id" title="notation">.-1</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#22058a36a53dac65c94ca403bc62650a"><span class="id" title="notation">×</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#cofactor"><span class="id" title="definition">cofactor</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#A"><span class="id" title="variable">A</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#i"><span class="id" title="variable">i</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#j"><span class="id" title="variable">j</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="expand_det_col"><span class="id" title="lemma">expand_det_col</span></a> <span class="id" title="var">n</span> (<span class="id" title="var">A</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.matrix.html#ComMatrix.R"><span class="id" title="variable">R</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">_n</span></a>) <span class="id" title="var">j0</span> :<br/> + <a class="idref" href="mathcomp.algebra.matrix.html#eb4ffa5ff7cedec9d00c8af444fb9631"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.algebra.matrix.html#eb4ffa5ff7cedec9d00c8af444fb9631"><span class="id" title="notation">det</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#A"><span class="id" title="variable">A</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#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.ssralg.html#640778742e86daa97d31c9911c679af3"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.matrix.html#A"><span class="id" title="variable">A</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#i"><span class="id" title="variable">i</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#j0"><span class="id" title="variable">j0</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#22058a36a53dac65c94ca403bc62650a"><span class="id" title="notation">×</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#cofactor"><span class="id" title="definition">cofactor</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#A"><span class="id" title="variable">A</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#i"><span class="id" title="variable">i</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#j0"><span class="id" title="variable">j0</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#640778742e86daa97d31c9911c679af3"><span class="id" title="notation">)</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="trmx_adj"><span class="id" title="lemma">trmx_adj</span></a> <span class="id" title="var">n</span> (<span class="id" title="var">A</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.matrix.html#ComMatrix.R"><span class="id" title="variable">R</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">_n</span></a>) : <a class="idref" href="mathcomp.algebra.matrix.html#0efdd62d084b88acb1b2860eed745d54"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.matrix.html#200993d97f5688db8592e178c042bf0a"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.algebra.matrix.html#200993d97f5688db8592e178c042bf0a"><span class="id" title="notation">adj</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#A"><span class="id" title="variable">A</span></a><a class="idref" href="mathcomp.algebra.matrix.html#0efdd62d084b88acb1b2860eed745d54"><span class="id" title="notation">)^</span></a><a class="idref" href="mathcomp.algebra.matrix.html#0efdd62d084b88acb1b2860eed745d54"><span class="id" title="notation">T</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#200993d97f5688db8592e178c042bf0a"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.algebra.matrix.html#200993d97f5688db8592e178c042bf0a"><span class="id" title="notation">adj</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#A"><span class="id" title="variable">A</span></a><a class="idref" href="mathcomp.algebra.matrix.html#0efdd62d084b88acb1b2860eed745d54"><span class="id" title="notation">^</span></a><a class="idref" href="mathcomp.algebra.matrix.html#0efdd62d084b88acb1b2860eed745d54"><span class="id" title="notation">T</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="adjZ"><span class="id" title="lemma">adjZ</span></a> <span class="id" title="var">n</span> <span class="id" title="var">a</span> (<span class="id" title="var">A</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.matrix.html#ComMatrix.R"><span class="id" title="variable">R</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">_n</span></a>) : <a class="idref" href="mathcomp.algebra.matrix.html#200993d97f5688db8592e178c042bf0a"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.algebra.matrix.html#200993d97f5688db8592e178c042bf0a"><span class="id" title="notation">adj</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#200993d97f5688db8592e178c042bf0a"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.matrix.html#a"><span class="id" title="variable">a</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#81f8078534dcbb7e13a32d292f766525"><span class="id" title="notation">*:</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#A"><span class="id" title="variable">A</span></a><a class="idref" href="mathcomp.algebra.matrix.html#200993d97f5688db8592e178c042bf0a"><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.matrix.html#a"><span class="id" title="variable">a</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#fb22424322c3d7eb9b837dfca65ce21e"><span class="id" title="notation">^+</span></a><a class="idref" href="mathcomp.algebra.matrix.html#n"><span class="id" title="variable">n</span></a><a class="idref" href="mathcomp.ssreflect.ssrnat.html#1d63841e595f2805afd872744cbb1cce"><span class="id" title="notation">.-1</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#81f8078534dcbb7e13a32d292f766525"><span class="id" title="notation">*:</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#200993d97f5688db8592e178c042bf0a"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.algebra.matrix.html#200993d97f5688db8592e178c042bf0a"><span class="id" title="notation">adj</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#A"><span class="id" title="variable">A</span></a>.<br/> + +<br/> +</div> + +<div class="doc"> + Cramer Rule : adjugate on the left +</div> +<div class="code"> +<span class="id" title="keyword">Lemma</span> <a name="mul_mx_adj"><span class="id" title="lemma">mul_mx_adj</span></a> <span class="id" title="var">n</span> (<span class="id" title="var">A</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.matrix.html#ComMatrix.R"><span class="id" title="variable">R</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">_n</span></a>) : <a class="idref" href="mathcomp.algebra.matrix.html#A"><span class="id" title="variable">A</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.matrix.html#200993d97f5688db8592e178c042bf0a"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.algebra.matrix.html#200993d97f5688db8592e178c042bf0a"><span class="id" title="notation">adj</span></a> <a class="idref" href="mathcomp.algebra.matrix.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.matrix.html#6bc5aad53caab585f4bb088e10501342"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.matrix.html#eb4ffa5ff7cedec9d00c8af444fb9631"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.algebra.matrix.html#eb4ffa5ff7cedec9d00c8af444fb9631"><span class="id" title="notation">det</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#A"><span class="id" title="variable">A</span></a><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/> + +<br/> +</div> + +<div class="doc"> + Cramer rule : adjugate on the right +</div> +<div class="code"> +<span class="id" title="keyword">Lemma</span> <a name="mul_adj_mx"><span class="id" title="lemma">mul_adj_mx</span></a> <span class="id" title="var">n</span> (<span class="id" title="var">A</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.matrix.html#ComMatrix.R"><span class="id" title="variable">R</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">_n</span></a>) : <a class="idref" href="mathcomp.algebra.matrix.html#200993d97f5688db8592e178c042bf0a"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.algebra.matrix.html#200993d97f5688db8592e178c042bf0a"><span class="id" title="notation">adj</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#A"><span class="id" title="variable">A</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.matrix.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.matrix.html#6bc5aad53caab585f4bb088e10501342"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.matrix.html#eb4ffa5ff7cedec9d00c8af444fb9631"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.algebra.matrix.html#eb4ffa5ff7cedec9d00c8af444fb9631"><span class="id" title="notation">det</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#A"><span class="id" title="variable">A</span></a><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/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="adj1"><span class="id" title="lemma">adj1</span></a> <span class="id" title="var">n</span> : <a class="idref" href="mathcomp.algebra.matrix.html#200993d97f5688db8592e178c042bf0a"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.algebra.matrix.html#200993d97f5688db8592e178c042bf0a"><span class="id" title="notation">adj</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#200993d97f5688db8592e178c042bf0a"><span class="id" title="notation">(</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><a class="idref" href="mathcomp.algebra.matrix.html#200993d97f5688db8592e178c042bf0a"><span class="id" title="notation">)</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#8f9364556521ebb498093f28eea2240f"><span class="id" title="notation">=</span></a> 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> <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.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.matrix.html#ComMatrix.R"><span class="id" title="variable">R</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">_n</span></a>.<br/> + +<br/> +</div> + +<div class="doc"> + Left inverses are right inverses. +</div> +<div class="code"> +<span class="id" title="keyword">Lemma</span> <a name="mulmx1C"><span class="id" title="lemma">mulmx1C</span></a> <span class="id" title="var">n</span> (<span class="id" title="var">A</span> <span class="id" title="var">B</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.matrix.html#ComMatrix.R"><span class="id" title="variable">R</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">_n</span></a>) : <a class="idref" href="mathcomp.algebra.matrix.html#A"><span class="id" title="variable">A</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.matrix.html#B"><span class="id" title="variable">B</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> 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> <a class="idref" href="http://coq.inria.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#B"><span class="id" title="variable">B</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.matrix.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> 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/> + +<br/> +</div> + +<div class="doc"> + Only tall matrices have inverses. +</div> +<div class="code"> +<span class="id" title="keyword">Lemma</span> <a name="mulmx1_min"><span class="id" title="lemma">mulmx1_min</span></a> <span class="id" title="var">m</span> <span class="id" title="var">n</span> (<span class="id" title="var">A</span> : <a class="idref" href="mathcomp.algebra.matrix.html#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.matrix.html#ComMatrix.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.matrix.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.matrix.html#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>) <span class="id" title="var">B</span> : <a class="idref" href="mathcomp.algebra.matrix.html#A"><span class="id" title="variable">A</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.matrix.html#B"><span class="id" title="variable">B</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> 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> <a class="idref" href="http://coq.inria.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#m"><span class="id" title="variable">m</span></a> <a class="idref" href="mathcomp.ssreflect.ssrnat.html#9b077c369e19739ef880736ba34623ff"><span class="id" title="notation">≤</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#n"><span class="id" title="variable">n</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="det_ublock"><span class="id" title="lemma">det_ublock</span></a> <span class="id" title="var">n1</span> <span class="id" title="var">n2</span> <span class="id" title="var">Aul</span> (<span class="id" title="var">Aur</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.matrix.html#ComMatrix.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.matrix.html#n1"><span class="id" title="variable">n1</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#n2"><span class="id" title="variable">n2</span></a><a class="idref" href="mathcomp.algebra.matrix.html#e36c289fb249221b43b9c978a67340fb"><span class="id" title="notation">)</span></a>) <span class="id" title="var">Adr</span> :<br/> + <a class="idref" href="mathcomp.algebra.matrix.html#eb4ffa5ff7cedec9d00c8af444fb9631"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.algebra.matrix.html#eb4ffa5ff7cedec9d00c8af444fb9631"><span class="id" title="notation">det</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#eb4ffa5ff7cedec9d00c8af444fb9631"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.matrix.html#block_mx"><span class="id" title="definition">block_mx</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#Aul"><span class="id" title="variable">Aul</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#Aur"><span class="id" title="variable">Aur</span></a> 0 <a class="idref" href="mathcomp.algebra.matrix.html#Adr"><span class="id" title="variable">Adr</span></a><a class="idref" href="mathcomp.algebra.matrix.html#eb4ffa5ff7cedec9d00c8af444fb9631"><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.matrix.html#eb4ffa5ff7cedec9d00c8af444fb9631"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.algebra.matrix.html#eb4ffa5ff7cedec9d00c8af444fb9631"><span class="id" title="notation">det</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#Aul"><span class="id" title="variable">Aul</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#22058a36a53dac65c94ca403bc62650a"><span class="id" title="notation">×</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#eb4ffa5ff7cedec9d00c8af444fb9631"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.algebra.matrix.html#eb4ffa5ff7cedec9d00c8af444fb9631"><span class="id" title="notation">det</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#Adr"><span class="id" title="variable">Adr</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="det_lblock"><span class="id" title="lemma">det_lblock</span></a> <span class="id" title="var">n1</span> <span class="id" title="var">n2</span> <span class="id" title="var">Aul</span> (<span class="id" title="var">Adl</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.matrix.html#ComMatrix.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.matrix.html#n2"><span class="id" title="variable">n2</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#n1"><span class="id" title="variable">n1</span></a><a class="idref" href="mathcomp.algebra.matrix.html#e36c289fb249221b43b9c978a67340fb"><span class="id" title="notation">)</span></a>) <span class="id" title="var">Adr</span> :<br/> + <a class="idref" href="mathcomp.algebra.matrix.html#eb4ffa5ff7cedec9d00c8af444fb9631"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.algebra.matrix.html#eb4ffa5ff7cedec9d00c8af444fb9631"><span class="id" title="notation">det</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#eb4ffa5ff7cedec9d00c8af444fb9631"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.matrix.html#block_mx"><span class="id" title="definition">block_mx</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#Aul"><span class="id" title="variable">Aul</span></a> 0 <a class="idref" href="mathcomp.algebra.matrix.html#Adl"><span class="id" title="variable">Adl</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#Adr"><span class="id" title="variable">Adr</span></a><a class="idref" href="mathcomp.algebra.matrix.html#eb4ffa5ff7cedec9d00c8af444fb9631"><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.matrix.html#eb4ffa5ff7cedec9d00c8af444fb9631"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.algebra.matrix.html#eb4ffa5ff7cedec9d00c8af444fb9631"><span class="id" title="notation">det</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#Aul"><span class="id" title="variable">Aul</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#22058a36a53dac65c94ca403bc62650a"><span class="id" title="notation">×</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#eb4ffa5ff7cedec9d00c8af444fb9631"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.algebra.matrix.html#eb4ffa5ff7cedec9d00c8af444fb9631"><span class="id" title="notation">det</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#Adr"><span class="id" title="variable">Adr</span></a>.<br/> + +<br/> +<span class="id" title="keyword">End</span> <a class="idref" href="mathcomp.algebra.matrix.html#ComMatrix"><span class="id" title="section">ComMatrix</span></a>.<br/> + +<br/> + +<br/> +<span class="id" title="keyword">Canonical</span> <span class="id" title="var">matrix_finAlgType</span> (<span class="id" title="var">R</span> : <a class="idref" href="mathcomp.algebra.finalg.html#FinRing.ComRing.Exports.finComRingType"><span class="id" title="abbreviation">finComRingType</span></a>) <span class="id" title="var">n'</span> :=<br/> + <a class="idref" href="mathcomp.algebra.finalg.html#1f3938acab41e5853e751c34c441bf83"><span class="id" title="notation">[</span></a><a class="idref" href="mathcomp.algebra.finalg.html#1f3938acab41e5853e751c34c441bf83"><span class="id" title="notation">finAlgType</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#R"><span class="id" title="variable">R</span></a> <a class="idref" href="mathcomp.algebra.finalg.html#1f3938acab41e5853e751c34c441bf83"><span class="id" title="notation">of</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">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.matrix.html#R"><span class="id" title="variable">R</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">_n'</span></a><a class="idref" href="mathcomp.ssreflect.ssrnat.html#361454269931ea8643f7b402f2ab7222"><span class="id" title="notation">.+1</span></a><a class="idref" href="mathcomp.algebra.finalg.html#1f3938acab41e5853e751c34c441bf83"><span class="id" title="notation">]</span></a>.<br/> + +<br/> +</div> + +<div class="doc"> + Matrix unit ring and inverse matrices *************** +</div> +<div class="code"> + +<br/> +<span class="id" title="keyword">Section</span> <a name="MatrixInv"><span class="id" title="section">MatrixInv</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Variables</span> <a name="MatrixInv.R"><span class="id" title="variable">R</span></a> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ComUnitRing.Exports.comUnitRingType"><span class="id" title="abbreviation">comUnitRingType</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Section</span> <a name="MatrixInv.Defs"><span class="id" title="section">Defs</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Variable</span> <a name="MatrixInv.Defs.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/> +<span class="id" title="keyword">Implicit</span> <span class="id" title="keyword">Type</span> <span class="id" title="var">A</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.matrix.html#MatrixInv.R"><span class="id" title="variable">R</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">_n</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Definition</span> <a name="unitmx"><span class="id" title="definition">unitmx</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.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.matrix.html#MatrixInv.R"><span class="id" title="variable">R</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">_n</span></a> := <span class="id" title="keyword">fun</span> <span class="id" title="var">A</span> ⇒ <a class="idref" href="mathcomp.algebra.matrix.html#eb4ffa5ff7cedec9d00c8af444fb9631"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.algebra.matrix.html#eb4ffa5ff7cedec9d00c8af444fb9631"><span class="id" title="notation">det</span></a> <a class="idref" href="mathcomp.algebra.matrix.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#1e40fee506a85b20590ef299005b003d"><span class="id" title="notation">\</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#1e40fee506a85b20590ef299005b003d"><span class="id" title="notation">is</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#1e40fee506a85b20590ef299005b003d"><span class="id" title="notation">a</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.unit"><span class="id" title="definition">GRing.unit</span></a>.<br/> +<span class="id" title="keyword">Definition</span> <a name="invmx"><span class="id" title="definition">invmx</span></a> <span class="id" title="var">A</span> := <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssreflect.html#0348819abaa88c2cd747e8fa60dde7ae"><span class="id" title="notation">if</span></a> <a class="idref" href="mathcomp.algebra.matrix.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.matrix.html#unitmx"><span class="id" title="definition">unitmx</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssreflect.html#0348819abaa88c2cd747e8fa60dde7ae"><span class="id" title="notation">then</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#f3016d4e55aa553d3e912592ec65e342"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.matrix.html#eb4ffa5ff7cedec9d00c8af444fb9631"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.algebra.matrix.html#eb4ffa5ff7cedec9d00c8af444fb9631"><span class="id" title="notation">det</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#A"><span class="id" title="variable">A</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#f3016d4e55aa553d3e912592ec65e342"><span class="id" title="notation">)^-1</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#81f8078534dcbb7e13a32d292f766525"><span class="id" title="notation">*:</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#200993d97f5688db8592e178c042bf0a"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.algebra.matrix.html#200993d97f5688db8592e178c042bf0a"><span class="id" title="notation">adj</span></a> <a class="idref" href="mathcomp.algebra.matrix.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.ssreflect.html#0348819abaa88c2cd747e8fa60dde7ae"><span class="id" title="notation">else</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#A"><span class="id" title="variable">A</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="unitmxE"><span class="id" title="lemma">unitmxE</span></a> <span class="id" title="var">A</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.matrix.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.matrix.html#unitmx"><span class="id" title="definition">unitmx</span></a><a class="idref" href="http://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.matrix.html#eb4ffa5ff7cedec9d00c8af444fb9631"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.algebra.matrix.html#eb4ffa5ff7cedec9d00c8af444fb9631"><span class="id" title="notation">det</span></a> <a class="idref" href="mathcomp.algebra.matrix.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#1e40fee506a85b20590ef299005b003d"><span class="id" title="notation">\</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#1e40fee506a85b20590ef299005b003d"><span class="id" title="notation">is</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#1e40fee506a85b20590ef299005b003d"><span class="id" title="notation">a</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.unit"><span class="id" title="definition">GRing.unit</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">)</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="unitmx1"><span class="id" title="lemma">unitmx1</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> <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.matrix.html#unitmx"><span class="id" title="definition">unitmx</span></a>. <br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="unitmx_perm"><span class="id" title="lemma">unitmx_perm</span></a> <span class="id" title="var">s</span> : <a class="idref" href="mathcomp.algebra.matrix.html#perm_mx"><span class="id" title="definition">perm_mx</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#s"><span class="id" title="variable">s</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#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.matrix.html#unitmx"><span class="id" title="definition">unitmx</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="unitmx_tr"><span class="id" title="lemma">unitmx_tr</span></a> <span class="id" title="var">A</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.matrix.html#A"><span class="id" title="variable">A</span></a><a class="idref" href="mathcomp.algebra.matrix.html#0efdd62d084b88acb1b2860eed745d54"><span class="id" title="notation">^</span></a><a class="idref" href="mathcomp.algebra.matrix.html#0efdd62d084b88acb1b2860eed745d54"><span class="id" title="notation">T</span></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.matrix.html#unitmx"><span class="id" title="definition">unitmx</span></a><a class="idref" href="http://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.matrix.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.matrix.html#unitmx"><span class="id" title="definition">unitmx</span></a><a 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="unitmxZ"><span class="id" title="lemma">unitmxZ</span></a> <span class="id" title="var">a</span> <span class="id" title="var">A</span> : <a class="idref" href="mathcomp.algebra.matrix.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#1e40fee506a85b20590ef299005b003d"><span class="id" title="notation">\</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#1e40fee506a85b20590ef299005b003d"><span class="id" title="notation">is</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#1e40fee506a85b20590ef299005b003d"><span class="id" title="notation">a</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.unit"><span class="id" title="definition">GRing.unit</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.matrix.html#a"><span class="id" title="variable">a</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#81f8078534dcbb7e13a32d292f766525"><span class="id" title="notation">*:</span></a> <a class="idref" href="mathcomp.algebra.matrix.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.matrix.html#unitmx"><span class="id" title="definition">unitmx</span></a><a class="idref" href="http://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.matrix.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.matrix.html#unitmx"><span class="id" title="definition">unitmx</span></a><a 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="invmx1"><span class="id" title="lemma">invmx1</span></a> : <a class="idref" href="mathcomp.algebra.matrix.html#invmx"><span class="id" title="definition">invmx</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> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> 1<a class="idref" href="mathcomp.algebra.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/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="invmxZ"><span class="id" title="lemma">invmxZ</span></a> <span class="id" title="var">a</span> <span class="id" title="var">A</span> : <a class="idref" href="mathcomp.algebra.matrix.html#a"><span class="id" title="variable">a</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#81f8078534dcbb7e13a32d292f766525"><span class="id" title="notation">*:</span></a> <a class="idref" href="mathcomp.algebra.matrix.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.matrix.html#unitmx"><span class="id" title="definition">unitmx</span></a> <a class="idref" href="http://coq.inria.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#invmx"><span class="id" title="definition">invmx</span></a> (<a class="idref" href="mathcomp.algebra.matrix.html#a"><span class="id" title="variable">a</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#81f8078534dcbb7e13a32d292f766525"><span class="id" title="notation">*:</span></a> <a class="idref" href="mathcomp.algebra.matrix.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.matrix.html#a"><span class="id" title="variable">a</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#f3016d4e55aa553d3e912592ec65e342"><span class="id" title="notation">^-1</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#81f8078534dcbb7e13a32d292f766525"><span class="id" title="notation">*:</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#invmx"><span class="id" title="definition">invmx</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#A"><span class="id" title="variable">A</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="invmx_scalar"><span class="id" title="lemma">invmx_scalar</span></a> <span class="id" title="var">a</span> : <a class="idref" href="mathcomp.algebra.matrix.html#invmx"><span class="id" title="definition">invmx</span></a> (<a class="idref" href="mathcomp.algebra.matrix.html#a"><span class="id" title="variable">a</span></a><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>) <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#a"><span class="id" title="variable">a</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#f3016d4e55aa553d3e912592ec65e342"><span class="id" title="notation">^-1</span></a><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/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="mulVmx"><span class="id" title="lemma">mulVmx</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.matrix.html#unitmx"><span class="id" title="definition">unitmx</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#5c59b35a0b51db520cf1fba473ecf127"><span class="id" title="notation">,</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#left_inverse"><span class="id" title="definition">left_inverse</span></a> 1<a class="idref" href="mathcomp.algebra.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> <a class="idref" href="mathcomp.algebra.matrix.html#invmx"><span class="id" title="definition">invmx</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#mulmx"><span class="id" title="definition">mulmx</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="mulmxV"><span class="id" title="lemma">mulmxV</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.matrix.html#unitmx"><span class="id" title="definition">unitmx</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#5c59b35a0b51db520cf1fba473ecf127"><span class="id" title="notation">,</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#right_inverse"><span class="id" title="definition">right_inverse</span></a> 1<a class="idref" href="mathcomp.algebra.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> <a class="idref" href="mathcomp.algebra.matrix.html#invmx"><span class="id" title="definition">invmx</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#mulmx"><span class="id" title="definition">mulmx</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="mulKmx"><span class="id" title="lemma">mulKmx</span></a> <span class="id" title="var">m</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.matrix.html#unitmx"><span class="id" title="definition">unitmx</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#5c59b35a0b51db520cf1fba473ecf127"><span class="id" title="notation">,</span></a> @<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#left_loop"><span class="id" title="definition">left_loop</span></a> <span class="id" title="var">_</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.matrix.html#MatrixInv.Defs.n"><span class="id" title="variable">n</span></a><a class="idref" href="mathcomp.algebra.matrix.html#cb37620352ad6b90a047a361359e2f04"><span class="id" title="notation">,</span></a> <a class="idref" href="mathcomp.algebra.matrix.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.matrix.html#invmx"><span class="id" title="definition">invmx</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#mulmx"><span class="id" title="definition">mulmx</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="mulKVmx"><span class="id" title="lemma">mulKVmx</span></a> <span class="id" title="var">m</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.matrix.html#unitmx"><span class="id" title="definition">unitmx</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#5c59b35a0b51db520cf1fba473ecf127"><span class="id" title="notation">,</span></a> @<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#rev_left_loop"><span class="id" title="definition">rev_left_loop</span></a> <span class="id" title="var">_</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.matrix.html#MatrixInv.Defs.n"><span class="id" title="variable">n</span></a><a class="idref" href="mathcomp.algebra.matrix.html#cb37620352ad6b90a047a361359e2f04"><span class="id" title="notation">,</span></a> <a class="idref" href="mathcomp.algebra.matrix.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.matrix.html#invmx"><span class="id" title="definition">invmx</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#mulmx"><span class="id" title="definition">mulmx</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="mulmxK"><span class="id" title="lemma">mulmxK</span></a> <span class="id" title="var">m</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.matrix.html#unitmx"><span class="id" title="definition">unitmx</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#5c59b35a0b51db520cf1fba473ecf127"><span class="id" title="notation">,</span></a> @<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#right_loop"><span class="id" title="definition">right_loop</span></a> <a class="idref" href="mathcomp.algebra.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.matrix.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.matrix.html#MatrixInv.Defs.n"><span class="id" title="variable">n</span></a><a class="idref" href="mathcomp.algebra.matrix.html#cb37620352ad6b90a047a361359e2f04"><span class="id" title="notation">)</span></a> <span class="id" title="var">_</span> <a class="idref" href="mathcomp.algebra.matrix.html#invmx"><span class="id" title="definition">invmx</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#mulmx"><span class="id" title="definition">mulmx</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="mulmxKV"><span class="id" title="lemma">mulmxKV</span></a> <span class="id" title="var">m</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.matrix.html#unitmx"><span class="id" title="definition">unitmx</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#5c59b35a0b51db520cf1fba473ecf127"><span class="id" title="notation">,</span></a> @<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#rev_right_loop"><span class="id" title="definition">rev_right_loop</span></a> <a class="idref" href="mathcomp.algebra.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.matrix.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.matrix.html#MatrixInv.Defs.n"><span class="id" title="variable">n</span></a><a class="idref" href="mathcomp.algebra.matrix.html#cb37620352ad6b90a047a361359e2f04"><span class="id" title="notation">)</span></a> <span class="id" title="var">_</span> <a class="idref" href="mathcomp.algebra.matrix.html#invmx"><span class="id" title="definition">invmx</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#mulmx"><span class="id" title="definition">mulmx</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="det_inv"><span class="id" title="lemma">det_inv</span></a> <span class="id" title="var">A</span> : <a class="idref" href="mathcomp.algebra.matrix.html#eb4ffa5ff7cedec9d00c8af444fb9631"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.algebra.matrix.html#eb4ffa5ff7cedec9d00c8af444fb9631"><span class="id" title="notation">det</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#eb4ffa5ff7cedec9d00c8af444fb9631"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.matrix.html#invmx"><span class="id" title="definition">invmx</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#A"><span class="id" title="variable">A</span></a><a class="idref" href="mathcomp.algebra.matrix.html#eb4ffa5ff7cedec9d00c8af444fb9631"><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#f3016d4e55aa553d3e912592ec65e342"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.matrix.html#eb4ffa5ff7cedec9d00c8af444fb9631"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.algebra.matrix.html#eb4ffa5ff7cedec9d00c8af444fb9631"><span class="id" title="notation">det</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#A"><span class="id" title="variable">A</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#f3016d4e55aa553d3e912592ec65e342"><span class="id" title="notation">)^-1</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="unitmx_inv"><span class="id" title="lemma">unitmx_inv</span></a> <span class="id" title="var">A</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.matrix.html#invmx"><span class="id" title="definition">invmx</span></a> <a class="idref" href="mathcomp.algebra.matrix.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.matrix.html#unitmx"><span class="id" title="definition">unitmx</span></a><a class="idref" href="http://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.matrix.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.matrix.html#unitmx"><span class="id" title="definition">unitmx</span></a><a 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="unitmx_mul"><span class="id" title="lemma">unitmx_mul</span></a> <span class="id" title="var">A</span> <span class="id" title="var">B</span> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.matrix.html#A"><span class="id" title="variable">A</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.matrix.html#B"><span class="id" title="variable">B</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.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.matrix.html#unitmx"><span class="id" title="definition">unitmx</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">)</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#49ac24efa716d8b0ee8943bc1d1769a9"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.matrix.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.matrix.html#unitmx"><span class="id" title="definition">unitmx</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.matrix.html#B"><span class="id" title="variable">B</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.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.matrix.html#unitmx"><span class="id" title="definition">unitmx</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="trmx_inv"><span class="id" title="lemma">trmx_inv</span></a> (<span class="id" title="var">A</span> : <a class="idref" href="mathcomp.algebra.matrix.html#1ce49b162eb757fc4a2e0ce4df0ee5cd"><span class="id" title="notation">'</span></a><a class="idref" href="mathcomp.algebra.matrix.html#1ce49b162eb757fc4a2e0ce4df0ee5cd"><span class="id" title="notation">M_n</span></a>) : <a class="idref" href="mathcomp.algebra.matrix.html#0efdd62d084b88acb1b2860eed745d54"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.matrix.html#invmx"><span class="id" title="definition">invmx</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#A"><span class="id" title="variable">A</span></a><a class="idref" href="mathcomp.algebra.matrix.html#0efdd62d084b88acb1b2860eed745d54"><span class="id" title="notation">)^</span></a><a class="idref" href="mathcomp.algebra.matrix.html#0efdd62d084b88acb1b2860eed745d54"><span class="id" title="notation">T</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#invmx"><span class="id" title="definition">invmx</span></a> (<a class="idref" href="mathcomp.algebra.matrix.html#A"><span class="id" title="variable">A</span></a><a class="idref" href="mathcomp.algebra.matrix.html#0efdd62d084b88acb1b2860eed745d54"><span class="id" title="notation">^</span></a><a class="idref" href="mathcomp.algebra.matrix.html#0efdd62d084b88acb1b2860eed745d54"><span class="id" title="notation">T</span></a>).<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="invmxK"><span class="id" title="lemma">invmxK</span></a> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#involutive"><span class="id" title="definition">involutive</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#invmx"><span class="id" title="definition">invmx</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="mulmx1_unit"><span class="id" title="lemma">mulmx1_unit</span></a> <span class="id" title="var">A</span> <span class="id" title="var">B</span> : <a class="idref" href="mathcomp.algebra.matrix.html#A"><span class="id" title="variable">A</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.matrix.html#B"><span class="id" title="variable">B</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> 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> <a class="idref" href="http://coq.inria.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#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.matrix.html#unitmx"><span class="id" title="definition">unitmx</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.matrix.html#B"><span class="id" title="variable">B</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.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.matrix.html#unitmx"><span class="id" title="definition">unitmx</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="intro_unitmx"><span class="id" title="lemma">intro_unitmx</span></a> <span class="id" title="var">A</span> <span class="id" title="var">B</span> : <a class="idref" href="mathcomp.algebra.matrix.html#B"><span class="id" title="variable">B</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.matrix.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> 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> <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.matrix.html#A"><span class="id" title="variable">A</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.matrix.html#B"><span class="id" title="variable">B</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> 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> <a class="idref" href="http://coq.inria.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#unitmx"><span class="id" title="definition">unitmx</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#A"><span class="id" title="variable">A</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="invmx_out"><span class="id" title="lemma">invmx_out</span></a> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#5c59b35a0b51db520cf1fba473ecf127"><span class="id" title="notation">{</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#5c59b35a0b51db520cf1fba473ecf127"><span class="id" title="notation">in</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#c2f58fba484177bda65c2ab1289a6fe6"><span class="id" title="notation">[</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#c2f58fba484177bda65c2ab1289a6fe6"><span class="id" title="notation">predC</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#unitmx"><span class="id" title="definition">unitmx</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#c2f58fba484177bda65c2ab1289a6fe6"><span class="id" title="notation">]</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#5c59b35a0b51db520cf1fba473ecf127"><span class="id" title="notation">,</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#invmx"><span class="id" title="definition">invmx</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#2500d48ed8e862ccfda98a44dff88963"><span class="id" title="notation">=1</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#id"><span class="id" title="abbreviation">id</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#5c59b35a0b51db520cf1fba473ecf127"><span class="id" title="notation">}</span></a>.<br/> + +<br/> +<span class="id" title="keyword">End</span> <a class="idref" href="mathcomp.algebra.matrix.html#MatrixInv.Defs"><span class="id" title="section">Defs</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Variable</span> <a name="MatrixInv.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/> +<span class="id" title="keyword">Definition</span> <a name="matrix_unitRingMixin"><span class="id" title="definition">matrix_unitRingMixin</span></a> :=<br/> + <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.UnitRing.Exports.UnitRingMixin"><span class="id" title="abbreviation">UnitRingMixin</span></a> (@<a class="idref" href="mathcomp.algebra.matrix.html#mulVmx"><span class="id" title="lemma">mulVmx</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#n"><span class="id" title="abbreviation">n</span></a>) (@<a class="idref" href="mathcomp.algebra.matrix.html#mulmxV"><span class="id" title="lemma">mulmxV</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#n"><span class="id" title="abbreviation">n</span></a>) (@<a class="idref" href="mathcomp.algebra.matrix.html#intro_unitmx"><span class="id" title="lemma">intro_unitmx</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#n"><span class="id" title="abbreviation">n</span></a>) (@<a class="idref" href="mathcomp.algebra.matrix.html#invmx_out"><span class="id" title="lemma">invmx_out</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#n"><span class="id" title="abbreviation">n</span></a>).<br/> +<span class="id" title="keyword">Canonical</span> <span class="id" title="var">matrix_unitRing</span> :=<br/> + <span class="id" title="keyword">Eval</span> <span class="id" title="tactic">hnf</span> <span class="id" title="tactic">in</span> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.UnitRing.Exports.UnitRingType"><span class="id" title="abbreviation">UnitRingType</span></a> <a class="idref" href="mathcomp.algebra.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.matrix.html#MatrixInv.R"><span class="id" title="variable">R</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">_n</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#matrix_unitRingMixin"><span class="id" title="definition">matrix_unitRingMixin</span></a>.<br/> +<span class="id" title="keyword">Canonical</span> <span class="id" title="var">matrix_unitAlg</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#bdb1eed686184a9a4099efa772be7bc7"><span class="id" title="notation">[</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#bdb1eed686184a9a4099efa772be7bc7"><span class="id" title="notation">unitAlgType</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#MatrixInv.R"><span class="id" title="variable">R</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#bdb1eed686184a9a4099efa772be7bc7"><span class="id" title="notation">of</span></a> <a class="idref" href="mathcomp.algebra.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.matrix.html#MatrixInv.R"><span class="id" title="variable">R</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">_n</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#bdb1eed686184a9a4099efa772be7bc7"><span class="id" title="notation">]</span></a>.<br/> + +<br/> +</div> + +<div class="doc"> + Lemmas requiring that the coefficients are in a unit ring +</div> +<div class="code"> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="detV"><span class="id" title="lemma">detV</span></a> (<span class="id" title="var">A</span> : <a class="idref" href="mathcomp.algebra.matrix.html#1ce49b162eb757fc4a2e0ce4df0ee5cd"><span class="id" title="notation">'</span></a><a class="idref" href="mathcomp.algebra.matrix.html#1ce49b162eb757fc4a2e0ce4df0ee5cd"><span class="id" title="notation">M_n</span></a>) : <a class="idref" href="mathcomp.algebra.matrix.html#eb4ffa5ff7cedec9d00c8af444fb9631"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.algebra.matrix.html#eb4ffa5ff7cedec9d00c8af444fb9631"><span class="id" title="notation">det</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#A"><span class="id" title="variable">A</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#f3016d4e55aa553d3e912592ec65e342"><span class="id" title="notation">^-1</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#f3016d4e55aa553d3e912592ec65e342"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.matrix.html#eb4ffa5ff7cedec9d00c8af444fb9631"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.algebra.matrix.html#eb4ffa5ff7cedec9d00c8af444fb9631"><span class="id" title="notation">det</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#A"><span class="id" title="variable">A</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#f3016d4e55aa553d3e912592ec65e342"><span class="id" title="notation">)^-1</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="unitr_trmx"><span class="id" title="lemma">unitr_trmx</span></a> (<span class="id" title="var">A</span> : <a class="idref" href="mathcomp.algebra.matrix.html#1ce49b162eb757fc4a2e0ce4df0ee5cd"><span class="id" title="notation">'</span></a><a class="idref" href="mathcomp.algebra.matrix.html#1ce49b162eb757fc4a2e0ce4df0ee5cd"><span class="id" title="notation">M_n</span></a>) : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.matrix.html#A"><span class="id" title="variable">A</span></a><a class="idref" href="mathcomp.algebra.matrix.html#0efdd62d084b88acb1b2860eed745d54"><span class="id" title="notation">^</span></a><a class="idref" href="mathcomp.algebra.matrix.html#0efdd62d084b88acb1b2860eed745d54"><span class="id" title="notation">T</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#1e40fee506a85b20590ef299005b003d"><span class="id" title="notation">\</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#1e40fee506a85b20590ef299005b003d"><span class="id" title="notation">is</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#1e40fee506a85b20590ef299005b003d"><span class="id" title="notation">a</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.unit"><span class="id" title="definition">GRing.unit</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">)</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.matrix.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#1e40fee506a85b20590ef299005b003d"><span class="id" title="notation">\</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#1e40fee506a85b20590ef299005b003d"><span class="id" title="notation">is</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#1e40fee506a85b20590ef299005b003d"><span class="id" title="notation">a</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.unit"><span class="id" title="definition">GRing.unit</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">)</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="trmxV"><span class="id" title="lemma">trmxV</span></a> (<span class="id" title="var">A</span> : <a class="idref" href="mathcomp.algebra.matrix.html#1ce49b162eb757fc4a2e0ce4df0ee5cd"><span class="id" title="notation">'</span></a><a class="idref" href="mathcomp.algebra.matrix.html#1ce49b162eb757fc4a2e0ce4df0ee5cd"><span class="id" title="notation">M_n</span></a>) : <a class="idref" href="mathcomp.algebra.matrix.html#A"><span class="id" title="variable">A</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#f3016d4e55aa553d3e912592ec65e342"><span class="id" title="notation">^-1</span></a><a class="idref" href="mathcomp.algebra.matrix.html#0efdd62d084b88acb1b2860eed745d54"><span class="id" title="notation">^</span></a><a class="idref" href="mathcomp.algebra.matrix.html#0efdd62d084b88acb1b2860eed745d54"><span class="id" title="notation">T</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#f3016d4e55aa553d3e912592ec65e342"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.matrix.html#A"><span class="id" title="variable">A</span></a><a class="idref" href="mathcomp.algebra.matrix.html#0efdd62d084b88acb1b2860eed745d54"><span class="id" title="notation">^</span></a><a class="idref" href="mathcomp.algebra.matrix.html#0efdd62d084b88acb1b2860eed745d54"><span class="id" title="notation">T</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#f3016d4e55aa553d3e912592ec65e342"><span class="id" title="notation">)^-1</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="perm_mxV"><span class="id" title="lemma">perm_mxV</span></a> (<span class="id" title="var">s</span> : <a class="idref" href="mathcomp.fingroup.perm.html#ea6fcc91866185ddfad466ada7c10b27"><span class="id" title="notation">'</span></a><a class="idref" href="mathcomp.fingroup.perm.html#ea6fcc91866185ddfad466ada7c10b27"><span class="id" title="notation">S_n</span></a>) : <a class="idref" href="mathcomp.algebra.matrix.html#perm_mx"><span class="id" title="definition">perm_mx</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#s"><span class="id" title="variable">s</span></a><a class="idref" href="mathcomp.fingroup.fingroup.html#a605acbeae7597f74f5a9b816ed8a717"><span class="id" title="notation">^-1</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#f3016d4e55aa553d3e912592ec65e342"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.matrix.html#perm_mx"><span class="id" title="definition">perm_mx</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#s"><span class="id" title="variable">s</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#f3016d4e55aa553d3e912592ec65e342"><span class="id" title="notation">)^-1</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="is_perm_mxV"><span class="id" title="lemma">is_perm_mxV</span></a> (<span class="id" title="var">A</span> : <a class="idref" href="mathcomp.algebra.matrix.html#1ce49b162eb757fc4a2e0ce4df0ee5cd"><span class="id" title="notation">'</span></a><a class="idref" href="mathcomp.algebra.matrix.html#1ce49b162eb757fc4a2e0ce4df0ee5cd"><span class="id" title="notation">M_n</span></a>) : <a class="idref" href="mathcomp.algebra.matrix.html#is_perm_mx"><span class="id" title="definition">is_perm_mx</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#A"><span class="id" title="variable">A</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#f3016d4e55aa553d3e912592ec65e342"><span class="id" title="notation">^-1</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#is_perm_mx"><span class="id" title="definition">is_perm_mx</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#A"><span class="id" title="variable">A</span></a>.<br/> + +<br/> +<span class="id" title="keyword">End</span> <a class="idref" href="mathcomp.algebra.matrix.html#MatrixInv"><span class="id" title="section">MatrixInv</span></a>.<br/> + +<br/> + +<br/> +</div> + +<div class="doc"> + Finite inversible matrices and the general linear group. +</div> +<div class="code"> +<span class="id" title="keyword">Section</span> <a name="FinUnitMatrix"><span class="id" title="section">FinUnitMatrix</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Variables</span> (<a name="FinUnitMatrix.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="FinUnitMatrix.R"><span class="id" title="variable">R</span></a> : <a class="idref" href="mathcomp.algebra.finalg.html#FinRing.ComUnitRing.Exports.finComUnitRingType"><span class="id" title="abbreviation">finComUnitRingType</span></a>).<br/> + +<br/> +<span class="id" title="keyword">Canonical</span> <span class="id" title="var">matrix_finUnitRingType</span> <span class="id" title="var">n'</span> :=<br/> + <span class="id" title="keyword">Eval</span> <span class="id" title="tactic">hnf</span> <span class="id" title="tactic">in</span> <a class="idref" href="mathcomp.algebra.finalg.html#7f21453830587186138043335ab91dd1"><span class="id" title="notation">[</span></a><a class="idref" href="mathcomp.algebra.finalg.html#7f21453830587186138043335ab91dd1"><span class="id" title="notation">finUnitRingType</span></a> <a class="idref" href="mathcomp.algebra.finalg.html#7f21453830587186138043335ab91dd1"><span class="id" title="notation">of</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">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.matrix.html#FinUnitMatrix.R"><span class="id" title="variable">R</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">_n'</span></a><a class="idref" href="mathcomp.ssreflect.ssrnat.html#361454269931ea8643f7b402f2ab7222"><span class="id" title="notation">.+1</span></a><a class="idref" href="mathcomp.algebra.finalg.html#7f21453830587186138043335ab91dd1"><span class="id" title="notation">]</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Definition</span> <a name="GLtype"><span class="id" title="definition">GLtype</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.matrix.html#FinUnitMatrix.R"><span class="id" title="variable">R</span></a> := <a class="idref" href="mathcomp.algebra.finalg.html#f7c6b2be51cd10aae4ae8951352903f1"><span class="id" title="notation">{</span></a><a class="idref" href="mathcomp.algebra.finalg.html#f7c6b2be51cd10aae4ae8951352903f1"><span class="id" title="notation">unit</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">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.matrix.html#FinUnitMatrix.R"><span class="id" title="variable">R</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">_n</span></a><a class="idref" href="mathcomp.ssreflect.ssrnat.html#1d63841e595f2805afd872744cbb1cce"><span class="id" title="notation">.-1</span></a><a class="idref" href="mathcomp.ssreflect.ssrnat.html#361454269931ea8643f7b402f2ab7222"><span class="id" title="notation">.+1</span></a><a class="idref" href="mathcomp.algebra.finalg.html#f7c6b2be51cd10aae4ae8951352903f1"><span class="id" title="notation">}</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Coercion</span> <span class="id" title="var">GLval</span> <span class="id" title="var">ph</span> (<span class="id" title="var">u</span> : <a class="idref" href="mathcomp.algebra.matrix.html#GLtype"><span class="id" title="definition">GLtype</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#ph"><span class="id" title="variable">ph</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">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.matrix.html#FinUnitMatrix.R"><span class="id" title="variable">R</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">_n</span></a><a class="idref" href="mathcomp.ssreflect.ssrnat.html#1d63841e595f2805afd872744cbb1cce"><span class="id" title="notation">.-1</span></a><a class="idref" href="mathcomp.ssreflect.ssrnat.html#361454269931ea8643f7b402f2ab7222"><span class="id" title="notation">.+1</span></a> :=<br/> + <span class="id" title="keyword">let</span>: <a class="idref" href="mathcomp.algebra.finalg.html#FinRing.Unit"><span class="id" title="constructor">FinRing.Unit</span></a> <span class="id" title="var">A</span> <span class="id" title="var">_</span> := <a class="idref" href="mathcomp.algebra.matrix.html#u"><span class="id" title="variable">u</span></a> <span class="id" title="tactic">in</span> <span class="id" title="var">A</span>.<br/> + +<br/> +<span class="id" title="keyword">End</span> <a class="idref" href="mathcomp.algebra.matrix.html#FinUnitMatrix"><span class="id" title="section">FinUnitMatrix</span></a>.<br/> + +<br/> + +<br/> +<span class="id" title="keyword">Notation</span> <a name="671572f33ba80408e4afccdda3f8ba22"><span class="id" title="notation">"</span></a>{ ''GL_' n [ R ] }" := (<a class="idref" href="mathcomp.algebra.matrix.html#GLtype"><span class="id" title="definition">GLtype</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">R</span>))<br/> + (<span class="id" title="tactic">at</span> <span class="id" title="keyword">level</span> 0, <span class="id" title="var">n</span> <span class="id" title="tactic">at</span> <span class="id" title="keyword">level</span> 2, <span class="id" title="var">format</span> "{ ''GL_' n [ R ] }") : <span class="id" title="var">type_scope</span>.<br/> +<span class="id" title="keyword">Notation</span> <a name="353cd36012a571e301401adb6b16dcd0"><span class="id" title="notation">"</span></a>{ ''GL_' n ( p ) }" := <a class="idref" href="mathcomp.algebra.matrix.html#671572f33ba80408e4afccdda3f8ba22"><span class="id" title="notation">{'</span></a><a class="idref" href="mathcomp.algebra.matrix.html#671572f33ba80408e4afccdda3f8ba22"><span class="id" title="notation">GL_n</span></a><a class="idref" href="mathcomp.algebra.matrix.html#671572f33ba80408e4afccdda3f8ba22"><span class="id" title="notation">[</span></a><a class="idref" href="mathcomp.algebra.zmodp.html#ac70144de8117a1d767eef28420399d1"><span class="id" title="notation">'</span></a><a class="idref" href="mathcomp.algebra.zmodp.html#ac70144de8117a1d767eef28420399d1"><span class="id" title="notation">F_p</span></a><a class="idref" href="mathcomp.algebra.matrix.html#671572f33ba80408e4afccdda3f8ba22"><span class="id" title="notation">]}</span></a><br/> + (<span class="id" title="tactic">at</span> <span class="id" title="keyword">level</span> 0, <span class="id" title="var">n</span> <span class="id" title="tactic">at</span> <span class="id" title="keyword">level</span> 2, <span class="id" title="var">p</span> <span class="id" title="tactic">at</span> <span class="id" title="keyword">level</span> 10,<br/> + <span class="id" title="var">format</span> "{ ''GL_' n ( p ) }") : <span class="id" title="var">type_scope</span>.<br/> + +<br/> +<span class="id" title="keyword">Section</span> <a name="GL_unit"><span class="id" title="section">GL_unit</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Variables</span> (<a name="GL_unit.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="GL_unit.R"><span class="id" title="variable">R</span></a> : <a class="idref" href="mathcomp.algebra.finalg.html#FinRing.ComUnitRing.Exports.finComUnitRingType"><span class="id" title="abbreviation">finComUnitRingType</span></a>).<br/> + +<br/> +<span class="id" title="keyword">Canonical</span> <span class="id" title="var">GL_subType</span> := <a class="idref" href="mathcomp.ssreflect.eqtype.html#5a1a3176d1f13512b7b2c6b5bfb86f20"><span class="id" title="notation">[</span></a><a class="idref" href="mathcomp.ssreflect.eqtype.html#5a1a3176d1f13512b7b2c6b5bfb86f20"><span class="id" title="notation">subType</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#5a1a3176d1f13512b7b2c6b5bfb86f20"><span class="id" title="notation">of</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#671572f33ba80408e4afccdda3f8ba22"><span class="id" title="notation">{'</span></a><a class="idref" href="mathcomp.algebra.matrix.html#671572f33ba80408e4afccdda3f8ba22"><span class="id" title="notation">GL_n</span></a><a class="idref" href="mathcomp.algebra.matrix.html#671572f33ba80408e4afccdda3f8ba22"><span class="id" title="notation">[</span></a><a class="idref" href="mathcomp.algebra.matrix.html#GL_unit.R"><span class="id" title="variable">R</span></a><a class="idref" href="mathcomp.algebra.matrix.html#671572f33ba80408e4afccdda3f8ba22"><span class="id" title="notation">]}</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#5a1a3176d1f13512b7b2c6b5bfb86f20"><span class="id" title="notation">for</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#GLval"><span class="id" title="definition">GLval</span></a><a class="idref" href="mathcomp.ssreflect.eqtype.html#5a1a3176d1f13512b7b2c6b5bfb86f20"><span class="id" title="notation">]</span></a>.<br/> +<span class="id" title="keyword">Definition</span> <a name="GL_eqMixin"><span class="id" title="definition">GL_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.matrix.html#671572f33ba80408e4afccdda3f8ba22"><span class="id" title="notation">{'</span></a><a class="idref" href="mathcomp.algebra.matrix.html#671572f33ba80408e4afccdda3f8ba22"><span class="id" title="notation">GL_n</span></a><a class="idref" href="mathcomp.algebra.matrix.html#671572f33ba80408e4afccdda3f8ba22"><span class="id" title="notation">[</span></a><a class="idref" href="mathcomp.algebra.matrix.html#GL_unit.R"><span class="id" title="variable">R</span></a><a class="idref" href="mathcomp.algebra.matrix.html#671572f33ba80408e4afccdda3f8ba22"><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">GL_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.matrix.html#671572f33ba80408e4afccdda3f8ba22"><span class="id" title="notation">{'</span></a><a class="idref" href="mathcomp.algebra.matrix.html#671572f33ba80408e4afccdda3f8ba22"><span class="id" title="notation">GL_n</span></a><a class="idref" href="mathcomp.algebra.matrix.html#671572f33ba80408e4afccdda3f8ba22"><span class="id" title="notation">[</span></a><a class="idref" href="mathcomp.algebra.matrix.html#GL_unit.R"><span class="id" title="variable">R</span></a><a class="idref" href="mathcomp.algebra.matrix.html#671572f33ba80408e4afccdda3f8ba22"><span class="id" title="notation">]}</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#GL_eqMixin"><span class="id" title="definition">GL_eqMixin</span></a>.<br/> +<span class="id" title="keyword">Canonical</span> <span class="id" title="var">GL_choiceType</span> := <span class="id" title="keyword">Eval</span> <span class="id" title="tactic">hnf</span> <span class="id" title="tactic">in</span> <a class="idref" href="mathcomp.ssreflect.choice.html#1731a28227324c9e5fc49499029635b3"><span class="id" title="notation">[</span></a><a class="idref" href="mathcomp.ssreflect.choice.html#1731a28227324c9e5fc49499029635b3"><span class="id" title="notation">choiceType</span></a> <a class="idref" href="mathcomp.ssreflect.choice.html#1731a28227324c9e5fc49499029635b3"><span class="id" title="notation">of</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#671572f33ba80408e4afccdda3f8ba22"><span class="id" title="notation">{'</span></a><a class="idref" href="mathcomp.algebra.matrix.html#671572f33ba80408e4afccdda3f8ba22"><span class="id" title="notation">GL_n</span></a><a class="idref" href="mathcomp.algebra.matrix.html#671572f33ba80408e4afccdda3f8ba22"><span class="id" title="notation">[</span></a><a class="idref" href="mathcomp.algebra.matrix.html#GL_unit.R"><span class="id" title="variable">R</span></a><a class="idref" href="mathcomp.algebra.matrix.html#671572f33ba80408e4afccdda3f8ba22"><span class="id" title="notation">]}</span></a><a class="idref" href="mathcomp.ssreflect.choice.html#1731a28227324c9e5fc49499029635b3"><span class="id" title="notation">]</span></a>.<br/> +<span class="id" title="keyword">Canonical</span> <span class="id" title="var">GL_countType</span> := <span class="id" title="keyword">Eval</span> <span class="id" title="tactic">hnf</span> <span class="id" title="tactic">in</span> <a class="idref" href="mathcomp.ssreflect.choice.html#be2fb44e85835140c455bc256ce18d4c"><span class="id" title="notation">[</span></a><a class="idref" href="mathcomp.ssreflect.choice.html#be2fb44e85835140c455bc256ce18d4c"><span class="id" title="notation">countType</span></a> <a class="idref" href="mathcomp.ssreflect.choice.html#be2fb44e85835140c455bc256ce18d4c"><span class="id" title="notation">of</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#671572f33ba80408e4afccdda3f8ba22"><span class="id" title="notation">{'</span></a><a class="idref" href="mathcomp.algebra.matrix.html#671572f33ba80408e4afccdda3f8ba22"><span class="id" title="notation">GL_n</span></a><a class="idref" href="mathcomp.algebra.matrix.html#671572f33ba80408e4afccdda3f8ba22"><span class="id" title="notation">[</span></a><a class="idref" href="mathcomp.algebra.matrix.html#GL_unit.R"><span class="id" title="variable">R</span></a><a class="idref" href="mathcomp.algebra.matrix.html#671572f33ba80408e4afccdda3f8ba22"><span class="id" title="notation">]}</span></a><a class="idref" href="mathcomp.ssreflect.choice.html#be2fb44e85835140c455bc256ce18d4c"><span class="id" title="notation">]</span></a>.<br/> +<span class="id" title="keyword">Canonical</span> <span class="id" title="var">GL_subCountType</span> := <span class="id" title="keyword">Eval</span> <span class="id" title="tactic">hnf</span> <span class="id" title="tactic">in</span> <a class="idref" href="mathcomp.ssreflect.choice.html#8a7192fa64a42310658fd5be07ae4fcc"><span class="id" title="notation">[</span></a><a class="idref" href="mathcomp.ssreflect.choice.html#8a7192fa64a42310658fd5be07ae4fcc"><span class="id" title="notation">subCountType</span></a> <a class="idref" href="mathcomp.ssreflect.choice.html#8a7192fa64a42310658fd5be07ae4fcc"><span class="id" title="notation">of</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#671572f33ba80408e4afccdda3f8ba22"><span class="id" title="notation">{'</span></a><a class="idref" href="mathcomp.algebra.matrix.html#671572f33ba80408e4afccdda3f8ba22"><span class="id" title="notation">GL_n</span></a><a class="idref" href="mathcomp.algebra.matrix.html#671572f33ba80408e4afccdda3f8ba22"><span class="id" title="notation">[</span></a><a class="idref" href="mathcomp.algebra.matrix.html#GL_unit.R"><span class="id" title="variable">R</span></a><a class="idref" href="mathcomp.algebra.matrix.html#671572f33ba80408e4afccdda3f8ba22"><span class="id" title="notation">]}</span></a><a class="idref" href="mathcomp.ssreflect.choice.html#8a7192fa64a42310658fd5be07ae4fcc"><span class="id" title="notation">]</span></a>.<br/> +<span class="id" title="keyword">Canonical</span> <span class="id" title="var">GL_finType</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.fintype.html#eb1f7a25d8e03f1f02a5769831d0e74e"><span class="id" title="notation">[</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#eb1f7a25d8e03f1f02a5769831d0e74e"><span class="id" title="notation">finType</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#eb1f7a25d8e03f1f02a5769831d0e74e"><span class="id" title="notation">of</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#671572f33ba80408e4afccdda3f8ba22"><span class="id" title="notation">{'</span></a><a class="idref" href="mathcomp.algebra.matrix.html#671572f33ba80408e4afccdda3f8ba22"><span class="id" title="notation">GL_n</span></a><a class="idref" href="mathcomp.algebra.matrix.html#671572f33ba80408e4afccdda3f8ba22"><span class="id" title="notation">[</span></a><a class="idref" href="mathcomp.algebra.matrix.html#GL_unit.R"><span class="id" title="variable">R</span></a><a class="idref" href="mathcomp.algebra.matrix.html#671572f33ba80408e4afccdda3f8ba22"><span class="id" title="notation">]}</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#eb1f7a25d8e03f1f02a5769831d0e74e"><span class="id" title="notation">]</span></a>.<br/> +<span class="id" title="keyword">Canonical</span> <span class="id" title="var">GL_subFinType</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.fintype.html#a701c7b60b4a16f07950761d8bf90924"><span class="id" title="notation">[</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#a701c7b60b4a16f07950761d8bf90924"><span class="id" title="notation">subFinType</span></a> <a class="idref" href="mathcomp.ssreflect.fintype.html#a701c7b60b4a16f07950761d8bf90924"><span class="id" title="notation">of</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#671572f33ba80408e4afccdda3f8ba22"><span class="id" title="notation">{'</span></a><a class="idref" href="mathcomp.algebra.matrix.html#671572f33ba80408e4afccdda3f8ba22"><span class="id" title="notation">GL_n</span></a><a class="idref" href="mathcomp.algebra.matrix.html#671572f33ba80408e4afccdda3f8ba22"><span class="id" title="notation">[</span></a><a class="idref" href="mathcomp.algebra.matrix.html#GL_unit.R"><span class="id" title="variable">R</span></a><a class="idref" href="mathcomp.algebra.matrix.html#671572f33ba80408e4afccdda3f8ba22"><span class="id" title="notation">]}</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#a701c7b60b4a16f07950761d8bf90924"><span class="id" title="notation">]</span></a>.<br/> +<span class="id" title="keyword">Canonical</span> <span class="id" title="var">GL_baseFinGroupType</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.fingroup.fingroup.html#bdbf19c07c4322c6fcf6df6c95066969"><span class="id" title="notation">[</span></a><a class="idref" href="mathcomp.fingroup.fingroup.html#bdbf19c07c4322c6fcf6df6c95066969"><span class="id" title="notation">baseFinGroupType</span></a> <a class="idref" href="mathcomp.fingroup.fingroup.html#bdbf19c07c4322c6fcf6df6c95066969"><span class="id" title="notation">of</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#671572f33ba80408e4afccdda3f8ba22"><span class="id" title="notation">{'</span></a><a class="idref" href="mathcomp.algebra.matrix.html#671572f33ba80408e4afccdda3f8ba22"><span class="id" title="notation">GL_n</span></a><a class="idref" href="mathcomp.algebra.matrix.html#671572f33ba80408e4afccdda3f8ba22"><span class="id" title="notation">[</span></a><a class="idref" href="mathcomp.algebra.matrix.html#GL_unit.R"><span class="id" title="variable">R</span></a><a class="idref" href="mathcomp.algebra.matrix.html#671572f33ba80408e4afccdda3f8ba22"><span class="id" title="notation">]}</span></a><a class="idref" href="mathcomp.fingroup.fingroup.html#bdbf19c07c4322c6fcf6df6c95066969"><span class="id" title="notation">]</span></a>.<br/> +<span class="id" title="keyword">Canonical</span> <span class="id" title="var">GL_finGroupType</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.fingroup.fingroup.html#db944dcc0a08a3bc9a79ca11eb10ad09"><span class="id" title="notation">[</span></a><a class="idref" href="mathcomp.fingroup.fingroup.html#db944dcc0a08a3bc9a79ca11eb10ad09"><span class="id" title="notation">finGroupType</span></a> <a class="idref" href="mathcomp.fingroup.fingroup.html#db944dcc0a08a3bc9a79ca11eb10ad09"><span class="id" title="notation">of</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#671572f33ba80408e4afccdda3f8ba22"><span class="id" title="notation">{'</span></a><a class="idref" href="mathcomp.algebra.matrix.html#671572f33ba80408e4afccdda3f8ba22"><span class="id" title="notation">GL_n</span></a><a class="idref" href="mathcomp.algebra.matrix.html#671572f33ba80408e4afccdda3f8ba22"><span class="id" title="notation">[</span></a><a class="idref" href="mathcomp.algebra.matrix.html#GL_unit.R"><span class="id" title="variable">R</span></a><a class="idref" href="mathcomp.algebra.matrix.html#671572f33ba80408e4afccdda3f8ba22"><span class="id" title="notation">]}</span></a><a class="idref" href="mathcomp.fingroup.fingroup.html#db944dcc0a08a3bc9a79ca11eb10ad09"><span class="id" title="notation">]</span></a>.<br/> +<span class="id" title="keyword">Definition</span> <a name="GLgroup"><span class="id" title="definition">GLgroup</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.matrix.html#GL_unit.R"><span class="id" title="variable">R</span></a> := <a class="idref" href="mathcomp.ssreflect.finset.html#26c09fa7b21f5311d68f07b2527cd1eb"><span class="id" title="notation">[</span></a><a class="idref" href="mathcomp.ssreflect.finset.html#26c09fa7b21f5311d68f07b2527cd1eb"><span class="id" title="notation">set</span></a><a class="idref" href="mathcomp.ssreflect.finset.html#26c09fa7b21f5311d68f07b2527cd1eb"><span class="id" title="notation">:</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#671572f33ba80408e4afccdda3f8ba22"><span class="id" title="notation">{'</span></a><a class="idref" href="mathcomp.algebra.matrix.html#671572f33ba80408e4afccdda3f8ba22"><span class="id" title="notation">GL_n</span></a><a class="idref" href="mathcomp.algebra.matrix.html#671572f33ba80408e4afccdda3f8ba22"><span class="id" title="notation">[</span></a><a class="idref" href="mathcomp.algebra.matrix.html#GL_unit.R"><span class="id" title="variable">R</span></a><a class="idref" href="mathcomp.algebra.matrix.html#671572f33ba80408e4afccdda3f8ba22"><span class="id" title="notation">]}</span></a><a class="idref" href="mathcomp.ssreflect.finset.html#26c09fa7b21f5311d68f07b2527cd1eb"><span class="id" title="notation">]</span></a>.<br/> +<span class="id" title="keyword">Canonical</span> <span class="id" title="var">GLgroup_group</span> <span class="id" title="var">ph</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.fingroup.fingroup.html#ccb763a84253e971fd106aeeb9cd3cb0"><span class="id" title="notation">[</span></a><a class="idref" href="mathcomp.fingroup.fingroup.html#ccb763a84253e971fd106aeeb9cd3cb0"><span class="id" title="notation">group</span></a> <a class="idref" href="mathcomp.fingroup.fingroup.html#ccb763a84253e971fd106aeeb9cd3cb0"><span class="id" title="notation">of</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#GLgroup"><span class="id" title="definition">GLgroup</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#ph"><span class="id" title="variable">ph</span></a><a class="idref" href="mathcomp.fingroup.fingroup.html#ccb763a84253e971fd106aeeb9cd3cb0"><span class="id" title="notation">]</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Implicit</span> <span class="id" title="keyword">Types</span> <span class="id" title="var">u</span> <span class="id" title="var">v</span> : <a class="idref" href="mathcomp.algebra.matrix.html#671572f33ba80408e4afccdda3f8ba22"><span class="id" title="notation">{'</span></a><a class="idref" href="mathcomp.algebra.matrix.html#671572f33ba80408e4afccdda3f8ba22"><span class="id" title="notation">GL_n</span></a><a class="idref" href="mathcomp.algebra.matrix.html#671572f33ba80408e4afccdda3f8ba22"><span class="id" title="notation">[</span></a><a class="idref" href="mathcomp.algebra.matrix.html#GL_unit.R"><span class="id" title="variable">R</span></a><a class="idref" href="mathcomp.algebra.matrix.html#671572f33ba80408e4afccdda3f8ba22"><span class="id" title="notation">]}</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="GL_1E"><span class="id" title="lemma">GL_1E</span></a> : <a class="idref" href="mathcomp.algebra.matrix.html#GLval"><span class="id" title="definition">GLval</span></a> 1 <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> 1. <br/> +<span class="id" title="keyword">Lemma</span> <a name="GL_VE"><span class="id" title="lemma">GL_VE</span></a> <span class="id" title="var">u</span> : <a class="idref" href="mathcomp.algebra.matrix.html#GLval"><span class="id" title="definition">GLval</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#u"><span class="id" title="variable">u</span></a><a class="idref" href="mathcomp.fingroup.fingroup.html#a605acbeae7597f74f5a9b816ed8a717"><span class="id" title="notation">^-1</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#f3016d4e55aa553d3e912592ec65e342"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.matrix.html#GLval"><span class="id" title="definition">GLval</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#u"><span class="id" title="variable">u</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#f3016d4e55aa553d3e912592ec65e342"><span class="id" title="notation">)^-1</span></a>. <br/> +<span class="id" title="keyword">Lemma</span> <a name="GL_VxE"><span class="id" title="lemma">GL_VxE</span></a> <span class="id" title="var">u</span> : <a class="idref" href="mathcomp.algebra.matrix.html#GLval"><span class="id" title="definition">GLval</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#u"><span class="id" title="variable">u</span></a><a class="idref" href="mathcomp.fingroup.fingroup.html#a605acbeae7597f74f5a9b816ed8a717"><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.matrix.html#invmx"><span class="id" title="definition">invmx</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#u"><span class="id" title="variable">u</span></a>. <br/> +<span class="id" title="keyword">Lemma</span> <a name="GL_ME"><span class="id" title="lemma">GL_ME</span></a> <span class="id" title="var">u</span> <span class="id" title="var">v</span> : <a class="idref" href="mathcomp.algebra.matrix.html#GLval"><span class="id" title="definition">GLval</span></a> (<a class="idref" href="mathcomp.algebra.matrix.html#u"><span class="id" title="variable">u</span></a> <a class="idref" href="mathcomp.fingroup.fingroup.html#169fb610eeaa28cebf8ec36928167473"><span class="id" title="notation">×</span></a> <a class="idref" href="mathcomp.algebra.matrix.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.matrix.html#GLval"><span class="id" title="definition">GLval</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#u"><span class="id" title="variable">u</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#22058a36a53dac65c94ca403bc62650a"><span class="id" title="notation">×</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#GLval"><span class="id" title="definition">GLval</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#v"><span class="id" title="variable">v</span></a>. <br/> +<span class="id" title="keyword">Lemma</span> <a name="GL_MxE"><span class="id" title="lemma">GL_MxE</span></a> <span class="id" title="var">u</span> <span class="id" title="var">v</span> : <a class="idref" href="mathcomp.algebra.matrix.html#GLval"><span class="id" title="definition">GLval</span></a> (<a class="idref" href="mathcomp.algebra.matrix.html#u"><span class="id" title="variable">u</span></a> <a class="idref" href="mathcomp.fingroup.fingroup.html#169fb610eeaa28cebf8ec36928167473"><span class="id" title="notation">×</span></a> <a class="idref" href="mathcomp.algebra.matrix.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.matrix.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.matrix.html#v"><span class="id" title="variable">v</span></a>. <br/> +<span class="id" title="keyword">Lemma</span> <a name="GL_unit"><span class="id" title="lemma">GL_unit</span></a> <span class="id" title="var">u</span> : <a class="idref" href="mathcomp.algebra.matrix.html#GLval"><span class="id" title="definition">GLval</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#u"><span class="id" title="variable">u</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#1e40fee506a85b20590ef299005b003d"><span class="id" title="notation">\</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#1e40fee506a85b20590ef299005b003d"><span class="id" title="notation">is</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#1e40fee506a85b20590ef299005b003d"><span class="id" title="notation">a</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.unit"><span class="id" title="definition">GRing.unit</span></a>. <br/> +<span class="id" title="keyword">Lemma</span> <a name="GL_unitmx"><span class="id" title="lemma">GL_unitmx</span></a> <span class="id" title="var">u</span> : <a class="idref" href="mathcomp.ssreflect.eqtype.html#val"><span class="id" title="projection">val</span></a> <a class="idref" href="mathcomp.algebra.matrix.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.matrix.html#unitmx"><span class="id" title="definition">unitmx</span></a>. <br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="GL_det"><span class="id" title="lemma">GL_det</span></a> <span class="id" title="var">u</span> : <a class="idref" href="mathcomp.algebra.matrix.html#eb4ffa5ff7cedec9d00c8af444fb9631"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.algebra.matrix.html#eb4ffa5ff7cedec9d00c8af444fb9631"><span class="id" title="notation">det</span></a> <a class="idref" href="mathcomp.algebra.matrix.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> 0.<br/> + +<br/> +<span class="id" title="keyword">End</span> <a class="idref" href="mathcomp.algebra.matrix.html#GL_unit"><span class="id" title="section">GL_unit</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Notation</span> <a name="9d15bf4f7c2b7d6b94fee6bdd940e5b4"><span class="id" title="notation">"</span></a>''GL_' n [ R ]" := (<a class="idref" href="mathcomp.algebra.matrix.html#GLgroup"><span class="id" title="definition">GLgroup</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">R</span>))<br/> + (<span class="id" title="tactic">at</span> <span class="id" title="keyword">level</span> 8, <span class="id" title="var">n</span> <span class="id" title="tactic">at</span> <span class="id" title="keyword">level</span> 2, <span class="id" title="var">format</span> "''GL_' n [ R ]") : <span class="id" title="var">group_scope</span>.<br/> +<span class="id" title="keyword">Notation</span> <a name="6fd9f66265063abfc4b6d9b6bff4ad18"><span class="id" title="notation">"</span></a>''GL_' n ( p )" := <a class="idref" href="mathcomp.algebra.matrix.html#9d15bf4f7c2b7d6b94fee6bdd940e5b4"><span class="id" title="notation">'</span></a><a class="idref" href="mathcomp.algebra.matrix.html#9d15bf4f7c2b7d6b94fee6bdd940e5b4"><span class="id" title="notation">GL_n</span></a><a class="idref" href="mathcomp.algebra.matrix.html#9d15bf4f7c2b7d6b94fee6bdd940e5b4"><span class="id" title="notation">[</span></a><a class="idref" href="mathcomp.algebra.zmodp.html#ac70144de8117a1d767eef28420399d1"><span class="id" title="notation">'</span></a><a class="idref" href="mathcomp.algebra.zmodp.html#ac70144de8117a1d767eef28420399d1"><span class="id" title="notation">F_p</span></a><a class="idref" href="mathcomp.algebra.matrix.html#9d15bf4f7c2b7d6b94fee6bdd940e5b4"><span class="id" title="notation">]</span></a><br/> + (<span class="id" title="tactic">at</span> <span class="id" title="keyword">level</span> 8, <span class="id" title="var">n</span> <span class="id" title="tactic">at</span> <span class="id" title="keyword">level</span> 2, <span class="id" title="var">p</span> <span class="id" title="tactic">at</span> <span class="id" title="keyword">level</span> 10,<br/> + <span class="id" title="var">format</span> "''GL_' n ( p )") : <span class="id" title="var">group_scope</span>.<br/> +<span class="id" title="keyword">Notation</span> <a name="46fad47128e414c8220d4bc3387f4515"><span class="id" title="notation">"</span></a>''GL_' n [ R ]" := (<a class="idref" href="mathcomp.algebra.matrix.html#GLgroup_group"><span class="id" title="definition">GLgroup_group</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">R</span>)) : <span class="id" title="var">Group_scope</span>.<br/> +<span class="id" title="keyword">Notation</span> <a name="2a3dce49bb44857c2daea40e180cc17a"><span class="id" title="notation">"</span></a>''GL_' n ( p )" := (<a class="idref" href="mathcomp.algebra.matrix.html#GLgroup_group"><span class="id" title="definition">GLgroup_group</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> <a class="idref" href="mathcomp.algebra.zmodp.html#ac70144de8117a1d767eef28420399d1"><span class="id" title="notation">'</span></a><a class="idref" href="mathcomp.algebra.zmodp.html#ac70144de8117a1d767eef28420399d1"><span class="id" title="notation">F_p</span></a>)) : <span class="id" title="var">Group_scope</span>.<br/> + +<br/> +</div> + +<div class="doc"> + Matrices over a domain ****************************** +</div> +<div class="code"> + +<br/> +<span class="id" title="keyword">Section</span> <a name="MatrixDomain"><span class="id" title="section">MatrixDomain</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Variable</span> <a name="MatrixDomain.R"><span class="id" title="variable">R</span></a> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.IntegralDomain.Exports.idomainType"><span class="id" title="abbreviation">idomainType</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="scalemx_eq0"><span class="id" title="lemma">scalemx_eq0</span></a> <span class="id" title="var">m</span> <span class="id" title="var">n</span> <span class="id" title="var">a</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.matrix.html#MatrixDomain.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.matrix.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.matrix.html#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/> + <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.matrix.html#a"><span class="id" title="variable">a</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#81f8078534dcbb7e13a32d292f766525"><span class="id" title="notation">*:</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#A"><span class="id" title="variable">A</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#17d28d004d0863cb022d4ce832ddaaae"><span class="id" title="notation">==</span></a> 0<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">)</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#14a7a9c7dc61f86bfb664d400fabaf8a"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.matrix.html#a"><span class="id" title="variable">a</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#17d28d004d0863cb022d4ce832ddaaae"><span class="id" title="notation">==</span></a> 0<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#14a7a9c7dc61f86bfb664d400fabaf8a"><span class="id" title="notation">)</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#14a7a9c7dc61f86bfb664d400fabaf8a"><span class="id" title="notation">||</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#14a7a9c7dc61f86bfb664d400fabaf8a"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.matrix.html#A"><span class="id" title="variable">A</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#17d28d004d0863cb022d4ce832ddaaae"><span class="id" title="notation">==</span></a> 0<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#14a7a9c7dc61f86bfb664d400fabaf8a"><span class="id" title="notation">)</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="scalemx_inj"><span class="id" title="lemma">scalemx_inj</span></a> <span class="id" title="var">m</span> <span class="id" title="var">n</span> <span class="id" title="var">a</span> :<br/> + <a class="idref" href="mathcomp.algebra.matrix.html#a"><span class="id" title="variable">a</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#b1eeadc2feabc7422252baa895418c7b"><span class="id" title="notation">!=</span></a> 0 <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#injective"><span class="id" title="definition">injective</span></a> ( <a class="idref" href="mathcomp.algebra.ssralg.html#75c106c115e1ca6097cf58b45ce663bd"><span class="id" title="notation">*:%</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#75c106c115e1ca6097cf58b45ce663bd"><span class="id" title="notation">R</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#75c106c115e1ca6097cf58b45ce663bd"><span class="id" title="notation">a</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssreflect.html#4509b22bf26e3d6d771897e22bd8bc8f"><span class="id" title="notation">:</span></a> <a class="idref" href="mathcomp.algebra.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.matrix.html#MatrixDomain.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.matrix.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.matrix.html#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="http://coq.inria.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#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.matrix.html#MatrixDomain.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.matrix.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.matrix.html#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/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="det0P"><span class="id" title="lemma">det0P</span></a> <span class="id" title="var">n</span> (<span class="id" title="var">A</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.matrix.html#MatrixDomain.R"><span class="id" title="variable">R</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">_n</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#fe60c20831f772c0c3c288abf68cc42a"><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#fe60c20831f772c0c3c288abf68cc42a"><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.matrix.html#MatrixDomain.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.Logic.html#fe60c20831f772c0c3c288abf68cc42a"><span class="id" title="notation">,</span></a> <a class="idref" href="mathcomp.algebra.matrix.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#fe60c20831f772c0c3c288abf68cc42a"><span class="id" title="notation">&</span></a> <a class="idref" href="mathcomp.algebra.matrix.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.matrix.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> 0) (<a class="idref" href="mathcomp.algebra.matrix.html#eb4ffa5ff7cedec9d00c8af444fb9631"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.algebra.matrix.html#eb4ffa5ff7cedec9d00c8af444fb9631"><span class="id" title="notation">det</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#A"><span class="id" title="variable">A</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#17d28d004d0863cb022d4ce832ddaaae"><span class="id" title="notation">==</span></a> 0).<br/> + +<br/> +<span class="id" title="keyword">End</span> <a class="idref" href="mathcomp.algebra.matrix.html#MatrixDomain"><span class="id" title="section">MatrixDomain</span></a>.<br/> + +<br/> + +<br/> +</div> + +<div class="doc"> + Parametricity at the field level (mx_is_scalar, unit and inverse are only + mapped at this level). +</div> +<div class="code"> +<span class="id" title="keyword">Section</span> <a name="MapFieldMatrix"><span class="id" title="section">MapFieldMatrix</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Variables</span> (<a name="MapFieldMatrix.aF"><span class="id" title="variable">aF</span></a> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Field.Exports.fieldType"><span class="id" title="abbreviation">fieldType</span></a>) (<a name="MapFieldMatrix.rF"><span class="id" title="variable">rF</span></a> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ComUnitRing.Exports.comUnitRingType"><span class="id" title="abbreviation">comUnitRingType</span></a>) (<a name="MapFieldMatrix.f"><span class="id" title="variable">f</span></a> : <a class="idref" href="mathcomp.algebra.ssralg.html#0c709ebe43ddbd7719f75250a7b916d9"><span class="id" title="notation">{</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#0c709ebe43ddbd7719f75250a7b916d9"><span class="id" title="notation">rmorphism</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#aF"><span class="id" title="variable">aF</span></a> <a class="idref" href="http://coq.inria.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#rF"><span class="id" title="variable">rF</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#0c709ebe43ddbd7719f75250a7b916d9"><span class="id" title="notation">}</span></a>).<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="map_mx_inj"><span class="id" title="lemma">map_mx_inj</span></a> <span class="id" title="var">m</span> <span class="id" title="var">n</span> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#injective"><span class="id" title="definition">injective</span></a> ((<a class="idref" href="mathcomp.algebra.matrix.html#map_mx"><span class="id" title="definition">map_mx</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#MapFieldMatrix.f"><span class="id" title="variable">f</span></a>) <a class="idref" href="mathcomp.algebra.matrix.html#m"><span class="id" title="variable">m</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#n"><span class="id" title="variable">n</span></a>).<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="map_mx_is_scalar"><span class="id" title="lemma">map_mx_is_scalar</span></a> <span class="id" title="var">n</span> (<span class="id" title="var">A</span> : <a class="idref" href="mathcomp.algebra.matrix.html#1ce49b162eb757fc4a2e0ce4df0ee5cd"><span class="id" title="notation">'</span></a><a class="idref" href="mathcomp.algebra.matrix.html#1ce49b162eb757fc4a2e0ce4df0ee5cd"><span class="id" title="notation">M_n</span></a>) : <a class="idref" href="mathcomp.algebra.matrix.html#is_scalar_mx"><span class="id" title="definition">is_scalar_mx</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#A"><span class="id" title="variable">A</span></a><a class="idref" href="mathcomp.algebra.matrix.html#f87866ba8cd1624e1947136fd0b7ea04"><span class="id" title="notation">^</span></a><a class="idref" href="mathcomp.algebra.matrix.html#f87866ba8cd1624e1947136fd0b7ea04"><span class="id" title="notation">f</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#is_scalar_mx"><span class="id" title="definition">is_scalar_mx</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#A"><span class="id" title="variable">A</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="map_unitmx"><span class="id" title="lemma">map_unitmx</span></a> <span class="id" title="var">n</span> (<span class="id" title="var">A</span> : <a class="idref" href="mathcomp.algebra.matrix.html#1ce49b162eb757fc4a2e0ce4df0ee5cd"><span class="id" title="notation">'</span></a><a class="idref" href="mathcomp.algebra.matrix.html#1ce49b162eb757fc4a2e0ce4df0ee5cd"><span class="id" title="notation">M_n</span></a>) : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.matrix.html#A"><span class="id" title="variable">A</span></a><a class="idref" href="mathcomp.algebra.matrix.html#f87866ba8cd1624e1947136fd0b7ea04"><span class="id" title="notation">^</span></a><a class="idref" href="mathcomp.algebra.matrix.html#f87866ba8cd1624e1947136fd0b7ea04"><span class="id" title="notation">f</span></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.matrix.html#unitmx"><span class="id" title="definition">unitmx</span></a><a class="idref" href="http://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.matrix.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.matrix.html#unitmx"><span class="id" title="definition">unitmx</span></a><a 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="map_mx_unit"><span class="id" title="lemma">map_mx_unit</span></a> <span class="id" title="var">n'</span> (<span class="id" title="var">A</span> : <a class="idref" href="mathcomp.algebra.matrix.html#1ce49b162eb757fc4a2e0ce4df0ee5cd"><span class="id" title="notation">'</span></a><a class="idref" href="mathcomp.algebra.matrix.html#1ce49b162eb757fc4a2e0ce4df0ee5cd"><span class="id" title="notation">M_n'</span></a><a class="idref" href="mathcomp.ssreflect.ssrnat.html#361454269931ea8643f7b402f2ab7222"><span class="id" title="notation">.+1</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.matrix.html#A"><span class="id" title="variable">A</span></a><a class="idref" href="mathcomp.algebra.matrix.html#f87866ba8cd1624e1947136fd0b7ea04"><span class="id" title="notation">^</span></a><a class="idref" href="mathcomp.algebra.matrix.html#f87866ba8cd1624e1947136fd0b7ea04"><span class="id" title="notation">f</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#1e40fee506a85b20590ef299005b003d"><span class="id" title="notation">\</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#1e40fee506a85b20590ef299005b003d"><span class="id" title="notation">is</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#1e40fee506a85b20590ef299005b003d"><span class="id" title="notation">a</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.unit"><span class="id" title="definition">GRing.unit</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">)</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.matrix.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#1e40fee506a85b20590ef299005b003d"><span class="id" title="notation">\</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#1e40fee506a85b20590ef299005b003d"><span class="id" title="notation">is</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#1e40fee506a85b20590ef299005b003d"><span class="id" title="notation">a</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.unit"><span class="id" title="definition">GRing.unit</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">)</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="map_invmx"><span class="id" title="lemma">map_invmx</span></a> <span class="id" title="var">n</span> (<span class="id" title="var">A</span> : <a class="idref" href="mathcomp.algebra.matrix.html#1ce49b162eb757fc4a2e0ce4df0ee5cd"><span class="id" title="notation">'</span></a><a class="idref" href="mathcomp.algebra.matrix.html#1ce49b162eb757fc4a2e0ce4df0ee5cd"><span class="id" title="notation">M_n</span></a>) : <a class="idref" href="mathcomp.algebra.matrix.html#f87866ba8cd1624e1947136fd0b7ea04"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.matrix.html#invmx"><span class="id" title="definition">invmx</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#A"><span class="id" title="variable">A</span></a><a class="idref" href="mathcomp.algebra.matrix.html#f87866ba8cd1624e1947136fd0b7ea04"><span class="id" title="notation">)^</span></a><a class="idref" href="mathcomp.algebra.matrix.html#f87866ba8cd1624e1947136fd0b7ea04"><span class="id" title="notation">f</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#invmx"><span class="id" title="definition">invmx</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#A"><span class="id" title="variable">A</span></a><a class="idref" href="mathcomp.algebra.matrix.html#f87866ba8cd1624e1947136fd0b7ea04"><span class="id" title="notation">^</span></a><a class="idref" href="mathcomp.algebra.matrix.html#f87866ba8cd1624e1947136fd0b7ea04"><span class="id" title="notation">f</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="map_mx_inv"><span class="id" title="lemma">map_mx_inv</span></a> <span class="id" title="var">n'</span> (<span class="id" title="var">A</span> : <a class="idref" href="mathcomp.algebra.matrix.html#1ce49b162eb757fc4a2e0ce4df0ee5cd"><span class="id" title="notation">'</span></a><a class="idref" href="mathcomp.algebra.matrix.html#1ce49b162eb757fc4a2e0ce4df0ee5cd"><span class="id" title="notation">M_n'</span></a><a class="idref" href="mathcomp.ssreflect.ssrnat.html#361454269931ea8643f7b402f2ab7222"><span class="id" title="notation">.+1</span></a>) : <a class="idref" href="mathcomp.algebra.matrix.html#A"><span class="id" title="variable">A</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#f3016d4e55aa553d3e912592ec65e342"><span class="id" title="notation">^-1</span></a><a class="idref" href="mathcomp.algebra.matrix.html#f87866ba8cd1624e1947136fd0b7ea04"><span class="id" title="notation">^</span></a><a class="idref" href="mathcomp.algebra.matrix.html#f87866ba8cd1624e1947136fd0b7ea04"><span class="id" title="notation">f</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#A"><span class="id" title="variable">A</span></a><a class="idref" href="mathcomp.algebra.matrix.html#f87866ba8cd1624e1947136fd0b7ea04"><span class="id" title="notation">^</span></a><a class="idref" href="mathcomp.algebra.matrix.html#f87866ba8cd1624e1947136fd0b7ea04"><span class="id" title="notation">f</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#f3016d4e55aa553d3e912592ec65e342"><span class="id" title="notation">^-1</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="map_mx_eq0"><span class="id" title="lemma">map_mx_eq0</span></a> <span class="id" title="var">m</span> <span class="id" title="var">n</span> (<span class="id" title="var">A</span> : <a class="idref" href="mathcomp.algebra.matrix.html#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.matrix.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.matrix.html#n"><span class="id" title="variable">n</span></a><a class="idref" href="mathcomp.algebra.matrix.html#cb37620352ad6b90a047a361359e2f04"><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.matrix.html#A"><span class="id" title="variable">A</span></a><a class="idref" href="mathcomp.algebra.matrix.html#f87866ba8cd1624e1947136fd0b7ea04"><span class="id" title="notation">^</span></a><a class="idref" href="mathcomp.algebra.matrix.html#f87866ba8cd1624e1947136fd0b7ea04"><span class="id" title="notation">f</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.matrix.html#A"><span class="id" title="variable">A</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#17d28d004d0863cb022d4ce832ddaaae"><span class="id" title="notation">==</span></a> 0<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">)</span></a>.<br/> + +<br/> +<span class="id" title="keyword">End</span> <a class="idref" href="mathcomp.algebra.matrix.html#MapFieldMatrix"><span class="id" title="section">MapFieldMatrix</span></a>.<br/> + +<br/> +</div> + +<div class="doc"> + LUP decomposion ***************************** +</div> +<div class="code"> + +<br/> +<span class="id" title="keyword">Section</span> <a name="CormenLUP"><span class="id" title="section">CormenLUP</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Variable</span> <a name="CormenLUP.F"><span class="id" title="variable">F</span></a> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Field.Exports.fieldType"><span class="id" title="abbreviation">fieldType</span></a>.<br/> + +<br/> +</div> + +<div class="doc"> + Decomposition of the matrix A to P A = L U with +<ul class="doclist"> +<li> P a permutation matrix + +</li> +<li> L a unipotent lower triangular matrix + +</li> +<li> U an upper triangular matrix +</li> +</ul> + +</div> +<div class="code"> + +<br/> +<span class="id" title="keyword">Fixpoint</span> <a name="cormen_lup"><span class="id" title="definition">cormen_lup</span></a> {<span class="id" title="var">n</span>} :=<br/> + <span class="id" title="keyword">match</span> <a class="idref" href="mathcomp.algebra.matrix.html#n"><span class="id" title="variable">n</span></a> <span class="id" title="keyword">return</span> <span class="id" title="keyword">let</span> <span class="id" title="var">M</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.matrix.html#CormenLUP.F"><span class="id" title="variable">F</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">_n</span></a><a class="idref" href="mathcomp.ssreflect.ssrnat.html#361454269931ea8643f7b402f2ab7222"><span class="id" title="notation">.+1</span></a> <span class="id" title="tactic">in</span> <a class="idref" href="mathcomp.algebra.matrix.html#M"><span class="id" title="variable">M</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#M"><span class="id" title="variable">M</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#d19c7eafd0e2d195d10df94b392087b5"><span class="id" title="notation">×</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#M"><span class="id" title="variable">M</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#d19c7eafd0e2d195d10df94b392087b5"><span class="id" title="notation">×</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#M"><span class="id" title="variable">M</span></a> <span class="id" title="keyword">with</span><br/> + | 0 ⇒ <span class="id" title="keyword">fun</span> <span class="id" title="var">A</span> ⇒ <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#44400027531d4bc3f586a1997dc874c0"><span class="id" title="notation">(</span></a>1<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#44400027531d4bc3f586a1997dc874c0"><span class="id" title="notation">,</span></a> 1<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#44400027531d4bc3f586a1997dc874c0"><span class="id" title="notation">,</span></a> <a class="idref" href="mathcomp.algebra.matrix.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.Datatypes.html#44400027531d4bc3f586a1997dc874c0"><span class="id" title="notation">)</span></a><br/> + | <span class="id" title="var">_</span><a class="idref" href="mathcomp.ssreflect.ssrnat.html#361454269931ea8643f7b402f2ab7222"><span class="id" title="notation">.+1</span></a> ⇒ <span class="id" title="keyword">fun</span> <span class="id" title="var">A</span> ⇒<br/> + <span class="id" title="keyword">let</span> <span class="id" title="var">k</span> := <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#odflt"><span class="id" title="abbreviation">odflt</span></a> 0 <a class="idref" href="mathcomp.ssreflect.fintype.html#705e11e709bb3e1492e885a674508f9a"><span class="id" title="notation">[</span></a><a class="idref" href="mathcomp.ssreflect.fintype.html#705e11e709bb3e1492e885a674508f9a"><span class="id" title="notation">pick</span></a> <span class="id" title="var">k</span> <a class="idref" href="mathcomp.ssreflect.fintype.html#705e11e709bb3e1492e885a674508f9a"><span class="id" title="notation">|</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#A"><span class="id" title="variable">A</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#k"><span class="id" title="variable">k</span></a> 0 <a class="idref" href="mathcomp.ssreflect.eqtype.html#b1eeadc2feabc7422252baa895418c7b"><span class="id" title="notation">!=</span></a> 0<a class="idref" href="mathcomp.ssreflect.fintype.html#705e11e709bb3e1492e885a674508f9a"><span class="id" title="notation">]</span></a> <span class="id" title="tactic">in</span><br/> + <span class="id" title="keyword">let</span> <span class="id" title="var">A1</span> : <a class="idref" href="mathcomp.algebra.matrix.html#ff2814b13b0b9cfba84a98df9a2ac866"><span class="id" title="notation">'</span></a><a class="idref" href="mathcomp.algebra.matrix.html#ff2814b13b0b9cfba84a98df9a2ac866"><span class="id" title="notation">M_</span></a><a class="idref" href="mathcomp.algebra.matrix.html#ff2814b13b0b9cfba84a98df9a2ac866"><span class="id" title="notation">(</span></a>1 <a class="idref" href="mathcomp.ssreflect.ssrnat.html#b3eea360671e1b32b18a26e15b3aace3"><span class="id" title="notation">+</span></a> <span class="id" title="var">_</span><a class="idref" href="mathcomp.algebra.matrix.html#ff2814b13b0b9cfba84a98df9a2ac866"><span class="id" title="notation">)</span></a> := <a class="idref" href="mathcomp.algebra.matrix.html#xrow"><span class="id" title="definition">xrow</span></a> 0 <a class="idref" href="mathcomp.algebra.matrix.html#k"><span class="id" title="variable">k</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#A"><span class="id" title="variable">A</span></a> <span class="id" title="tactic">in</span><br/> + <span class="id" title="keyword">let</span> <span class="id" title="var">P1</span> : <a class="idref" href="mathcomp.algebra.matrix.html#ff2814b13b0b9cfba84a98df9a2ac866"><span class="id" title="notation">'</span></a><a class="idref" href="mathcomp.algebra.matrix.html#ff2814b13b0b9cfba84a98df9a2ac866"><span class="id" title="notation">M_</span></a><a class="idref" href="mathcomp.algebra.matrix.html#ff2814b13b0b9cfba84a98df9a2ac866"><span class="id" title="notation">(</span></a>1 <a class="idref" href="mathcomp.ssreflect.ssrnat.html#b3eea360671e1b32b18a26e15b3aace3"><span class="id" title="notation">+</span></a> <span class="id" title="var">_</span><a class="idref" href="mathcomp.algebra.matrix.html#ff2814b13b0b9cfba84a98df9a2ac866"><span class="id" title="notation">)</span></a> := <a class="idref" href="mathcomp.algebra.matrix.html#tperm_mx"><span class="id" title="definition">tperm_mx</span></a> 0 <a class="idref" href="mathcomp.algebra.matrix.html#k"><span class="id" title="variable">k</span></a> <span class="id" title="tactic">in</span><br/> + <span class="id" title="keyword">let</span> <span class="id" title="var">Schur</span> := <a class="idref" href="mathcomp.algebra.matrix.html#9c6b777e699b0b93592b907e7450465e"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#f3016d4e55aa553d3e912592ec65e342"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.matrix.html#A"><span class="id" title="variable">A</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#k"><span class="id" title="variable">k</span></a> 0<a class="idref" href="mathcomp.algebra.ssralg.html#f3016d4e55aa553d3e912592ec65e342"><span class="id" title="notation">)^-1</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#81f8078534dcbb7e13a32d292f766525"><span class="id" title="notation">*:</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#dlsubmx"><span class="id" title="definition">dlsubmx</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#A1"><span class="id" title="variable">A1</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">×</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.matrix.html#ursubmx"><span class="id" title="definition">ursubmx</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#A1"><span class="id" title="variable">A1</span></a> <span class="id" title="tactic">in</span><br/> + <span class="id" title="keyword">let</span>: <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#44400027531d4bc3f586a1997dc874c0"><span class="id" title="notation">(</span></a><span class="id" title="var">P2</span><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#44400027531d4bc3f586a1997dc874c0"><span class="id" title="notation">,</span></a> <span class="id" title="var">L2</span><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#44400027531d4bc3f586a1997dc874c0"><span class="id" title="notation">,</span></a> <span class="id" title="var">U2</span><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#44400027531d4bc3f586a1997dc874c0"><span class="id" title="notation">)</span></a> := <a class="idref" href="mathcomp.algebra.matrix.html#cormen_lup"><span class="id" title="definition">cormen_lup</span></a> (<a class="idref" href="mathcomp.algebra.matrix.html#drsubmx"><span class="id" title="definition">drsubmx</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#A1"><span class="id" title="variable">A1</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#d70623330b2787db6b196e37db7d8f45"><span class="id" title="notation">-</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#Schur"><span class="id" title="variable">Schur</span></a>) <span class="id" title="tactic">in</span><br/> + <span class="id" title="keyword">let</span> <span class="id" title="var">P</span> := <a class="idref" href="mathcomp.algebra.matrix.html#block_mx"><span class="id" title="definition">block_mx</span></a> 1 0 0 <span class="id" title="var">P2</span> <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.matrix.html#P1"><span class="id" title="variable">P1</span></a> <span class="id" title="tactic">in</span><br/> + <span class="id" title="keyword">let</span> <span class="id" title="var">L</span> := <a class="idref" href="mathcomp.algebra.matrix.html#block_mx"><span class="id" title="definition">block_mx</span></a> 1 0 (<a class="idref" href="mathcomp.algebra.ssralg.html#f3016d4e55aa553d3e912592ec65e342"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.matrix.html#A"><span class="id" title="variable">A</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#k"><span class="id" title="variable">k</span></a> 0<a class="idref" href="mathcomp.algebra.ssralg.html#f3016d4e55aa553d3e912592ec65e342"><span class="id" title="notation">)^-1</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><span class="id" title="var">P2</span> <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.matrix.html#dlsubmx"><span class="id" title="definition">dlsubmx</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#A1"><span class="id" title="variable">A1</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#81f8078534dcbb7e13a32d292f766525"><span class="id" title="notation">)</span></a>) <span class="id" title="var">L2</span> <span class="id" title="tactic">in</span><br/> + <span class="id" title="keyword">let</span> <span class="id" title="var">U</span> := <a class="idref" href="mathcomp.algebra.matrix.html#block_mx"><span class="id" title="definition">block_mx</span></a> (<a class="idref" href="mathcomp.algebra.matrix.html#ulsubmx"><span class="id" title="definition">ulsubmx</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#A1"><span class="id" title="variable">A1</span></a>) (<a class="idref" href="mathcomp.algebra.matrix.html#ursubmx"><span class="id" title="definition">ursubmx</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#A1"><span class="id" title="variable">A1</span></a>) 0 <span class="id" title="var">U2</span> <span class="id" title="tactic">in</span><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.matrix.html#P"><span class="id" title="variable">P</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#44400027531d4bc3f586a1997dc874c0"><span class="id" title="notation">,</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#L"><span class="id" title="variable">L</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.matrix.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#44400027531d4bc3f586a1997dc874c0"><span class="id" title="notation">)</span></a><br/> + <span class="id" title="keyword">end</span>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="cormen_lup_perm"><span class="id" title="lemma">cormen_lup_perm</span></a> <span class="id" title="var">n</span> (<span class="id" title="var">A</span> : <a class="idref" href="mathcomp.algebra.matrix.html#1ce49b162eb757fc4a2e0ce4df0ee5cd"><span class="id" title="notation">'</span></a><a class="idref" href="mathcomp.algebra.matrix.html#1ce49b162eb757fc4a2e0ce4df0ee5cd"><span class="id" title="notation">M_n</span></a><a class="idref" href="mathcomp.ssreflect.ssrnat.html#361454269931ea8643f7b402f2ab7222"><span class="id" title="notation">.+1</span></a>) : <a class="idref" href="mathcomp.algebra.matrix.html#is_perm_mx"><span class="id" title="definition">is_perm_mx</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#c4877bbfe60d8f22b47ac99ace86216a"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.matrix.html#cormen_lup"><span class="id" title="definition">cormen_lup</span></a> <a class="idref" href="mathcomp.algebra.matrix.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.ssrfun.html#c4877bbfe60d8f22b47ac99ace86216a"><span class="id" title="notation">).1.1</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="cormen_lup_correct"><span class="id" title="lemma">cormen_lup_correct</span></a> <span class="id" title="var">n</span> (<span class="id" title="var">A</span> : <a class="idref" href="mathcomp.algebra.matrix.html#1ce49b162eb757fc4a2e0ce4df0ee5cd"><span class="id" title="notation">'</span></a><a class="idref" href="mathcomp.algebra.matrix.html#1ce49b162eb757fc4a2e0ce4df0ee5cd"><span class="id" title="notation">M_n</span></a><a class="idref" href="mathcomp.ssreflect.ssrnat.html#361454269931ea8643f7b402f2ab7222"><span class="id" title="notation">.+1</span></a>) :<br/> + <span class="id" title="keyword">let</span>: <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#44400027531d4bc3f586a1997dc874c0"><span class="id" title="notation">(</span></a><span class="id" title="var">P</span><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#44400027531d4bc3f586a1997dc874c0"><span class="id" title="notation">,</span></a> <span class="id" title="var">L</span><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#44400027531d4bc3f586a1997dc874c0"><span class="id" title="notation">,</span></a> <span class="id" title="var">U</span><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#44400027531d4bc3f586a1997dc874c0"><span class="id" title="notation">)</span></a> := <a class="idref" href="mathcomp.algebra.matrix.html#cormen_lup"><span class="id" title="definition">cormen_lup</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#A"><span class="id" title="variable">A</span></a> <span class="id" title="tactic">in</span> <span class="id" title="var">P</span> <a class="idref" href="mathcomp.algebra.ssralg.html#22058a36a53dac65c94ca403bc62650a"><span class="id" title="notation">×</span></a> <a class="idref" href="mathcomp.algebra.matrix.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> <span class="id" title="var">L</span> <a class="idref" href="mathcomp.algebra.ssralg.html#22058a36a53dac65c94ca403bc62650a"><span class="id" title="notation">×</span></a> <span class="id" title="var">U</span>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="cormen_lup_detL"><span class="id" title="lemma">cormen_lup_detL</span></a> <span class="id" title="var">n</span> (<span class="id" title="var">A</span> : <a class="idref" href="mathcomp.algebra.matrix.html#1ce49b162eb757fc4a2e0ce4df0ee5cd"><span class="id" title="notation">'</span></a><a class="idref" href="mathcomp.algebra.matrix.html#1ce49b162eb757fc4a2e0ce4df0ee5cd"><span class="id" title="notation">M_n</span></a><a class="idref" href="mathcomp.ssreflect.ssrnat.html#361454269931ea8643f7b402f2ab7222"><span class="id" title="notation">.+1</span></a>) : <a class="idref" href="mathcomp.algebra.matrix.html#eb4ffa5ff7cedec9d00c8af444fb9631"><span class="id" title="notation">\</span></a><a class="idref" href="mathcomp.algebra.matrix.html#eb4ffa5ff7cedec9d00c8af444fb9631"><span class="id" title="notation">det</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#c4877bbfe60d8f22b47ac99ace86216a"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.matrix.html#cormen_lup"><span class="id" title="definition">cormen_lup</span></a> <a class="idref" href="mathcomp.algebra.matrix.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.ssrfun.html#c4877bbfe60d8f22b47ac99ace86216a"><span class="id" title="notation">).1</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#f4827404159513e7fd691b60b7877737"><span class="id" title="notation">.2</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> 1.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="cormen_lup_lower"><span class="id" title="lemma">cormen_lup_lower</span></a> <span class="id" title="var">n</span> <span class="id" title="var">A</span> (<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><a class="idref" href="mathcomp.ssreflect.ssrnat.html#361454269931ea8643f7b402f2ab7222"><span class="id" title="notation">.+1</span></a>) :<br/> + <a class="idref" href="mathcomp.algebra.matrix.html#i"><span class="id" title="variable">i</span></a> <a class="idref" href="mathcomp.ssreflect.ssrnat.html#9b077c369e19739ef880736ba34623ff"><span class="id" title="notation">≤</span></a> <a class="idref" href="mathcomp.algebra.matrix.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.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#c4877bbfe60d8f22b47ac99ace86216a"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.matrix.html#cormen_lup"><span class="id" title="definition">cormen_lup</span></a> <a class="idref" href="mathcomp.algebra.matrix.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.ssrfun.html#c4877bbfe60d8f22b47ac99ace86216a"><span class="id" title="notation">).1</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#f4827404159513e7fd691b60b7877737"><span class="id" title="notation">.2</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#i"><span class="id" title="variable">i</span></a> <a class="idref" href="mathcomp.algebra.matrix.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.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.matrix.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.matrix.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="cormen_lup_upper"><span class="id" title="lemma">cormen_lup_upper</span></a> <span class="id" title="var">n</span> <span class="id" title="var">A</span> (<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><a class="idref" href="mathcomp.ssreflect.ssrnat.html#361454269931ea8643f7b402f2ab7222"><span class="id" title="notation">.+1</span></a>) :<br/> + <a class="idref" href="mathcomp.algebra.matrix.html#j"><span class="id" title="variable">j</span></a> <a class="idref" href="mathcomp.ssreflect.ssrnat.html#989c98e7ddd65d5bf37c334ff2076de8"><span class="id" title="notation"><</span></a> <a class="idref" href="mathcomp.algebra.matrix.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.ssr.ssrfun.html#f4827404159513e7fd691b60b7877737"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.matrix.html#cormen_lup"><span class="id" title="definition">cormen_lup</span></a> <a class="idref" href="mathcomp.algebra.matrix.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.ssrfun.html#f4827404159513e7fd691b60b7877737"><span class="id" title="notation">).2</span></a> <a class="idref" href="mathcomp.algebra.matrix.html#i"><span class="id" title="variable">i</span></a> <a class="idref" href="mathcomp.algebra.matrix.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.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.matrix.html#CormenLUP.F"><span class="id" title="variable">F</span></a>.<br/> + +<br/> +<span class="id" title="keyword">End</span> <a class="idref" href="mathcomp.algebra.matrix.html#CormenLUP"><span class="id" title="section">CormenLUP</span></a>.<br/> +</div> +</div> + +<div id="footer"> +<hr/><a href="index.html">Index</a><hr/>This page has been generated by <a href="http://coq.inria.fr/">coqdoc</a> +</div> + +</div> + +</body> +</html>
\ No newline at end of file |
