Documentation

Complexitylib.Circuits.DepthThree.LowerBound.Internal.SparsePrefix

Unrestricted depth-three lower bound: sparse prefix #

Adapted from OpenAI's formalization at revision adc7f1241b42e322a6451854ab7e4b4c146bf78a. Source: https://github.com/openai/math/blob/adc7f1241b42e322a6451854ab7e4b4c146bf78a/lean/OAI/Computability/DepthThree/SparsePrefix.lean

Imports, namespaces, module visibility, documentation, and formatting are adapted for complexitylib. The source theorem statements and mathematical proofs are retained.

Numerical hypotheses for the occurrence bounds in sparsification.

Instances For
    theorem Complexity.DepthThreeLowerBound.sparse_occurrence_le_of_no_sunflower {V : Type uDepth1} [DecidableEq V] {r e D : ℕ → ℕ} {b : ℕ} (hnum : SparseNumerics r e D b) (s : SparseState V) (u : ℕ) (hu : 1 ≤ u) (hub : u ≤ b) (hno : ¬Nonempty (SignedSunflower s u (r u))) (l : Literal V) :
    structure Complexity.DepthThreeLowerBound.SparseStep {V : Type uDepth1} [DecidableEq V] (r : ℕ → ℕ) (s t : SparseState V) :
    Type uDepth1

    A minimal eligible sunflower, a branch choice, and its resulting state.

    Instances For
      noncomputable def Complexity.DepthThreeLowerBound.SparseStep.batch {V : Type uDepth1} [DecidableEq V] {r : ℕ → ℕ} {s t : SparseState V} (step : SparseStep r s t) :

      The insertion batch selected by a sparsification step.

      Equations
      Instances For
        theorem Complexity.DepthThreeLowerBound.SparseStep.valid {V : Type uDepth1} [DecidableEq V] {r : ℕ → ℕ} {s t : SparseState V} {b : ℕ} (step : SparseStep r s t) (hs : s.Valid b) :
        t.Valid b
        theorem Complexity.DepthThreeLowerBound.SparseStep.fresh_added {V : Type uDepth1} [DecidableEq V] {r : ℕ → ℕ} {s t : SparseState V} {b : ℕ} (step : SparseStep r s t) (hs : s.Valid b) :
        theorem Complexity.DepthThreeLowerBound.SparseStep.removed_eq_empty_of_le {V : Type uDepth1} [DecidableEq V] {r : ℕ → ℕ} {s t : SparseState V} {b : ℕ} (step : SparseStep r s t) (hs : s.Valid b) (u : ℕ) (hu : u ≤ step.batch.size) :
        inductive Complexity.DepthThreeLowerBound.SparsePath {V : Type uDepth1} [DecidableEq V] (r : ℕ → ℕ) (start : SparseState V) :
        SparseState V → Type uDepth1

        A finite sequence of valid sparsification steps.

        Instances For
          def Complexity.DepthThreeLowerBound.SparsePath.length {V : Type uDepth1} [DecidableEq V] {r : ℕ → ℕ} {start finish : SparseState V} :
          SparsePath r start finish → ℕ

          The number of steps in a sparsification path.

          Equations
          Instances For
            noncomputable def Complexity.DepthThreeLowerBound.SparsePath.insertions {V : Type uDepth1} [DecidableEq V] {r : ℕ → ℕ} {start finish : SparseState V} :
            SparsePath r start finish → ℕ → ℕ

            The clauses inserted along a sparsification path.

            Equations
            Instances For
              def Complexity.DepthThreeLowerBound.SparsePath.processed {V : Type uDepth1} [DecidableEq V] {r : ℕ → ℕ} {start finish : SparseState V} :
              SparsePath r start finish → ℕ → ℕ

              Count processed sunflowers of each size along the path.

              Equations
              Instances For
                def Complexity.DepthThreeLowerBound.SparsePath.petalSteps {V : Type uDepth1} [DecidableEq V] {r : ℕ → ℕ} {start finish : SparseState V} :
                SparsePath r start finish → ℕ → ℕ

                Count petal-branch choices of each size along the path.

                Equations
                Instances For
                  theorem Complexity.DepthThreeLowerBound.SparsePath.valid {V : Type uDepth1} [DecidableEq V] {r : ℕ → ℕ} {b : ℕ} {start finish : SparseState V} (path : SparsePath r start finish) (hstart : start.Valid b) :
                  finish.Valid b
                  @[simp]
                  @[simp]
                  theorem Complexity.DepthThreeLowerBound.SparsePath.insertions_snoc {V : Type uDepth1} [DecidableEq V] {r : ℕ → ℕ} {start s t : SparseState V} (path : SparsePath r start s) (step : SparseStep r s t) (u : ℕ) :
                  (path.snoc step).insertions u = path.insertions u + if step.batch.size = u then step.batch.clauses.card else 0
                  theorem Complexity.DepthThreeLowerBound.SparsePath.insertions_sum_snoc {V : Type uDepth1} [DecidableEq V] {r : ℕ → ℕ} {start s t : SparseState V} (path : SparsePath r start s) (step : SparseStep r s t) (u : ℕ) :
                  ∑ v ∈ Finset.Ico 1 u, (path.snoc step).insertions v = ∑ v ∈ Finset.Ico 1 u, path.insertions v + if step.batch.size < u then step.batch.clauses.card else 0
                  theorem Complexity.DepthThreeLowerBound.SparsePath.added_occurrence_bound {V : Type uDepth1} [DecidableEq V] {r e D : ℕ → ℕ} {b : ℕ} {start finish : SparseState V} (path : SparsePath r start finish) (hnum : SparseNumerics r e D b) (hstart : start.Valid b) (hadded : start.added = ∅) (u : ℕ) :
                  1 ≤ u → u ≤ b → ∀ (l : Literal V), literalOccurrences finish.added u l ≤ e u + 1
                  theorem Complexity.DepthThreeLowerBound.SparsePath.online_insertion_bound {V : Type uDepth1} [DecidableEq V] {r e D : ℕ → ℕ} {b : ℕ} {start finish : SparseState V} (path : SparsePath r start finish) (hnum : SparseNumerics r e D b) (hstart : start.Valid b) (hadded : start.added = ∅) (u : ℕ) :
                  1 ≤ u → u ≤ b → path.insertions u ≤ (clausesOfSize finish.added u).card + (e u + 1) * ∑ v ∈ Finset.Ico 1 u, path.insertions v
                  theorem Complexity.DepthThreeLowerBound.SparsePath.insertion_recurrence {V : Type uDepth1} [DecidableEq V] {r e D : ℕ → ℕ} {b : ℕ} {start finish : SparseState V} [Fintype V] (path : SparsePath r start finish) (hnum : SparseNumerics r e D b) (hstart : start.Valid b) (hadded : start.added = ∅) (u : ℕ) (hu : 1 ≤ u) (hub : u ≤ b) :
                  path.insertions u ≤ (e u + 1) * (2 * Fintype.card V + ∑ v ∈ Finset.Ico 1 u, path.insertions v)
                  theorem Complexity.DepthThreeLowerBound.SparsePath.length_le_insertions {V : Type uDepth1} [DecidableEq V] {r : ℕ → ℕ} {b : ℕ} {start finish : SparseState V} (path : SparsePath r start finish) (hstart : start.Valid b) :
                  path.length ≤ ∑ u ∈ Finset.Ico 1 b, path.insertions u
                  theorem Complexity.DepthThreeLowerBound.SparsePath.processed_le_insertions {V : Type uDepth1} [DecidableEq V] {r : ℕ → ℕ} {start finish : SparseState V} (path : SparsePath r start finish) (i : ℕ) :
                  path.processed i ≤ ∑ u ∈ Finset.Ico 1 i, path.insertions u
                  theorem Complexity.DepthThreeLowerBound.SparsePath.petalSteps_mul_le_insertions {V : Type uDepth1} [DecidableEq V] {r : ℕ → ℕ} {start finish : SparseState V} (path : SparsePath r start finish) (i : ℕ) :
                  r i * path.petalSteps i ≤ ∑ u ∈ Finset.Ico 1 i, path.insertions u
                  theorem Complexity.DepthThreeLowerBound.sparse_insertion_budget_of_recurrence (r e D N : ℕ → ℕ) (b m : ℕ) (hnum : SparseNumerics r e D b) (hN : ∀ (u : ℕ), 1 ≤ u → u ≤ b → N u ≤ (e u + 1) * (2 * m + ∑ v ∈ Finset.Ico 1 u, N v)) (u : ℕ) :
                  1 ≤ u → u ≤ b → N u ≤ D u * m
                  theorem Complexity.DepthThreeLowerBound.SparsePath.insertion_budget {V : Type uDepth1} [DecidableEq V] {r e D : ℕ → ℕ} {b : ℕ} {start finish : SparseState V} [Fintype V] (path : SparsePath r start finish) (hnum : SparseNumerics r e D b) (hstart : start.Valid b) (hadded : start.added = ∅) (u : ℕ) (hu : 1 ≤ u) (hub : u ≤ b) :
                  theorem Complexity.DepthThreeLowerBound.SparsePath.insertion_sum_budget {V : Type uDepth1} [DecidableEq V] {r e D : ℕ → ℕ} {b : ℕ} {start finish : SparseState V} [Fintype V] (path : SparsePath r start finish) (hnum : SparseNumerics r e D b) (hstart : start.Valid b) (hadded : start.added = ∅) (i : ℕ) (hi : i ≤ b + 1) :
                  ∑ u ∈ Finset.Ico 1 i, path.insertions u ≤ (∑ u ∈ Finset.Ico 1 i, D u) * Fintype.card V
                  theorem Complexity.DepthThreeLowerBound.SparsePath.length_budget {V : Type uDepth1} [DecidableEq V] {r e D : ℕ → ℕ} {b : ℕ} {start finish : SparseState V} [Fintype V] (path : SparsePath r start finish) (hnum : SparseNumerics r e D b) (hstart : start.Valid b) (hadded : start.added = ∅) :
                  path.length ≤ (∑ u ∈ Finset.Ico 1 b, D u) * Fintype.card V
                  theorem Complexity.DepthThreeLowerBound.SparsePath.processed_budget {V : Type uDepth1} [DecidableEq V] {r e D : ℕ → ℕ} {b : ℕ} {start finish : SparseState V} [Fintype V] (path : SparsePath r start finish) (hnum : SparseNumerics r e D b) (hstart : start.Valid b) (hadded : start.added = ∅) (i : ℕ) (hi : i ≤ b) :
                  path.processed i ≤ (∑ u ∈ Finset.Ico 1 i, D u) * Fintype.card V
                  theorem Complexity.DepthThreeLowerBound.SparsePath.petalSteps_budget {V : Type uDepth1} [DecidableEq V] {r e D : ℕ → ℕ} {b : ℕ} {start finish : SparseState V} [Fintype V] (path : SparsePath r start finish) (hnum : SparseNumerics r e D b) (hstart : start.Valid b) (hadded : start.added = ∅) (i : ℕ) (hi : i ≤ b) :
                  r i * path.petalSteps i ≤ (∑ u ∈ Finset.Ico 1 i, D u) * Fintype.card V