Unrestricted depth-three lower bound: sparse tree #
Adapted from OpenAI's formalization at revision adc7f1241b42e322a6451854ab7e4b4c146bf78a.
Source: https://github.com/openai/math/blob/adc7f1241b42e322a6451854ab7e4b4c146bf78a/lean/OAI/Computability/DepthThree/SparseTree.lean
Imports, namespaces, module visibility, documentation, and formatting are adapted for complexitylib. The source theorem statements and mathematical proofs are retained.
There exists an eligible sunflower in the current state.
Equations
- Complexity.DepthThreeLowerBound.SparseEligible r s = ∃ (i : ℕ), Nonempty (Complexity.DepthThreeLowerBound.SignedSunflower s i (r i))
Instances For
There is no eligible sunflower left in the current state.
Equations
- Complexity.DepthThreeLowerBound.SparseTerminal r s = ∀ (i : ℕ), ¬Nonempty (Complexity.DepthThreeLowerBound.SignedSunflower s i (r i))
Instances For
A smallest eligible sunflower selected for branching.
- size : ℕ
The common size of the selected clauses.
- selected : SignedSunflower s self.size (r self.size)
The selected signed sunflower.
Instances For
Choose a smallest eligible sunflower when one exists.
Equations
- Complexity.DepthThreeLowerBound.sparseSelect r s h = { size := Nat.find h, selected := Classical.choice ⋯, minimal := ⋯ }
Instances For
The successor state selected by the Boolean branch choice.
Instances For
The certified sparsification step determined by a selected branch.
Equations
Instances For
The clause-size label attached to a selected sunflower.
Instances For
Prepend one step to a sparsification path.
Equations
- Complexity.DepthThreeLowerBound.SparsePath.prepend step Complexity.DepthThreeLowerBound.SparsePath.nil = Complexity.DepthThreeLowerBound.SparsePath.nil.snoc step
- Complexity.DepthThreeLowerBound.SparsePath.prepend step (path.snoc next) = (Complexity.DepthThreeLowerBound.SparsePath.prepend step path).snoc next
Instances For
A finite sparsification tree with valid paths and terminal leaves.
- tree : SparseDecisionTree (Fin (b + 1))
The binary sparsification decision tree.
- finish : self.tree.Leaf → SparseState V
The final state at each leaf.
- path (p : self.tree.Leaf) : SparsePath r start (self.finish p)
The sequence of sparsification steps leading to each leaf.
Instances For
Construct a leaf tree when the current sparsification state is terminal.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Join the two branch trees below a selected sunflower.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Build a sparsification tree recursively within the supplied fuel bound.
Equations
- One or more equations did not get rendered due to their size.
- Complexity.DepthThreeLowerBound.SparseTreeResult.build r b 0 x x_1 = Complexity.DepthThreeLowerBound.SparseTreeResult.stop r b x 0 ⋯
Instances For
A sufficient fuel bound for finite-width sparsification.
Equations
- Complexity.DepthThreeLowerBound.sparseTreeFuel D b = (∑ u ∈ Finset.Ico 1 b, D u) * Fintype.card V
Instances For
The complete sparsification tree from an initial state.