Cryptographic Boolean Functions in Lean

3.10. Other criteria🔗

Definition3.10.1
Group: Chapter 3: Boolean functions and cryptography (72)
Group member previews
Preview
Theorem 3.1.1
Loading preview
Group member preview content is loaded from the rendered-fragment cache.
Statement uses 3
Statement dependency previews
Preview
Definition 1.4.1
Loading preview
Statement dependency preview content is loaded from the rendered-fragment cache.
used by 1L∃∀N

Algebraic thickness, normality, and spectral complexity (Carlet, p. 67). The algebraic thickness of f is the least number of nonzero ANF terms among functions affinely equivalent to f. Its normality parameter is the largest dimension of a flat on which f is constant; weak normality permits an affine restriction. Its spectral complexity is |\operatorname{supp}(W_f)|.

Lean code for Definition3.10.19 declarations
  • defdefined in CryptBoolean/Carlet/Chapter04/OtherComplexity.lean
    complete
    def CryptBoolean.algebraicThickness {n : }
      (f : CryptBoolean.BooleanFunction n) : 
    def CryptBoolean.algebraicThickness {n : }
      (f : CryptBoolean.BooleanFunction n) : 
    Carlet's algebraic thickness: the least number of nonzero ANF terms in the affine orbit. 
  • theoremdefined in CryptBoolean/Carlet/Chapter04/OtherComplexity.lean
    complete
    theorem CryptBoolean.exists_affineEquiv_anfSupport_card_eq_algebraicThickness
      {n : } (f : CryptBoolean.BooleanFunction n) :
       L,
        (FABL.anfSupport (FABL.anfCoeff (f  L))).card =
          CryptBoolean.algebraicThickness f
    theorem CryptBoolean.exists_affineEquiv_anfSupport_card_eq_algebraicThickness
      {n : }
      (f : CryptBoolean.BooleanFunction n) :
       L,
        (FABL.anfSupport
              (FABL.anfCoeff (f  L))).card =
          CryptBoolean.algebraicThickness f
    Algebraic thickness is attained by an affine reindexing. 
  • defdefined in CryptBoolean/Carlet/Chapter04/OtherComplexity.lean
    complete
    def CryptBoolean.IsConstantOnAffineFlat {n : }
      (f : CryptBoolean.BooleanFunction n)
      (H : Submodule FABL.𝔽₂ (FABL.F₂Cube n)) (a : FABL.F₂Cube n) : Prop
    def CryptBoolean.IsConstantOnAffineFlat
      {n : }
      (f : CryptBoolean.BooleanFunction n)
      (H : Submodule FABL.𝔽₂ (FABL.F₂Cube n))
      (a : FABL.F₂Cube n) : Prop
    A Boolean function is constant on the affine flat `a + H`. 
  • defdefined in CryptBoolean/Carlet/Chapter04/OtherComplexity.lean
    complete
    def CryptBoolean.IsAffineOnAffineFlat {n : }
      (f : CryptBoolean.BooleanFunction n)
      (H : Submodule FABL.𝔽₂ (FABL.F₂Cube n)) (a : FABL.F₂Cube n) : Prop
    def CryptBoolean.IsAffineOnAffineFlat {n : }
      (f : CryptBoolean.BooleanFunction n)
      (H : Submodule FABL.𝔽₂ (FABL.F₂Cube n))
      (a : FABL.F₂Cube n) : Prop
    A Boolean function restricts to an affine function on the affine flat `a + H`. 
  • theoremdefined in CryptBoolean/Carlet/Chapter04/OtherComplexity.lean
    complete
    theorem CryptBoolean.IsConstantOnAffineFlat.isAffineOnAffineFlat {n : }
      {f : CryptBoolean.BooleanFunction n}
      {H : Submodule FABL.𝔽₂ (FABL.F₂Cube n)} {a : FABL.F₂Cube n}
      (h : CryptBoolean.IsConstantOnAffineFlat f H a) :
      CryptBoolean.IsAffineOnAffineFlat f H a
    theorem CryptBoolean.IsConstantOnAffineFlat.isAffineOnAffineFlat
      {n : }
      {f : CryptBoolean.BooleanFunction n}
      {H : Submodule FABL.𝔽₂ (FABL.F₂Cube n)}
      {a : FABL.F₂Cube n}
      (h :
        CryptBoolean.IsConstantOnAffineFlat f
          H a) :
      CryptBoolean.IsAffineOnAffineFlat f H a
    A constant affine-flat restriction is an affine affine-flat restriction. 
  • defdefined in CryptBoolean/Carlet/Chapter04/OtherComplexity.lean
    complete
    def CryptBoolean.normality {n : } (f : CryptBoolean.BooleanFunction n) : 
    def CryptBoolean.normality {n : }
      (f : CryptBoolean.BooleanFunction n) : 
    Carlet's normality parameter: the largest dimension of an affine flat on which `f` is
    constant. 
  • defdefined in CryptBoolean/Carlet/Chapter04/OtherComplexity.lean
    complete
    def CryptBoolean.weakNormality {n : }
      (f : CryptBoolean.BooleanFunction n) : 
    def CryptBoolean.weakNormality {n : }
      (f : CryptBoolean.BooleanFunction n) : 
    Carlet's weak normality parameter: the largest dimension of an affine flat on which `f`
    restricts to an affine function. 
  • theoremdefined in CryptBoolean/Carlet/Chapter04/OtherComplexity.lean
    complete
    theorem CryptBoolean.normality_le_weakNormality {n : }
      (f : CryptBoolean.BooleanFunction n) :
      CryptBoolean.normality f  CryptBoolean.weakNormality f
    theorem CryptBoolean.normality_le_weakNormality
      {n : }
      (f : CryptBoolean.BooleanFunction n) :
      CryptBoolean.normality f 
        CryptBoolean.weakNormality f
    Every normal affine flat is weakly normal, so normality is bounded by weak normality. 
  • defdefined in CryptBoolean/Carlet/Chapter04/OtherComplexity.lean
    complete
    def CryptBoolean.spectralComplexity {n : }
      (f : CryptBoolean.BooleanFunction n) : 
    def CryptBoolean.spectralComplexity {n : }
      (f : CryptBoolean.BooleanFunction n) : 
    Carlet's spectral complexity: the number of nonzero raw Walsh coefficients. 
