Analysis of Boolean Functions in Lean

6.2. F₂-polynomials🔗

Lemma6.2.1
Group: Chapter 6: Pseudorandomness and F₂-polynomials (115)
Group member previews
Preview
Proposition 6.1.1
Loading preview
Group member preview content is loaded from the rendered-fragment cache.
Statement uses 2
Statement dependency previews
Preview
Definition 1.2.2
Loading preview
Statement dependency preview content is loaded from the rendered-fragment cache.
Used by 2
Reverse dependency previews
Preview
Lemma 6.2.5
Loading preview
Reverse dependency preview content is loaded from the rendered-fragment cache.
L∃∀N

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.13 theorems
  • theoremdefined in FABL/Chapter06/F₂Polynomials/Examples.lean
    complete
    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.lean
    complete
    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.lean
    complete
    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. 
Lemma6.2.2
Group: Chapter 6: Pseudorandomness and F₂-polynomials (115)
Group member previews
Preview
Proposition 6.1.1
Loading preview
Group member preview content is loaded from the rendered-fragment cache.
uses 1
Used by 2
Reverse dependency previews
Preview
Lemma 6.2.3
Loading preview
Reverse dependency preview content is loaded from the rendered-fragment cache.
L∃∀N

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.22 declarations
  • defdefined in FABL/Chapter06/F₂Polynomials/Interpolation.lean
    complete
    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.lean
    complete
    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. 
Lemma6.2.3
Group: Chapter 6: Pseudorandomness and F₂-polynomials (115)
Group member previews
Preview
Proposition 6.1.1
Loading preview
Group member preview content is loaded from the rendered-fragment cache.
uses 1
Used by 3
Reverse dependency previews
Preview
Definition 6.2.4
Loading preview
Reverse dependency preview content is loaded from the rendered-fragment cache.
L∃∀N

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.31 theorem
  • theoremdefined in FABL/Chapter06/F₂Polynomials/Interpolation.lean
    complete
    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. 
Definition6.2.4
Group: Chapter 6: Pseudorandomness and F₂-polynomials (115)
Group member previews
Preview
Proposition 6.1.1
Loading preview
Group member preview content is loaded from the rendered-fragment cache.
uses 1
Used by 3
Reverse dependency previews
Preview
Proposition 6.2.6
Loading preview
Reverse dependency preview content is loaded from the rendered-fragment cache.
L∃∀N

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.43 definitions
  • abbrevdefined in FABL/Chapter06/F₂Polynomials/ANF.lean
    complete
    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.lean
    complete
    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.lean
    complete
    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. 
Lemma6.2.5
Group: Chapter 6: Pseudorandomness and F₂-polynomials (115)
Group member previews
Preview
Proposition 6.1.1
Loading preview
Group member preview content is loaded from the rendered-fragment cache.
Statement uses 2
Statement dependency previews
Preview
Lemma 6.2.1
Loading preview
Statement dependency preview content is loaded from the rendered-fragment cache.
used by 0L∃∀N

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.52 theorems
  • theoremdefined in FABL/Chapter06/F₂Polynomials/Interpolation.lean
    complete
    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.lean
    complete
    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. 
Proposition6.2.6
Group: Chapter 6: Pseudorandomness and F₂-polynomials (115)
Group member previews
Preview
Proposition 6.1.1
Loading preview
Group member preview content is loaded from the rendered-fragment cache.
Statement uses 3
Statement dependency previews
Preview
Lemma 6.2.2
Loading preview
Statement dependency preview content is loaded from the rendered-fragment cache.
Used by 8
Reverse dependency previews
Preview
Lemma 6.2.7
Loading preview
Reverse dependency preview content is loaded from the rendered-fragment cache.
L∃∀N

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.63 theorems
  • theoremdefined in FABL/Chapter06/F₂Polynomials/ANF.lean
    complete
    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.lean
    complete
    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.lean
    complete
    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. 
