Documentation

Atlas.BooleanFunctions.code.Theorems

noncomputable def BooleanFourier.vol {n : } (f : (Fin nBool)Bool) :
Instances For
    theorem BooleanFourier.vol_nonneg {n : } (f : (Fin nBool)Bool) :
    0 vol f
    theorem BooleanFourier.vol_le_one {n : } (f : (Fin nBool)Bool) :
    vol f 1
    theorem BooleanFourier.parseval_signed {n : } (f : (Fin nBool)Bool) :
    S : Finset (Fin n), fourierCoeff (fun (x : Fin nBool) => boolToReal (f x)) S ^ 2 = 1
    noncomputable def BooleanFourier.agreementProb {n : } (f : (Fin nBool)Bool) :
    Instances For
      theorem BooleanFourier.boolToReal_agreement_indicator {n : } (f : (Fin nBool)Bool) (x y : Fin nBool) :
      (if boolToReal (f x) * boolToReal (f y) = boolToReal (f (boolMul x y)) then 1 else 0) = (1 + boolToReal (f x) * boolToReal (f y) * boolToReal (f (boolMul x y))) / 2
      theorem BooleanFourier.tripleCorrelation_eq_sum_cube {n : } (g : (Fin nBool)) :
      (1 / 2 ^ n) ^ 2 * x : Fin nBool, y : Fin nBool, g x * g y * g (boolMul x y) = S : Finset (Fin n), fourierCoeff g S ^ 3
      theorem BooleanFourier.agreementProb_eq {n : } (f : (Fin nBool)Bool) :
      agreementProb f = (1 + S : Finset (Fin n), fourierCoeff (fun (x : Fin nBool) => boolToReal (f x)) S ^ 3) / 2
      theorem BooleanFourier.exists_fourierCoeff_ge_of_sum_cube_ge {n : } (f : (Fin nBool)Bool) (δ : ) ( : S : Finset (Fin n), fourierCoeff (fun (x : Fin nBool) => boolToReal (f x)) S ^ 3 2 * δ) :
      ∃ (S : Finset (Fin n)), fourierCoeff (fun (x : Fin nBool) => boolToReal (f x)) S 2 * δ
      theorem BooleanFourier.exists_fourierCoeff_ge_of_agreementProb {n : } (f : (Fin nBool)Bool) (δ : ) ( : agreementProb f 1 / 2 + δ) :
      ∃ (S : Finset (Fin n)), fourierCoeff (fun (x : Fin nBool) => boolToReal (f x)) S 2 * δ