Theorem3.10.2
Group: Chapter 3: Boolean functions and cryptography (72)
Group member previews
Preview
Theorem 3.1.1
Loading preview
Group member preview content is loaded from the rendered-fragment cache.
Statement uses 3
Statement dependency previews
Preview
Definition 1.7.1
Loading preview
Statement dependency preview content is loaded from the rendered-fragment cache.
used by 0L∃∀N

The kth nonhomomorphicity (Carlet, p. 67). Let k be even with 4\le k\le2^n. The number \mathrm{NH}_k(f) of tuples (u_1,\ldots,u_k) satisfying \sum_i u_i=0, \qquad \sum_i f(u_i)=0 obeys \mathrm{NH}_k(f) =2^{(k-1)n-1}+2^{-n-1}\sum_{u\in V_n}W_f(u)^k. Its maximum 2^{(k-1)n} is attained exactly by affine functions, and its minimum 2^{(k-1)n-1}+2^{nk/2-1} exactly by bent functions.

Lean code for Theorem3.10.219 declarations
  • defdefined in CryptBoolean/Carlet/Chapter04/KthNonhomomorphicity.lean
    complete
    def CryptBoolean.booleanTupleSum {n k : } (x : Fin k  FABL.F₂Cube n) :
      FABL.F₂Cube n
    def CryptBoolean.booleanTupleSum {n k : }
      (x : Fin k  FABL.F₂Cube n) :
      FABL.F₂Cube n
    The coordinate sum of an ordered tuple in the binary cube. 
  • defdefined in CryptBoolean/Carlet/Chapter04/KthNonhomomorphicity.lean
    complete
    def CryptBoolean.booleanTupleOutputSum {n k : }
      (f : CryptBoolean.BooleanFunction n) (x : Fin k  FABL.F₂Cube n) :
      FABL.𝔽₂
    def CryptBoolean.booleanTupleOutputSum
      {n k : }
      (f : CryptBoolean.BooleanFunction n)
      (x : Fin k  FABL.F₂Cube n) : FABL.𝔽₂
    The output parity of a Boolean function on an ordered tuple. 
  • defdefined in CryptBoolean/Carlet/Chapter04/KthNonhomomorphicity.lean
    complete
    def CryptBoolean.kthNonhomomorphicity {n : }
      (f : CryptBoolean.BooleanFunction n) (k : ) : 
    def CryptBoolean.kthNonhomomorphicity {n : }
      (f : CryptBoolean.BooleanFunction n)
      (k : ) : 
    Carlet's p.67 count: ordered zero-sum tuples having even output parity.
    
    The cited Zhang--Zheng paper calls this the kth homomorphicity; Carlet calls the same even-output
    count the kth-order nonhomomorphicity. 
  • theoremdefined in CryptBoolean/Carlet/Chapter04/KthNonhomomorphicity.lean
    complete
    theorem CryptBoolean.two_mul_two_pow_mul_kthNonhomomorphicity {n k : }
      (f : CryptBoolean.BooleanFunction n) (hk : 0 < k) :
      2 * 2 ^ n * (CryptBoolean.kthNonhomomorphicity f k) =
        (2 ^ n) ^ k +  a, (CryptBoolean.walshTransform f a) ^ k
    theorem CryptBoolean.two_mul_two_pow_mul_kthNonhomomorphicity
      {n k : }
      (f : CryptBoolean.BooleanFunction n)
      (hk : 0 < k) :
      2 * 2 ^ n *
          (CryptBoolean.kthNonhomomorphicity
              f k) =
        (2 ^ n) ^ k +
           a,
            (CryptBoolean.walshTransform f
                  a) ^
              k
    Division-free Walsh-moment identity for Carlet's kth-order count. 
  • theoremdefined in CryptBoolean/Carlet/Chapter04/KthNonhomomorphicity.lean
    complete
    theorem CryptBoolean.kthNonhomomorphicity_cast_eq_walshMoment {n k : }
      (f : CryptBoolean.BooleanFunction n) (hk : 0 < k) :
      (CryptBoolean.kthNonhomomorphicity f k) =
        (2 ^ n) ^ (k - 1) / 2 +
          (∑ a, (CryptBoolean.walshTransform f a) ^ k) / (2 * 2 ^ n)
    theorem CryptBoolean.kthNonhomomorphicity_cast_eq_walshMoment
      {n k : }
      (f : CryptBoolean.BooleanFunction n)
      (hk : 0 < k) :
      (CryptBoolean.kthNonhomomorphicity f
            k) =
        (2 ^ n) ^ (k - 1) / 2 +
          (∑ a,
              (CryptBoolean.walshTransform f
                    a) ^
                k) /
            (2 * 2 ^ n)
    Carlet's p.67 Walsh-moment formula, written with positive denominators. 
  • theoremdefined in CryptBoolean/Carlet/Chapter04/KthNonhomomorphicity.lean
    complete
    theorem CryptBoolean.kthNonhomomorphicity_cast_eq_carlet_formula {n k : }
      (f : CryptBoolean.BooleanFunction n) (hk : 0 < k) :
      (CryptBoolean.kthNonhomomorphicity f k) =
        2 ^ ((k - 1) * n) / 2 +
          (∑ a, (CryptBoolean.walshTransform f a) ^ k) / 2 ^ (n + 1)
    theorem CryptBoolean.kthNonhomomorphicity_cast_eq_carlet_formula
      {n k : }
      (f : CryptBoolean.BooleanFunction n)
      (hk : 0 < k) :
      (CryptBoolean.kthNonhomomorphicity f
            k) =
        2 ^ ((k - 1) * n) / 2 +
          (∑ a,
              (CryptBoolean.walshTransform f
                    a) ^
                k) /
            2 ^ (n + 1)
    Carlet's printed p.67 formula, with the negative power written as a positive denominator. 
  • defdefined in CryptBoolean/Carlet/Chapter04/KthNonhomomorphicity.lean
    complete
    def CryptBoolean.IsAffineBooleanFunction {n : }
      (f : CryptBoolean.BooleanFunction n) : Prop
    def CryptBoolean.IsAffineBooleanFunction
      {n : }
      (f : CryptBoolean.BooleanFunction n) :
      Prop
    A Boolean function is affine when it is one of FABL's canonical affine functions. 
  • theoremdefined in CryptBoolean/Carlet/Chapter04/KthNonhomomorphicity.lean
    complete
    theorem CryptBoolean.isAffineBooleanFunction_iff_nonlinearity_eq_zero {n : }
      (f : CryptBoolean.BooleanFunction n) :
      CryptBoolean.IsAffineBooleanFunction f 
        CryptBoolean.nonlinearity f = 0
    theorem CryptBoolean.isAffineBooleanFunction_iff_nonlinearity_eq_zero
      {n : }
      (f : CryptBoolean.BooleanFunction n) :
      CryptBoolean.IsAffineBooleanFunction f 
        CryptBoolean.nonlinearity f = 0
    A Boolean function is affine exactly when its Carlet nonlinearity vanishes. 
  • theoremdefined in CryptBoolean/Carlet/Chapter04/KthNonhomomorphicity.lean
    complete
    theorem CryptBoolean.abs_walshTransform_le_two_pow {n : }
      (f : CryptBoolean.BooleanFunction n) (a : FABL.F₂Cube n) :
      |(CryptBoolean.walshTransform f a)|  2 ^ n
    theorem CryptBoolean.abs_walshTransform_le_two_pow
      {n : }
      (f : CryptBoolean.BooleanFunction n)
      (a : FABL.F₂Cube n) :
      |(CryptBoolean.walshTransform f a)| 
        2 ^ n
    Every raw Walsh coefficient is bounded by the binary-cube cardinality. 
  • theoremdefined in CryptBoolean/Carlet/Chapter04/KthNonhomomorphicity.lean
    complete
    theorem CryptBoolean.sum_walshTransform_evenMoment_le {n : }
      (f : CryptBoolean.BooleanFunction n) (r : ) (hr : 0 < r) :
       a, (CryptBoolean.walshTransform f a) ^ (2 * r)  (2 ^ n) ^ (2 * r)
    theorem CryptBoolean.sum_walshTransform_evenMoment_le
      {n : }
      (f : CryptBoolean.BooleanFunction n)
      (r : ) (hr : 0 < r) :
       a,
          (CryptBoolean.walshTransform f a) ^
            (2 * r) 
        (2 ^ n) ^ (2 * r)
    The even raw Walsh moment is at most the corresponding power of the cube cardinality. 
  • theoremdefined in CryptBoolean/Carlet/Chapter04/KthNonhomomorphicity.lean
    complete
    theorem CryptBoolean.kthNonhomomorphicity_affineFunction {n k : } (b : FABL.𝔽₂)
      (a : FABL.F₂Cube n) (hkEven : Even k) (hk : 0 < k) :
      (CryptBoolean.kthNonhomomorphicity (FABL.affineFunction b a) k) =
        (2 ^ n) ^ (k - 1)
    theorem CryptBoolean.kthNonhomomorphicity_affineFunction
      {n k : } (b : FABL.𝔽₂)
      (a : FABL.F₂Cube n) (hkEven : Even k)
      (hk : 0 < k) :
      (CryptBoolean.kthNonhomomorphicity
            (FABL.affineFunction b a) k) =
        (2 ^ n) ^ (k - 1)
    An affine function attains Carlet's maximum kth-order count. 
  • theoremdefined in CryptBoolean/Carlet/Chapter04/KthNonhomomorphicity.lean
    complete
    theorem CryptBoolean.kthNonhomomorphicity_cast_le_max {n k : }
      (f : CryptBoolean.BooleanFunction n) (hkEven : Even k)
      (hkFour : 4  k) :
      (CryptBoolean.kthNonhomomorphicity f k)  (2 ^ n) ^ (k - 1)
    theorem CryptBoolean.kthNonhomomorphicity_cast_le_max
      {n k : }
      (f : CryptBoolean.BooleanFunction n)
      (hkEven : Even k) (hkFour : 4  k) :
      (CryptBoolean.kthNonhomomorphicity f
            k) 
        (2 ^ n) ^ (k - 1)
    For even order at least four, Carlet's kth-order count is at most the number of
    zero-sum tuples. 
  • theoremdefined in CryptBoolean/Carlet/Chapter04/KthNonhomomorphicity.lean
    complete
    theorem CryptBoolean.kthNonhomomorphicity_cast_eq_max_iff_isAffine {n k : }
      (f : CryptBoolean.BooleanFunction n) (hkEven : Even k)
      (hkFour : 4  k) :
      (CryptBoolean.kthNonhomomorphicity f k) = (2 ^ n) ^ (k - 1) 
        CryptBoolean.IsAffineBooleanFunction f
    theorem CryptBoolean.kthNonhomomorphicity_cast_eq_max_iff_isAffine
      {n k : }
      (f : CryptBoolean.BooleanFunction n)
      (hkEven : Even k) (hkFour : 4  k) :
      (CryptBoolean.kthNonhomomorphicity f
              k) =
          (2 ^ n) ^ (k - 1) 
        CryptBoolean.IsAffineBooleanFunction f
    Equality in Carlet's maximum kth-order bound characterizes affine Boolean functions. 
  • theoremdefined in CryptBoolean/Carlet/Chapter04/KthNonhomomorphicity.lean
    complete
    theorem CryptBoolean.carlet_kthNonhomomorphicity_cast_eq_max_iff_isAffine
      {n k : } (f : CryptBoolean.BooleanFunction n) (hkEven : Even k)
      (hkFour : 4  k) (_hkCard : k  2 ^ n) :
      (CryptBoolean.kthNonhomomorphicity f k) = (2 ^ n) ^ (k - 1) 
        CryptBoolean.IsAffineBooleanFunction f
    theorem CryptBoolean.carlet_kthNonhomomorphicity_cast_eq_max_iff_isAffine
      {n k : }
      (f : CryptBoolean.BooleanFunction n)
      (hkEven : Even k) (hkFour : 4  k)
      (_hkCard : k  2 ^ n) :
      (CryptBoolean.kthNonhomomorphicity f
              k) =
          (2 ^ n) ^ (k - 1) 
        CryptBoolean.IsAffineBooleanFunction f
    Carlet's source-range maximum theorem, including the printed upper bound on the order. 
  • theoremdefined in CryptBoolean/Carlet/Chapter04/KthNonhomomorphicity.lean
    complete
    theorem CryptBoolean.two_pow_pow_succ_le_sum_walshTransform_evenMoment {n : }
      (f : CryptBoolean.BooleanFunction n) (r : ) (hr : 2  r) :
      (2 ^ n) ^ (r + 1)   a, (CryptBoolean.walshTransform f a) ^ (2 * r)
    theorem CryptBoolean.two_pow_pow_succ_le_sum_walshTransform_evenMoment
      {n : }
      (f : CryptBoolean.BooleanFunction n)
      (r : ) (hr : 2  r) :
      (2 ^ n) ^ (r + 1) 
         a,
          (CryptBoolean.walshTransform f a) ^
            (2 * r)
    The even raw Walsh moment has the power-mean lower bound. 
  • theoremdefined in CryptBoolean/Carlet/Chapter04/KthNonhomomorphicity.lean
    complete
    theorem CryptBoolean.sum_walshTransform_evenMoment_eq_min_iff_isBent {n : }
      (f : CryptBoolean.BooleanFunction n) (r : ) (hr : 2  r) :
       a, (CryptBoolean.walshTransform f a) ^ (2 * r) =
          (2 ^ n) ^ (r + 1) 
        CryptBoolean.IsBent f
    theorem CryptBoolean.sum_walshTransform_evenMoment_eq_min_iff_isBent
      {n : }
      (f : CryptBoolean.BooleanFunction n)
      (r : ) (hr : 2  r) :
       a,
            (CryptBoolean.walshTransform f
                  a) ^
              (2 * r) =
          (2 ^ n) ^ (r + 1) 
        CryptBoolean.IsBent f
    Equality in the even Walsh power-mean bound is equivalent to bentness. 
  • theoremdefined in CryptBoolean/Carlet/Chapter04/KthNonhomomorphicity.lean
    complete
    theorem CryptBoolean.kthNonhomomorphicity_cast_min_le {n k : }
      (f : CryptBoolean.BooleanFunction n) (hkEven : Even k)
      (hkFour : 4  k) :
      (2 ^ n) ^ (k - 1) / 2 + (2 ^ n) ^ (k / 2) / 2 
        (CryptBoolean.kthNonhomomorphicity f k)
    theorem CryptBoolean.kthNonhomomorphicity_cast_min_le
      {n k : }
      (f : CryptBoolean.BooleanFunction n)
      (hkEven : Even k) (hkFour : 4  k) :
      (2 ^ n) ^ (k - 1) / 2 +
          (2 ^ n) ^ (k / 2) / 2 
        (CryptBoolean.kthNonhomomorphicity f
            k)
    For even order at least four, Carlet's kth-order count has the bent-function lower bound. 
  • theoremdefined in CryptBoolean/Carlet/Chapter04/KthNonhomomorphicity.lean
    complete
    theorem CryptBoolean.kthNonhomomorphicity_cast_eq_min_iff_isBent {n k : }
      (f : CryptBoolean.BooleanFunction n) (hkEven : Even k)
      (hkFour : 4  k) :
      (CryptBoolean.kthNonhomomorphicity f k) =
          (2 ^ n) ^ (k - 1) / 2 + (2 ^ n) ^ (k / 2) / 2 
        CryptBoolean.IsBent f
    theorem CryptBoolean.kthNonhomomorphicity_cast_eq_min_iff_isBent
      {n k : }
      (f : CryptBoolean.BooleanFunction n)
      (hkEven : Even k) (hkFour : 4  k) :
      (CryptBoolean.kthNonhomomorphicity f
              k) =
          (2 ^ n) ^ (k - 1) / 2 +
            (2 ^ n) ^ (k / 2) / 2 
        CryptBoolean.IsBent f
    Equality in Carlet's minimum kth-order bound characterizes bent Boolean functions. 
  • theoremdefined in CryptBoolean/Carlet/Chapter04/KthNonhomomorphicity.lean
    complete
    theorem CryptBoolean.carlet_kthNonhomomorphicity_cast_eq_min_iff_isBent
      {n k : } (f : CryptBoolean.BooleanFunction n) (hkEven : Even k)
      (hkFour : 4  k) (_hkCard : k  2 ^ n) :
      (CryptBoolean.kthNonhomomorphicity f k) =
          (2 ^ n) ^ (k - 1) / 2 + (2 ^ n) ^ (k / 2) / 2 
        CryptBoolean.IsBent f
    theorem CryptBoolean.carlet_kthNonhomomorphicity_cast_eq_min_iff_isBent
      {n k : }
      (f : CryptBoolean.BooleanFunction n)
      (hkEven : Even k) (hkFour : 4  k)
      (_hkCard : k  2 ^ n) :
      (CryptBoolean.kthNonhomomorphicity f
              k) =
          (2 ^ n) ^ (k - 1) / 2 +
            (2 ^ n) ^ (k / 2) / 2 
        CryptBoolean.IsBent f
    Carlet's source-range minimum theorem, including the printed upper bound on the order. 

