Documentation

Atlas.BooleanFunctions.code.Hypercontractivity

theorem BooleanFourier.sum_chi_mul_chi_point {n : } (S T : Finset (Fin n)) :
x : Fin nBool, chi S x * chi T x = if S = T then 2 ^ n else 0
noncomputable def BooleanFourier.noiseOp {n : } (ρ : ) (f : BoolFn n) :
Instances For
    theorem BooleanFourier.noise_kernel_expand {n : } (ρ : ) (x y : Fin nBool) :
    i : Fin n, (1 + ρ * boolToReal (x i) * boolToReal (y i)) = S : Finset (Fin n), ρ ^ S.card * chi S x * chi S y
    theorem BooleanFourier.noiseOp_eq_fourier_expansion {n : } (ρ : ) (f : BoolFn n) (x : Fin nBool) :
    noiseOp ρ f x = S : Finset (Fin n), ρ ^ S.card * fourierCoeff f S * chi S x
    theorem BooleanFourier.noiseOp_fourierCoeff {n : } (ρ : ) (f : BoolFn n) (S : Finset (Fin n)) :
    theorem BooleanFourier.noiseOp_l2_norm_sq {n : } (ρ : ) (f : BoolFn n) :
    S : Finset (Fin n), fourierCoeff (noiseOp ρ f) S ^ 2 = S : Finset (Fin n), ρ ^ (2 * S.card) * fourierCoeff f S ^ 2
    noncomputable def BooleanFourier.restrictLast {n : } (f : BoolFn (n + 1)) (b : Bool) :
    Instances For
      theorem BooleanFourier.sum_finBool_succ_split {n : } (g : (Fin (n + 1)Bool)) :
      x : Fin (n + 1)Bool, g x = x' : Fin nBool, g (Fin.snoc x' true) + x' : Fin nBool, g (Fin.snoc x' false)
      theorem BooleanFourier.lpNorm_restrictLast {n : } (f : BoolFn (n + 1)) {q : } (hq : 0 < q) :
      lpNorm q f ^ q = 1 / 2 * lpNorm q (restrictLast f true) ^ q + 1 / 2 * lpNorm q (restrictLast f false) ^ q
      theorem BooleanFourier.noiseOp_one {n : } (f : BoolFn n) :
      noiseOp 1 f = f
      theorem BooleanFourier.noiseOp_comp {n : } (ρ σ : ) (f : BoolFn n) :
      noiseOp ρ (noiseOp σ f) = noiseOp (ρ * σ) f
      theorem BooleanFourier.sum_pow_card_mul_fourierCoeff_sq_le {n : } (f : BoolFn n) (k : ) (c : ) (hc : 1 c) (hdeg : degree f k) :
      S : Finset (Fin n), c ^ S.card * fourierCoeff f S ^ 2 c ^ k * S : Finset (Fin n), fourierCoeff f S ^ 2
      theorem BooleanFourier.hypercontractive_low_degree {n : } (f : BoolFn n) (k : ) (q : ) (hq : 2 q) (hdeg : degree f k) (h_bb : ∀ (g : BoolFn n) (ρ' : ), 0 ρ'ρ' ((2 - 1) / (q - 1)) → lpNorm q (noiseOp ρ' g) lpNorm 2 g) :
      lpNorm q f (q - 1) ^ (k / 2) * lpNorm 2 f
      theorem BooleanFourier.fourierCoeff_noiseOp {n : } (ρ : ) (f : BoolFn n) (S : Finset (Fin n)) :
      noncomputable def BooleanFourier.combineAssignment {n : } (J : Finset (Fin n)) (xJ : JBool) (z : JBool) :
      Fin nBool
      Instances For
        noncomputable def BooleanFourier.restrictToSubset {n : } (J : Finset (Fin n)) (f : BoolFn n) (z : JBool) :
        (JBool)
        Instances For
          noncomputable def BooleanFourier.chiOn {n : } (J : Finset (Fin n)) (S : Finset J) (x : JBool) :
          Instances For
            noncomputable def BooleanFourier.fourierCoeffOn {n : } (J : Finset (Fin n)) (g : (JBool)) (S : Finset J) :
            Instances For
              theorem BooleanFourier.subtype_map_union_left {n : } (J : Finset (Fin n)) (S : Finset J) (T : Finset J) :
              Finset.subtype (fun (x : Fin n) => x J) (Finset.map (Function.Embedding.subtype fun (x : Fin n) => x J) S Finset.map (Function.Embedding.subtype fun (x : Fin n) => x J) T) = S
              theorem BooleanFourier.subtype_map_union_right {n : } (J : Finset (Fin n)) (S : Finset J) (T : Finset J) :
              Finset.subtype (fun (x : Fin n) => x J) (Finset.map (Function.Embedding.subtype fun (x : Fin n) => x J) S Finset.map (Function.Embedding.subtype fun (x : Fin n) => x J) T) = T
              theorem BooleanFourier.finset_subtype_map_union {n : } (J U : Finset (Fin n)) :
              U = Finset.map (Function.Embedding.subtype fun (x : Fin n) => x J) (Finset.subtype (fun (x : Fin n) => x J) U) Finset.map (Function.Embedding.subtype fun (x : Fin n) => x J) (Finset.subtype (fun (x : Fin n) => x J) U)
              theorem BooleanFourier.chi_combineAssignment_eq {n : } (J U : Finset (Fin n)) (xJ : JBool) (z : JBool) :
              chi U (combineAssignment J xJ z) = chiOn J (Finset.subtype (fun (x : Fin n) => x J) U) xJ * chiOn J (Finset.subtype (fun (x : Fin n) => x J) U) z
              theorem BooleanFourier.sum_chiOn_mul_chiOn {n : } (J : Finset (Fin n)) (S T : Finset J) :
              x : JBool, chiOn J S x * chiOn J T x = if S = T then 2 ^ J.card else 0
              theorem BooleanFourier.fourierCoeff_restrictToSubset {n : } (J : Finset (Fin n)) (f : BoolFn n) (z : JBool) (S : Finset J) :