Documentation

Complexitylib.Algebraic.LowerBound.Threshold.Internal.Capacity

Proof of the one-dimensional capacity theorem #

Fix a split U with |U| = a and process the blocks of a decomposition in order, keeping a rectangle P × Q on which the current history is a function of the second side q alone.

At the end the output is a function of q on P × Q; keep a majority value on at least half of Q. Choosing a = ⌈log₂ (K Dₚ)⌉, where Dₚ is the product of the first-side factors, both sides have at least K elements whenever 4 K² · cost ≤ 2ⁿ, contradicting two-sided rectangle-freeness.

theorem Algebraic.Threshold.weightedSum_glue {n : ℕ} (w : Fin n → ℝ) (U : Finset (Fin n)) (p : ↥U → Bool) (q : ↥Uᶜ → Bool) :
weightedSum w (Cutwidth.glue U p q) = weightedSum w (Cutwidth.glue U p fun (x : ↥Uᶜ) => false) + weightedSum w (Cutwidth.glue U (fun (x : ↥U) => false) q)

The weighted sum of a glued input splits into the two sides.

The factor by which a block shrinks the first side.

Equations
Instances For

    The factor by which a block shrinks the second side.

    Equations
    Instances For
      theorem Algebraic.Threshold.BlockKind.pcost_pos_of_step {n : ℕ} {H : Type u_1} {κ : BlockKind} {prev next : (Fin n → Bool) → H} (h : κ.Step prev next) :
      0 < κ.pcost
      def Algebraic.Threshold.Reachable {n : ℕ} {f : Cslib.BooleanFunction n} {H : Type u_1} (D : BlockDecomposition f H) (U : Finset (Fin n)) (i NP NQ : ℕ) :

      After the first i blocks, some rectangle with sides of at least NP and NQ elements has the history determined by the second side.

      Equations
      • One or more equations did not get rendered due to their size.
      Instances For
        theorem Algebraic.Threshold.reachable_zero {n : ℕ} {f : Cslib.BooleanFunction n} {H : Type u_1} (D : BlockDecomposition f H) (U : Finset (Fin n)) :
        Reachable D U 0 (2 ^ U.card) (2 ^ Uᶜ.card)
        theorem Algebraic.Threshold.reachable_succ {n : ℕ} {f : Cslib.BooleanFunction n} {H : Type u_1} (D : BlockDecomposition f H) (U : Finset (Fin n)) {i NP NQ : ℕ} (hi : i < D.length) (h : Reachable D U i NP NQ) :
        Reachable D U (i + 1) (NP / (D.kind i).pcost) (NQ / (D.kind i).qcost)
        theorem Algebraic.Threshold.reachable_le {n : ℕ} {f : Cslib.BooleanFunction n} {H : Type u_1} (D : BlockDecomposition f H) (U : Finset (Fin n)) (i : ℕ) :
        i ≤ D.length → Reachable D U i (2 ^ U.card / ∏ j ∈ Finset.range i, (D.kind j).pcost) (2 ^ Uᶜ.card / ∏ j ∈ Finset.range i, (D.kind j).qcost)
        theorem Algebraic.Threshold.not_reachable {n : ℕ} {f : Cslib.BooleanFunction n} {H : Type u_1} {K : ℕ} (hf : TwoSidedRectangleFree f K) (D : BlockDecomposition f H) (U : Finset (Fin n)) {NP NQ : ℕ} (h : Reachable D U D.length NP NQ) (hP : K ≤ NP) (hQ : 2 * K ≤ NQ) :

        Theorem U (one-dimensional capacity). If f is two-sided K-rectangle-free, every block decomposition of f has 2ⁿ < 4 K² · cost.