6.2. F₂-polynomials
Example 6.17. For the parity function on n>0 bits, encoding
False and True by \pm1\in\mathbb R gives
\chi_{[n]}(x)=x_1x_2\cdots x_n,
of real degree n. Encoding False and True by 0,1\in\mathbb F_2 instead
gives
\chi_{[n]}(x)=x_1+x_2+\cdots+x_n,
of \mathbb F_2-degree 1.
For n=0, both encodings give the empty parity, whose real and
\mathbb F_2 degrees are 0.
Lean code for Lemma6.2.1●3 theorems
Associated Lean declarations
-
theoremdefined in FABL/Chapter06/F₂Polynomials/Examples.leancomplete
theorem FABL.fourierDegree_parityFunction_univ {n : ℕ} : FABL.fourierDegree (FABL.parityFunction Finset.univ).toReal = n
theorem FABL.fourierDegree_parityFunction_univ {n : ℕ} : FABL.fourierDegree (FABL.parityFunction Finset.univ).toReal = n
The full parity function on `n` variables has real degree `n`.
-
theoremdefined in FABL/Chapter06/F₂Polynomials/Examples.leancomplete
theorem FABL.booleanFunctionF₂Encoding_parityFunction {n : ℕ} (S : Finset (Fin n)) : FABL.booleanFunctionF₂Encoding (FABL.parityFunction S) = ⇑(FABL.coordinateSum S)
theorem FABL.booleanFunctionF₂Encoding_parityFunction {n : ℕ} (S : Finset (Fin n)) : FABL.booleanFunctionF₂Encoding (FABL.parityFunction S) = ⇑(FABL.coordinateSum S)
The binary encoding of parity is the linear sum of the selected coordinates.
-
theoremdefined in FABL/Chapter06/F₂Polynomials/Examples.leancomplete
theorem FABL.functionAlgebraicDegree_booleanFunctionF₂Encoding_parityFunction_univ {n : ℕ} (hn : 0 < n) : FABL.functionAlgebraicDegree (FABL.booleanFunctionF₂Encoding (FABL.parityFunction Finset.univ)) = 1
theorem FABL.functionAlgebraicDegree_booleanFunctionF₂Encoding_parityFunction_univ {n : ℕ} (hn : 0 < n) : FABL.functionAlgebraicDegree (FABL.booleanFunctionF₂Encoding (FABL.parityFunction Finset.univ)) = 1
The full parity function has binary algebraic degree one in positive dimension.
-
FABL.f₂PointIndicator[complete] -
FABL.f₂PointIndicator_eq_ite[complete]
Equation (6.1). For a\in\mathbb F_2^n, the point indicator
\mathbf1_{\{a\}}:\mathbb F_2^n\to\mathbb F_2 is represented by the
multilinear polynomial
\mathbf1_{\{a\}}(x)
=\prod_{i:a_i=1}x_i\prod_{i:a_i=0}(1-x_i).
Lean code for Lemma6.2.2●2 declarations
Associated Lean declarations
-
FABL.f₂PointIndicator[complete]
-
FABL.f₂PointIndicator_eq_ite[complete]
-
FABL.f₂PointIndicator[complete] -
FABL.f₂PointIndicator_eq_ite[complete]
-
defdefined in FABL/Chapter06/F₂Polynomials/Interpolation.leancomplete
def FABL.f₂PointIndicator {n : ℕ} (a x : FABL.F₂Cube n) : FABL.𝔽₂
def FABL.f₂PointIndicator {n : ℕ} (a x : FABL.F₂Cube n) : FABL.𝔽₂
The multilinear point-indicator polynomial on the binary cube.
-
theoremdefined in FABL/Chapter06/F₂Polynomials/Interpolation.leancomplete
theorem FABL.f₂PointIndicator_eq_ite {n : ℕ} (a x : FABL.F₂Cube n) : FABL.f₂PointIndicator a x = if x = a then 1 else 0
theorem FABL.f₂PointIndicator_eq_ite {n : ℕ} (a x : FABL.F₂Cube n) : FABL.f₂PointIndicator a x = if x = a then 1 else 0
Equation (6.1): the point-indicator polynomial is one exactly at its indexed point.
Equation (6.2). Every f:\mathbb F_2^n\to\mathbb F_2 has the
interpolation formula
f(x)=\sum_{a\in\mathbb F_2^n}f(a)\mathbf1_{\{a\}}(x).
Lean code for Lemma6.2.3●1 theorem
Associated Lean declarations
-
FABL.f₂Interpolation[complete]
-
FABL.f₂Interpolation[complete]
-
theoremdefined in FABL/Chapter06/F₂Polynomials/Interpolation.leancomplete
theorem FABL.f₂Interpolation {n : ℕ} (f : FABL.F₂BooleanFunction n) (x : FABL.F₂Cube n) : ∑ a, f a * FABL.f₂PointIndicator a x = f x
theorem FABL.f₂Interpolation {n : ℕ} (f : FABL.F₂BooleanFunction n) (x : FABL.F₂Cube n) : ∑ a, f a * FABL.f₂PointIndicator a x = f x
Equation (6.2): every binary Boolean function is the sum of its point indicators.
-
FABL.ANFCoefficients[complete] -
FABL.anfMonomial[complete] -
FABL.anfEval[complete]
Equation (6.3) (algebraic normal form). After multilinear simplification,
the interpolation of f:\mathbb F_2^n\to\mathbb F_2 has the form
f(x)=\sum_{S\subseteq[n]}c_Sx^S,
\qquad
x^S=\prod_{i\in S}x_i,
\qquad c_S\in\mathbb F_2.
This is called the \mathbb F_2-polynomial representation, or algebraic
normal form, of f.
Lean code for Definition6.2.4●3 definitions
Associated Lean declarations
-
FABL.ANFCoefficients[complete]
-
FABL.anfMonomial[complete]
-
FABL.anfEval[complete]
-
FABL.ANFCoefficients[complete] -
FABL.anfMonomial[complete] -
FABL.anfEval[complete]
-
abbrevdefined in FABL/Chapter06/F₂Polynomials/ANF.leancomplete
abbrev FABL.ANFCoefficients (n : ℕ) : Type
abbrev FABL.ANFCoefficients (n : ℕ) : Type
A square-free algebraic normal form coefficient family over coordinate subsets.
-
defdefined in FABL/Chapter06/F₂Polynomials/ANF.leancomplete
def FABL.anfMonomial {n : ℕ} (S : Finset (Fin n)) (x : FABL.F₂Cube n) : FABL.𝔽₂
def FABL.anfMonomial {n : ℕ} (S : Finset (Fin n)) (x : FABL.F₂Cube n) : FABL.𝔽₂
The square-free monomial `∏ᵢ∈S xᵢ` over `𝔽₂`.
-
defdefined in FABL/Chapter06/F₂Polynomials/ANF.leancomplete
def FABL.anfEval {n : ℕ} (c : FABL.ANFCoefficients n) (x : FABL.F₂Cube n) : FABL.𝔽₂
def FABL.anfEval {n : ℕ} (c : FABL.ANFCoefficients n) (x : FABL.F₂Cube n) : FABL.𝔽₂
Evaluation of a square-free algebraic normal form.
-
FABL.threeBitParity_integer_interpolation[complete] -
FABL.threeBitParity_f₂_interpolation[complete]
Equation (6.4). Interpolating the three-bit parity function first over the
integers gives
\begin{aligned}
\chi_{[3]}(x)
&=(1-x_1)(1-x_2)x_3+(1-x_1)x_2(1-x_3)\\
&\quad+x_1(1-x_2)(1-x_3)+x_1x_2x_3\\
&=x_1+x_2+x_3-2(x_1x_2+x_1x_3+x_2x_3)+4x_1x_2x_3.
\end{aligned}
Reducing the coefficients modulo 2 yields
\chi_{[3]}(x)=x_1+x_2+x_3 over \mathbb F_2.
Lean code for Lemma6.2.5●2 theorems
Associated Lean declarations
-
FABL.threeBitParity_integer_interpolation[complete]
-
FABL.threeBitParity_f₂_interpolation[complete]
-
FABL.threeBitParity_integer_interpolation[complete] -
FABL.threeBitParity_f₂_interpolation[complete]
-
theoremdefined in FABL/Chapter06/F₂Polynomials/Interpolation.leancomplete
theorem FABL.threeBitParity_integer_interpolation (x₁ x₂ x₃ : ℤ) : (1 - x₁) * (1 - x₂) * x₃ + (1 - x₁) * x₂ * (1 - x₃) + x₁ * (1 - x₂) * (1 - x₃) + x₁ * x₂ * x₃ = x₁ + x₂ + x₃ - 2 * (x₁ * x₂ + x₁ * x₃ + x₂ * x₃) + 4 * (x₁ * x₂ * x₃)
theorem FABL.threeBitParity_integer_interpolation (x₁ x₂ x₃ : ℤ) : (1 - x₁) * (1 - x₂) * x₃ + (1 - x₁) * x₂ * (1 - x₃) + x₁ * (1 - x₂) * (1 - x₃) + x₁ * x₂ * x₃ = x₁ + x₂ + x₃ - 2 * (x₁ * x₂ + x₁ * x₃ + x₂ * x₃) + 4 * (x₁ * x₂ * x₃)
The integer interpolation expansion of three-bit parity before reducing coefficients modulo two.
-
theoremdefined in FABL/Chapter06/F₂Polynomials/Interpolation.leancomplete
theorem FABL.threeBitParity_f₂_interpolation (x₁ x₂ x₃ : FABL.𝔽₂) : (1 - x₁) * (1 - x₂) * x₃ + (1 - x₁) * x₂ * (1 - x₃) + x₁ * (1 - x₂) * (1 - x₃) + x₁ * x₂ * x₃ = x₁ + x₂ + x₃
theorem FABL.threeBitParity_f₂_interpolation (x₁ x₂ x₃ : FABL.𝔽₂) : (1 - x₁) * (1 - x₂) * x₃ + (1 - x₁) * x₂ * (1 - x₃) + x₁ * (1 - x₂) * (1 - x₃) + x₁ * x₂ * x₃ = x₁ + x₂ + x₃
Equation (6.4): reducing the three-bit parity interpolation modulo two leaves its linear polynomial.
-
FABL.anfEval_anfCoeff[complete] -
FABL.anfEval_injective[complete] -
FABL.existsUnique_anfEval[complete]
Proposition 6.18. Every function
f:\mathbb F_2^n\to\mathbb F_2 has a unique multilinear
\mathbb F_2-polynomial representation
f(x)=\sum_{S\subseteq[n]}c_Sx^S.
Lean code for Proposition6.2.6●3 theorems
Associated Lean declarations
-
FABL.anfEval_anfCoeff[complete]
-
FABL.anfEval_injective[complete]
-
FABL.existsUnique_anfEval[complete]
-
FABL.anfEval_anfCoeff[complete] -
FABL.anfEval_injective[complete] -
FABL.existsUnique_anfEval[complete]
-
theoremdefined in FABL/Chapter06/F₂Polynomials/ANF.leancomplete
theorem FABL.anfEval_anfCoeff {n : ℕ} (f : FABL.F₂BooleanFunction n) : FABL.anfEval (FABL.anfCoeff f) = f
theorem FABL.anfEval_anfCoeff {n : ℕ} (f : FABL.F₂BooleanFunction n) : FABL.anfEval (FABL.anfCoeff f) = f
The canonical coefficient family evaluates to the original Boolean function.
-
theoremdefined in FABL/Chapter06/F₂Polynomials/ANF.leancomplete
theorem FABL.anfEval_injective {n : ℕ} {c d : FABL.ANFCoefficients n} (h : FABL.anfEval c = FABL.anfEval d) : c = d
theorem FABL.anfEval_injective {n : ℕ} {c d : FABL.ANFCoefficients n} (h : FABL.anfEval c = FABL.anfEval d) : c = d
Coefficient families with equal ANF evaluation are equal.
-
theoremdefined in FABL/Chapter06/F₂Polynomials/ANF.leancomplete
theorem FABL.existsUnique_anfEval {n : ℕ} (f : FABL.F₂BooleanFunction n) : ∃! c, FABL.anfEval c = f
theorem FABL.existsUnique_anfEval {n : ℕ} (f : FABL.F₂BooleanFunction n) : ∃! c, FABL.anfEval c = f
Every Boolean function has a unique algebraic normal form.
-
FABL.f₂AndFunction[complete] -
FABL.f₂AndFunction_apply[complete] -
FABL.functionAlgebraicDegree_f₂AndFunction[complete] -
FABL.innerProductModTwoBit_joinF₂CubeBlocks_eq_sum[complete] -
FABL.innerProductModTwoBit_eq_sum_anfMonomial[complete] -
FABL.functionAlgebraicDegree_innerProductModTwoBit[complete]
Example 6.19. The logical AND and inner-product-mod-2 functions have
the algebraic normal forms
\operatorname{AND}_n(x)=x_1x_2\cdots x_n
and
\operatorname{IP}_{2n}(x_1,\ldots,x_n,y_1,\ldots,y_n)
=x_1y_1+x_2y_2+\cdots+x_ny_n.
Lean code for Lemma6.2.7●6 declarations
Associated Lean declarations
-
FABL.f₂AndFunction[complete]
-
FABL.f₂AndFunction_apply[complete]
-
FABL.functionAlgebraicDegree_f₂AndFunction[complete]
-
FABL.innerProductModTwoBit_joinF₂CubeBlocks_eq_sum[complete]
-
FABL.innerProductModTwoBit_eq_sum_anfMonomial[complete]
-
FABL.functionAlgebraicDegree_innerProductModTwoBit[complete]
-
FABL.f₂AndFunction[complete] -
FABL.f₂AndFunction_apply[complete] -
FABL.functionAlgebraicDegree_f₂AndFunction[complete] -
FABL.innerProductModTwoBit_joinF₂CubeBlocks_eq_sum[complete] -
FABL.innerProductModTwoBit_eq_sum_anfMonomial[complete] -
FABL.functionAlgebraicDegree_innerProductModTwoBit[complete]
-
defdefined in FABL/Chapter06/F₂Polynomials/Examples.leancomplete
def FABL.f₂AndFunction (n : ℕ) : FABL.F₂BooleanFunction n
def FABL.f₂AndFunction (n : ℕ) : FABL.F₂BooleanFunction n
The binary logical AND function is the full square-free monomial.
-
theoremdefined in FABL/Chapter06/F₂Polynomials/Examples.leancomplete
theorem FABL.f₂AndFunction_apply {n : ℕ} (x : FABL.F₂Cube n) : FABL.f₂AndFunction n x = ∏ i, x i
theorem FABL.f₂AndFunction_apply {n : ℕ} (x : FABL.F₂Cube n) : FABL.f₂AndFunction n x = ∏ i, x i
Logical AND evaluates as the product of all input bits.
-
theoremdefined in FABL/Chapter06/F₂Polynomials/Examples.leancomplete
theorem FABL.functionAlgebraicDegree_f₂AndFunction {n : ℕ} : FABL.functionAlgebraicDegree (FABL.f₂AndFunction n) = n
theorem FABL.functionAlgebraicDegree_f₂AndFunction {n : ℕ} : FABL.functionAlgebraicDegree (FABL.f₂AndFunction n) = n
Logical AND has algebraic degree `n`.
-
theoremdefined in FABL/Chapter06/F₂Polynomials/Examples.leancomplete
theorem FABL.innerProductModTwoBit_joinF₂CubeBlocks_eq_sum {n : ℕ} (x y : FABL.F₂Cube n) : FABL.innerProductModTwoBit (FABL.joinF₂CubeBlocks x y) = ∑ i, x i * y i
theorem FABL.innerProductModTwoBit_joinF₂CubeBlocks_eq_sum {n : ℕ} (x y : FABL.F₂Cube n) : FABL.innerProductModTwoBit (FABL.joinF₂CubeBlocks x y) = ∑ i, x i * y i
Inner product modulo two is the sum of its coordinatewise quadratic monomials.
-
theoremdefined in FABL/Chapter06/F₂Polynomials/Examples.leancomplete
theorem FABL.innerProductModTwoBit_eq_sum_anfMonomial (n : ℕ) : FABL.innerProductModTwoBit = ∑ i, FABL.anfMonomial {Fin.castAdd n i, Fin.natAdd n i}
theorem FABL.innerProductModTwoBit_eq_sum_anfMonomial (n : ℕ) : FABL.innerProductModTwoBit = ∑ i, FABL.anfMonomial {Fin.castAdd n i, Fin.natAdd n i}
The inner-product-mod-two function is the sum of its canonical quadratic square-free monomials on the flat cube.
-
theoremdefined in FABL/Chapter06/F₂Polynomials/Examples.leancomplete
theorem FABL.functionAlgebraicDegree_innerProductModTwoBit (n : ℕ) (hn : 0 < n) : FABL.functionAlgebraicDegree FABL.innerProductModTwoBit = 2
theorem FABL.functionAlgebraicDegree_innerProductModTwoBit (n : ℕ) (hn : 0 < n) : FABL.functionAlgebraicDegree FABL.innerProductModTwoBit = 2
Inner product modulo two has binary algebraic degree exactly two in every positive block dimension.
-
FABL.algebraicDegree[complete] -
FABL.functionAlgebraicDegree[complete]
Definition 6.20. The \mathbb F_2-degree of a Boolean function f,
written \deg_{\mathbb F_2}(f), is the degree of its unique
\mathbb F_2-polynomial representation. The notation \deg(f) remains
reserved for the degree of the real Fourier expansion.
Lean code for Definition6.2.8●2 definitions
Associated Lean declarations
-
FABL.algebraicDegree[complete]
-
FABL.functionAlgebraicDegree[complete]
-
FABL.algebraicDegree[complete] -
FABL.functionAlgebraicDegree[complete]
-
defdefined in FABL/Chapter06/F₂Polynomials/ANF.leancomplete
def FABL.algebraicDegree {n : ℕ} (c : FABL.ANFCoefficients n) : ℕ
def FABL.algebraicDegree {n : ℕ} (c : FABL.ANFCoefficients n) : ℕ
The algebraic degree of an ANF coefficient family, with degree zero for the zero family.
-
defdefined in FABL/Chapter06/F₂Polynomials/AlgebraicDegree.leancomplete
def FABL.functionAlgebraicDegree {n : ℕ} (f : FABL.F₂BooleanFunction n) : ℕ
def FABL.functionAlgebraicDegree {n : ℕ} (f : FABL.F₂BooleanFunction n) : ℕ
The algebraic degree of a Boolean function, through its unique ANF.
-
FABL.PseudoBooleanFunction[complete] -
FABL.NumericalCoefficients[complete] -
FABL.numericalMonomial[complete] -
FABL.numericalEval[complete] -
FABL.existsUnique_numericalEval[complete] -
FABL.numericalCoeff[complete] -
FABL.numericalCoeff_eq_mobius_sum[complete]
Exercise 6.10 (Möbius inversion).
(a) Let f:\{0,1\}^n\to\mathbb R have the unique real multilinear
representation
q(x)=\sum_{S\subseteq[n]}c_Sx^S.
Identifying R\subseteq[n] with its indicator string, prove
c_S=\sum_{R\subseteq S}(-1)^{|S|-|R|}f(R).
(b) Reduce this identity modulo 2 to prove the coefficient formula in
Proposition 6.21.
Lean code for Lemma6.2.9●7 declarations
Associated Lean declarations
-
FABL.PseudoBooleanFunction[complete]
-
FABL.NumericalCoefficients[complete]
-
FABL.numericalMonomial[complete]
-
FABL.numericalEval[complete]
-
FABL.existsUnique_numericalEval[complete]
-
FABL.numericalCoeff[complete]
-
FABL.numericalCoeff_eq_mobius_sum[complete]
-
FABL.PseudoBooleanFunction[complete] -
FABL.NumericalCoefficients[complete] -
FABL.numericalMonomial[complete] -
FABL.numericalEval[complete] -
FABL.existsUnique_numericalEval[complete] -
FABL.numericalCoeff[complete] -
FABL.numericalCoeff_eq_mobius_sum[complete]
-
abbrevdefined in FABL/Chapter06/F₂Polynomials/NumericalNormalForm.leancomplete
abbrev FABL.PseudoBooleanFunction (n : ℕ) : Type
abbrev FABL.PseudoBooleanFunction (n : ℕ) : Type
A real-valued pseudo-Boolean function on the binary cube.
-
abbrevdefined in FABL/Chapter06/F₂Polynomials/NumericalNormalForm.leancomplete
abbrev FABL.NumericalCoefficients (n : ℕ) : Type
abbrev FABL.NumericalCoefficients (n : ℕ) : Type
Coefficients of a square-free numerical normal form.
-
defdefined in FABL/Chapter06/F₂Polynomials/NumericalNormalForm.leancomplete
def FABL.numericalMonomial {n : ℕ} (S : Finset (Fin n)) (x : FABL.F₂Cube n) : ℝ
def FABL.numericalMonomial {n : ℕ} (S : Finset (Fin n)) (x : FABL.F₂Cube n) : ℝ
The real square-free monomial indexed by `S`.
-
defdefined in FABL/Chapter06/F₂Polynomials/NumericalNormalForm.leancomplete
def FABL.numericalEval {n : ℕ} (c : FABL.NumericalCoefficients n) : FABL.PseudoBooleanFunction n
def FABL.numericalEval {n : ℕ} (c : FABL.NumericalCoefficients n) : FABL.PseudoBooleanFunction n
Evaluation of a numerical normal form.
-
theoremdefined in FABL/Chapter06/F₂Polynomials/NumericalNormalForm.leancomplete
theorem FABL.existsUnique_numericalEval {n : ℕ} (φ : FABL.PseudoBooleanFunction n) : ∃! c, FABL.numericalEval c = φ
theorem FABL.existsUnique_numericalEval {n : ℕ} (φ : FABL.PseudoBooleanFunction n) : ∃! c, FABL.numericalEval c = φ
Every pseudo-Boolean function has a unique numerical normal form.
-
defdefined in FABL/Chapter06/F₂Polynomials/NumericalNormalForm.leancomplete
def FABL.numericalCoeff {n : ℕ} (φ : FABL.PseudoBooleanFunction n) : FABL.NumericalCoefficients n
def FABL.numericalCoeff {n : ℕ} (φ : FABL.PseudoBooleanFunction n) : FABL.NumericalCoefficients n
The canonical numerical coefficients supplied by the unique representation theorem.
-
theoremdefined in FABL/Chapter06/F₂Polynomials/NumericalNormalForm.leancomplete
theorem FABL.numericalCoeff_eq_mobius_sum {n : ℕ} (φ : FABL.PseudoBooleanFunction n) (S : Finset (Fin n)) : FABL.numericalCoeff φ S = ∑ T ∈ S.powerset, (-1) ^ (S.card - T.card) * φ (FABL.f₂CubeOfFinset T)
theorem FABL.numericalCoeff_eq_mobius_sum {n : ℕ} (φ : FABL.PseudoBooleanFunction n) (S : Finset (Fin n)) : FABL.numericalCoeff φ S = ∑ T ∈ S.powerset, (-1) ^ (S.card - T.card) * φ (FABL.f₂CubeOfFinset T)
The canonical numerical coefficient is the real Möbius sum over lower cube points.
Proposition 6.21. If
f:\mathbb F_2^n\to\mathbb F_2 has algebraic normal form
f(x)=\sum_{S\subseteq[n]}c_Sx^S,
then
c_S=\sum_{\operatorname{supp}(x)\subseteq S}f(x)
\qquad\text{in }\mathbb F_2.
Lean code for Proposition6.2.10●1 definition
Associated Lean declarations
-
FABL.anfCoeff[complete]
-
FABL.anfCoeff[complete]
-
defdefined in FABL/Chapter06/F₂Polynomials/ANF.leancomplete
def FABL.anfCoeff {n : ℕ} (f : FABL.F₂BooleanFunction n) : FABL.ANFCoefficients n
def FABL.anfCoeff {n : ℕ} (f : FABL.F₂BooleanFunction n) : FABL.ANFCoefficients n
The canonical `𝔽₂` Möbius-inverse coefficient family of a Boolean function.
Corollary 6.22. For n>0 and a Boolean function
f:\{\mathrm{False},\mathrm{True}\}^n
\to\{\mathrm{False},\mathrm{True}\},
\deg_{\mathbb F_2}(f)=n
if and only if f(x)=\mathrm{True} for an odd number of inputs x.
For n=0, every function has algebraic degree 0=n, whereas only the
constant-True function is True on an odd number of inputs. Thus without the
n>0 hypothesis the exact statement is
\deg_{\mathbb F_2}(f)=n
\quad\Longleftrightarrow\quad
n=0\ \text{or}\ |\{x:f(x)=\mathrm{True}\}|\text{ is odd}.
Lean code for Corollary6.2.11●2 theorems
Associated Lean declarations
-
theoremdefined in FABL/Chapter06/F₂Polynomials/ExtremalBounds.leancomplete
theorem FABL.functionAlgebraicDegree_eq_dimension_iff_zero_or_card_f₂OneSupport_odd {n : ℕ} (f : FABL.F₂BooleanFunction n) : FABL.functionAlgebraicDegree f = n ↔ n = 0 ∨ Odd (FABL.f₂OneSupport f).card
theorem FABL.functionAlgebraicDegree_eq_dimension_iff_zero_or_card_f₂OneSupport_odd {n : ℕ} (f : FABL.F₂BooleanFunction n) : FABL.functionAlgebraicDegree f = n ↔ n = 0 ∨ Odd (FABL.f₂OneSupport f).card
Corollary 6.22, with the zero-dimensional convention made explicit: the equality `degree f = n` holds either in dimension zero or when the one-set has odd cardinality.
-
theoremdefined in FABL/Chapter06/F₂Polynomials/ExtremalBounds.leancomplete
theorem FABL.functionAlgebraicDegree_eq_dimension_iff_card_f₂OneSupport_odd {n : ℕ} (f : FABL.F₂BooleanFunction n) (hn : 0 < n) : FABL.functionAlgebraicDegree f = n ↔ Odd (FABL.f₂OneSupport f).card
theorem FABL.functionAlgebraicDegree_eq_dimension_iff_card_f₂OneSupport_odd {n : ℕ} (f : FABL.F₂BooleanFunction n) (hn : 0 < n) : FABL.functionAlgebraicDegree f = n ↔ Odd (FABL.f₂OneSupport f).card
Corollary 6.22 in positive dimension: an F₂-valued Boolean function has full algebraic degree exactly when it is one on an odd number of inputs.
-
FABL.booleanFunctionF₂Encoding[complete] -
FABL.booleanRealEmbedding[complete] -
FABL.signEncode_booleanFunctionF₂Encoding[complete] -
FABL.booleanRealEmbedding_booleanFunctionF₂Encoding_apply[complete] -
FABL.binaryFunctionOnSignCube_booleanRealEmbedding_booleanFunctionF₂Encoding[complete] -
FABL.fourierSubstitutionCoeff[complete] -
FABL.fourierSubstitution[complete] -
FABL.fourierToF₂Polynomial[complete] -
FABL.fourierToF₂Coeff[complete] -
FABL.numericalEval_fourierSubstitutionCoeff[complete] -
FABL.numericalCoeff_fourierToF₂Polynomial[complete] -
FABL.numericalDegree_fourierSubstitutionCoeff[complete] -
FABL.numericalDegree_fourierToF₂Coeff[complete] -
FABL.booleanNumericalCoeffInt[complete] -
FABL.numericalCoeff_booleanRealEmbedding_eq_intCast[complete] -
FABL.booleanNumericalCoeffInt_cast_f₂_eq_anfCoeff[complete] -
FABL.algebraicDegree_intCastModTwo_le_numericalDegree[complete] -
FABL.functionAlgebraicDegree_booleanFunctionF₂Encoding_le_fourierDegree_viaPolynomial[complete]
Fourier-to-\mathbb F_2 representation bridge. Let p be the real
Fourier polynomial of a Boolean function under the \pm1 encoding. Under
the 0,1 encoding, its unique real multilinear polynomial is
q(x)=\frac12-\frac12p(1-2x_1,\ldots,1-2x_n).
The coefficients of q are integers, and reducing them modulo 2 gives
the algebraic normal form of the function. The substitution preserves degree
(except that p\equiv1 becomes q\equiv0), and coefficient reduction
cannot increase degree.
Lean code for Lemma6.2.12●18 declarations
Associated Lean declarations
-
FABL.booleanFunctionF₂Encoding[complete]
-
FABL.booleanRealEmbedding[complete]
-
FABL.signEncode_booleanFunctionF₂Encoding[complete]
-
FABL.booleanRealEmbedding_booleanFunctionF₂Encoding_apply[complete]
-
FABL.binaryFunctionOnSignCube_booleanRealEmbedding_booleanFunctionF₂Encoding[complete]
-
FABL.fourierSubstitutionCoeff[complete]
-
FABL.fourierSubstitution[complete]
-
FABL.fourierToF₂Polynomial[complete]
-
FABL.fourierToF₂Coeff[complete]
-
FABL.numericalEval_fourierSubstitutionCoeff[complete]
-
FABL.numericalCoeff_fourierToF₂Polynomial[complete]
-
FABL.numericalDegree_fourierSubstitutionCoeff[complete]
-
FABL.numericalDegree_fourierToF₂Coeff[complete]
-
FABL.booleanNumericalCoeffInt[complete]
-
FABL.numericalCoeff_booleanRealEmbedding_eq_intCast[complete]
-
FABL.booleanNumericalCoeffInt_cast_f₂_eq_anfCoeff[complete]
-
FABL.algebraicDegree_intCastModTwo_le_numericalDegree[complete]
-
FABL.functionAlgebraicDegree_booleanFunctionF₂Encoding_le_fourierDegree_viaPolynomial[complete]
-
FABL.booleanFunctionF₂Encoding[complete] -
FABL.booleanRealEmbedding[complete] -
FABL.signEncode_booleanFunctionF₂Encoding[complete] -
FABL.booleanRealEmbedding_booleanFunctionF₂Encoding_apply[complete] -
FABL.binaryFunctionOnSignCube_booleanRealEmbedding_booleanFunctionF₂Encoding[complete] -
FABL.fourierSubstitutionCoeff[complete] -
FABL.fourierSubstitution[complete] -
FABL.fourierToF₂Polynomial[complete] -
FABL.fourierToF₂Coeff[complete] -
FABL.numericalEval_fourierSubstitutionCoeff[complete] -
FABL.numericalCoeff_fourierToF₂Polynomial[complete] -
FABL.numericalDegree_fourierSubstitutionCoeff[complete] -
FABL.numericalDegree_fourierToF₂Coeff[complete] -
FABL.booleanNumericalCoeffInt[complete] -
FABL.numericalCoeff_booleanRealEmbedding_eq_intCast[complete] -
FABL.booleanNumericalCoeffInt_cast_f₂_eq_anfCoeff[complete] -
FABL.algebraicDegree_intCastModTwo_le_numericalDegree[complete] -
FABL.functionAlgebraicDegree_booleanFunctionF₂Encoding_le_fourierDegree_viaPolynomial[complete]
-
defdefined in FABL/Chapter06/F₂Polynomials/Encoding.leancomplete
def FABL.booleanFunctionF₂Encoding {n : ℕ} (f : FABL.BooleanFunction n) : FABL.F₂BooleanFunction n
def FABL.booleanFunctionF₂Encoding {n : ℕ} (f : FABL.BooleanFunction n) : FABL.F₂BooleanFunction n
Reindex a sign-valued Boolean function onto the binary cube and encode its output in `𝔽₂`.
-
defdefined in FABL/Chapter06/F₂Polynomials/Encoding.leancomplete
def FABL.booleanRealEmbedding {n : ℕ} (f : FABL.F₂BooleanFunction n) : FABL.PseudoBooleanFunction n
def FABL.booleanRealEmbedding {n : ℕ} (f : FABL.F₂BooleanFunction n) : FABL.PseudoBooleanFunction n
The `{0,1}`-valued real embedding of an `𝔽₂`-valued Boolean function. This is the canonical definition formerly owned by CryptBoolean. -
theoremdefined in FABL/Chapter06/F₂Polynomials/Encoding.leancomplete
theorem FABL.signEncode_booleanFunctionF₂Encoding {n : ℕ} (f : FABL.BooleanFunction n) (x : FABL.F₂Cube n) : FABL.signEncode (FABL.booleanFunctionF₂Encoding f x) = f ((FABL.binaryCubeSignEquiv n) x)
theorem FABL.signEncode_booleanFunctionF₂Encoding {n : ℕ} (f : FABL.BooleanFunction n) (x : FABL.F₂Cube n) : FABL.signEncode (FABL.booleanFunctionF₂Encoding f x) = f ((FABL.binaryCubeSignEquiv n) x)
Encoding a sign-valued Boolean function in `𝔽₂` and then returning to signs is the identity.
-
theoremdefined in FABL/Chapter06/F₂Polynomials/Encoding.leancomplete
theorem FABL.booleanRealEmbedding_booleanFunctionF₂Encoding_apply {n : ℕ} (f : FABL.BooleanFunction n) (x : FABL.F₂Cube n) : FABL.booleanRealEmbedding (FABL.booleanFunctionF₂Encoding f) x = (1 - f.toReal ((FABL.binaryCubeSignEquiv n) x)) / 2
theorem FABL.booleanRealEmbedding_booleanFunctionF₂Encoding_apply {n : ℕ} (f : FABL.BooleanFunction n) (x : FABL.F₂Cube n) : FABL.booleanRealEmbedding (FABL.booleanFunctionF₂Encoding f) x = (1 - f.toReal ((FABL.binaryCubeSignEquiv n) x)) / 2
The real `0/1` embedding is the affine transform of the real sign encoding.
-
theoremdefined in FABL/Chapter06/F₂Polynomials/Encoding.leancomplete
theorem FABL.binaryFunctionOnSignCube_booleanRealEmbedding_booleanFunctionF₂Encoding {n : ℕ} (f : FABL.BooleanFunction n) : FABL.binaryFunctionOnSignCube (FABL.booleanRealEmbedding (FABL.booleanFunctionF₂Encoding f)) = fun x => (1 - f.toReal x) / 2
theorem FABL.binaryFunctionOnSignCube_booleanRealEmbedding_booleanFunctionF₂Encoding {n : ℕ} (f : FABL.BooleanFunction n) : FABL.binaryFunctionOnSignCube (FABL.booleanRealEmbedding (FABL.booleanFunctionF₂Encoding f)) = fun x => (1 - f.toReal x) / 2
After reindexing to the sign cube, the real `0/1` embedding is `(1-f)/2`.
-
defdefined in FABL/Chapter06/F₂Polynomials/FourierToF₂Polynomial.leancomplete
def FABL.fourierSubstitutionCoeff {n : ℕ} (p : FABL.SignCube n → ℝ) : FABL.NumericalCoefficients n
def FABL.fourierSubstitutionCoeff {n : ℕ} (p : FABL.SignCube n → ℝ) : FABL.NumericalCoefficients n
The coefficient transform induced by substituting `zᵢ = 1 - 2xᵢ` into the Fourier expansion of `p`.
-
defdefined in FABL/Chapter06/F₂Polynomials/FourierToF₂Polynomial.leancomplete
def FABL.fourierSubstitution {n : ℕ} (p : FABL.SignCube n → ℝ) : FABL.PseudoBooleanFunction n
def FABL.fourierSubstitution {n : ℕ} (p : FABL.SignCube n → ℝ) : FABL.PseudoBooleanFunction n
The binary-cube function obtained by the coordinate substitution `zᵢ = 1 - 2xᵢ`.
-
defdefined in FABL/Chapter06/F₂Polynomials/FourierToF₂Polynomial.leancomplete
def FABL.fourierToF₂Polynomial {n : ℕ} (p : FABL.SignCube n → ℝ) : FABL.PseudoBooleanFunction n
def FABL.fourierToF₂Polynomial {n : ℕ} (p : FABL.SignCube n → ℝ) : FABL.PseudoBooleanFunction n
The polynomial `q(x) = 1/2 - p(1 - 2x)/2` on the binary cube.
-
defdefined in FABL/Chapter06/F₂Polynomials/FourierToF₂Polynomial.leancomplete
def FABL.fourierToF₂Coeff {n : ℕ} (p : FABL.SignCube n → ℝ) : FABL.NumericalCoefficients n
def FABL.fourierToF₂Coeff {n : ℕ} (p : FABL.SignCube n → ℝ) : FABL.NumericalCoefficients n
The coefficient family obtained from the substituted Fourier polynomial by the affine output change `q = (1 - p) / 2`.
-
theoremdefined in FABL/Chapter06/F₂Polynomials/FourierToF₂Polynomial.leancomplete
theorem FABL.numericalEval_fourierSubstitutionCoeff {n : ℕ} (p : FABL.SignCube n → ℝ) : FABL.numericalEval (FABL.fourierSubstitutionCoeff p) = FABL.fourierSubstitution p
theorem FABL.numericalEval_fourierSubstitutionCoeff {n : ℕ} (p : FABL.SignCube n → ℝ) : FABL.numericalEval (FABL.fourierSubstitutionCoeff p) = FABL.fourierSubstitution p
The transformed Fourier coefficients evaluate to the coordinate-substituted function.
-
theoremdefined in FABL/Chapter06/F₂Polynomials/FourierToF₂Polynomial.leancomplete
theorem FABL.numericalCoeff_fourierToF₂Polynomial {n : ℕ} (p : FABL.SignCube n → ℝ) : FABL.numericalCoeff (FABL.fourierToF₂Polynomial p) = FABL.fourierToF₂Coeff p
theorem FABL.numericalCoeff_fourierToF₂Polynomial {n : ℕ} (p : FABL.SignCube n → ℝ) : FABL.numericalCoeff (FABL.fourierToF₂Polynomial p) = FABL.fourierToF₂Coeff p
The explicit `q` coefficients are its canonical numerical-normal-form coefficients.
-
theoremdefined in FABL/Chapter06/F₂Polynomials/FourierToF₂Polynomial.leancomplete
theorem FABL.numericalDegree_fourierSubstitutionCoeff {n : ℕ} (p : FABL.SignCube n → ℝ) : FABL.numericalDegree (FABL.fourierSubstitutionCoeff p) = FABL.fourierDegree p
theorem FABL.numericalDegree_fourierSubstitutionCoeff {n : ℕ} (p : FABL.SignCube n → ℝ) : FABL.numericalDegree (FABL.fourierSubstitutionCoeff p) = FABL.fourierDegree p
The invertible coordinate substitution `zᵢ = 1 - 2xᵢ` preserves real multilinear degree.
-
theoremdefined in FABL/Chapter06/F₂Polynomials/FourierToF₂Polynomial.leancomplete
theorem FABL.numericalDegree_fourierToF₂Coeff {n : ℕ} (p : FABL.SignCube n → ℝ) : FABL.numericalDegree (FABL.fourierToF₂Coeff p) = FABL.fourierDegree p
theorem FABL.numericalDegree_fourierToF₂Coeff {n : ℕ} (p : FABL.SignCube n → ℝ) : FABL.numericalDegree (FABL.fourierToF₂Coeff p) = FABL.fourierDegree p
With the total natural-number convention assigning degree zero to the zero polynomial, `q = (1 - p(1 - 2x))/2` has the same degree as `p`, including the exceptional case `p = 1`.
-
defdefined in FABL/Chapter06/F₂Polynomials/FourierToF₂Polynomial.leancomplete
def FABL.booleanNumericalCoeffInt {n : ℕ} (f : FABL.F₂BooleanFunction n) (S : Finset (Fin n)) : ℤ
def FABL.booleanNumericalCoeffInt {n : ℕ} (f : FABL.F₂BooleanFunction n) (S : Finset (Fin n)) : ℤ
The integer Möbius coefficient of a `{0,1}`-valued Boolean embedding. -
theoremdefined in FABL/Chapter06/F₂Polynomials/FourierToF₂Polynomial.leancomplete
theorem FABL.numericalCoeff_booleanRealEmbedding_eq_intCast {n : ℕ} (f : FABL.F₂BooleanFunction n) (S : Finset (Fin n)) : FABL.numericalCoeff (FABL.booleanRealEmbedding f) S = ↑(FABL.booleanNumericalCoeffInt f S)
theorem FABL.numericalCoeff_booleanRealEmbedding_eq_intCast {n : ℕ} (f : FABL.F₂BooleanFunction n) (S : Finset (Fin n)) : FABL.numericalCoeff (FABL.booleanRealEmbedding f) S = ↑(FABL.booleanNumericalCoeffInt f S)
The numerical coefficients of a Boolean embedding are integers.
-
theoremdefined in FABL/Chapter06/F₂Polynomials/FourierToF₂Polynomial.leancomplete
theorem FABL.booleanNumericalCoeffInt_cast_f₂_eq_anfCoeff {n : ℕ} (f : FABL.F₂BooleanFunction n) (S : Finset (Fin n)) : ↑(FABL.booleanNumericalCoeffInt f S) = FABL.anfCoeff f S
theorem FABL.booleanNumericalCoeffInt_cast_f₂_eq_anfCoeff {n : ℕ} (f : FABL.F₂BooleanFunction n) (S : Finset (Fin n)) : ↑(FABL.booleanNumericalCoeffInt f S) = FABL.anfCoeff f S
Reducing the integral numerical coefficients modulo two gives the canonical ANF coefficients.
-
theoremdefined in FABL/Chapter06/F₂Polynomials/FourierToF₂Polynomial.leancomplete
theorem FABL.algebraicDegree_intCastModTwo_le_numericalDegree {n : ℕ} (z : Finset (Fin n) → ℤ) : (FABL.algebraicDegree fun S => ↑(z S)) ≤ FABL.numericalDegree fun S => ↑(z S)
theorem FABL.algebraicDegree_intCastModTwo_le_numericalDegree {n : ℕ} (z : Finset (Fin n) → ℤ) : (FABL.algebraicDegree fun S => ↑(z S)) ≤ FABL.numericalDegree fun S => ↑(z S)
Reducing an integral coefficient family modulo two cannot increase its degree.
-
theoremdefined in FABL/Chapter06/F₂Polynomials/FourierToF₂Polynomial.leancomplete
theorem FABL.functionAlgebraicDegree_booleanFunctionF₂Encoding_le_fourierDegree_viaPolynomial {n : ℕ} (f : FABL.BooleanFunction n) : FABL.functionAlgebraicDegree (FABL.booleanFunctionF₂Encoding f) ≤ FABL.fourierDegree f.toReal
theorem FABL.functionAlgebraicDegree_booleanFunctionF₂Encoding_le_fourierDegree_viaPolynomial {n : ℕ} (f : FABL.BooleanFunction n) : FABL.functionAlgebraicDegree (FABL.booleanFunctionF₂Encoding f) ≤ FABL.fourierDegree f.toReal
The exact Fourier-to-`𝔽₂` polynomial bridge composes degree preservation with coefficient reduction.
Proposition 6.23. For every Boolean function
f:\{-1,1\}^n\to\{-1,1\}, interpreted under the canonical
\{\pm1\}\leftrightarrow\mathbb F_2 encoding,
\deg_{\mathbb F_2}(f)\le\deg(f).
Lean code for Proposition6.2.13●1 theorem
Associated Lean declarations
-
theoremdefined in FABL/Chapter06/F₂Polynomials/FourierDegreeBridge.leancomplete
theorem FABL.functionAlgebraicDegree_booleanFunctionF₂Encoding_le_fourierDegree {n : ℕ} (f : FABL.BooleanFunction n) : FABL.functionAlgebraicDegree (FABL.booleanFunctionF₂Encoding f) ≤ FABL.fourierDegree f.toReal
theorem FABL.functionAlgebraicDegree_booleanFunctionF₂Encoding_le_fourierDegree {n : ℕ} (f : FABL.BooleanFunction n) : FABL.functionAlgebraicDegree (FABL.booleanFunctionF₂Encoding f) ≤ FABL.fourierDegree f.toReal
O'Donnell, Proposition 6.23: algebraic degree under the canonical `𝔽₂` encoding is at most the real Fourier degree of a sign-valued Boolean function.
Proposition 6.24. If
f:\{-1,1\}^n\to\{-1,1\} is k-resilient and k<n-1, then
\deg_{\mathbb F_2}(f)\le n-k-1.
Lean code for Proposition6.2.14●1 theorem
Associated Lean declarations
-
theoremdefined in FABL/Chapter06/F₂Polynomials/Siegenthaler.leancomplete
theorem FABL.functionAlgebraicDegree_booleanFunctionF₂Encoding_le_of_isResilient {n : ℕ} (f : FABL.BooleanFunction n) (k : ℕ) (hf : FABL.IsResilient k f) (hk : k < n - 1) : FABL.functionAlgebraicDegree (FABL.booleanFunctionF₂Encoding f) ≤ n - k - 1
theorem FABL.functionAlgebraicDegree_booleanFunctionF₂Encoding_le_of_isResilient {n : ℕ} (f : FABL.BooleanFunction n) (k : ℕ) (hf : FABL.IsResilient k f) (hk : k < n - 1) : FABL.functionAlgebraicDegree (FABL.booleanFunctionF₂Encoding f) ≤ n - k - 1
O'Donnell, Proposition 6.24: a `k`-resilient Boolean function has canonical `𝔽₂` degree at most `n - k - 1` when `k < n - 1`.
Siegenthaler's Theorem. Proposition 6.24 holds. More generally, if
f:\{-1,1\}^n\to\{-1,1\} is kth-order correlation immune and k<n,
then
\deg_{\mathbb F_2}(f)\le n-k.
Lean code for Theorem6.2.15●1 theorem
Associated Lean declarations
-
theoremdefined in FABL/Chapter06/F₂Polynomials/Siegenthaler.leancomplete
theorem FABL.functionAlgebraicDegree_booleanFunctionF₂Encoding_le_of_isCorrelationImmune {n : ℕ} (f : FABL.BooleanFunction n) (k : ℕ) (hf : FABL.IsCorrelationImmune k f) (hk : k < n) : FABL.functionAlgebraicDegree (FABL.booleanFunctionF₂Encoding f) ≤ n - k
theorem FABL.functionAlgebraicDegree_booleanFunctionF₂Encoding_le_of_isCorrelationImmune {n : ℕ} (f : FABL.BooleanFunction n) (k : ℕ) (hf : FABL.IsCorrelationImmune k f) (hk : k < n) : FABL.functionAlgebraicDegree (FABL.booleanFunctionF₂Encoding f) ≤ n - k
Siegenthaler's Theorem: a `k`th-order correlation-immune Boolean function has canonical `𝔽₂` degree at most `n - k` when `k < n`.
Exercise 6.14.
(a) Let
p(x)=c_\varnothing+c_Sx^S+r(x)
be a real multilinear polynomial in x_1,\ldots,x_n, where
c_\varnothing c_S\ne0, |S|>2n/3, and every monomial x^T occurring
in r has |T|>2n/3. Show that, after expanding p(x)^2 and making the
multilinear reduction x_i^2\mapsto1, the term
2c_\varnothing c_Sx^S occurs and is not cancelled.
(b) Deduce Theorem 6.25.
Lean code for Lemma6.2.16●2 theorems
Associated Lean declarations
-
theoremdefined in FABL/Chapter06/Pseudorandomness/CorrelationImmunityBounds.leancomplete
theorem FABL.fourierCoeff_pointwise_mul {n : ℕ} (f g : FABL.SignCube n → ℝ) (S : Finset (Fin n)) : FABL.fourierCoeff (fun x => f x * g x) S = ∑ T, FABL.fourierCoeff f (symmDiff T S) * FABL.fourierCoeff g T
theorem FABL.fourierCoeff_pointwise_mul {n : ℕ} (f g : FABL.SignCube n → ℝ) (S : Finset (Fin n)) : FABL.fourierCoeff (fun x => f x * g x) S = ∑ T, FABL.fourierCoeff f (symmDiff T S) * FABL.fourierCoeff g T
Fourier coefficients turn pointwise multiplication into symmetric-difference convolution.
-
theoremdefined in FABL/Chapter06/Pseudorandomness/CorrelationImmunityBounds.leancomplete
theorem FABL.fourierCoeff_sq_eq_two_mul_empty_mul_of_large_support {n : ℕ} (f : FABL.SignCube n → ℝ) (S : Finset (Fin n)) (hS : S.Nonempty) (hScoeff : FABL.fourierCoeff f S ≠ 0) (hlarge : ∀ (T : Finset (Fin n)), T.Nonempty → FABL.fourierCoeff f T ≠ 0 → 2 * n < 3 * T.card) : FABL.fourierCoeff (fun x => f x * f x) S = 2 * FABL.fourierCoeff f ∅ * FABL.fourierCoeff f S
theorem FABL.fourierCoeff_sq_eq_two_mul_empty_mul_of_large_support {n : ℕ} (f : FABL.SignCube n → ℝ) (S : Finset (Fin n)) (hS : S.Nonempty) (hScoeff : FABL.fourierCoeff f S ≠ 0) (hlarge : ∀ (T : Finset (Fin n)), T.Nonempty → FABL.fourierCoeff f T ≠ 0 → 2 * n < 3 * T.card) : FABL.fourierCoeff (fun x => f x * f x) S = 2 * FABL.fourierCoeff f ∅ * FABL.fourierCoeff f S
Exercise 6.14(a), in Fourier-coefficient form: when every nonconstant supported monomial has degree greater than `2n/3`, the coefficient indexed by such an `S` in the multilinear reduction of `p²` is exactly `2 c_∅ c_S`.
Theorem 6.25 (corrected). If a nonconstant
f:\{-1,1\}^n\to\{-1,1\} is kth-order correlation immune but is not
k-resilient (equivalently, \mathbb E[f]\ne0), then
k+1\le\frac23n.
The printed statement omits the nonconstant hypothesis. Without it, either
constant sign function is correlation immune of every order, has nonzero
mean, and gives an immediate counterexample for sufficiently large k.
Lean code for Theorem6.2.17●1 theorem
Associated Lean declarations
-
theoremdefined in FABL/Chapter06/Pseudorandomness/CorrelationImmunityBounds.leancomplete
theorem FABL.correlationImmune_not_resilient_three_mul_succ_le_two_mul_dimension {n : ℕ} (f : FABL.BooleanFunction n) (k : ℕ) (himmune : FABL.IsCorrelationImmune k f) (hnotResilient : ¬FABL.IsResilient k f) (hnonconstant : ¬∃ c, f.toReal = fun x => c) : 3 * (k + 1) ≤ 2 * n
theorem FABL.correlationImmune_not_resilient_three_mul_succ_le_two_mul_dimension {n : ℕ} (f : FABL.BooleanFunction n) (k : ℕ) (himmune : FABL.IsCorrelationImmune k f) (hnotResilient : ¬FABL.IsResilient k f) (hnonconstant : ¬∃ c, f.toReal = fun x => c) : 3 * (k + 1) ≤ 2 * n
O'Donnell, Theorem 6.25, with the necessary nonconstant hypothesis restored: a biased nonconstant correlation-immune Boolean function satisfies `3(k+1) ≤ 2n`.
Exercise 6.16. Prove Proposition 6.27: if
f:\mathbb F_2^n\to\{-1,1\} and
g:\mathbb F_2^{n'}\to\{-1,1\} are bent, then
(f\oplus g)(x,x')=f(x)g(x')
is bent on \mathbb F_2^{n+n'}.
Lean code for Lemma6.2.18●1 theorem
Associated Lean declarations
-
theoremdefined in FABL/Chapter06/Constructions/BentFunctions.leancomplete
theorem FABL.vectorFourierCoeff_bentDirectProduct_append {n m : ℕ} (f : FABL.F₂Cube n → ℝ) (g : FABL.F₂Cube m → ℝ) (a : FABL.F₂Cube n) (b : FABL.F₂Cube m) : FABL.vectorFourierCoeff (FABL.bentDirectProduct f g) (Fin.append a b) = FABL.vectorFourierCoeff f a * FABL.vectorFourierCoeff g b
theorem FABL.vectorFourierCoeff_bentDirectProduct_append {n m : ℕ} (f : FABL.F₂Cube n → ℝ) (g : FABL.F₂Cube m → ℝ) (a : FABL.F₂Cube n) (b : FABL.F₂Cube m) : FABL.vectorFourierCoeff (FABL.bentDirectProduct f g) (Fin.append a b) = FABL.vectorFourierCoeff f a * FABL.vectorFourierCoeff g b
The normalized Fourier transform takes a direct product to the product of the corresponding Fourier coefficients.
Open problem (classification of bent functions). The inner-product,
complete-quadratic, and Maiorana--McFarland constructions give large families
of bent functions, and Dickson's Theorem classifies those of
\mathbb F_2-degree at most 2. Classifying all bent Boolean functions is
open.