Lemma6.2.7
Group: Chapter 6: Pseudorandomness and F₂-polynomials (115)
Group member previews
Preview
Proposition 6.1.1
Loading preview
Group member preview content is loaded from the rendered-fragment cache.
Statement uses 2
Statement dependency previews
Preview
Lemma 5.1.3
Loading preview
Statement dependency preview content is loaded from the rendered-fragment cache.
Used by 4
Reverse dependency previews
Preview
Lemma 6.5.2
Loading preview
Reverse dependency preview content is loaded from the rendered-fragment cache.
L∃∀N

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.76 declarations
  • defdefined in FABL/Chapter06/F₂Polynomials/Examples.lean
    complete
    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.lean
    complete
    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.lean
    complete
    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.lean
    complete
    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.lean
    complete
    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.lean
    complete
    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. 
Definition6.2.8
Group: Chapter 6: Pseudorandomness and F₂-polynomials (115)
Group member previews
Preview
Proposition 6.1.1
Loading preview
Group member preview content is loaded from the rendered-fragment cache.
Statement uses 2
Statement dependency previews
Preview
Definition 1.2.4
Loading preview
Statement dependency preview content is loaded from the rendered-fragment cache.
Used by 16
Reverse dependency previews
Preview
Proposition 6.2.13
Loading preview
Reverse dependency preview content is loaded from the rendered-fragment cache.
L∃∀N

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.82 definitions
  • defdefined in FABL/Chapter06/F₂Polynomials/ANF.lean
    complete
    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.lean
    complete
    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. 
Lemma6.2.9
Group: Chapter 6: Pseudorandomness and F₂-polynomials (115)
Group member previews
Preview
Proposition 6.1.1
Loading preview
Group member preview content is loaded from the rendered-fragment cache.
Statement uses 2
Statement dependency previews
Preview
Definition 6.2.4
Loading preview
Statement dependency preview content is loaded from the rendered-fragment cache.
used by 1L∃∀N

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.97 declarations
  • abbrevdefined in FABL/Chapter06/F₂Polynomials/NumericalNormalForm.lean
    complete
    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.lean
    complete
    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.lean
    complete
    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.lean
    complete
    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.lean
    complete
    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.lean
    complete
    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.lean
    complete
    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. 
Proposition6.2.10
Group: Chapter 6: Pseudorandomness and F₂-polynomials (115)
Group member previews
Preview
Proposition 6.1.1
Loading preview
Group member preview content is loaded from the rendered-fragment cache.
uses 1used by 1L∃∀N

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.101 definition
  • defdefined in FABL/Chapter06/F₂Polynomials/ANF.lean
    complete
    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. 
Corollary6.2.11
Group: Chapter 6: Pseudorandomness and F₂-polynomials (115)
Group member previews
Preview
Proposition 6.1.1
Loading preview
Group member preview content is loaded from the rendered-fragment cache.
uses 1
Used by 3
Reverse dependency previews
Preview
Proposition 6.2.14
Loading preview
Reverse dependency preview content is loaded from the rendered-fragment cache.
L∃∀N

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.112 theorems
  • theoremdefined in FABL/Chapter06/F₂Polynomials/ExtremalBounds.lean
    complete
    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.lean
    complete
    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.
    
Lemma6.2.12
Group: Chapter 6: Pseudorandomness and F₂-polynomials (115)
Group member previews
Preview
Proposition 6.1.1
Loading preview
Group member preview content is loaded from the rendered-fragment cache.
Statement uses 3
Statement dependency previews
Preview
Theorem 1.2.3
Loading preview
Statement dependency preview content is loaded from the rendered-fragment cache.
used by 1L∃∀N

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.1218 declarations
  • defdefined in FABL/Chapter06/F₂Polynomials/Encoding.lean
    complete
    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.lean
    complete
    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.lean
    complete
    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.lean
    complete
    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.lean
    complete
    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.lean
    complete
    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.lean
    complete
    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.lean
    complete
    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.lean
    complete
    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.lean
    complete
    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.lean
    complete
    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.lean
    complete
    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.lean
    complete
    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.lean
    complete
    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.lean
    complete
    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.lean
    complete
    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.lean
    complete
    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.lean
    complete
    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. 
