Documentation

Complexitylib.Circuits.Correlation.Internal.Rank

Ranks of blocks over GF(2) #

Elementary facts about Correlation.blockRank, the dimension of the row space of a block: it grows with the block, it drops by at most one per deleted row, it is invariant under transposition and injective relabelling of rows and columns, and two blocks whose rows live on disjoint sets of columns contribute their ranks additively.

@[reducible, inline]
abbrev Complexity.Correlation.blockRows {ι : Type u_1} {κ : Type u_2} (M : Matrix ι κ (ZMod 2)) (S : Set ι) (T : Set κ) :
↑S → ↑T → ZMod 2

The rows of the block of M with rows S and columns T.

Equations
Instances For
    theorem Complexity.Correlation.blockRank_eq {ι : Type u_1} {κ : Type u_2} (M : Matrix ι κ (ZMod 2)) (S : Set ι) (T : Set κ) :
    theorem Complexity.Correlation.span_blockRows_eq_map {ι : Type u_1} {κ : Type u_2} {M : Matrix ι κ (ZMod 2)} (S : Set ι) {T T' : Set κ} (h : T' ⊆ T) :

    Restricting the columns of a block maps its row space onto the smaller row space.

    theorem Complexity.Correlation.blockRank_mono_right {ι : Type u_1} {κ : Type u_2} [Finite κ] (M : Matrix ι κ (ZMod 2)) (S : Set ι) {T T' : Set κ} (h : T' ⊆ T) :
    blockRank M S T' ≤ blockRank M S T

    Deleting columns does not increase the rank of a block.

    theorem Complexity.Correlation.blockRank_mono_left {ι : Type u_1} {κ : Type u_2} [Finite κ] (M : Matrix ι κ (ZMod 2)) {S S' : Set ι} (T : Set κ) (h : S' ⊆ S) :
    blockRank M S' T ≤ blockRank M S T

    Deleting rows does not increase the rank of a block.

    theorem Complexity.Correlation.blockRank_mono {ι : Type u_1} {κ : Type u_2} [Finite κ] (M : Matrix ι κ (ZMod 2)) {S S' : Set ι} {T T' : Set κ} (hS : S' ⊆ S) (hT : T' ⊆ T) :
    blockRank M S' T' ≤ blockRank M S T

    A sub-block has at most the rank of the block.

    theorem Complexity.Correlation.blockRank_le_ncard {ι : Type u_1} {κ : Type u_2} [Finite ι] (M : Matrix ι κ (ZMod 2)) (S : Set ι) (T : Set κ) :

    The rank of a block is at most the number of its rows.

    theorem Complexity.Correlation.blockRank_le_add {ι : Type u_1} {κ : Type u_2} [Finite ι] [Finite κ] (M : Matrix ι κ (ZMod 2)) {S S' : Set ι} (T : Set κ) (h : S' ⊆ S) :
    blockRank M S T ≤ blockRank M S' T + (S \ S').ncard

    Deleting the rows outside S' lowers the rank of a block by at most their number.

    theorem Complexity.Correlation.blockRank_congr {ι : Type u_1} {κ : Type u_2} {M M' : Matrix ι κ (ZMod 2)} {S : Set ι} {T : Set κ} (h : ∀ i ∈ S, ∀ j ∈ T, M i j = M' i j) :
    blockRank M S T = blockRank M' S T

    Blocks that agree entrywise have the same rank.

    theorem Complexity.Correlation.blockRank_transpose {ι : Type u_1} {κ : Type u_2} [Finite ι] [Finite κ] (M : Matrix ι κ (ZMod 2)) (S : Set ι) (T : Set κ) :

    Row rank equals column rank.

    theorem Complexity.Correlation.blockRank_comp {ι : Type u_1} {κ : Type u_2} {ι' : Type u_3} {κ' : Type u_4} (M : Matrix ι κ (ZMod 2)) {f : ι' → ι} {g : κ' → κ} (hf : Function.Injective f) (hg : Function.Injective g) (S : Set ι') (T : Set κ') :
    blockRank (M.submatrix f g) S T = blockRank M (f '' S) (g '' T)

    Relabelling the rows and columns injectively does not change the rank of a block.

    theorem Complexity.Correlation.add_blockRank_le_of_disjoint {ι : Type u_1} {κ : Type u_2} [Finite κ] (M : Matrix ι κ (ZMod 2)) {S S₁ S₂ : Set ι} {T T₁ T₂ : Set κ} (h₁ : S₁ ⊆ S) (h₂ : S₂ ⊆ S) (hT : Disjoint T₁ T₂) (hM₁ : ∀ i ∈ S₁, ∀ j ∈ T, j ∉ T₁ → M i j = 0) (hM₂ : ∀ i ∈ S₂, ∀ j ∈ T, j ∉ T₂ → M i j = 0) :
    blockRank M S₁ T + blockRank M S₂ T ≤ blockRank M S T

    Blocks on disjoint columns. If, among the columns T, the rows of S₁ vanish outside T₁ and the rows of S₂ vanish outside T₂, with T₁ and T₂ disjoint, then the rank of the block S × T is at least the sum of the ranks of S₁ × T and S₂ × T.

    theorem Complexity.Correlation.cutRank_le_add {ι : Type u_1} [Finite ι] {Q : Matrix ι ι (ZMod 2)} {D U : Set ι} (h : D ⊆ U) :
    cutRank Q U ≤ cutRank Q D + (U \ D).ncard

    The cut rank at U lowers by at most |U \ D| when passing to a subset D ⊆ U.

    theorem Complexity.Correlation.cutRank_compl {ι : Type u_1} [Finite ι] (Q : Matrix ι ι (ZMod 2)) (U : Set ι) :

    Cut ranks are symmetric: the block for Uᶜ is the transpose of the block for U.