Cryptographic Boolean Functions in Lean

6.1. Degree, divisibility, and nonlinearity🔗

Theorem6.1.1
Group: Chapter 6: Resilient functions (38)
Group member previews
Preview
Proposition 6.1.2
Loading preview
Group member preview content is loaded from the rendered-fragment cache.
Statement uses 2
Statement dependency previews
Preview
Definition 1.4.1
Loading preview
Statement dependency preview content is loaded from the rendered-fragment cache.
Used by 4
Reverse dependency previews
Preview
Theorem 6.1.7
Loading preview
Reverse dependency preview content is loaded from the rendered-fragment cache.
L∃∀N

Siegenthaler's inequalities (Carlet, p. 111). Let f:V_n\to\mathbb F_2. If 0\le m<n-1 and f is m-resilient, then \deg_{\mathrm{alg}}(f)\le n-m-1. Every (n-1)-resilient function is affine. More generally, if f is correlation immune of order m<n, then \deg_{\mathrm{alg}}(f)\le n-m. If additionally 2^{m+1} divides w_H(f), then the sharper bound \deg_{\mathrm{alg}}(f)\le n-m-1 holds.

Lean code for Theorem6.1.16 theorems
  • theoremdefined in CryptBoolean/Carlet/Chapter07/AlgebraicDegree.lean
    complete
    theorem CryptBoolean.booleanFunctionF₂Encoding_signCubeView {n : }
      (f : CryptBoolean.BooleanFunction n) :
      FABL.booleanFunctionF₂Encoding (CryptBoolean.signCubeView f) = f
    theorem CryptBoolean.booleanFunctionF₂Encoding_signCubeView
      {n : }
      (f : CryptBoolean.BooleanFunction n) :
      FABL.booleanFunctionF₂Encoding
          (CryptBoolean.signCubeView f) =
        f
    Encoding the sign-cube view of a bit-valued Boolean function recovers the
    original function. 
  • theoremdefined in CryptBoolean/Carlet/Chapter07/AlgebraicDegree.lean
    complete
    theorem CryptBoolean.functionAlgebraicDegree_le_sub_sub_one_of_isResilient
      {n : } (f : CryptBoolean.BooleanFunction n) (m : )
      (hf : CryptBoolean.IsResilient m f) (hm : m < n - 1) :
      FABL.functionAlgebraicDegree f  n - m - 1
    theorem CryptBoolean.functionAlgebraicDegree_le_sub_sub_one_of_isResilient
      {n : }
      (f : CryptBoolean.BooleanFunction n)
      (m : )
      (hf : CryptBoolean.IsResilient m f)
      (hm : m < n - 1) :
      FABL.functionAlgebraicDegree f 
        n - m - 1
    Siegenthaler's bound: an `m`-resilient Boolean function has algebraic
    degree at most `n - m - 1` when `m < n - 1`. 
  • theoremdefined in CryptBoolean/Carlet/Chapter07/AlgebraicDegree.lean
    complete
    theorem CryptBoolean.functionAlgebraicDegree_le_sub_of_isCorrelationImmune
      {n : } (f : CryptBoolean.BooleanFunction n) (m : )
      (hf : CryptBoolean.IsCorrelationImmune m f) (hm : m < n) :
      FABL.functionAlgebraicDegree f  n - m
    theorem CryptBoolean.functionAlgebraicDegree_le_sub_of_isCorrelationImmune
      {n : }
      (f : CryptBoolean.BooleanFunction n)
      (m : )
      (hf :
        CryptBoolean.IsCorrelationImmune m f)
      (hm : m < n) :
      FABL.functionAlgebraicDegree f  n - m
    Siegenthaler's correlation-immunity bound: an `m`th-order
    correlation-immune Boolean function has algebraic degree at most `n - m` when
    `m < n`. 
  • theoremdefined in CryptBoolean/Carlet/Chapter07/AlgebraicDegree.lean
    complete
    theorem CryptBoolean.functionAlgebraicDegree_le_one_of_isResilient_natPred
      {n : } (f : CryptBoolean.BooleanFunction n) (hn : 0 < n)
      (hf : CryptBoolean.IsResilient (n - 1) f) :
      FABL.functionAlgebraicDegree f  1
    theorem CryptBoolean.functionAlgebraicDegree_le_one_of_isResilient_natPred
      {n : }
      (f : CryptBoolean.BooleanFunction n)
      (hn : 0 < n)
      (hf :
        CryptBoolean.IsResilient (n - 1) f) :
      FABL.functionAlgebraicDegree f  1
    At the highest meaningful resilient order, the algebraic degree is at
    most one. 
  • theoremdefined in CryptBoolean/Carlet/Chapter07/AlgebraicDegree.lean
    complete
    theorem CryptBoolean.exists_affineFunction_of_isResilient_natPred {n : }
      (f : CryptBoolean.BooleanFunction n) (hn : 0 < n)
      (hf : CryptBoolean.IsResilient (n - 1) f) :
       b a, f = FABL.affineFunction b a
    theorem CryptBoolean.exists_affineFunction_of_isResilient_natPred
      {n : }
      (f : CryptBoolean.BooleanFunction n)
      (hn : 0 < n)
      (hf :
        CryptBoolean.IsResilient (n - 1) f) :
       b a, f = FABL.affineFunction b a
    Every `(n - 1)`-resilient Boolean function in positive dimension is
    affine. 
  • theoremdefined in CryptBoolean/Carlet/Chapter07/SiegenthalerWeight.lean
    complete
    theorem CryptBoolean.functionAlgebraicDegree_le_sub_sub_one_of_isCorrelationImmune_of_weight
      {n : } (f : CryptBoolean.BooleanFunction n) (m : ) (hm : m < n)
      (hf : CryptBoolean.IsCorrelationImmune m f)
      (hweight : 2 ^ (m + 1)  CryptBoolean.hammingWeight f) :
      FABL.functionAlgebraicDegree f  n - m - 1
    theorem CryptBoolean.functionAlgebraicDegree_le_sub_sub_one_of_isCorrelationImmune_of_weight
      {n : }
      (f : CryptBoolean.BooleanFunction n)
      (m : ) (hm : m < n)
      (hf :
        CryptBoolean.IsCorrelationImmune m f)
      (hweight :
        2 ^ (m + 1) 
          CryptBoolean.hammingWeight f) :
      FABL.functionAlgebraicDegree f 
        n - m - 1
    A correlation-immune Boolean function whose weight has one additional
    factor of two satisfies the resilient form of Siegenthaler's degree bound. 
