Unrestricted depth-three lower bound: circuit normalization #
Adapted from OpenAI's formalization at revision adc7f1241b42e322a6451854ab7e4b4c146bf78a.
Source: https://github.com/openai/math/blob/adc7f1241b42e322a6451854ab7e4b4c146bf78a/lean/OAI/Computability/DepthThree/CircuitNormalization.lean
Imports, namespaces, module visibility, documentation, and formatting are adapted for complexitylib. The source theorem statements and mathematical proofs are retained.
Extract the literal inputs of a raw clause.
Equations
Instances For
noncomputable def
Complexity.DepthThreeLowerBound.RawClause.literals
{V : Type uDepth1}
(C : RawClause V)
:
Clause V
The finite set of literals occurring in a raw clause.
Equations
Instances For
noncomputable def
Complexity.DepthThreeLowerBound.RawClause.normalize
{V : Type uDepth1}
(C : RawClause V)
:
Normalize a raw clause, accounting for constants and complementary literals.
Instances For
noncomputable def
Complexity.DepthThreeLowerBound.Circuit3.middleCNF
{V : Type uDepth1}
(C : Circuit3 V)
(j : Fin C.middleCount)
:
CNF V
Represent a middle gate as the conjunction of its normalized bottom clauses.
Equations
- C.middleCNF j = List.filterMap (fun (i : Fin C.bottomCount) => (C.bottom i).normalize) (C.middle j).toList
Instances For
theorem
Complexity.DepthThreeLowerBound.Circuit3.middleCNF_normalized
{V : Type uDepth1}
(C : Circuit3 V)
(j : Fin C.middleCount)
:
(C.middleCNF j).Normalized
theorem
Complexity.DepthThreeLowerBound.Circuit3.middleCNF_length_le_bottomCount
{V : Type uDepth1}
(C : Circuit3 V)
(j : Fin C.middleCount)
:
theorem
Complexity.DepthThreeLowerBound.Circuit3.middleCNF_length_le_gateCount
{V : Type uDepth1}
(C : Circuit3 V)
(j : Fin C.middleCount)
:
@[simp]
theorem
Complexity.DepthThreeLowerBound.Circuit3.eval_middleCNF
{V : Type uDepth1}
(C : Circuit3 V)
(j : Fin C.middleCount)
(x : Cube V)
: