Elementary row operations #
This file defines row-scaling matrices and row-equivalence.
Main definitions #
Matrix.rowScale i c: the elementary matrix which scales rowibycMatrix.RowEquivalent A B: row-equivalence by left multiplication by an element ofGL
def
Matrix.rowScale
{R : Type u_1}
{m : Type u_2}
[DecidableEq m]
[Zero R]
[One R]
(i : m)
(c : R)
:
Matrix m m R
The elementary matrix scaling row i by c.
Equations
- Matrix.rowScale i c = Matrix.diagonal (Pi.mulSingle i c)
Instances For
@[simp]
theorem
Matrix.rowScale_one
{R : Type u_1}
{m : Type u_2}
[DecidableEq m]
[Zero R]
[One R]
(i : m)
:
@[simp]
theorem
Matrix.rowScale_apply_same
{R : Type u_1}
{m : Type u_2}
[DecidableEq m]
[Zero R]
[One R]
(i : m)
(c : R)
:
@[simp]
theorem
Matrix.rowScale_apply_diag_of_ne
{R : Type u_1}
{m : Type u_2}
[DecidableEq m]
[Zero R]
[One R]
{i a : m}
(h : a ≠ i)
(c : R)
:
@[simp]
theorem
Matrix.rowScale_apply_ne
{R : Type u_1}
{m : Type u_2}
[DecidableEq m]
[Zero R]
[One R]
{i a b : m}
(hab : a ≠ b)
(c : R)
:
def
Matrix.GeneralLinearGroup.rowScale
{R : Type u_1}
{m : Type u_2}
[DecidableEq m]
[CommRing R]
[Fintype m]
(i : m)
(c : Rˣ)
:
GL m R
Matrix.rowScale as an element of GL m R.
Equations
- Matrix.GeneralLinearGroup.rowScale i c = { val := Matrix.rowScale i ↑c, inv := Matrix.rowScale i ↑c⁻¹, val_inv := ⋯, inv_val := ⋯ }
Instances For
@[simp]
theorem
Matrix.GeneralLinearGroup.val_rowScale
{R : Type u_1}
{m : Type u_2}
[DecidableEq m]
[CommRing R]
[Fintype m]
(i : m)
(c : Rˣ)
:
def
Matrix.GeneralLinearGroup.transvection
{R : Type u_1}
{m : Type u_2}
[DecidableEq m]
[CommRing R]
[Fintype m]
(i j : m)
(h : i ≠ j)
(c : R)
:
GL m R
Matrix.transvection as an element of GL.
Equations
- Matrix.GeneralLinearGroup.transvection i j h c = { val := Matrix.transvection i j c, inv := Matrix.transvection i j (-c), val_inv := ⋯, inv_val := ⋯ }
Instances For
@[simp]
theorem
Matrix.GeneralLinearGroup.val_transvection
{R : Type u_1}
{m : Type u_2}
[DecidableEq m]
[CommRing R]
[Fintype m]
(i j : m)
(h : i ≠ j)
(c : R)
:
@[reducible, inline]
abbrev
Matrix.RowEquivalent
{R : Type u_1}
{m : Type u_2}
{n : Type u_3}
[DecidableEq m]
[CommRing R]
[Fintype m]
(A B : Matrix m n R)
:
Row-equivalence via the left action of GL m R on Matrix m n R.
Equations
- A.RowEquivalent B = (B ∈ MulAction.orbit (GL m R) A)
Instances For
theorem
Matrix.rowEquivalent_iff_associated_op_op
{R : Type u_1}
{m : Type u_2}
[DecidableEq m]
[CommRing R]
[Fintype m]
{A B : Matrix m m R}
:
theorem
Matrix.RowEquivalent.refl
{R : Type u_1}
{m : Type u_2}
{n : Type u_3}
[DecidableEq m]
[CommRing R]
[Fintype m]
(A : Matrix m n R)
:
A.RowEquivalent A
theorem
Matrix.RowEquivalent.symm
{R : Type u_1}
{m : Type u_2}
{n : Type u_3}
[DecidableEq m]
[CommRing R]
[Fintype m]
{A B : Matrix m n R}
(h : A.RowEquivalent B)
:
B.RowEquivalent A
theorem
Matrix.RowEquivalent.trans
{R : Type u_1}
{m : Type u_2}
{n : Type u_3}
[DecidableEq m]
[CommRing R]
[Fintype m]
{A B C : Matrix m n R}
(hAB : A.RowEquivalent B)
(hBC : B.RowEquivalent C)
:
A.RowEquivalent C
@[instance_reducible]
def
Matrix.RowEquivalent.setoid
{R : Type u_1}
{m : Type u_2}
{n : Type u_3}
[DecidableEq m]
[CommRing R]
[Fintype m]
:
The row-equivalence relation as a scoped setoid instance.
Equations
- Matrix.RowEquivalent.setoid = { r := Matrix.RowEquivalent, iseqv := ⋯ }
Instances For
theorem
Matrix.rowEquivalent_swap
{R : Type u_1}
{m : Type u_2}
{n : Type u_3}
[DecidableEq m]
[CommRing R]
[Fintype m]
(A : Matrix m n R)
(i j : m)
:
A.RowEquivalent (swap R i j * A)
theorem
Matrix.rowEquivalent_rowScale
{R : Type u_1}
{m : Type u_2}
{n : Type u_3}
[DecidableEq m]
[CommRing R]
[Fintype m]
(A : Matrix m n R)
(i : m)
(c : Rˣ)
:
A.RowEquivalent (rowScale i ↑c * A)
theorem
Matrix.rowEquivalent_transvection
{R : Type u_1}
{m : Type u_2}
{n : Type u_3}
[DecidableEq m]
[CommRing R]
[Fintype m]
(A : Matrix m n R)
(i j : m)
(h : i ≠ j)
(c : R)
:
A.RowEquivalent (transvection i j c * A)