Proposition6.1.2
Group: Chapter 6: Resilient functions (38)
Group member previews
Preview
Theorem 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.6.1
Loading preview
Statement dependency preview content is loaded from the rendered-fragment cache.
Used by 3
Reverse dependency previews
Preview
Theorem 6.1.3
Loading preview
Reverse dependency preview content is loaded from the rendered-fragment cache.
L∃∀N

Proposition 32 (Carlet, pp. 111--112). Let n>0, let m<n, and let f:V_n\to\mathbb F_2. Define g(x)=f(x)\oplus x_1\oplus\cdots\oplus x_n. Then f is m-resilient if and only if the numerical normal form of g has degree at most n-m-1.

Lean code for Proposition6.1.23 theorems
  • theoremdefined in CryptBoolean/Carlet/Chapter07/NumericalNormalForm.lean
    complete
    theorem CryptBoolean.functionNumericalDegree_booleanRealEmbedding_eq_fourierDegree_signCubeView
      {n : } (f : CryptBoolean.BooleanFunction n) :
      FABL.functionNumericalDegree (FABL.booleanRealEmbedding f) =
        FABL.fourierDegree (CryptBoolean.signCubeView f).toReal
    theorem CryptBoolean.functionNumericalDegree_booleanRealEmbedding_eq_fourierDegree_signCubeView
      {n : }
      (f : CryptBoolean.BooleanFunction n) :
      FABL.functionNumericalDegree
          (FABL.booleanRealEmbedding f) =
        FABL.fourierDegree
          (CryptBoolean.signCubeView f).toReal
    The numerical degree of the real Boolean embedding is the Fourier degree
    of the corresponding sign-cube view. 
  • theoremdefined in CryptBoolean/Carlet/Chapter07/NumericalNormalForm.lean
    complete
    theorem CryptBoolean.functionNumericalDegree_booleanRealEmbedding_le_iff_walshTransform
      {n : } (f : CryptBoolean.BooleanFunction n) (D : ) :
      FABL.functionNumericalDegree (FABL.booleanRealEmbedding f)  D 
         (S : Finset (Fin n)),
          D < S.card 
            CryptBoolean.walshTransform f (FABL.f₂CubeOfFinset S) = 0
    theorem CryptBoolean.functionNumericalDegree_booleanRealEmbedding_le_iff_walshTransform
      {n : }
      (f : CryptBoolean.BooleanFunction n)
      (D : ) :
      FABL.functionNumericalDegree
            (FABL.booleanRealEmbedding f) 
          D 
         (S : Finset (Fin n)),
          D < S.card 
            CryptBoolean.walshTransform f
                (FABL.f₂CubeOfFinset S) =
              0
    Numerical degree at most `D` is equivalent to vanishing of all raw Walsh
    coefficients whose frequencies have weight greater than `D`. 
  • theoremdefined in CryptBoolean/Carlet/Chapter07/NumericalNormalForm.lean
    complete
    theorem CryptBoolean.proposition_32_resilient_iff_functionNumericalDegree_le
      {n : } (m : ) (f : CryptBoolean.BooleanFunction n) (hn : 0 < n)
      (hm : m < n) :
      CryptBoolean.IsResilient m f 
        FABL.functionNumericalDegree
            (FABL.booleanRealEmbedding
              (f + (FABL.coordinateSum Finset.univ))) 
          n - m - 1
    theorem CryptBoolean.proposition_32_resilient_iff_functionNumericalDegree_le
      {n : } (m : )
      (f : CryptBoolean.BooleanFunction n)
      (hn : 0 < n) (hm : m < n) :
      CryptBoolean.IsResilient m f 
        FABL.functionNumericalDegree
            (FABL.booleanRealEmbedding
              (f +
                (FABL.coordinateSum
                    Finset.univ))) 
          n - m - 1
    Carlet Proposition 32: for `n > 0` and `m < n`, an `n`-variable
    Boolean function is `m`-resilient exactly when adding full coordinate parity
    produces a Boolean function whose numerical normal form has degree at most
    `n - m - 1`. 
Theorem6.1.3
Group: Chapter 6: Resilient functions (38)
Group member previews
Preview
Theorem 6.1.1
Loading preview
Group member preview content is loaded from the rendered-fragment cache.
Statement uses 4
Statement dependency previews
Preview
Definition 1.1.2
Loading preview
Statement dependency preview content is loaded from the rendered-fragment cache.
Used by 4
Reverse dependency previews
Preview
Theorem 6.1.4
Loading preview
Reverse dependency preview content is loaded from the rendered-fragment cache.
L∃∀N

