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 nBool) :
localSensitivity (fun (y : Fin nBool) => !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 nBool) => !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 nBool) (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 nBool) (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.