Sensitivity separation: profile arithmetic #
Adapted from OpenAI's formalization at revision adc7f1241b42e322a6451854ab7e4b4c146bf78a.
Source: https://github.com/openai/math/blob/adc7f1241b42e322a6451854ab7e4b4c146bf78a/lean/OAI/Combinatorics/Sensitivity/ProfileArithmetic.lean
Imports, namespaces, module visibility, documentation, and formatting are adapted for complexitylib. The source theorem statements and mathematical proofs are retained.
noncomputable def
Complexity.BooleanAnalysis.Sensitivity.Internal.normalizedMax
(M : ℝ)
(n : ℕ)
(s₀ s₁ : ℝ)
:
Maximum of the two sensitivity bounds after their level-dependent normalization.
Equations
Instances For
theorem
Complexity.BooleanAnalysis.Sensitivity.Internal.normalizedMax_nonneg
{M s₀ s₁ : ℝ}
{n : ℕ}
(hM : 0 < M)
(hs₀ : 0 ≤ s₀)
:
theorem
Complexity.BooleanAnalysis.Sensitivity.Internal.le_normalizedMax_zero
{M s₀ s₁ : ℝ}
{n : ℕ}
(hM : 0 < M)
:
theorem
Complexity.BooleanAnalysis.Sensitivity.Internal.le_normalizedMax_one
{M s₀ s₁ : ℝ}
{n : ℕ}
(hM : 0 < M)
:
theorem
Complexity.BooleanAnalysis.Sensitivity.Internal.raw_profiles_step
{M r ε u v p : ℝ}
(hM : 0 < M)
(hp : 0 ≤ p)
(hu : 0 ≤ u)
(hv : 0 ≤ v)
(hr : 0 ≤ r)
(hεr : r ≤ ε * M)
(hεt : 16 ≤ ε * M)
{s₀ s₁ j₀ j₁ s₀' s₁' j₀' j₁' : ℝ}
(hs₀ : s₀ ≤ u * p)
(hs₁ : s₁ ≤ u * (p * M))
(hj₀ : j₀ ≤ v * p)
(hj₁ : j₁ ≤ v * (p * M))
(hS₀ : s₀' ≤ 16 * s₀ + s₁ + 3 * j₁)
(hS₁ : s₁' ≤ M ^ 2 * s₀ + r * s₁)
(hJ₀ : j₀' ≤ 16 * s₀ + 3 * j₁)
(hJ₁ : j₁' ≤ M ^ 2 * j₀ + r * s₁)
:
theorem
Complexity.BooleanAnalysis.Sensitivity.Internal.normalized_profiles_step
{M r ε : ℝ}
{n : ℕ}
(hM : 0 < M)
(hr : 0 ≤ r)
(hεr : r / M ≤ ε)
(hεt : 16 / M ≤ ε)
{s₀ s₁ j₀ j₁ s₀' s₁' j₀' j₁' : ℝ}
(hs₀ : 0 ≤ s₀)
(hj₀ : 0 ≤ j₀)
(hS₀ : s₀' ≤ 16 * s₀ + s₁ + 3 * j₁)
(hS₁ : s₁' ≤ M ^ 2 * s₀ + r * s₁)
(hJ₀ : j₀' ≤ 16 * s₀ + 3 * j₁)
(hJ₁ : j₁' ≤ M ^ 2 * j₀ + r * s₁)
:
normalizedMax M (n + 1) s₀' s₁' ≤ (1 + ε) * normalizedMax M n s₀ s₁ + 3 * normalizedMax M n j₀ j₁ ∧ normalizedMax M (n + 1) j₀' j₁' ≤ ε * normalizedMax M n s₀ s₁ + 3 * normalizedMax M n j₀ j₁