Walsh and weight divisibility (Carlet, p. 112). Let 0\le m\le n-2. If f:V_n\to\mathbb F_2 is m-resilient, then 2^{m+2}\mid W_f(a)\qquad(a\in V_n). If f is correlation immune of order m, then 2^{m+1}\mid W_f(a) for every a and 2^m\mid w_H(f). If moreover 2^{m+1}\mid w_H(f), then 2^{m+2}\mid W_f(a) for every a.

Lean code for Theorem6.1.36 theorems
  • theoremdefined in CryptBoolean/Carlet/Chapter02/Foundations.lean
    complete
    theorem CryptBoolean.bitSignInt_cast_eq_realSignView {n : }
      (f : CryptBoolean.BooleanFunction n) (x : FABL.F₂Cube n) :
      (CryptBoolean.bitSignInt (f x)) = CryptBoolean.realSignView f x
    theorem CryptBoolean.bitSignInt_cast_eq_realSignView
      {n : }
      (f : CryptBoolean.BooleanFunction n)
      (x : FABL.F₂Cube n) :
      (CryptBoolean.bitSignInt (f x)) =
        CryptBoolean.realSignView f x
    Casting an integer sign value to `ℝ` agrees with the real sign view. 
  • theoremdefined in CryptBoolean/Carlet/Chapter07/WalshDivisibility.lean
    complete
    theorem CryptBoolean.sum_walshTransform_submodule_eq {n : }
      (f : CryptBoolean.BooleanFunction n)
      (E : Submodule FABL.𝔽₂ (FABL.F₂Cube n)) :
       u, CryptBoolean.walshTransform f u =
        (Nat.card E) *  x, CryptBoolean.bitSignInt (f x)
    theorem CryptBoolean.sum_walshTransform_submodule_eq
      {n : }
      (f : CryptBoolean.BooleanFunction n)
      (E :
        Submodule FABL.𝔽₂ (FABL.F₂Cube n)) :
       u, CryptBoolean.walshTransform f u =
        (Nat.card E) *
           x, CryptBoolean.bitSignInt (f x)
    The Walsh sum over a binary subspace equals its cardinality times the
    sign sum over the perpendicular subspace. 
  • theoremdefined in CryptBoolean/Carlet/Chapter07/WalshDivisibility.lean
    complete
    theorem CryptBoolean.two_pow_m_add_two_dvd_walshTransform_of_isResilient {n : }
      (f : CryptBoolean.BooleanFunction n) (m : ) (hm : m + 2  n)
      (hf : CryptBoolean.IsResilient m f) (a : FABL.F₂Cube n) :
      2 ^ (m + 2)  CryptBoolean.walshTransform f a
    theorem CryptBoolean.two_pow_m_add_two_dvd_walshTransform_of_isResilient
      {n : }
      (f : CryptBoolean.BooleanFunction n)
      (m : ) (hm : m + 2  n)
      (hf : CryptBoolean.IsResilient m f)
      (a : FABL.F₂Cube n) :
      2 ^ (m + 2) 
        CryptBoolean.walshTransform f a
    Carlet's divisibility consequence after Proposition 32: every Walsh
    coefficient of an `m`-resilient function is divisible by `2^(m+2)`. 
  • theoremdefined in CryptBoolean/Carlet/Chapter07/WalshDivisibility.lean
    complete
    theorem CryptBoolean.two_pow_m_add_one_dvd_walshTransform_of_isCorrelationImmune
      {n : } (f : CryptBoolean.BooleanFunction n) (m : ) (hm : m + 2  n)
      (hf : CryptBoolean.IsCorrelationImmune m f) (a : FABL.F₂Cube n) :
      2 ^ (m + 1)  CryptBoolean.walshTransform f a
    theorem CryptBoolean.two_pow_m_add_one_dvd_walshTransform_of_isCorrelationImmune
      {n : }
      (f : CryptBoolean.BooleanFunction n)
      (m : ) (hm : m + 2  n)
      (hf :
        CryptBoolean.IsCorrelationImmune m f)
      (a : FABL.F₂Cube n) :
      2 ^ (m + 1) 
        CryptBoolean.walshTransform f a
    Every Walsh coefficient of an `m`th-order correlation-immune function is
    divisible by `2^(m+1)` when `m ≤ n-2`. 
  • theoremdefined in CryptBoolean/Carlet/Chapter07/WalshDivisibility.lean
    complete
    theorem CryptBoolean.two_pow_m_dvd_hammingWeight_of_isCorrelationImmune {n : }
      (f : CryptBoolean.BooleanFunction n) (m : ) (hm : m + 2  n)
      (hf : CryptBoolean.IsCorrelationImmune m f) :
      2 ^ m  CryptBoolean.hammingWeight f
    theorem CryptBoolean.two_pow_m_dvd_hammingWeight_of_isCorrelationImmune
      {n : }
      (f : CryptBoolean.BooleanFunction n)
      (m : ) (hm : m + 2  n)
      (hf :
        CryptBoolean.IsCorrelationImmune m
          f) :
      2 ^ m  CryptBoolean.hammingWeight f
    The Hamming weight of an `m`th-order correlation-immune function is
    divisible by `2^m` when `m ≤ n-2`. 
  • theoremdefined in CryptBoolean/Carlet/Chapter07/WalshDivisibility.lean
    complete
    theorem CryptBoolean.two_pow_m_add_two_dvd_walshTransform_of_isCorrelationImmune_of_weight
      {n : } (f : CryptBoolean.BooleanFunction n) (m : ) (hm : m + 2  n)
      (hf : CryptBoolean.IsCorrelationImmune m f)
      (hweight : 2 ^ (m + 1)  CryptBoolean.hammingWeight f)
      (a : FABL.F₂Cube n) : 2 ^ (m + 2)  CryptBoolean.walshTransform f a
    theorem CryptBoolean.two_pow_m_add_two_dvd_walshTransform_of_isCorrelationImmune_of_weight
      {n : }
      (f : CryptBoolean.BooleanFunction n)
      (m : ) (hm : m + 2  n)
      (hf :
        CryptBoolean.IsCorrelationImmune m f)
      (hweight :
        2 ^ (m + 1) 
          CryptBoolean.hammingWeight f)
      (a : FABL.F₂Cube n) :
      2 ^ (m + 2) 
        CryptBoolean.walshTransform f a
    If an `m`th-order correlation-immune function has weight divisible by
    `2^(m+1)`, then every Walsh coefficient is divisible by `2^(m+2)`. 