Carlet calls the zero-sum/even-output count \mathrm{NH}_k. Reference 357 calls that same quantity homomorphicity and reserves nonhomomorphicity for the complementary odd-output count. Throughout, \mathrm{NH}_k denotes Carlet's even-output count.

Theorem3.10.3
Group: Chapter 3: Boolean functions and cryptography (72)
Group member previews
Preview
Theorem 3.1.1
Loading preview
Group member preview content is loaded from the rendered-fragment cache.
Statement uses 3
Statement dependency previews
Preview
Definition 1.4.5
Loading preview
Statement dependency preview content is loaded from the rendered-fragment cache.
used by 0L∃∀N

Affine reindexing to first-order resiliency (Carlet, p. 68). Suppose f is balanced and its zero-Walsh set contains n linearly independent vectors. Then there is a linear automorphism L:V_n\to V_n such that f\circ L is 1-resilient.

Lean code for Theorem3.10.38 declarations
  • defdefined in CryptBoolean/Carlet/Chapter04/AffineReindexResiliency.lean
    complete
    def CryptBoolean.walshCoordinateLinearMap {n : }
      (u : Fin n  FABL.F₂Cube n) : FABL.F₂Cube n →ₗ[FABL.𝔽₂] FABL.F₂Cube n
    def CryptBoolean.walshCoordinateLinearMap
      {n : } (u : Fin n  FABL.F₂Cube n) :
      FABL.F₂Cube n →ₗ[FABL.𝔽₂] FABL.F₂Cube n
    The coordinate map associated with a family of Walsh frequencies. 
  • theoremdefined in CryptBoolean/Carlet/Chapter04/AffineReindexResiliency.lean
    complete
    theorem CryptBoolean.walshCoordinateLinearMap_injective {n : }
      (u : Fin n  FABL.F₂Cube n) (hu : LinearIndependent FABL.𝔽₂ u) :
      Function.Injective (CryptBoolean.walshCoordinateLinearMap u)
    theorem CryptBoolean.walshCoordinateLinearMap_injective
      {n : } (u : Fin n  FABL.F₂Cube n)
      (hu : LinearIndependent FABL.𝔽₂ u) :
      Function.Injective
        (CryptBoolean.walshCoordinateLinearMap
            u)
    A linearly independent full family of Walsh frequencies gives an
    injective coordinate map. 
  • defdefined in CryptBoolean/Carlet/Chapter04/AffineReindexResiliency.lean
    complete
    def CryptBoolean.walshReindexLinearEquiv {n : } (u : Fin n  FABL.F₂Cube n)
      (hu : LinearIndependent FABL.𝔽₂ u) :
      FABL.F₂Cube n ≃ₗ[FABL.𝔽₂] FABL.F₂Cube n
    def CryptBoolean.walshReindexLinearEquiv
      {n : } (u : Fin n  FABL.F₂Cube n)
      (hu : LinearIndependent FABL.𝔽₂ u) :
      FABL.F₂Cube n ≃ₗ[FABL.𝔽₂] FABL.F₂Cube n
    The input reindexing dual to a basis of prescribed Walsh frequencies. 
  • theoremdefined in CryptBoolean/Carlet/Chapter04/AffineReindexResiliency.lean
    complete
    theorem CryptBoolean.bentDualFrequency_walshReindexLinearEquiv_single {n : }
      (u : Fin n  FABL.F₂Cube n) (hu : LinearIndependent FABL.𝔽₂ u)
      (i : Fin n) :
      FABL.bentDualFrequency (CryptBoolean.walshReindexLinearEquiv u hu)
          (FABL.f₂CubeOfFinset {i}) =
        u i
    theorem CryptBoolean.bentDualFrequency_walshReindexLinearEquiv_single
      {n : } (u : Fin n  FABL.F₂Cube n)
      (hu : LinearIndependent FABL.𝔽₂ u)
      (i : Fin n) :
      FABL.bentDualFrequency
          (CryptBoolean.walshReindexLinearEquiv
            u hu)
          (FABL.f₂CubeOfFinset {i}) =
        u i
    The dual frequency of a standard coordinate under the constructed
    reindexing is the prescribed Walsh frequency. 
  • theoremdefined in CryptBoolean/Carlet/Chapter04/AffineReindexResiliency.lean
    complete
    theorem CryptBoolean.walshTransform_linearReindex_cast {n : }
      (f : CryptBoolean.BooleanFunction n)
      (M : FABL.F₂Cube n ≃ₗ[FABL.𝔽₂] FABL.F₂Cube n) (γ : FABL.F₂Cube n) :
      (CryptBoolean.walshTransform (f  M) γ) =
        (CryptBoolean.walshTransform f (FABL.bentDualFrequency M γ))
    theorem CryptBoolean.walshTransform_linearReindex_cast
      {n : }
      (f : CryptBoolean.BooleanFunction n)
      (M :
        FABL.F₂Cube n ≃ₗ[FABL.𝔽₂]
          FABL.F₂Cube n)
      (γ : FABL.F₂Cube n) :
      (CryptBoolean.walshTransform (f  M)
            γ) =
        (CryptBoolean.walshTransform f
            (FABL.bentDualFrequency M γ))
    Raw Walsh coefficients are reindexed by the dual frequency under an
    invertible linear change of variables. 
  • theoremdefined in CryptBoolean/Carlet/Chapter04/AffineReindexResiliency.lean
    complete
    theorem CryptBoolean.bentDualFrequency_zero {n : }
      (M : FABL.F₂Cube n ≃ₗ[FABL.𝔽₂] FABL.F₂Cube n) :
      FABL.bentDualFrequency M 0 = 0
    theorem CryptBoolean.bentDualFrequency_zero
      {n : }
      (M :
        FABL.F₂Cube n ≃ₗ[FABL.𝔽₂]
          FABL.F₂Cube n) :
      FABL.bentDualFrequency M 0 = 0
    The dual reindexing fixes the zero frequency. 
  • theoremdefined in CryptBoolean/Carlet/Chapter04/AffineReindexResiliency.lean
    complete
    theorem CryptBoolean.isBalanced_linearReindex {n : }
      (f : CryptBoolean.BooleanFunction n)
      (M : FABL.F₂Cube n ≃ₗ[FABL.𝔽₂] FABL.F₂Cube n)
      (hf : CryptBoolean.IsBalanced f) : CryptBoolean.IsBalanced (f  M)
    theorem CryptBoolean.isBalanced_linearReindex
      {n : }
      (f : CryptBoolean.BooleanFunction n)
      (M :
        FABL.F₂Cube n ≃ₗ[FABL.𝔽₂]
          FABL.F₂Cube n)
      (hf : CryptBoolean.IsBalanced f) :
      CryptBoolean.IsBalanced (f  M)
    Linear input reindexing preserves balancedness. 
  • theoremdefined in CryptBoolean/Carlet/Chapter04/AffineReindexResiliency.lean
    complete
    theorem CryptBoolean.exists_linearEquiv_isResilient_one {n : }
      (f : CryptBoolean.BooleanFunction n) (u : Fin n  FABL.F₂Cube n)
      (hu : LinearIndependent FABL.𝔽₂ u)
      (hbalanced : CryptBoolean.IsBalanced f)
      (hzero :  (i : Fin n), CryptBoolean.walshTransform f (u i) = 0) :
       M, CryptBoolean.IsResilient 1 (f  M)
    theorem CryptBoolean.exists_linearEquiv_isResilient_one
      {n : }
      (f : CryptBoolean.BooleanFunction n)
      (u : Fin n  FABL.F₂Cube n)
      (hu : LinearIndependent FABL.𝔽₂ u)
      (hbalanced : CryptBoolean.IsBalanced f)
      (hzero :
         (i : Fin n),
          CryptBoolean.walshTransform f
              (u i) =
            0) :
       M, CryptBoolean.IsResilient 1 (f  M)
    Carlet's concluding observation in Chapter 4: a balanced function with
    a basis of zero-Walsh frequencies becomes first-order resilient after a
    linear input automorphism.