Documentation

Atlas.BooleanFunctions.code.InfluenceDerivative

Instances For
    noncomputable def BooleanFourier.boolDiscreteDerivative {n : } (g : (Fin (n + 1)Bool)) (i : Fin (n + 1)) :
    (Fin nBool)
    Instances For
      @[simp]
      theorem BooleanFourier.boolDiscreteDerivative_apply {n : } (g : (Fin (n + 1)Bool)) (i : Fin (n + 1)) (y : Fin nBool) :
      boolDiscreteDerivative g i y = 1 / 2 * (g (i.insertNth true y) - g (i.insertNth false y))
      theorem BooleanFourier.flipCoord_insertNth {n : } (i : Fin (n + 1)) (b : Bool) (y : Fin nBool) :
      flipCoord (i.insertNth b y) i = i.insertNth (!b) y
      theorem BooleanFourier.ne_flipCoord_iff_insertNth {n : } (f : (Fin (n + 1)Bool)Bool) (i : Fin (n + 1)) (b : Bool) (y : Fin nBool) :
      f (i.insertNth b y) f (flipCoord (i.insertNth b y) i) f (i.insertNth true y) f (i.insertNth false y)
      theorem BooleanFourier.influence_filter_card_eq {n : } (f : (Fin (n + 1)Bool)Bool) (i : Fin (n + 1)) :
      {x : Fin (n + 1)Bool | f x f (flipCoord x i)}.card = 2 * {y : Fin nBool | f (i.insertNth true y) f (i.insertNth false y)}.card
      theorem BooleanFourier.influence_eq_l2_norm_sq_discreteDerivative {n : } (f : (Fin (n + 1)Bool)Bool) (i : Fin (n + 1)) :
      influence f i = (∑ y : Fin nBool, boolDiscreteDerivative (fun (x : Fin (n + 1)Bool) => boolToSign (f x)) i y ^ 2) / 2 ^ n