Theorem6.1.4
Group: Chapter 6: Resilient functions (38)
Group member previews
Preview
Theorem 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.9.2
Loading preview
Statement dependency preview content is loaded from the rendered-fragment cache.
used by 1L∃∀N

Sarkar--Maitra bound (Carlet, pp. 112--113). Let f:V_n\to\mathbb F_2 be m-resilient, where m\le n-2. Then \operatorname{nl}(f)\le 2^{n-1}-2^{m+1}. Equality holds if and only if f is plateaued with nonzero Walsh magnitude 2^{m+2}; equivalently, W_f(a)\in\{0,-2^{m+2},2^{m+2}\}\qquad(a\in V_n).

Lean code for Theorem6.1.46 theorems
  • theoremdefined in CryptBoolean/Carlet/Chapter07/SarkarMaitra.lean
    complete
    theorem CryptBoolean.two_mul_nonlinearity_add_two_pow_m_add_two_le_of_isResilient
      {n : } (f : CryptBoolean.BooleanFunction n) (m : ) (hm : m + 2  n)
      (hf : CryptBoolean.IsResilient m f) :
      2 * CryptBoolean.nonlinearity f + 2 ^ (m + 2)  2 ^ n
    theorem CryptBoolean.two_mul_nonlinearity_add_two_pow_m_add_two_le_of_isResilient
      {n : }
      (f : CryptBoolean.BooleanFunction n)
      (m : ) (hm : m + 2  n)
      (hf : CryptBoolean.IsResilient m f) :
      2 * CryptBoolean.nonlinearity f +
          2 ^ (m + 2) 
        2 ^ n
    Division-free Sarkar--Maitra bound: twice the nonlinearity plus the
    smallest possible nonzero resilient Walsh magnitude is at most the cube size. 
  • theoremdefined in CryptBoolean/Carlet/Chapter07/SarkarMaitra.lean
    complete
    theorem CryptBoolean.nonlinearity_add_two_pow_m_add_one_le_two_pow_sub_one_of_isResilient
      {n : } (f : CryptBoolean.BooleanFunction n) (m : ) (hm : m + 2  n)
      (hf : CryptBoolean.IsResilient m f) :
      CryptBoolean.nonlinearity f + 2 ^ (m + 1)  2 ^ (n - 1)
    theorem CryptBoolean.nonlinearity_add_two_pow_m_add_one_le_two_pow_sub_one_of_isResilient
      {n : }
      (f : CryptBoolean.BooleanFunction n)
      (m : ) (hm : m + 2  n)
      (hf : CryptBoolean.IsResilient m f) :
      CryptBoolean.nonlinearity f +
          2 ^ (m + 1) 
        2 ^ (n - 1)
    Additive form of the Sarkar--Maitra bound, avoiding truncated subtraction. 
  • theoremdefined in CryptBoolean/Carlet/Chapter07/SarkarMaitra.lean
    complete
    theorem CryptBoolean.nonlinearity_le_two_pow_sub_two_pow_of_isResilient {n : }
      (f : CryptBoolean.BooleanFunction n) (m : ) (hm : m + 2  n)
      (hf : CryptBoolean.IsResilient m f) :
      CryptBoolean.nonlinearity f  2 ^ (n - 1) - 2 ^ (m + 1)
    theorem CryptBoolean.nonlinearity_le_two_pow_sub_two_pow_of_isResilient
      {n : }
      (f : CryptBoolean.BooleanFunction n)
      (m : ) (hm : m + 2  n)
      (hf : CryptBoolean.IsResilient m f) :
      CryptBoolean.nonlinearity f 
        2 ^ (n - 1) - 2 ^ (m + 1)
    Sarkar--Maitra bound in Carlet's printed subtraction form. 
  • theoremdefined in CryptBoolean/Carlet/Chapter07/SarkarMaitra.lean
    complete
    theorem CryptBoolean.nonlinearity_eq_sarkarMaitra_bound_iff_hasPlateauedWalshAmplitude
      {n : } (f : CryptBoolean.BooleanFunction n) (m : ) (hm : m + 2  n)
      (hf : CryptBoolean.IsResilient m f) :
      CryptBoolean.nonlinearity f = 2 ^ (n - 1) - 2 ^ (m + 1) 
        CryptBoolean.HasPlateauedWalshAmplitude f (2 ^ (m + 2))
    theorem CryptBoolean.nonlinearity_eq_sarkarMaitra_bound_iff_hasPlateauedWalshAmplitude
      {n : }
      (f : CryptBoolean.BooleanFunction n)
      (m : ) (hm : m + 2  n)
      (hf : CryptBoolean.IsResilient m f) :
      CryptBoolean.nonlinearity f =
          2 ^ (n - 1) - 2 ^ (m + 1) 
        CryptBoolean.HasPlateauedWalshAmplitude
          f (2 ^ (m + 2))
    Equality in the Sarkar--Maitra bound is equivalent to plateauedness with
    nonzero Walsh magnitude exactly `2^(m+2)`. 
  • theoremdefined in CryptBoolean/Carlet/Chapter07/SarkarMaitra.lean
    complete
    theorem CryptBoolean.walshTransform_eq_zero_or_eq_neg_two_pow_or_eq_two_pow_of_sarkarMaitra_equality
      {n : } (f : CryptBoolean.BooleanFunction n) (m : ) (hm : m + 2  n)
      (hf : CryptBoolean.IsResilient m f)
      (hnonlinearity :
        CryptBoolean.nonlinearity f = 2 ^ (n - 1) - 2 ^ (m + 1))
      (a : FABL.F₂Cube n) :
      CryptBoolean.walshTransform f a = 0 
        CryptBoolean.walshTransform f a = -2 ^ (m + 2) 
          CryptBoolean.walshTransform f a = 2 ^ (m + 2)
    theorem CryptBoolean.walshTransform_eq_zero_or_eq_neg_two_pow_or_eq_two_pow_of_sarkarMaitra_equality
      {n : }
      (f : CryptBoolean.BooleanFunction n)
      (m : ) (hm : m + 2  n)
      (hf : CryptBoolean.IsResilient m f)
      (hnonlinearity :
        CryptBoolean.nonlinearity f =
          2 ^ (n - 1) - 2 ^ (m + 1))
      (a : FABL.F₂Cube n) :
      CryptBoolean.walshTransform f a = 0 
        CryptBoolean.walshTransform f a =
            -2 ^ (m + 2) 
          CryptBoolean.walshTransform f a =
            2 ^ (m + 2)
    At equality in the Sarkar--Maitra bound, every Walsh coefficient is zero
    or one of the two signed values of magnitude `2^(m+2)`. 
  • theoremdefined in CryptBoolean/Carlet/Chapter07/SarkarMaitra.lean
    complete
    theorem CryptBoolean.isPlateaued_of_sarkarMaitra_equality {n : }
      (f : CryptBoolean.BooleanFunction n) (m : ) (hm : m + 2  n)
      (hf : CryptBoolean.IsResilient m f)
      (hnonlinearity :
        CryptBoolean.nonlinearity f = 2 ^ (n - 1) - 2 ^ (m + 1)) :
      CryptBoolean.IsPlateaued f
    theorem CryptBoolean.isPlateaued_of_sarkarMaitra_equality
      {n : }
      (f : CryptBoolean.BooleanFunction n)
      (m : ) (hm : m + 2  n)
      (hf : CryptBoolean.IsResilient m f)
      (hnonlinearity :
        CryptBoolean.nonlinearity f =
          2 ^ (n - 1) - 2 ^ (m + 1)) :
      CryptBoolean.IsPlateaued f
    Equality in the Sarkar--Maitra bound implies Carlet plateauedness. 
