Sensitivity separation: separation arithmetic #
Adapted from OpenAI's formalization at revision adc7f1241b42e322a6451854ab7e4b4c146bf78a.
Source: https://github.com/openai/math/blob/adc7f1241b42e322a6451854ab7e4b4c146bf78a/lean/OAI/Combinatorics/Sensitivity/SeparationArithmetic.lean
Imports, namespaces, module visibility, documentation, and formatting are adapted for complexitylib. The source theorem statements and mathematical proofs are retained.
theorem
Complexity.BooleanAnalysis.Sensitivity.Internal.ratio_of_bounds
{I : Type}
[Fintype I]
(f : (I → Bool) → Bool)
(s b : ℝ)
(hpos : 0 < ↑(sensitivity f))
(hs : ↑(sensitivity f) ≤ s)
(hb : b ≤ ↑(blockSensitivityAt f fun (x : I) => false))
(hb0 : 0 ≤ b)
:
theorem
Complexity.BooleanAnalysis.Sensitivity.Internal.quantitative_ratio_of_bounds
{I : Type}
[Fintype I]
(f : (I → Bool) → Bool)
(d M : ℕ)
(hM : 0 < M)
(hnc : ∃ (x : I → Bool) (y : I → Bool), f x ≠ f y)
(hs : sensitivity f ≤ 2 * (d + 2) * M ^ (d + 1))
(hb : M ^ 2 * (2 * M ^ 2 + 1) ^ d ≤ blockSensitivityAt f fun (x : I) => false)
:
theorem
Complexity.BooleanAnalysis.Sensitivity.Internal.quantitative_ratio_tendsto :
Filter.Tendsto (fun (d : ℕ) => 2 ^ d / (4 * (↑d + 2) ^ 2)) Filter.atTop Filter.atTop