6.1. Degree, divisibility, and nonlinearity
-
CryptBoolean.booleanFunctionF₂Encoding_signCubeView[complete] -
CryptBoolean.functionAlgebraicDegree_le_sub_sub_one_of_isResilient[complete] -
CryptBoolean.functionAlgebraicDegree_le_sub_of_isCorrelationImmune[complete] -
CryptBoolean.functionAlgebraicDegree_le_one_of_isResilient_natPred[complete] -
CryptBoolean.exists_affineFunction_of_isResilient_natPred[complete] -
CryptBoolean.functionAlgebraicDegree_le_sub_sub_one_of_isCorrelationImmune_of_weight[complete]
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.1●6 theorems
Associated Lean declarations
-
CryptBoolean.booleanFunctionF₂Encoding_signCubeView[complete]
-
CryptBoolean.functionAlgebraicDegree_le_sub_sub_one_of_isResilient[complete]
-
CryptBoolean.functionAlgebraicDegree_le_sub_of_isCorrelationImmune[complete]
-
CryptBoolean.functionAlgebraicDegree_le_one_of_isResilient_natPred[complete]
-
CryptBoolean.exists_affineFunction_of_isResilient_natPred[complete]
-
CryptBoolean.functionAlgebraicDegree_le_sub_sub_one_of_isCorrelationImmune_of_weight[complete]
-
CryptBoolean.booleanFunctionF₂Encoding_signCubeView[complete] -
CryptBoolean.functionAlgebraicDegree_le_sub_sub_one_of_isResilient[complete] -
CryptBoolean.functionAlgebraicDegree_le_sub_of_isCorrelationImmune[complete] -
CryptBoolean.functionAlgebraicDegree_le_one_of_isResilient_natPred[complete] -
CryptBoolean.exists_affineFunction_of_isResilient_natPred[complete] -
CryptBoolean.functionAlgebraicDegree_le_sub_sub_one_of_isCorrelationImmune_of_weight[complete]
-
theoremdefined in CryptBoolean/Carlet/Chapter07/AlgebraicDegree.leancomplete
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.leancomplete
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.leancomplete
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.leancomplete
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.leancomplete
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.leancomplete
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.
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.2●3 theorems
Associated Lean declarations
-
theoremdefined in CryptBoolean/Carlet/Chapter07/NumericalNormalForm.leancomplete
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.leancomplete
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.leancomplete
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`.
-
CryptBoolean.bitSignInt_cast_eq_realSignView[complete] -
CryptBoolean.sum_walshTransform_submodule_eq[complete] -
CryptBoolean.two_pow_m_add_two_dvd_walshTransform_of_isResilient[complete] -
CryptBoolean.two_pow_m_add_one_dvd_walshTransform_of_isCorrelationImmune[complete] -
CryptBoolean.two_pow_m_dvd_hammingWeight_of_isCorrelationImmune[complete] -
CryptBoolean.two_pow_m_add_two_dvd_walshTransform_of_isCorrelationImmune_of_weight[complete]
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.3●6 theorems
Associated Lean declarations
-
CryptBoolean.bitSignInt_cast_eq_realSignView[complete]
-
CryptBoolean.sum_walshTransform_submodule_eq[complete]
-
CryptBoolean.two_pow_m_add_two_dvd_walshTransform_of_isResilient[complete]
-
CryptBoolean.two_pow_m_add_one_dvd_walshTransform_of_isCorrelationImmune[complete]
-
CryptBoolean.two_pow_m_dvd_hammingWeight_of_isCorrelationImmune[complete]
-
CryptBoolean.two_pow_m_add_two_dvd_walshTransform_of_isCorrelationImmune_of_weight[complete]
-
CryptBoolean.bitSignInt_cast_eq_realSignView[complete] -
CryptBoolean.sum_walshTransform_submodule_eq[complete] -
CryptBoolean.two_pow_m_add_two_dvd_walshTransform_of_isResilient[complete] -
CryptBoolean.two_pow_m_add_one_dvd_walshTransform_of_isCorrelationImmune[complete] -
CryptBoolean.two_pow_m_dvd_hammingWeight_of_isCorrelationImmune[complete] -
CryptBoolean.two_pow_m_add_two_dvd_walshTransform_of_isCorrelationImmune_of_weight[complete]
-
theoremdefined in CryptBoolean/Carlet/Chapter02/Foundations.leancomplete
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.leancomplete
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.leancomplete
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.leancomplete
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.leancomplete
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.leancomplete
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)`.
-
CryptBoolean.two_mul_nonlinearity_add_two_pow_m_add_two_le_of_isResilient[complete] -
CryptBoolean.nonlinearity_add_two_pow_m_add_one_le_two_pow_sub_one_of_isResilient[complete] -
CryptBoolean.nonlinearity_le_two_pow_sub_two_pow_of_isResilient[complete] -
CryptBoolean.nonlinearity_eq_sarkarMaitra_bound_iff_hasPlateauedWalshAmplitude[complete] -
CryptBoolean.walshTransform_eq_zero_or_eq_neg_two_pow_or_eq_two_pow_of_sarkarMaitra_equality[complete] -
CryptBoolean.isPlateaued_of_sarkarMaitra_equality[complete]
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.4●6 theorems
Associated Lean declarations
-
CryptBoolean.two_mul_nonlinearity_add_two_pow_m_add_two_le_of_isResilient[complete]
-
CryptBoolean.nonlinearity_add_two_pow_m_add_one_le_two_pow_sub_one_of_isResilient[complete]
-
CryptBoolean.nonlinearity_le_two_pow_sub_two_pow_of_isResilient[complete]
-
CryptBoolean.nonlinearity_eq_sarkarMaitra_bound_iff_hasPlateauedWalshAmplitude[complete]
-
CryptBoolean.walshTransform_eq_zero_or_eq_neg_two_pow_or_eq_two_pow_of_sarkarMaitra_equality[complete]
-
CryptBoolean.isPlateaued_of_sarkarMaitra_equality[complete]
-
CryptBoolean.two_mul_nonlinearity_add_two_pow_m_add_two_le_of_isResilient[complete] -
CryptBoolean.nonlinearity_add_two_pow_m_add_one_le_two_pow_sub_one_of_isResilient[complete] -
CryptBoolean.nonlinearity_le_two_pow_sub_two_pow_of_isResilient[complete] -
CryptBoolean.nonlinearity_eq_sarkarMaitra_bound_iff_hasPlateauedWalshAmplitude[complete] -
CryptBoolean.walshTransform_eq_zero_or_eq_neg_two_pow_or_eq_two_pow_of_sarkarMaitra_equality[complete] -
CryptBoolean.isPlateaued_of_sarkarMaitra_equality[complete]
-
theoremdefined in CryptBoolean/Carlet/Chapter07/SarkarMaitra.leancomplete
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.leancomplete
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.leancomplete
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.leancomplete
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.leancomplete
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.leancomplete
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.
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.5●2 theorems
Associated Lean declarations
-
theoremdefined in CryptBoolean/Carlet/Chapter07/DegreeDivisibility.leancomplete
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.leancomplete
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.
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.6●2 theorems
Associated Lean declarations
-
theoremdefined in CryptBoolean/Carlet/Chapter07/DegreeDivisibility.leancomplete
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.leancomplete
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.
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.7●2 theorems
Associated Lean declarations
-
theoremdefined in CryptBoolean/Carlet/Chapter07/NonlinearityBounds.leancomplete
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.leancomplete
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.
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.8●1 theorem
Associated Lean declarations
-
theoremdefined in CryptBoolean/Carlet/Chapter07/NonlinearityBounds.leancomplete
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).
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.9●1 theorem
Associated Lean declarations
-
theoremdefined in CryptBoolean/Carlet/Chapter07/NonlinearityBounds.leancomplete
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.
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.10●3 declarations
Associated Lean declarations
-
defdefined in CryptBoolean/Carlet/Chapter07/EntropyNonlinearity.leancomplete
def CryptBoolean.binaryEntropyBaseTwo (p : ℝ) : ℝ
def CryptBoolean.binaryEntropyBaseTwo (p : ℝ) : ℝ
Binary entropy measured in bits.
-
theoremdefined in CryptBoolean/Carlet/Chapter07/EntropyNonlinearity.leancomplete
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.leancomplete
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.