Documentation

Complexitylib.Circuits.BarringtonFamily

Barrington at the family level: NC¹ ⊆ polynomial-size width-5 branching programs #

Circuits/BarringtonLength.lean proves the textbook per-formula bound barrington_representation_depth_four (a formula of depth d compiles to a width-5 program of length ≤ 4^d). This module lifts that to families: a family of formulas of logarithmic depth (NC¹) is computed, formula by formula, by a family of width-5 permutation branching programs of polynomial length. That is the class-level polynomial-size direction of Barrington's characterization, in the nonuniform (per-length) setting.

The families here range over the same ℕ → Bool assignments the Barrington development already uses, so FormulaFamily.logDepth_polyLength_bp follows by applying the per-formula bound pointwise, together with the arithmetic fact that 4^{c·log₂ n + c} is bounded by a polynomial in n.

Main definitions and results #

theorem Complexity.four_pow_logDepth_le_poly (c n : ) :
4 ^ (c * Nat.log 2 n + c) 4 ^ c * (n + 1) ^ (2 * c)

4^{c·log₂ n + c} ≤ 4^c · (n+1)^{2c}: the construction length for a depth-(c·log₂ n + c) formula is polynomial in n.

A family of Boolean formulas, one per input length.

Equations
Instances For

    A formula family has logarithmic depth if depth (F n) ≤ c·log₂ n + c for some constant c — the NC¹ depth regime.

    Equations
    Instances For
      theorem Complexity.FormulaFamily.logDepth_polyLength_bp (F : FormulaFamily) (hF : F.LogDepth) :
      ∃ (R : BP 5) (S : Equiv.Perm (Fin 5)) (C : ) (p : ), (∀ (n : ), S n 1) (∀ (n : ) (α : Bool), BP.eval α (R n) = if BoolFormula.eval α (F n) = true then S n else 1) ∀ (n : ), List.length (R n) C * (n + 1) ^ p

      Barrington, family level: NC¹ ⊆ polynomial-size width-5 branching programs. A logarithmic-depth formula family is computed, formula by formula, by a family of width-5 permutation branching programs whose length is bounded by a fixed polynomial C·(n+1)^p in the input length — with each program evaluating to a nonidentity 5-cycle exactly when its formula is true.

      theorem Complexity.FormulaFamily.logDepth_polyLength_decides (F : FormulaFamily) (hF : F.LogDepth) :
      ∃ (R : BP 5) (x : Fin 5) (C : ) (p : ), (∀ (n : ), List.length (R n) C * (n + 1) ^ p) ∀ (n : ) (α : Bool), (BP.eval α (R n)) (x n) x n BoolFormula.eval α (F n) = true

      Family-level Barrington, Boolean-decision form. A logarithmic-depth formula family is decided by a family of polynomial-length width-5 branching programs together with a family of query points: reading whether program R n moves point x n computes formula F n.