Theorem6.1.5
Group: Chapter 6: Resilient functions (38)
Group member previews
Preview
Theorem 6.1.1
Loading preview
Group member preview content is loaded from the rendered-fragment cache.
Statement uses 4
Statement dependency previews
Preview
Corollary 1.8.6
Loading preview
Statement dependency preview content is loaded from the rendered-fragment cache.
used by 1L∃∀N

Theorem 13 (Carlet, p. 113). Let f:V_n\to\mathbb F_2 be m-resilient, let m\le n-2, and put d=\deg_{\mathrm{alg}}(f)>0. Every Walsh coefficient of f is divisible by 2^{\,m+2+\lfloor(n-m-2)/d\rfloor}. Consequently, \operatorname{nl}(f) is divisible by 2^{\,m+1+\lfloor(n-m-2)/d\rfloor}.

Lean code for Theorem6.1.52 theorems
  • theoremdefined in CryptBoolean/Carlet/Chapter07/DegreeDivisibility.lean
    complete
    theorem CryptBoolean.two_pow_m_add_two_add_degree_quotient_dvd_walshTransform_of_isResilient
      {n : } (f : CryptBoolean.BooleanFunction n) (m : ) (hm : m + 2  n)
      (hd : 0 < FABL.functionAlgebraicDegree f)
      (hf : CryptBoolean.IsResilient m f) (a : FABL.F₂Cube n) :
      2 ^ (m + 2 + (n - m - 2) / FABL.functionAlgebraicDegree f) 
        CryptBoolean.walshTransform f a
    theorem CryptBoolean.two_pow_m_add_two_add_degree_quotient_dvd_walshTransform_of_isResilient
      {n : }
      (f : CryptBoolean.BooleanFunction n)
      (m : ) (hm : m + 2  n)
      (hd :
        0 < FABL.functionAlgebraicDegree f)
      (hf : CryptBoolean.IsResilient m f)
      (a : FABL.F₂Cube n) :
      2 ^
          (m + 2 +
            (n - m - 2) /
              FABL.functionAlgebraicDegree
                f) 
        CryptBoolean.walshTransform f a
    Carlet Theorem 13: if `f` is `m`-resilient and has positive algebraic
    degree, every Walsh coefficient is divisible by the stated degree-sensitive
    power of two. 
  • theoremdefined in CryptBoolean/Carlet/Chapter07/DegreeDivisibility.lean
    complete
    theorem CryptBoolean.two_pow_m_add_one_add_degree_quotient_dvd_nonlinearity_of_isResilient
      {n : } (f : CryptBoolean.BooleanFunction n) (m : ) (hm : m + 2  n)
      (hd : 0 < FABL.functionAlgebraicDegree f)
      (hf : CryptBoolean.IsResilient m f) :
      2 ^ (m + 1 + (n - m - 2) / FABL.functionAlgebraicDegree f) 
        CryptBoolean.nonlinearity f
    theorem CryptBoolean.two_pow_m_add_one_add_degree_quotient_dvd_nonlinearity_of_isResilient
      {n : }
      (f : CryptBoolean.BooleanFunction n)
      (m : ) (hm : m + 2  n)
      (hd :
        0 < FABL.functionAlgebraicDegree f)
      (hf : CryptBoolean.IsResilient m f) :
      2 ^
          (m + 1 +
            (n - m - 2) /
              FABL.functionAlgebraicDegree
                f) 
        CryptBoolean.nonlinearity f
    The nonlinearity divisibility consequence of Carlet Theorem 13. 
