Sensitivity separation: recursive blocks #
Adapted from OpenAI's formalization at revision adc7f1241b42e322a6451854ab7e4b4c146bf78a.
Source: https://github.com/openai/math/blob/adc7f1241b42e322a6451854ab7e4b4c146bf78a/lean/OAI/Combinatorics/Sensitivity/RecursiveBlocks.lean
Imports, namespaces, module visibility, documentation, and formatting are adapted for complexitylib. The source theorem statements and mathematical proofs are retained.
def
Complexity.BooleanAnalysis.Sensitivity.Internal.rowLift
{k r : ℕ}
{I : Type}
(i : Fin k)
(B : Finset I)
:
Lift a sensitive block to every column of the specified row.
Equations
- Complexity.BooleanAnalysis.Sensitivity.Internal.rowLift i B = Finset.map { toFun := fun (p : Fin r × I) => ((i, p.1), p.2), inj' := ⋯ } (Finset.univ.product B)
Instances For
theorem
Complexity.BooleanAnalysis.Sensitivity.Internal.recursiveFamily_rowLift
{k r h : ℕ}
{I : Type}
(T : Tournament k)
(label : Fin k → Fin k → Fin r)
(F : Fin (h + 1) → (I → Bool) → Bool)
(hzero : ∀ (q : Fin (h + 1)), (F q fun (x : I) => false) = false)
(B : Finset I)
(hB : ∀ (q : Fin (h + 1)), F q (flip (fun (x : I) => false) B) = true)
(i : Fin k)
(q : Fin h)
: