Sensitivity separation: composition #
Adapted from OpenAI's formalization at revision adc7f1241b42e322a6451854ab7e4b4c146bf78a.
Source: https://github.com/openai/math/blob/adc7f1241b42e322a6451854ab7e4b4c146bf78a/lean/OAI/Combinatorics/Sensitivity/Composition.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.compose
{I J : Type}
(f : (I → Bool) → Bool)
(g : (J → Bool) → Bool)
:
Block composition: evaluate the inner function in each row, then the outer function.
Equations
- Complexity.BooleanAnalysis.Sensitivity.Internal.compose f g x = f fun (i : I) => g fun (j : J) => x (i, j)
Instances For
theorem
Complexity.BooleanAnalysis.Sensitivity.Internal.blockSensitivityAt_compose_zero_le
{I J : Type}
[Fintype I]
[Fintype J]
(f : (I → Bool) → Bool)
(g : (J → Bool) → Bool)
(hg : (g fun (x : J) => false) = false)
:
((blockSensitivityAt f fun (x : I) => false) * blockSensitivityAt g fun (x : J) => false) ≤ blockSensitivityAt (compose f g) fun (x : I × J) => false