3.10. Other criteria
-
CryptBoolean.algebraicThickness[complete] -
CryptBoolean.exists_affineEquiv_anfSupport_card_eq_algebraicThickness[complete] -
CryptBoolean.IsConstantOnAffineFlat[complete] -
CryptBoolean.IsAffineOnAffineFlat[complete] -
CryptBoolean.IsConstantOnAffineFlat.isAffineOnAffineFlat[complete] -
CryptBoolean.normality[complete] -
CryptBoolean.weakNormality[complete] -
CryptBoolean.normality_le_weakNormality[complete] -
CryptBoolean.spectralComplexity[complete]
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.1●9 declarations
Associated Lean declarations
-
CryptBoolean.algebraicThickness[complete]
-
CryptBoolean.exists_affineEquiv_anfSupport_card_eq_algebraicThickness[complete]
-
CryptBoolean.IsConstantOnAffineFlat[complete]
-
CryptBoolean.IsAffineOnAffineFlat[complete]
-
CryptBoolean.IsConstantOnAffineFlat.isAffineOnAffineFlat[complete]
-
CryptBoolean.normality[complete]
-
CryptBoolean.weakNormality[complete]
-
CryptBoolean.normality_le_weakNormality[complete]
-
CryptBoolean.spectralComplexity[complete]
-
CryptBoolean.algebraicThickness[complete] -
CryptBoolean.exists_affineEquiv_anfSupport_card_eq_algebraicThickness[complete] -
CryptBoolean.IsConstantOnAffineFlat[complete] -
CryptBoolean.IsAffineOnAffineFlat[complete] -
CryptBoolean.IsConstantOnAffineFlat.isAffineOnAffineFlat[complete] -
CryptBoolean.normality[complete] -
CryptBoolean.weakNormality[complete] -
CryptBoolean.normality_le_weakNormality[complete] -
CryptBoolean.spectralComplexity[complete]
-
defdefined in CryptBoolean/Carlet/Chapter04/OtherComplexity.leancomplete
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.leancomplete
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.leancomplete
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.leancomplete
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.leancomplete
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.leancomplete
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.leancomplete
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.leancomplete
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.leancomplete
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.
-
CryptBoolean.booleanTupleSum[complete] -
CryptBoolean.booleanTupleOutputSum[complete] -
CryptBoolean.kthNonhomomorphicity[complete] -
CryptBoolean.two_mul_two_pow_mul_kthNonhomomorphicity[complete] -
CryptBoolean.kthNonhomomorphicity_cast_eq_walshMoment[complete] -
CryptBoolean.kthNonhomomorphicity_cast_eq_carlet_formula[complete] -
CryptBoolean.IsAffineBooleanFunction[complete] -
CryptBoolean.isAffineBooleanFunction_iff_nonlinearity_eq_zero[complete] -
CryptBoolean.abs_walshTransform_le_two_pow[complete] -
CryptBoolean.sum_walshTransform_evenMoment_le[complete] -
CryptBoolean.kthNonhomomorphicity_affineFunction[complete] -
CryptBoolean.kthNonhomomorphicity_cast_le_max[complete] -
CryptBoolean.kthNonhomomorphicity_cast_eq_max_iff_isAffine[complete] -
CryptBoolean.carlet_kthNonhomomorphicity_cast_eq_max_iff_isAffine[complete] -
CryptBoolean.two_pow_pow_succ_le_sum_walshTransform_evenMoment[complete] -
CryptBoolean.sum_walshTransform_evenMoment_eq_min_iff_isBent[complete] -
CryptBoolean.kthNonhomomorphicity_cast_min_le[complete] -
CryptBoolean.kthNonhomomorphicity_cast_eq_min_iff_isBent[complete] -
CryptBoolean.carlet_kthNonhomomorphicity_cast_eq_min_iff_isBent[complete]
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.2●19 declarations
Associated Lean declarations
-
CryptBoolean.booleanTupleSum[complete]
-
CryptBoolean.booleanTupleOutputSum[complete]
-
CryptBoolean.kthNonhomomorphicity[complete]
-
CryptBoolean.two_mul_two_pow_mul_kthNonhomomorphicity[complete]
-
CryptBoolean.kthNonhomomorphicity_cast_eq_walshMoment[complete]
-
CryptBoolean.kthNonhomomorphicity_cast_eq_carlet_formula[complete]
-
CryptBoolean.IsAffineBooleanFunction[complete]
-
CryptBoolean.isAffineBooleanFunction_iff_nonlinearity_eq_zero[complete]
-
CryptBoolean.abs_walshTransform_le_two_pow[complete]
-
CryptBoolean.sum_walshTransform_evenMoment_le[complete]
-
CryptBoolean.kthNonhomomorphicity_affineFunction[complete]
-
CryptBoolean.kthNonhomomorphicity_cast_le_max[complete]
-
CryptBoolean.kthNonhomomorphicity_cast_eq_max_iff_isAffine[complete]
-
CryptBoolean.carlet_kthNonhomomorphicity_cast_eq_max_iff_isAffine[complete]
-
CryptBoolean.two_pow_pow_succ_le_sum_walshTransform_evenMoment[complete]
-
CryptBoolean.sum_walshTransform_evenMoment_eq_min_iff_isBent[complete]
-
CryptBoolean.kthNonhomomorphicity_cast_min_le[complete]
-
CryptBoolean.kthNonhomomorphicity_cast_eq_min_iff_isBent[complete]
-
CryptBoolean.carlet_kthNonhomomorphicity_cast_eq_min_iff_isBent[complete]
-
CryptBoolean.booleanTupleSum[complete] -
CryptBoolean.booleanTupleOutputSum[complete] -
CryptBoolean.kthNonhomomorphicity[complete] -
CryptBoolean.two_mul_two_pow_mul_kthNonhomomorphicity[complete] -
CryptBoolean.kthNonhomomorphicity_cast_eq_walshMoment[complete] -
CryptBoolean.kthNonhomomorphicity_cast_eq_carlet_formula[complete] -
CryptBoolean.IsAffineBooleanFunction[complete] -
CryptBoolean.isAffineBooleanFunction_iff_nonlinearity_eq_zero[complete] -
CryptBoolean.abs_walshTransform_le_two_pow[complete] -
CryptBoolean.sum_walshTransform_evenMoment_le[complete] -
CryptBoolean.kthNonhomomorphicity_affineFunction[complete] -
CryptBoolean.kthNonhomomorphicity_cast_le_max[complete] -
CryptBoolean.kthNonhomomorphicity_cast_eq_max_iff_isAffine[complete] -
CryptBoolean.carlet_kthNonhomomorphicity_cast_eq_max_iff_isAffine[complete] -
CryptBoolean.two_pow_pow_succ_le_sum_walshTransform_evenMoment[complete] -
CryptBoolean.sum_walshTransform_evenMoment_eq_min_iff_isBent[complete] -
CryptBoolean.kthNonhomomorphicity_cast_min_le[complete] -
CryptBoolean.kthNonhomomorphicity_cast_eq_min_iff_isBent[complete] -
CryptBoolean.carlet_kthNonhomomorphicity_cast_eq_min_iff_isBent[complete]
-
defdefined in CryptBoolean/Carlet/Chapter04/KthNonhomomorphicity.leancomplete
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.leancomplete
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.leancomplete
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.leancomplete
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.leancomplete
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.leancomplete
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.leancomplete
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.leancomplete
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.leancomplete
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.leancomplete
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.leancomplete
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.leancomplete
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.leancomplete
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.leancomplete
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.leancomplete
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.leancomplete
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.leancomplete
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.leancomplete
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.leancomplete
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.
-
CryptBoolean.walshCoordinateLinearMap[complete] -
CryptBoolean.walshCoordinateLinearMap_injective[complete] -
CryptBoolean.walshReindexLinearEquiv[complete] -
CryptBoolean.bentDualFrequency_walshReindexLinearEquiv_single[complete] -
CryptBoolean.walshTransform_linearReindex_cast[complete] -
CryptBoolean.bentDualFrequency_zero[complete] -
CryptBoolean.isBalanced_linearReindex[complete] -
CryptBoolean.exists_linearEquiv_isResilient_one[complete]
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.3●8 declarations
Associated Lean declarations
-
CryptBoolean.walshCoordinateLinearMap[complete]
-
CryptBoolean.walshCoordinateLinearMap_injective[complete]
-
CryptBoolean.walshReindexLinearEquiv[complete]
-
CryptBoolean.bentDualFrequency_walshReindexLinearEquiv_single[complete]
-
CryptBoolean.walshTransform_linearReindex_cast[complete]
-
CryptBoolean.bentDualFrequency_zero[complete]
-
CryptBoolean.isBalanced_linearReindex[complete]
-
CryptBoolean.exists_linearEquiv_isResilient_one[complete]
-
CryptBoolean.walshCoordinateLinearMap[complete] -
CryptBoolean.walshCoordinateLinearMap_injective[complete] -
CryptBoolean.walshReindexLinearEquiv[complete] -
CryptBoolean.bentDualFrequency_walshReindexLinearEquiv_single[complete] -
CryptBoolean.walshTransform_linearReindex_cast[complete] -
CryptBoolean.bentDualFrequency_zero[complete] -
CryptBoolean.isBalanced_linearReindex[complete] -
CryptBoolean.exists_linearEquiv_isResilient_one[complete]
-
defdefined in CryptBoolean/Carlet/Chapter04/AffineReindexResiliency.leancomplete
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.leancomplete
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.leancomplete
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.leancomplete
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.leancomplete
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.leancomplete
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.leancomplete
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.leancomplete
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.