Unrestricted depth-three lower bound: hard slice probability #
Adapted from OpenAI's formalization at revision adc7f1241b42e322a6451854ab7e4b4c146bf78a.
Source: https://github.com/openai/math/blob/adc7f1241b42e322a6451854ab7e4b4c146bf78a/lean/OAI/Computability/DepthThree/HardSliceProbability.lean
Imports, namespaces, module visibility, documentation, and formatting are adapted for complexitylib. The source theorem statements and mathematical proofs are retained.
The sparse-family constant used in the hard-slice existence argument.
Equations
Instances For
theorem
Complexity.DepthThreeLowerBound.hardSliceSparseConstant_spec
(b : ℕ)
(hb : 1 ≤ b)
(V : Type)
[Fintype V]
[DecidableEq V]
(G : Cube V → ℝ)
(htests :
∀ (H : CNF V),
H.Normalized →
H.WidthAtMost b →
List.length H ≤ hardSliceSparseConstant b hb * Fintype.card V →
|finiteAvg fun (x : Cube V) => G x * indicator (H.eval x)| ≤ 2 ^ (-↑(Fintype.card V) / 4))
:
theorem
Complexity.DepthThreeLowerBound.coefficient_corr_failure_le
{F V : Type}
[Field F]
[Module BinaryAlgebra.F2 F]
[Fintype F]
[Fintype V]
(ell : F →ₗ[BinaryAlgebra.F2] BinaryAlgebra.F2)
(hOne : ell 1 = 1)
(a : Cube V → F)
(ha : Function.Injective a)
(b : ℕ)
(hb : 1 ≤ b)
(h : ℕ)
(hh : 0 < h)
:
(finiteProb fun (β : Fin (2 * h) → F) =>
¬(corr b fun (x : Cube V) => sign (Interpolation.acceptEval ell (2 * h) a β x)) ≤ 2 ^ (-↑(Fintype.card V) / 8)) ≤ sparseMomentBound (Fintype.card V) b (hardSliceSparseConstant b hb * Fintype.card V) h (2 ^ (-↑(Fintype.card V) / 4))
theorem
Complexity.DepthThreeLowerBound.hash_coefficient_corr_failure_le
{F V U : Type}
[Field F]
[Module BinaryAlgebra.F2 F]
[Fintype F]
[Fintype V]
[Fintype U]
[Nonempty U]
(ell : F →ₗ[BinaryAlgebra.F2] BinaryAlgebra.F2)
(hOne : ell 1 = 1)
(a : U → Cube V → F)
(b : ℕ)
(hb : 1 ≤ b)
(h : ℕ)
(hh : 0 < h)
:
(finiteProb fun (ω : U × (Fin (2 * h) → F)) =>
¬(corr b fun (x : Cube V) => sign (Interpolation.acceptEval ell (2 * h) (a ω.1) ω.2 x)) ≤ 2 ^ (-↑(Fintype.card V) / 8)) ≤ (finiteProb fun (u : U) => ¬Function.Injective (a u)) + sparseMomentBound (Fintype.card V) b (hardSliceSparseConstant b hb * Fintype.card V) h
(2 ^ (-↑(Fintype.card V) / 4))
theorem
Complexity.DepthThreeLowerBound.encodedHash_fill_injective
{d r : ℕ}
(p : Fin r → Bool)
(u : Fin (d + r - 1) → Bool)
(σ : Restriction (Fin d))
(hu : Function.Injective fun (z : Cube (Live σ)) => BinaryHash.hashBool u (fill σ z))
:
Function.Injective fun (z : Cube (Live σ)) => encodedHash p u (fill σ z)
noncomputable def
Complexity.DepthThreeLowerBound.hashAcceptance
{d r : ℕ}
(p : Fin r → Bool)
[Fact (Irreducible (BinaryAlgebra.inputPolynomialBits p))]
(t : ℕ)
(u : Fin (d + r - 1) → Bool)
(β : Fin t → BinaryAlgebra.BitQuotient p)
:
Evaluate the acceptance bit determined by a hash output.
Equations
- One or more equations did not get rendered due to their size.
Instances For
theorem
Complexity.DepthThreeLowerBound.actual_hash_coefficient_failure_le
{d r : ℕ}
(p : Fin r → Bool)
[Fact (Irreducible (BinaryAlgebra.inputPolynomialBits p))]
(hr : 0 < r)
(σ : Restriction (Fin d))
(b : ℕ)
(hb : 1 ≤ b)
(h : ℕ)
(hh : 0 < h)
:
(finiteProb fun (ω : (Fin (d + r - 1) → Bool) × (Fin (2 * h) → BinaryAlgebra.BitQuotient p)) =>
¬(corr b fun (z : Cube (Live σ)) => sign (hashAcceptance p (2 * h) ω.1 ω.2 (fill σ z))) ≤ 2 ^ (-↑(Fintype.card (Live σ)) / 8)) ≤ 2 ^ Fintype.card (Live σ) / 2 ^ r + sparseMomentBound (Fintype.card (Live σ)) b (hardSliceSparseConstant b hb * Fintype.card (Live σ)) h
(2 ^ (-↑(Fintype.card (Live σ)) / 4))