Totally unimodular matrices #
This file defines totally unimodular matrices and provides basic API for them.
Main definitions #
Matrix.IsTotallyUnimodular
: a matrix is totally unimodular iff every square submatrix (not necessarily contiguous) has determinant0
or1
or-1
.
Main results #
Matrix.isTotallyUnimodular_iff
: a matrix is totally unimodular iff every square submatrix (possibly with repeated rows and/or repeated columns) has determinant0
or1
or-1
.Matrix.IsTotallyUnimodular.apply
: entry in a totally unimodular matrix is0
or1
or-1
.
def
Matrix.IsTotallyUnimodular
{m : Type u_1}
{n : Type u_2}
{R : Type u_3}
[CommRing R]
(A : Matrix m n R)
:
A.IsTotallyUnimodular
means that every square submatrix of A
(not necessarily contiguous)
has determinant 0
or 1
or -1
; that is, the determinant is in the range of SignType.cast
.
Equations
- A.IsTotallyUnimodular = ∀ (k : ℕ) (f : Fin k → m) (g : Fin k → n), Function.Injective f → Function.Injective g → (A.submatrix f g).det ∈ Set.range SignType.cast
Instances For
theorem
Matrix.fromRows_row0_isTotallyUnimodular_iff
{m : Type u_1}
{n : Type u_2}
{R : Type u_3}
[CommRing R]
(A : Matrix m n R)
{m' : Type u_4}
:
(A.fromRows (Matrix.row m' 0)).IsTotallyUnimodular ↔ A.IsTotallyUnimodular
theorem
Matrix.fromColumns_col0_isTotallyUnimodular_iff
{m : Type u_1}
{n : Type u_2}
{R : Type u_3}
[CommRing R]
(A : Matrix m n R)
{n' : Type u_4}
:
(A.fromColumns (Matrix.col n' 0)).IsTotallyUnimodular ↔ A.IsTotallyUnimodular