Documentation

Complexity.Foundations.BooleanAnalysis.Convolution

Convolution on the Boolean cube #

Bit strings add coordinatewise modulo two, (x + y) i = (x i ^^ y i), through Mathlib's Boolean ring structure on Bool. Adding a fixed string permutes the cube, so the uniform expectation is translation invariant (Fintype.expect_add_left), and the characters turn sums into products (BitString.chi_add). The convolution of two real functions on the cube averages f y * g (x + y) over y (BitString.convolution); it is commutative (BitString.convolution_comm), and its Fourier coefficients are the products of the coefficients of the factors (BitString.fourierCoeff_convolution) O'Donnell, Section 1.5.

Main definitions #

Main results #

References #

noncomputable def Cslib.BitString.convolution {ι : Type u_1} [Fintype ι] [DecidableEq ι] (f g : (ι → Bool) → ℝ) (x : ι → Bool) :

The convolution of two real functions on the cube: (f ∗ g) x = 𝔼_y f y * g (x + y) O'Donnell, Definition 1.24.

Instances For
    theorem Cslib.BitString.convolution_comm {ι : Type u_1} [Fintype ι] [DecidableEq ι] (f g : (ι → Bool) → ℝ) :

    Convolution is commutative.

    theorem Cslib.BitString.fourierCoeff_convolution {ι : Type u_1} [Fintype ι] [DecidableEq ι] (f g : (ι → Bool) → ℝ) (S : Finset ι) :

    The convolution theorem: the Fourier coefficients of a convolution are the products of the Fourier coefficients of the factors O'Donnell, Theorem 1.27.