Documentation

LeanPool.Sensitivity.Basic

Elementary Properties of Sensitivity #

Basic bounds and symmetries for the sensitivity of Boolean functions.

Main results #

theorem LeanPoolSensitivity.BoolFun.localSensitivity_not {n : ℕ} (f : BoolFun n) (x : Fin n → Bool) :
localSensitivity (fun (y : Fin n → Bool) => !f y) x = f.localSensitivity x

The local sensitivity of the negation of f equals the local sensitivity of f.

theorem LeanPoolSensitivity.BoolFun.sensitivity_not {n : ℕ} (f : BoolFun n) :
(sensitivity fun (y : Fin n → Bool) => !f y) = f.sensitivity

The sensitivity of the negation of f equals the sensitivity of f.

The local sensitivity of f at any input x is at most n.

theorem LeanPoolSensitivity.BoolFun.sensitiveAt_iff {n : ℕ} (f : BoolFun n) (x : Fin n → Bool) (i : Fin n) :
f.sensitiveAt x i ↔ f (flipBit x i) ≠ f x

Unfolding lemma: f is sensitive at x in coordinate i iff flipping that coordinate changes the value of f.

theorem LeanPoolSensitivity.BoolFun.sensitiveAt_flipBit {n : ℕ} (f : BoolFun n) (x : Fin n → Bool) (i : Fin n) :

Sensitivity at x is symmetric in the following sense: f is sensitive at x in direction i iff f is sensitive at flipBit x i in direction i.