Theorem6.1.6
Group: Chapter 6: Resilient functions (38)
Group member previews
Preview
Theorem 6.1.1
Loading preview
Group member preview content is loaded from the rendered-fragment cache.
Statement uses 4
Statement dependency previews
Preview
Definition 1.1.2
Loading preview
Statement dependency preview content is loaded from the rendered-fragment cache.
used by 0L∃∀N

Correlation-immune divisibility (Carlet, p. 113). Let f be correlation immune of order m, where m\le n-1, and put d=\deg_{\mathrm{alg}}(f)>0. Then 2^{\,m+1+\lfloor(n-m-1)/d\rfloor}\mid W_f(a) \qquad(a\in V_n). If m\le n-2 and 2^{\,m+1+\lfloor(n-m-2)/d\rfloor}\mid w_H(f), then every W_f(a) is divisible by 2^{\,m+2+\lfloor(n-m-2)/d\rfloor}.

Lean code for Theorem6.1.62 theorems
  • theoremdefined in CryptBoolean/Carlet/Chapter07/DegreeDivisibility.lean
    complete
    theorem CryptBoolean.two_pow_m_add_one_add_degree_quotient_dvd_walshTransform_of_isCorrelationImmune
      {n : } (f : CryptBoolean.BooleanFunction n) (m : ) (hm : m + 1  n)
      (hd : 0 < FABL.functionAlgebraicDegree f)
      (hf : CryptBoolean.IsCorrelationImmune m f) (a : FABL.F₂Cube n) :
      2 ^ (m + 1 + (n - m - 1) / FABL.functionAlgebraicDegree f) 
        CryptBoolean.walshTransform f a
    theorem CryptBoolean.two_pow_m_add_one_add_degree_quotient_dvd_walshTransform_of_isCorrelationImmune
      {n : }
      (f : CryptBoolean.BooleanFunction n)
      (m : ) (hm : m + 1  n)
      (hd :
        0 < FABL.functionAlgebraicDegree f)
      (hf :
        CryptBoolean.IsCorrelationImmune m f)
      (a : FABL.F₂Cube n) :
      2 ^
          (m + 1 +
            (n - m - 1) /
              FABL.functionAlgebraicDegree
                f) 
        CryptBoolean.walshTransform f a
    Correlation-immunity companion to Carlet Theorem 13, including the
    endpoint `m = n - 1`. 
  • theoremdefined in CryptBoolean/Carlet/Chapter07/DegreeDivisibility.lean
    complete
    theorem CryptBoolean.two_pow_m_add_two_add_degree_quotient_dvd_walshTransform_of_isCorrelationImmune_of_weight
      {n : } (f : CryptBoolean.BooleanFunction n) (m : ) (hm : m + 2  n)
      (hd : 0 < FABL.functionAlgebraicDegree f)
      (hf : CryptBoolean.IsCorrelationImmune m f)
      (hweight :
        2 ^ (m + 1 + (n - m - 2) / FABL.functionAlgebraicDegree f) 
          CryptBoolean.hammingWeight f)
      (a : FABL.F₂Cube n) :
      2 ^ (m + 2 + (n - m - 2) / FABL.functionAlgebraicDegree f) 
        CryptBoolean.walshTransform f a
    theorem CryptBoolean.two_pow_m_add_two_add_degree_quotient_dvd_walshTransform_of_isCorrelationImmune_of_weight
      {n : }
      (f : CryptBoolean.BooleanFunction n)
      (m : ) (hm : m + 2  n)
      (hd :
        0 < FABL.functionAlgebraicDegree f)
      (hf :
        CryptBoolean.IsCorrelationImmune m f)
      (hweight :
        2 ^
            (m + 1 +
              (n - m - 2) /
                FABL.functionAlgebraicDegree
                  f) 
          CryptBoolean.hammingWeight f)
      (a : FABL.F₂Cube n) :
      2 ^
          (m + 2 +
            (n - m - 2) /
              FABL.functionAlgebraicDegree
                f) 
        CryptBoolean.walshTransform f a
    Sharpened correlation-immunity companion to Carlet Theorem 13: the
    additional weight divisibility raises the Walsh exponent by one. 
