Documentation

Formalizations.LinearAlgebra.Matrix.FreeLocusCertificate

Soundness of the free-locus certificate #

One direction of the free-locus test: a flip-poly pencil has corank ≤ m at every point of size m, so corank > m at some point of size m certifies "not flip-poly". Over a field K, corank A = card ι - rank A for a square matrix A : Matrix ι ι K.

Main results #

The general rank facts (subadditivity, rank–nullity, block-triangular and Kronecker bounds) are imported from Formalizations.LinearAlgebra.Matrix.Rank and Formalizations.LinearAlgebra.Matrix.Rank.Kronecker; this file restates the two it lists under Main results in terms of corank.

noncomputable def FreeLocusCertificate.corank {K : Type u_1} [Field K] {ι : Type u_2} [Fintype ι] (A : Matrix ι ι K) :

Corank of a square matrix: card ι - rank.

Equations
Instances For
    theorem FreeLocusCertificate.corank_of_isUnit {K : Type u_1} [Field K] {n : Type u_2} [Fintype n] [DecidableEq n] (A : Matrix n n K) (h : IsUnit A) :
    corank A = 0
    theorem FreeLocusCertificate.rank_add_rank_le_fromBlocks {K : Type u_1} [Field K] {n : Type u_2} {m : Type u_3} [Fintype n] [Fintype m] (A : Matrix n n K) (B : Matrix n m K) (D : Matrix m m K) :

    (1) rank A + rank D ≤ rank (fromBlocks A B 0 D); this is Matrix.rank_add_rank_le_rank_fromBlocks_zero₂₁.

    theorem FreeLocusCertificate.corank_fromBlocks_le {K : Type u_1} [Field K] {n : Type u_2} {m : Type u_3} [Fintype n] [Fintype m] (A : Matrix n n K) (B : Matrix n m K) (D : Matrix m m K) :

    (1) corank (fromBlocks A B 0 D) ≤ corank A + corank D.

    theorem FreeLocusCertificate.rank_kronecker_one {K : Type u_1} [Field K] {n : Type u_2} [Fintype n] {m : ℕ} (A : Matrix n n K) :
    (Matrix.kroneckerMap (fun (x1 x2 : K) => x1 * x2) A 1).rank = m * A.rank

    (2) rank (A ⊗ₖ I_m) = m * rank A; this is Matrix.rank_kronecker_one with p = Fin m.

    theorem FreeLocusCertificate.corank_kronecker_one {K : Type u_1} [Field K] {n : Type u_2} [Fintype n] {m : ℕ} (A : Matrix n n K) :
    corank (Matrix.kroneckerMap (fun (x1 x2 : K) => x1 * x2) A 1) = m * corank A

    (2) corank (A ⊗ₖ I_m) = m * corank A.

    theorem FreeLocusCertificate.corank_unit_sub_le {K : Type u_1} [Field K] {ι : Type u_2} [Fintype ι] [DecidableEq ι] (U E : Matrix ι ι K) (hU : IsUnit U) (k : ℕ) (hE : E.rank ≤ k) :
    corank (U - E) ≤ k

    (3) Invertible minus a matrix of rank ≤ k has corank ≤ k; this is FreeLocus.corank_unit_sub_le.

    theorem FreeLocusCertificate.corank_unit_sub_mul_le {K : Type u_1} [Field K] {ι : Type u_2} [Fintype ι] [DecidableEq ι] {m : ℕ} (U : Matrix ι ι K) (hU : IsUnit U) (P : Matrix ι (Fin m) K) (Q : Matrix (Fin m) ι K) :
    corank (U - P * Q) ≤ m

    (3) Flip-poly bound: corank (U - P * Q) ≤ m for U invertible, P with m columns.

    theorem FreeLocusCertificate.corank_one_sub_nil_sub_mul_le {K : Type u_1} [Field K] {ι : Type u_2} [Fintype ι] [DecidableEq ι] {m : ℕ} (N : Matrix ι ι K) (hN : IsNilpotent N) (P : Matrix ι (Fin m) K) (Q : Matrix (Fin m) ι K) :
    corank (1 - N - P * Q) ≤ m

    (3) Same with U = 1 - N, N nilpotent.

    inductive FreeLocusCertificate.TriBounded {K : Type u_1} [Field K] (c : ℕ) (ι : Type) [Fintype ι] [DecidableEq ι] :
    Matrix ι ι K → ℕ → Prop

    Block upper-triangular matrices whose k diagonal blocks (k ≥ 1) all have corank ≤ c.

    Instances For
      theorem FreeLocusCertificate.TriBounded.corank_le {K : Type u_1} [Field K] {c : ℕ} {ι : Type} [Fintype ι] [DecidableEq ι] {D : Matrix ι ι K} {k : ℕ} (h : TriBounded c ι D k) :
      corank D ≤ k * c
      inductive FreeLocusCertificate.Cert {K : Type u_1} [Field K] (c : ℕ) {β : Type} [Fintype β] [DecidableEq β] (B : Matrix β β K) (ι : Type) [Fintype ι] [DecidableEq ι] :
      Matrix ι ι K → ℕ → Prop

      Block upper-triangular matrices with one free diagonal block B (anywhere on the diagonal) and k further diagonal blocks of corank ≤ c each.

      Instances For
        theorem FreeLocusCertificate.Cert.corank_le {K : Type u_1} [Field K] {c : ℕ} {β : Type} [Fintype β] [DecidableEq β] {B : Matrix β β K} {ι : Type} [Fintype ι] [DecidableEq ι] {M : Matrix ι ι K} {k : ℕ} (h : Cert c B ι M k) :
        corank M ≤ corank B + k * c
        theorem FreeLocusCertificate.cert_corank {K : Type u_1} [Field K] {c : ℕ} {β : Type} [Fintype β] [DecidableEq β] {B : Matrix β β K} {ι : Type} [Fintype ι] [DecidableEq ι] {M : Matrix ι ι K} {k : ℕ} (h : Cert c B ι M k) :
        corank M - k * c ≤ corank B

        (4) The certificate: corank B ≥ corank M - k * m.