Documentation

LeanPool.PolynomialMethodRestrictedSums.RestrictedSumDistinctSizes

Restricted sums of sets with distinct sizes #

The Alon-Nathanson-Ruzsa lower bound restricted_sum_distinct_sizes on the set of sums a 0 + ... + a k with a i ∈ A i pairwise distinct, when the sets A i have distinct sizes.

def restrictedSumSet {p : } [Fact (Nat.Prime p)] (k : ) (A : Fin (k + 1)Finset (ZMod p)) :

S = {a + ... + a | a ∈ A, a ≠ a for all i ≠ j}

Equations
Instances For
    noncomputable def vandermondePolynomial {p : } [Fact (Nat.Prime p)] (k : ) :
    MvPolynomial (Fin (k + 1)) (ZMod p)

    Vandermonde: ∏_{i>j} (X - X)

    Equations
    Instances For
      @[irreducible]
      def compressedSizes {k : } (b : Fin (k + 1)) :
      Fin (k + 1)

      (Used in CompressedSizesRestrictedSum and DiasDaSilvaHamidoune) The compressed sizes b'_i defined recursively: b'_0 = b_0, b'i = min{b'{i-1} - 1, b_i} for i ≥ 1

      Equations
      Instances For
        theorem restricted_sum_m_bound {p : } [Fact (Nat.Prime p)] {k : } (A : Fin (k + 1)Finset (ZMod p)) (h_nonempty : ∀ (i : Fin (k + 1)), (A i).Nonempty) (h_sum_bound : i : Fin (k + 1), (A i).card p + (k + 2).choose 2 - 1) :
        have c := fun (i : Fin (k + 1)) => (A i).card - 1; have m := i : Fin (k + 1), c i - (k + 1).choose 2; m < p
        theorem vandermonde_coeff_nonzero {p : } [Fact (Nat.Prime p)] {k : } (c : Fin (k + 1)) (m : ) (hc : ∀ (i : Fin (k + 1)), c i < p) (h_distinct : ∀ (i j : Fin (k + 1)), i < jc i c j) (hm : m < p) (h_sum : i : Fin (k + 1), c i = m + (k + 1).choose 2) :
        theorem restricted_sum_distinct_sizes {p : } [Fact (Nat.Prime p)] {k : } (A : Fin (k + 1)Finset (ZMod p)) (h_nonempty : ∀ (i : Fin (k + 1)), (A i).Nonempty) (h_sizes_distinct : ∀ (i j : Fin (k + 1)), i < j(A i).card (A j).card) (h_sum_bound : i : Fin (k + 1), (A i).card p + (k + 2).choose 2 - 1) :
        (restrictedSumSet k A).card i : Fin (k + 1), (A i).card - (k + 2).choose 2 + 1