Documentation

Seymour.Matrix.TotalUnimodularity

Total Unimodularity #

This file provides lemmas about total unimodularity that are not present in Mathlib.

@[simp]
@[simp]
@[simp]

Every matrix over Z2 is TU.

@[simp]

Every matrix over Z3 is TU.

theorem Matrix.IsTotallyUnimodular.det {X Y Z R : Type} [CommRing R] [DecidableEq Z] [Fintype Z] {A : Matrix X Y R} (hA : A.IsTotallyUnimodular) (f : ZX) (g : ZY) :
theorem Matrix.IsTotallyUnimodular.comp_rows {X Y X' R : Type} [CommRing R] {A : Matrix X Y R} (hA : A.IsTotallyUnimodular) (e : X'X) :
theorem Matrix.IsTotallyUnimodular.comp_cols {X Y Y' R : Type} [CommRing R] {A : Matrix X Y R} (hA : A.IsTotallyUnimodular) (e : Y'Y) :
IsTotallyUnimodular fun (x : X) => A x e
theorem Matrix.IsTotallyUnimodular.fromRows_comm {X₁ X₂ Y R : Type} [CommRing R] {A₁ : Matrix X₁ Y R} {A₂ : Matrix X₂ Y R} (hAA : (A₁ A₂).IsTotallyUnimodular) :
theorem Matrix.IsTotallyUnimodular.fromCols_comm {X Y₁ Y₂ R : Type} [CommRing R] {A₁ : Matrix X Y₁ R} {A₂ : Matrix X Y₂ R} (hAA : (A₁ A₂).IsTotallyUnimodular) :
theorem Matrix.IsTotallyUnimodular.mul_rows {X Y R : Type} [DecidableEq X] [CommRing R] {A : Matrix X Y R} (hA : A.IsTotallyUnimodular) {q : XR} (hq : ∀ (i : X), q i SignType.cast.range) :
(of fun (i : X) (j : Y) => A i j * q i).IsTotallyUnimodular
theorem Matrix.IsTotallyUnimodular.mul_cols {X Y R : Type} [DecidableEq Y] [CommRing R] {A : Matrix X Y R} (hA : A.IsTotallyUnimodular) {q : YR} (hq : ∀ (j : Y), q j SignType.cast.range) :
(of fun (i : X) (j : Y) => A i j * q j).IsTotallyUnimodular
theorem Matrix.fromBlocks_isTotallyUnimodular {X₁ X₂ Y₁ Y₂ R : Type} [LinearOrderedCommRing R] [DecidableEq X₁] [DecidableEq X₂] [DecidableEq Y₁] [DecidableEq Y₂] {A₁ : Matrix X₁ Y₁ R} {A₂ : Matrix X₂ Y₂ R} (hA₁ : A₁.IsTotallyUnimodular) (hA₂ : A₂.IsTotallyUnimodular) :
( A₁ 0 0 A₂).IsTotallyUnimodular

The block matrix that has two totally unimodular matrices along the diagonal and zeros elsewhere is totally unimodular.