Transport of the depth-three and threshold-weight bounds to canonical CNFs #
The indexed construction records every clause occurrence and one middle gate per CNF. The weight bounds use the width-nonincreasing set conversion instead.
theorem
Complexity.DepthThreeLowerBound.Circuit3.eval_clauseInputs_proof
{n : ℕ}
(C : List (Complexity.Literal n))
(x : BitString n)
:
theorem
Complexity.DepthThreeLowerBound.Circuit3.middleEval_ofCNFs_proof
{n : ℕ}
(Fs : List (Complexity.CNF n))
(j : Fin Fs.length)
(x : BitString n)
:
theorem
Complexity.DepthThreeLowerBound.Circuit3.eval_ofCNFs_proof
{n : ℕ}
(Fs : List (Complexity.CNF n))
(x : BitString n)
:
theorem
Complexity.DepthThreeLowerBound.language_cnf_threshold_weight_proof
(s : ℝ)
(hs : 0 ≤ s)
:
∃ (N : ℕ),
20480 ≤ N ∧ ∀ (n : ℕ),
N ≤ n →
∀ (J : Type) [inst : Fintype J] (H : J → Complexity.CNF n) (a : J → ℝ),
(∀ (j : J), (H j).width ≤ degreeCutoff s (dataDimension n)) →
(∀ (x : Fin n → Bool), 1 ≤ sign (language (List.ofFn x)) * ∑ j : J, a j * indicator ((H j).eval x)) →
2 ^ (4 * (s + 1) * √↑(dataDimension n)) / 6 ≤ ∑ j : J, |a j|
theorem
Complexity.DepthThreeLowerBound.language_cnf_integer_threshold_weight_proof
(s : ℝ)
(hs : 0 ≤ s)
:
∃ (N : ℕ),
20480 ≤ N ∧ ∀ (n : ℕ),
N ≤ n →
∀ (J : Type) [inst : Fintype J] (H : J → Complexity.CNF n) (z : J → ℤ),
(∀ (j : J), (H j).width ≤ degreeCutoff s (dataDimension n)) →
(∀ (x : Fin n → Bool),
language (List.ofFn x) = decide (0 ≤ ∑ j : J, z j * if (H j).eval x = true then 1 else 0)) →
(2 ^ (4 * (s + 1) * √↑(dataDimension n)) / 6 - 1) / 2 ≤ ∑ j : J, |↑(z j)|