Unrestricted depth-three lower bound: restriction paths #
Adapted from OpenAI's formalization at revision adc7f1241b42e322a6451854ab7e4b4c146bf78a.
Source: https://github.com/openai/math/blob/adc7f1241b42e322a6451854ab7e4b4c146bf78a/lean/OAI/Computability/DepthThree/RestrictionPaths.lean
Imports, namespaces, module visibility, documentation, and formatting are adapted for complexitylib. The source theorem statements and mathematical proofs are retained.
def
Complexity.DepthThreeLowerBound.revealed
{V : Type uDepth1}
{I : Type uDepth2}
[DecidableEq V]
[instDecidableEqI : DecidableEq I]
(scope : I → Finset V)
(T : Finset V)
(P : List I)
:
Finset V
The variables revealed by the selected sequence of clause scopes.
Equations
- Complexity.DepthThreeLowerBound.revealed scope T P = P.toFinset.biUnion fun (i : I) => scope i ∩ T
Instances For
def
Complexity.DepthThreeLowerBound.residual
{V : Type uDepth1}
{I : Type uDepth2}
[DecidableEq V]
(scope : I → Finset V)
(T U : Finset V)
(i : I)
:
Finset V
Coordinates remaining after the currently revealed set is removed.
Equations
- Complexity.DepthThreeLowerBound.residual scope T U i = scope i ∩ (T \ U)
Instances For
@[simp]
theorem
Complexity.DepthThreeLowerBound.revealed_nil
{V : Type uDepth1}
{I : Type uDepth2}
[DecidableEq V]
[instDecidableEqI : DecidableEq I]
(scope : I → Finset V)
(T : Finset V)
:
theorem
Complexity.DepthThreeLowerBound.mem_revealed
{V : Type uDepth1}
{I : Type uDepth2}
[DecidableEq V]
[instDecidableEqI : DecidableEq I]
(scope : I → Finset V)
(T : Finset V)
(P : List I)
(v : V)
:
theorem
Complexity.DepthThreeLowerBound.revealed_subset
{V : Type uDepth1}
{I : Type uDepth2}
[DecidableEq V]
[instDecidableEqI : DecidableEq I]
(scope : I → Finset V)
(T : Finset V)
(P : List I)
:
revealed scope T P ⊆ T
theorem
Complexity.DepthThreeLowerBound.revealed_mono
{V : Type uDepth1}
{I : Type uDepth2}
[DecidableEq V]
[instDecidableEqI : DecidableEq I]
(scope : I → Finset V)
(T : Finset V)
{P Q : List I}
(h : P ⊆ Q)
:
theorem
Complexity.DepthThreeLowerBound.residual_eq_empty_of_mem
{V : Type uDepth1}
{I : Type uDepth2}
[DecidableEq V]
[instDecidableEqI : DecidableEq I]
{scope : I → Finset V}
{T : Finset V}
{P : List I}
{i : I}
(hi : i ∈ P)
:
theorem
Complexity.DepthThreeLowerBound.card_revealed_snoc
{V : Type uDepth1}
{I : Type uDepth2}
[DecidableEq V]
[instDecidableEqI : DecidableEq I]
(scope : I → Finset V)
(T : Finset V)
(P : List I)
(i : I)
:
def
Complexity.DepthThreeLowerBound.hardIndices
{V : Type uDepth1}
{I : Type uDepth2}
[DecidableEq V]
[Fintype I]
(scope : I → Finset V)
(T : Finset V)
(b : ℕ)
(U : Finset V)
:
Finset I
Clause indices whose residual scope exceeds the width cutoff.
Equations
- Complexity.DepthThreeLowerBound.hardIndices scope T b U = {i : I | b < (Complexity.DepthThreeLowerBound.residual scope T U i).card}
Instances For
def
Complexity.DepthThreeLowerBound.paths
{V : Type uDepth1}
{I : Type uDepth2}
[DecidableEq V]
[instDecidableEqI : DecidableEq I]
[Fintype I]
(scope : I → Finset V)
(T : Finset V)
(b : ℕ)
:
Admissible clause-index paths of the specified length.
Equations
Instances For
theorem
Complexity.DepthThreeLowerBound.paths_succ
{V : Type uDepth1}
{I : Type uDepth2}
[DecidableEq V]
[instDecidableEqI : DecidableEq I]
[Fintype I]
(scope : I → Finset V)
(T : Finset V)
(b n : ℕ)
:
theorem
Complexity.DepthThreeLowerBound.mem_paths_succ
{V : Type uDepth1}
{I : Type uDepth2}
[DecidableEq V]
[instDecidableEqI : DecidableEq I]
[Fintype I]
{scope : I → Finset V}
{T : Finset V}
{b n : ℕ}
{P : List I}
:
theorem
Complexity.DepthThreeLowerBound.snoc_mem_paths
{V : Type uDepth1}
{I : Type uDepth2}
[DecidableEq V]
[instDecidableEqI : DecidableEq I]
[Fintype I]
(scope : I → Finset V)
(T : Finset V)
(b : ℕ)
{n : ℕ}
{P : List I}
{i : I}
(hP : P ∈ paths scope T b n)
(hi : i ∈ hardIndices scope T b (revealed scope T P))
:
theorem
Complexity.DepthThreeLowerBound.mem_paths_snoc_iff
{V : Type uDepth1}
{I : Type uDepth2}
[DecidableEq V]
[instDecidableEqI : DecidableEq I]
[Fintype I]
(scope : I → Finset V)
(T : Finset V)
(b n : ℕ)
(P : List I)
(i : I)
:
theorem
Complexity.DepthThreeLowerBound.length_of_mem_paths
{V : Type uDepth1}
{I : Type uDepth2}
[DecidableEq V]
[instDecidableEqI : DecidableEq I]
[Fintype I]
{scope : I → Finset V}
{T : Finset V}
{b n : ℕ}
{P : List I}
(hP : P ∈ paths scope T b n)
:
theorem
Complexity.DepthThreeLowerBound.take_mem_paths
{V : Type uDepth1}
{I : Type uDepth2}
[DecidableEq V]
[instDecidableEqI : DecidableEq I]
[Fintype I]
(scope : I → Finset V)
(T : Finset V)
(b : ℕ)
{n : ℕ}
{P : List I}
(hP : P ∈ paths scope T b n)
{k : ℕ}
(hk : k ≤ n)
:
theorem
Complexity.DepthThreeLowerBound.not_mem_of_hard
{V : Type uDepth1}
{I : Type uDepth2}
[DecidableEq V]
[instDecidableEqI : DecidableEq I]
[Fintype I]
(scope : I → Finset V)
(T : Finset V)
(b : ℕ)
{P : List I}
{i : I}
(hi : i ∈ hardIndices scope T b (revealed scope T P))
:
i ∉ P
theorem
Complexity.DepthThreeLowerBound.nodup_of_mem_paths
{V : Type uDepth1}
{I : Type uDepth2}
[DecidableEq V]
[instDecidableEqI : DecidableEq I]
[Fintype I]
{scope : I → Finset V}
{T : Finset V}
{b n : ℕ}
{P : List I}
(hP : P ∈ paths scope T b n)
:
P.Nodup
theorem
Complexity.DepthThreeLowerBound.length_mul_le_revealed_card
{V : Type uDepth1}
{I : Type uDepth2}
[DecidableEq V]
[instDecidableEqI : DecidableEq I]
[Fintype I]
(scope : I → Finset V)
(T : Finset V)
(b : ℕ)
{n : ℕ}
{P : List I}
(hP : P ∈ paths scope T b n)
:
theorem
Complexity.DepthThreeLowerBound.sum_paths_succ
{V : Type uDepth1}
{I : Type uDepth2}
[DecidableEq V]
[instDecidableEqI : DecidableEq I]
[Fintype I]
(scope : I → Finset V)
(T : Finset V)
(b n : ℕ)
{M : Type uDepth3}
[AddCommMonoid M]
(f : List I → M)
: