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
.
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
If A
is totally unimodular and each row of B
is all zeros except for at most a single 1
or
a single -1
then fromRows A B
is totally unimodular.
If A
is totally unimodular and each row of B
is all zeros except for at most a single 1
,
then fromRows A B
is totally unimodular.
Alias of the reverse direction of Matrix.fromRows_one_isTotallyUnimodular_iff
.
Alias of the reverse direction of Matrix.one_fromRows_isTotallyUnimodular_iff
.
Alias of the reverse direction of Matrix.fromCols_one_isTotallyUnimodular_iff
.
Alias of the reverse direction of Matrix.one_fromCols_isTotallyUnimodular_iff
.