Theorem6.1.7
Group: Chapter 6: Resilient functions (38)
Group member previews
Preview
Theorem 6.1.1
Loading preview
Group member preview content is loaded from the rendered-fragment cache.
Statement uses 3
Statement dependency previews
Preview
Theorem 3.2.3
Loading preview
Statement dependency preview content is loaded from the rendered-fragment cache.
used by 0L∃∀N

Degree-sensitive nonlinearity bound (Carlet, p. 114). Let f be m-resilient, let m\le n-2, and put d=\deg_{\mathrm{alg}}(f)>0. Then \operatorname{nl}(f) \le 2^{n-1}-2^{\,m+1+\lfloor(n-m-2)/d\rfloor}. In particular, equality in the Sarkar--Maitra bound is possible only when d=n-m-1.

Lean code for Theorem6.1.72 theorems
  • theoremdefined in CryptBoolean/Carlet/Chapter07/NonlinearityBounds.lean
    complete
    theorem CryptBoolean.nonlinearity_le_two_pow_sub_two_pow_degree_quotient_of_isResilient
      {n : } (f : CryptBoolean.BooleanFunction n) (m : ) (hm : m + 2  n)
      (hd : 0 < FABL.functionAlgebraicDegree f)
      (hf : CryptBoolean.IsResilient m f) :
      CryptBoolean.nonlinearity f 
        2 ^ (n - 1) -
          2 ^ (m + 1 + (n - m - 2) / FABL.functionAlgebraicDegree f)
    theorem CryptBoolean.nonlinearity_le_two_pow_sub_two_pow_degree_quotient_of_isResilient
      {n : }
      (f : CryptBoolean.BooleanFunction n)
      (m : ) (hm : m + 2  n)
      (hd :
        0 < FABL.functionAlgebraicDegree f)
      (hf : CryptBoolean.IsResilient m f) :
      CryptBoolean.nonlinearity f 
        2 ^ (n - 1) -
          2 ^
            (m + 1 +
              (n - m - 2) /
                FABL.functionAlgebraicDegree
                  f)
    A positive-degree `m`-resilient function has nonlinearity at most
    `2^(n-1) - 2^(m+1+⌊(n-m-2)/deg(f)⌋)`. 
  • theoremdefined in CryptBoolean/Carlet/Chapter07/NonlinearityBounds.lean
    complete
    theorem CryptBoolean.functionAlgebraicDegree_eq_sub_sub_one_of_sarkarMaitra_equality
      {n : } (f : CryptBoolean.BooleanFunction n) (m : ) (hm : m + 2  n)
      (hd : 0 < FABL.functionAlgebraicDegree f)
      (hf : CryptBoolean.IsResilient m f)
      (hnonlinearity :
        CryptBoolean.nonlinearity f = 2 ^ (n - 1) - 2 ^ (m + 1)) :
      FABL.functionAlgebraicDegree f = n - m - 1
    theorem CryptBoolean.functionAlgebraicDegree_eq_sub_sub_one_of_sarkarMaitra_equality
      {n : }
      (f : CryptBoolean.BooleanFunction n)
      (m : ) (hm : m + 2  n)
      (hd :
        0 < FABL.functionAlgebraicDegree f)
      (hf : CryptBoolean.IsResilient m f)
      (hnonlinearity :
        CryptBoolean.nonlinearity f =
          2 ^ (n - 1) - 2 ^ (m + 1)) :
      FABL.functionAlgebraicDegree f =
        n - m - 1
    Equality in the Sarkar--Maitra bound for a positive-degree resilient
    function forces equality in Siegenthaler's degree bound. 
Theorem6.1.8
Group: Chapter 6: Resilient functions (38)
Group member previews
Preview
Theorem 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.7.3
Loading preview
Statement dependency preview content is loaded from the rendered-fragment cache.
used by 0L∃∀N

Even-dimensional bound (Carlet, p. 114). Let n>0 be even, let m\le n/2-2, and let f:V_n\to\mathbb F_2 be m-resilient. Then \operatorname{nl}(f) \le 2^{n-1}-2^{n/2-1}-2^{m+1}.

Lean code for Theorem6.1.81 theorem
  • theoremdefined in CryptBoolean/Carlet/Chapter07/NonlinearityBounds.lean
    complete
    theorem CryptBoolean.nonlinearity_le_even_dimension_resilient_bound {n : }
      (f : CryptBoolean.BooleanFunction n) (m : ) (hn : 0 < n)
      (heven : Even n) (hm : m  n / 2 - 2)
      (hf : CryptBoolean.IsResilient m f) :
      CryptBoolean.nonlinearity f 
        2 ^ (n - 1) - 2 ^ (n / 2 - 1) - 2 ^ (m + 1)
    theorem CryptBoolean.nonlinearity_le_even_dimension_resilient_bound
      {n : }
      (f : CryptBoolean.BooleanFunction n)
      (m : ) (hn : 0 < n) (heven : Even n)
      (hm : m  n / 2 - 2)
      (hf : CryptBoolean.IsResilient m f) :
      CryptBoolean.nonlinearity f 
        2 ^ (n - 1) - 2 ^ (n / 2 - 1) -
          2 ^ (m + 1)
    If `n` is positive and even and `m ≤ n/2-2`, every `m`-resilient
    Boolean function satisfies the strict-grid refinement of Relation (36). 
