Sensitivity separation: iterates #
Adapted from OpenAI's formalization at revision adc7f1241b42e322a6451854ab7e4b4c146bf78a.
Source: https://github.com/openai/math/blob/adc7f1241b42e322a6451854ab7e4b4c146bf78a/lean/OAI/Combinatorics/Sensitivity/Iterates.lean
Imports, namespaces, module visibility, documentation, and formatting are adapted for complexitylib. The source theorem statements and mathematical proofs are retained.
@[reducible, inline]
Coordinates of an iterated block composition, starting with a singleton.
Equations
Instances For
@[instance_reducible]
instance
Complexity.BooleanAnalysis.Sensitivity.Internal.iterateCoordFintype
{I : Type}
[Fintype I]
(m : ℕ)
:
Fintype (IterateCoord I m)
Equations
- Complexity.BooleanAnalysis.Sensitivity.Internal.iterateCoordFintype 0 = { elems := {PUnit.unit}, complete := ⋯ }
- Complexity.BooleanAnalysis.Sensitivity.Internal.iterateCoordFintype m.succ = { elems := Finset.univ ×ˢ Finset.univ, complete := ⋯ }
def
Complexity.BooleanAnalysis.Sensitivity.Internal.iterateCompose
{I : Type}
(f : (I → Bool) → Bool)
(m : ℕ)
:
(IterateCoord I m → Bool) → Bool
Repeated block composition of a Boolean function.
Equations
- One or more equations did not get rendered due to their size.
- Complexity.BooleanAnalysis.Sensitivity.Internal.iterateCompose f 0 = fun (x : Complexity.BooleanAnalysis.Sensitivity.Internal.IterateCoord I 0 → Bool) => x ()
Instances For
theorem
Complexity.BooleanAnalysis.Sensitivity.Internal.iterateCompose_one
{I : Type}
(f : (I → Bool) → Bool)
(x : IterateCoord I 1 → Bool)
:
theorem
Complexity.BooleanAnalysis.Sensitivity.Internal.iterateCoord_card
{I : Type}
[Fintype I]
(m : ℕ)
:
theorem
Complexity.BooleanAnalysis.Sensitivity.Internal.blockSensitivityAt_iterateCompose_zero
{I : Type}
[Fintype I]
(f : (I → Bool) → Bool)
(hf : (f fun (x : I) => false) = false)
(m : ℕ)
:
(blockSensitivityAt f fun (x : I) => false) ^ m ≤ blockSensitivityAt (iterateCompose f m) fun (x : IterateCoord I m) => false
noncomputable def
Complexity.BooleanAnalysis.Sensitivity.Internal.iterateFin
{I : Type}
[Fintype I]
(f : (I → Bool) → Bool)
(m : ℕ)
:
(Fin (Fintype.card I ^ m) → Bool) → Bool
Reindex the iterated composition onto a finite ordinal.
Equations
- One or more equations did not get rendered due to their size.
Instances For
theorem
Complexity.BooleanAnalysis.Sensitivity.Internal.blockSensitivityAt_iterateFin_zero
{I : Type}
[Fintype I]
(f : (I → Bool) → Bool)
(hf : (f fun (x : I) => false) = false)
(m : ℕ)
:
(blockSensitivityAt f fun (x : I) => false) ^ m ≤ blockSensitivityAt (iterateFin f m) fun (x : Fin (Fintype.card I ^ m)) => false
theorem
Complexity.BooleanAnalysis.Sensitivity.Internal.iterateFin_nonconstant
{I : Type}
[Fintype I]
(f : (I → Bool) → Bool)
(hf : (f fun (x : I) => false) = false)
(h : 0 < blockSensitivityAt f fun (x : I) => false)
(m : ℕ)
:
∃ (x : Fin (Fintype.card I ^ m) → Bool) (y : Fin (Fintype.card I ^ m) → Bool), iterateFin f m x ≠ iterateFin f m y