Documentation

Complexity.Computability.QueryComplexity.SensitivitySeparation.Internal.RecursiveBlocks

Superquadratic sensitivity separation: recursive blocks #

This file lifts sensitive blocks of the all-false child input to the next level. A block B of child coordinates is copied into every column of a row i, giving rowLift i B. If the child predicates reject the all-false input but accept it after flipping B, then every next-level predicate accepts the all-false input after flipping rowLift i B. Lifting preserves pairwise disjointness, which yields the block sensitivity lower bound.

Main definitions #

Main results #

References #

Lift a sensitive block to every column of the specified row.

Instances For
    @[simp]
    theorem Cslib.QueryComplexity.SensitivitySeparation.Internal.mem_rowLift {k r : ℕ} {I : Type} (i : Fin k) (B : Finset I) (p : (Fin k × Fin r) × I) :
    p ∈ rowLift i B ↔ p.1.1 = i ∧ p.2 ∈ B

    A coordinate p lies in rowLift i B iff its row is i and its child coordinate lies in B.

    The lifted block rowLift i B has r * B.card elements.

    theorem Cslib.QueryComplexity.SensitivitySeparation.Internal.rowLift_nonempty {k r : ℕ} {I : Type} (i : Fin k) (B : Finset I) (hr : 0 < r) (hB : B.Nonempty) :

    If 0 < r and B is nonempty, then rowLift i B is nonempty.

    theorem Cslib.QueryComplexity.SensitivitySeparation.Internal.rowLift_family_disjoint {k r : ℕ} {I K : Type} (blocks : K → Finset I) (hB : Pairwise fun (a b : K) => Disjoint (blocks a) (blocks b)) :
    Pairwise fun (a b : Fin k × K) => Disjoint (rowLift a.1 (blocks a.2)) (rowLift b.1 (blocks b.2))

    If the blocks blocks a are pairwise disjoint, then the lifts rowLift a.1 (blocks a.2) indexed by a : Fin k × K are pairwise disjoint.

    theorem Cslib.QueryComplexity.SensitivitySeparation.Internal.recursiveFamily_rowLift {k r h : ℕ} {I : Type} (T : Tournament k) (label : Fin k → Fin k → Fin r) (F : Fin (h + 1) → (I → Bool) → Bool) (hzero : ∀ (q : Fin (h + 1)), (F q fun (x : I) => false) = false) (B : Finset I) (hB : ∀ (q : Fin (h + 1)), F q (flip (fun (x : I) => false) B) = true) (i : Fin k) (q : Fin h) :
    recursiveFamily T label F q (flip (fun (x : (Fin k × Fin r) × I) => false) (rowLift i B)) = true

    If every member of F rejects the all-false input and accepts the all-false input with B flipped, then every next-level predicate accepts the all-false input with rowLift i B flipped.