Theorem6.1.9
Group: Chapter 6: Resilient functions (38)
Group member previews
Preview
Theorem 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.9.2
Loading preview
Statement dependency preview content is loaded from the rendered-fragment cache.
used by 1L∃∀N

Relation (57) (Carlet, pp. 114--115). Let f be m-resilient, where m\le n-2. Then \operatorname{nl}(f)\le 2^{n-1}-2^{m+1} \left\lceil \frac{2^{n-m-2}} {\sqrt{\,2^n-\sum_{i=0}^{m}\binom ni\,}} \right\rceil.

Lean code for Theorem6.1.91 theorem
  • theoremdefined in CryptBoolean/Carlet/Chapter07/NonlinearityBounds.lean
    complete
    theorem CryptBoolean.nonlinearity_le_parseval_resilient_bound {n : }
      (f : CryptBoolean.BooleanFunction n) (m : ) (hm : m + 2  n)
      (hf : CryptBoolean.IsResilient m f) :
      CryptBoolean.nonlinearity f 
        2 ^ (n - 1) -
          2 ^ (m + 1) *
            2 ^ (n - m - 2) /
                (2 ^ n -  i  Finset.range (m + 1), n.choose i)⌉₊
    theorem CryptBoolean.nonlinearity_le_parseval_resilient_bound
      {n : }
      (f : CryptBoolean.BooleanFunction n)
      (m : ) (hm : m + 2  n)
      (hf : CryptBoolean.IsResilient m f) :
      CryptBoolean.nonlinearity f 
        2 ^ (n - 1) -
          2 ^ (m + 1) *
            2 ^ (n - m - 2) /
                (2 ^ n -
                      
                        i 
                          Finset.range
                            (m + 1),
                        n.choose i)⌉₊
    Carlet Relation (57): Parseval and the number of Walsh frequencies not
    forced to vanish refine the resilient nonlinearity bound. 
Theorem6.1.10
Group: Chapter 6: Resilient functions (38)
Group member previews
Preview
Theorem 6.1.1
Loading preview
Group member preview content is loaded from the rendered-fragment cache.
uses 1used by 0L∃∀N

Relation (58) (Carlet, p. 115). Let f be m-resilient, where 1\le m\le n/2, and define H_2(x)=-x\log_2x-(1-x)\log_2(1-x). Then \operatorname{nl}(f)\le 2^{n-1}-2^{m+1} \left\lceil \frac{2^{n-m-2}} {\sqrt{\,2^n- 2^{nH_2(m/n)}/\sqrt{8m(1-m/n)}\,}} \right\rceil.

Lean code for Theorem6.1.103 declarations
  • defdefined in CryptBoolean/Carlet/Chapter07/EntropyNonlinearity.lean
    complete
    def CryptBoolean.binaryEntropyBaseTwo (p : ) : 
    def CryptBoolean.binaryEntropyBaseTwo
      (p : ) : 
    Binary entropy measured in bits. 
  • theoremdefined in CryptBoolean/Carlet/Chapter07/EntropyNonlinearity.lean
    complete
    theorem CryptBoolean.entropyPower_div_sqrt_le_choose (m n : ) (hm : 1  m)
      (hmhalf : m  n / 2) :
      2 ^ (n * CryptBoolean.binaryEntropyBaseTwo (m / n)) /
          (8 * m * (1 - m / n)) 
        (n.choose m)
    theorem CryptBoolean.entropyPower_div_sqrt_le_choose
      (m n : ) (hm : 1  m)
      (hmhalf : m  n / 2) :
      2 ^
            (n *
              CryptBoolean.binaryEntropyBaseTwo
                (m / n)) /
          (8 * m * (1 - m / n)) 
        (n.choose m)
    The finite binomial lower bound used in Carlet Relation (58), with
    binary entropy normalized in bits. 
  • theoremdefined in CryptBoolean/Carlet/Chapter07/EntropyNonlinearity.lean
    complete
    theorem CryptBoolean.nonlinearity_le_entropy_resilient_bound {n : }
      (f : CryptBoolean.BooleanFunction n) (m : ) (hm : 1  m)
      (hmhalf : m  n / 2) (hf : CryptBoolean.IsResilient m f) :
      CryptBoolean.nonlinearity f 
        2 ^ (n - 1) -
          2 ^ (m + 1) *
            2 ^ (n - m - 2) /
                (2 ^ n -
                    2 ^ (n * CryptBoolean.binaryEntropyBaseTwo (m / n)) /
                      (8 * m * (1 - m / n)))⌉₊
    theorem CryptBoolean.nonlinearity_le_entropy_resilient_bound
      {n : }
      (f : CryptBoolean.BooleanFunction n)
      (m : ) (hm : 1  m)
      (hmhalf : m  n / 2)
      (hf : CryptBoolean.IsResilient m f) :
      CryptBoolean.nonlinearity f 
        2 ^ (n - 1) -
          2 ^ (m + 1) *
            2 ^ (n - m - 2) /
                (2 ^ n -
                    2 ^
                        (n *
                          CryptBoolean.binaryEntropyBaseTwo
                            (m / n)) /
                      (8 * m *
                          (1 - m / n)))⌉₊
    Carlet Relation (58): the entropy estimate for a finite binomial tail
    specializes the Parseval resilient nonlinearity bound.