Unrestricted depth-three lower bound: restriction clause #
Adapted from OpenAI's formalization at revision adc7f1241b42e322a6451854ab7e4b4c146bf78a.
Source: https://github.com/openai/math/blob/adc7f1241b42e322a6451854ab7e4b4c146bf78a/lean/OAI/Computability/DepthThree/RestrictionClause.lean
Imports, namespaces, module visibility, documentation, and formatting are adapted for complexitylib. The source theorem statements and mathematical proofs are retained.
noncomputable def
Complexity.DepthThreeLowerBound.liveClause
{V : Type uDepth1}
[Fintype V]
(σ : Restriction V)
(C : Clause V)
:
The live literals of a clause under a restriction.
Equations
- Complexity.DepthThreeLowerBound.liveClause σ C = {l : Complexity.DepthThreeLowerBound.Literal (Complexity.DepthThreeLowerBound.Live σ) | (↑l.1, l.2) ∈ C}
Instances For
@[simp]
theorem
Complexity.DepthThreeLowerBound.mem_liveClause
{V : Type uDepth1}
[Fintype V]
(σ : Restriction V)
(C : Clause V)
(l : Literal (Live σ))
:
theorem
Complexity.DepthThreeLowerBound.liveClause_scope_image_subset
{V : Type uDepth1}
[Fintype V]
(σ : Restriction V)
(C : Clause V)
:
Finset.image Subtype.val (liveClause σ C).scope ⊆ C.scope
theorem
Complexity.DepthThreeLowerBound.liveClause_width_le
{V : Type uDepth1}
[Fintype V]
(σ : Restriction V)
(C : Clause V)
:
theorem
Complexity.DepthThreeLowerBound.liveClause_normalized
{V : Type uDepth1}
[Fintype V]
(σ : Restriction V)
{C : Clause V}
(hC : C.Normalized)
:
(liveClause σ C).Normalized
noncomputable def
Complexity.DepthThreeLowerBound.restrictClause
{V : Type uDepth1}
[Fintype V]
(σ : Restriction V)
(C : Clause V)
:
Simplify a clause after fixing the restricted coordinates.
Equations
- Complexity.DepthThreeLowerBound.restrictClause σ C = if ∃ l ∈ C, σ l.1 = some l.2 then none else some (Complexity.DepthThreeLowerBound.liveClause σ C)
Instances For
noncomputable def
Complexity.DepthThreeLowerBound.residualClauseEval
{W : Type uDepth2}
(C : Option (Clause W))
(x : Cube W)
:
Evaluate the remaining part of a clause on its live variables.
Equations
Instances For
@[simp]
@[simp]
theorem
Complexity.DepthThreeLowerBound.residualClauseEval_some
{W : Type uDepth4}
(C : Clause W)
(x : Cube W)
:
theorem
Complexity.DepthThreeLowerBound.restrictClause_eval
{V : Type uDepth1}
[Fintype V]
(σ : Restriction V)
(C : Clause V)
(z : Cube (Live σ))
:
theorem
Complexity.DepthThreeLowerBound.restrictClause_some_eq
{V : Type uDepth1}
[Fintype V]
{σ : Restriction V}
{C : Clause V}
{D : Clause (Live σ)}
(h : restrictClause σ C = some D)
:
theorem
Complexity.DepthThreeLowerBound.restrictClause_width_le
{V : Type uDepth1}
[Fintype V]
{σ : Restriction V}
{C : Clause V}
{D : Clause (Live σ)}
(h : restrictClause σ C = some D)
:
theorem
Complexity.DepthThreeLowerBound.restrictClause_normalized
{V : Type uDepth1}
[Fintype V]
{σ : Restriction V}
{C : Clause V}
{D : Clause (Live σ)}
(hC : C.Normalized)
(h : restrictClause σ C = some D)
:
@[simp]
theorem
Complexity.DepthThreeLowerBound.restrictClause_empty
{V : Type uDepth1}
[Fintype V]
(σ : Restriction V)
:
@[simp]
@[simp]
theorem
Complexity.DepthThreeLowerBound.residualCNF_cons_none
{W : Type uDepth7}
(H : List (Option (Clause W)))
:
noncomputable def
Complexity.DepthThreeLowerBound.restrictCNF
{V : Type uDepth1}
[Fintype V]
(σ : Restriction V)
(H : CNF V)
:
Apply a restriction to every clause in a CNF.
Equations
Instances For
@[simp]
theorem
Complexity.DepthThreeLowerBound.restrictCNF_eval
{V : Type uDepth1}
[Fintype V]
(σ : Restriction V)
(H : CNF V)
(z : Cube (Live σ))
:
theorem
Complexity.DepthThreeLowerBound.restrictCNF_widthAtMost
{V : Type uDepth1}
[Fintype V]
(σ : Restriction V)
{H : CNF V}
{b : ℕ}
(hH : H.WidthAtMost b)
:
(restrictCNF σ H).WidthAtMost b
theorem
Complexity.DepthThreeLowerBound.restrictCNF_normalized
{V : Type uDepth1}
[Fintype V]
(σ : Restriction V)
{H : CNF V}
(hH : H.Normalized)
:
(restrictCNF σ H).Normalized