Proposition6.2.13
Group: Chapter 6: Pseudorandomness and F₂-polynomials (115)
Group member previews
Preview
Proposition 6.1.1
Loading preview
Group member preview content is loaded from the rendered-fragment cache.
Statement uses 2
Statement dependency previews
Preview
Definition 6.2.8
Loading preview
Statement dependency preview content is loaded from the rendered-fragment cache.
used by 1L∃∀N

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.131 theorem
  • theoremdefined in FABL/Chapter06/F₂Polynomials/FourierDegreeBridge.lean
    complete
    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. 
Proposition6.2.14
Group: Chapter 6: Pseudorandomness and F₂-polynomials (115)
Group member previews
Preview
Proposition 6.1.1
Loading preview
Group member preview content is loaded from the rendered-fragment cache.
Statement uses 4
Statement dependency previews
Preview
Theorem 1.2.3
Loading preview
Statement dependency preview content is loaded from the rendered-fragment cache.
used by 1L∃∀N

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.141 theorem
  • theoremdefined in FABL/Chapter06/F₂Polynomials/Siegenthaler.lean
    complete
    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`. 
Theorem6.2.15
Group: Chapter 6: Pseudorandomness and F₂-polynomials (115)
Group member previews
Preview
Proposition 6.1.1
Loading preview
Group member preview content is loaded from the rendered-fragment cache.
Statement uses 3
Statement dependency previews
Preview
Definition 6.1.15
Loading preview
Statement dependency preview content is loaded from the rendered-fragment cache.
Used by 2
Reverse dependency previews
Preview
Theorem 6.4.3
Loading preview
Reverse dependency preview content is loaded from the rendered-fragment cache.
L∃∀N

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.151 theorem
  • theoremdefined in FABL/Chapter06/F₂Polynomials/Siegenthaler.lean
    complete
    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`. 
Lemma6.2.16
Group: Chapter 6: Pseudorandomness and F₂-polynomials (115)
Group member previews
Preview
Proposition 6.1.1
Loading preview
Group member preview content is loaded from the rendered-fragment cache.
Statement uses 3
Statement dependency previews
Preview
Theorem 1.2.3
Loading preview
Statement dependency preview content is loaded from the rendered-fragment cache.
used by 1L∃∀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.162 theorems
  • theoremdefined in FABL/Chapter06/Pseudorandomness/CorrelationImmunityBounds.lean
    complete
    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.lean
    complete
    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`. 
Theorem6.2.17
Group: Chapter 6: Pseudorandomness and F₂-polynomials (115)
Group member previews
Preview
Proposition 6.1.1
Loading preview
Group member preview content is loaded from the rendered-fragment cache.
Statement uses 2
Statement dependency previews
Preview
Definition 6.1.15
Loading preview
Statement dependency preview content is loaded from the rendered-fragment cache.
used by 1L∃∀N

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.171 theorem
  • theoremdefined in FABL/Chapter06/Pseudorandomness/CorrelationImmunityBounds.lean
    complete
    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`. 
Lemma6.2.18
Group: Chapter 6: Pseudorandomness and F₂-polynomials (115)
Group member previews
Preview
Proposition 6.1.1
Loading preview
Group member preview content is loaded from the rendered-fragment cache.
Statement uses 3
Statement dependency previews
Preview
Proposition 1.4.1
Loading preview
Statement dependency preview content is loaded from the rendered-fragment cache.
used by 1L∃∀N

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.181 theorem
  • theoremdefined in FABL/Chapter06/Constructions/BentFunctions.lean
    complete
    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. 
Theorem6.2.19
Group: Chapter 6: Pseudorandomness and F₂-polynomials (115)
Group member previews
Preview
Proposition 6.1.1
Loading preview
Group member preview content is loaded from the rendered-fragment cache.
Statement uses 3
Statement dependency previews
Preview
Definition 6.3.1
Loading preview
Statement dependency preview content is loaded from the rendered-fragment cache.
used by 0XL∃∀N

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.