Documentation

Atlas.BooleanFunctions.code.FourierSampling

theorem BooleanFourier.fourierCoeff_eq_expectation {n : } (f : (Fin nBool)) (S : Finset (Fin n)) :
fourierCoeff f S = 1 / 2 ^ n * x : Fin nBool, f x * chi S x
theorem BooleanFourier.abs_chi_eq_one {n : } (S : Finset (Fin n)) (x : Fin nBool) :
|chi S x| = 1
theorem BooleanFourier.sample_bounded {n : } (f : (Fin nBool)) (S : Finset (Fin n)) (hf : ∀ (x : Fin nBool), |f x| 1) (x : Fin nBool) :
|f x * chi S x| 1
theorem BooleanFourier.fourier_sampling_hoeffding_bound {n : } (f : (Fin nBool)) (S : Finset (Fin n)) (hf : ∀ (x : Fin nBool), |f x| 1) (ε : ) ( : 0 < ε) (m : ) (hm : 1 m) :
{samples : Fin mFin nBool | |1 / m * i : Fin m, f (samples i) * chi S (samples i) - fourierCoeff f S| ε}.card / (2 ^ n) ^ m 2 * Real.exp (-(m * ε ^ 2 / 2))
theorem BooleanFourier.claim_1_2_fourier_sampling {n : } (f : (Fin nBool)) (S : Finset (Fin n)) (hf : ∀ (x : Fin nBool), |f x| 1) (ε : ) ( : 0 < ε) (δ : ) ( : 0 < δ) (hδ2 : δ 1) :
∃ (m : ), 1 m m 2 * Real.log (2 / δ) / ε ^ 2⌉₊ {samples : Fin mFin nBool | |1 / m * i : Fin m, f (samples i) * chi S (samples i) - fourierCoeff f S| ε}.card / (2 ^ n) ^ m δ