This file defines totally unimodular matrices and provides lemmas about them. It will be soon replaced by the implementation that got into Mathlib (slighlty different but mathematically equivalent).
Is the matrix A
totally unimodular?
Equations
Instances For
theorem
Matrix.TU_adjoin_row0s_iff
{X : Type u_1}
{Y : Type u_2}
{R : Type u_3}
[CommRing R]
(A : Matrix X Y R)
{X' : Type u_4}
:
(A.fromRows (Matrix.row X' 0)).TU ↔ A.TU
theorem
Matrix.TU_adjoin_id_below_iff
{X : Type u_1}
{Y : Type u_2}
{R : Type u_3}
[CommRing R]
[DecidableEq X]
[DecidableEq Y]
(A : Matrix X Y R)
:
(A.fromRows 1).TU ↔ A.TU
theorem
Matrix.TU_adjoin_id_above_iff
{X : Type u_1}
{Y : Type u_2}
{R : Type u_3}
[CommRing R]
[DecidableEq X]
[DecidableEq Y]
(A : Matrix X Y R)
:
(Matrix.fromRows 1 A).TU ↔ A.TU
theorem
Matrix.TU_adjoin_id_left_iff
{X : Type u_1}
{Y : Type u_2}
{R : Type u_3}
[CommRing R]
[DecidableEq X]
[DecidableEq Y]
(A : Matrix X Y R)
:
(Matrix.fromColumns 1 A).TU ↔ A.TU
theorem
Matrix.TU_adjoin_id_right_iff
{X : Type u_1}
{Y : Type u_2}
{R : Type u_3}
[CommRing R]
[DecidableEq X]
[DecidableEq Y]
(A : Matrix X Y R)
:
(A.fromColumns 1).TU ↔ A.TU
theorem
Matrix.det_zero_of_rank_lt
{X : Type u_1}
{R : Type u_8}
[LinearOrderedField R]
[Fintype X]
[DecidableEq X]
{A : Matrix X X R}
(hA : A.rank < Fintype.card X)
:
A.det = 0
theorem
Matrix.submatrix_det_abs
{X : Type u_1}
{Y : Type u_2}
{R : Type u_8}
[LinearOrderedCommRing R]
[Fintype X]
[DecidableEq X]
[Fintype Y]
[DecidableEq Y]
(A : Matrix X X R)
(e₁ : Y ≃ X)
(e₂ : Y ≃ X)
:
|(A.submatrix ⇑e₁ ⇑e₂).det| = |A.det|
theorem
Matrix.submatrix_det_abs'
{Y : Type u_2}
{X₁ : Type u_4}
{X₂ : Type u_5}
{R : Type u_8}
[LinearOrderedCommRing R]
[Fintype X₁]
[DecidableEq X₁]
[Fintype X₂]
[DecidableEq X₂]
[Fintype Y]
[DecidableEq Y]
(A : Matrix X₁ X₂ R)
(e₁ : Y ≃ X₁)
(e₂ : Y ≃ X₂)
:
|(A.submatrix ⇑e₁ ⇑e₂).det| = |(A.submatrix (⇑(e₂.symm.trans e₁)) id).det|
theorem
Matrix.fromBlocks_TU
{X₁ : Type u_4}
{X₂ : Type u_5}
{Y₁ : Type u_6}
{Y₂ : Type u_7}
{R : Type u_8}
[LinearOrderedField R]
[Fintype X₁]
[DecidableEq X₁]
[Fintype Y₁]
[DecidableEq Y₁]
[Fintype X₂]
[DecidableEq X₂]
[Fintype Y₂]
[DecidableEq Y₂]
{A₁ : Matrix X₁ Y₁ R}
{A₂ : Matrix X₂ Y₂ R}
(hA₁ : A₁.TU)
(hA₂ : A₂.TU)
:
(Matrix.fromBlocks A₁ 0 0 A₂).TU
A matrix composed of TU blocks on the diagonal is TU.