Cryptographic Boolean Functions in Lean

5.3. Bent functions of low algebraic degrees🔗

Theorem5.3.1
Group: Chapter 5: Bent functions (69)
Group member previews
Preview
Definition 5.1.1
Loading preview
Group member preview content is loaded from the rendered-fragment cache.
Statement uses 4
Statement dependency previews
Preview
Definition 4.2.1
Loading preview
Statement dependency preview content is loaded from the rendered-fragment cache.
Used by 3
Reverse dependency previews
Preview
Theorem 5.7.4
Loading preview
Reverse dependency preview content is loaded from the rendered-fragment cache.
L∃∀N

Quadratic bent functions (Carlet, Section 6.2, pp. 80--81). Let n\ge2 be even and let f:V_n\to\mathbb F_2 have algebraic degree at most two. The following conditions are equivalent:

  1. f is bent;

  2. w_H(f)=2^{n-1}\pm2^{n/2-1};

  3. the alternating polar form \phi_f(x,y)=f(0)+f(x)+f(y)+f(x+y) is nondegenerate, equivalently the linear kernel of f is \{0\};

  4. the symmetric zero-diagonal coefficient matrix of the quadratic part of f is nonsingular;

  5. after an invertible affine change of variables, f has the form x_1x_2+x_3x_4+\cdots+x_{n-1}x_n+\varepsilon \qquad(\varepsilon\in\mathbb F_2).

Lean code for Theorem5.3.12 theorems
  • theoremdefined in CryptBoolean/Carlet/Chapter06/QuadraticBent.lean
    complete
    theorem CryptBoolean.isBent_iff_quadraticRadical_eq_bot {n : }
      (f : CryptBoolean.BooleanFunction n)
      (hdegree : FABL.functionAlgebraicDegree f  2) :
      CryptBoolean.IsBent f  CryptBoolean.quadraticRadical f hdegree = 
    theorem CryptBoolean.isBent_iff_quadraticRadical_eq_bot
      {n : }
      (f : CryptBoolean.BooleanFunction n)
      (hdegree :
        FABL.functionAlgebraicDegree f  2) :
      CryptBoolean.IsBent f 
        CryptBoolean.quadraticRadical f
            hdegree =
          
    A quadratic Boolean function is bent exactly when the radical of its polar
    form is trivial. 
  • theoremdefined in CryptBoolean/Carlet/Chapter06/QuadraticBent.lean
    complete
    theorem CryptBoolean.isBent_iff_linearKernel_eq_bot_of_degree_le_two {n : }
      (f : CryptBoolean.BooleanFunction n)
      (hdegree : FABL.functionAlgebraicDegree f  2) :
      CryptBoolean.IsBent f  CryptBoolean.linearKernel f = 
    theorem CryptBoolean.isBent_iff_linearKernel_eq_bot_of_degree_le_two
      {n : }
      (f : CryptBoolean.BooleanFunction n)
      (hdegree :
        FABL.functionAlgebraicDegree f  2) :
      CryptBoolean.IsBent f 
        CryptBoolean.linearKernel f = 
    A quadratic Boolean function is bent exactly when its linear kernel is
    trivial.