Documentation

AddCombi.Mathlib.Combinatorics.Additive.Sidon

Sidon sets #

This file defines the multiplicative predicate IsMulSidon for sets in commutative monoids, and the additive predicate IsAddSidon generated from it. A set is multiplicatively Sidon if whenever a * b = c * d for elements a, b, c, d of the set, then either a = c and b = d, or a = d and b = c. Additively, products are replaced by sums. The two elements in each pair are not required to be distinct.

Main declarations #

Tags #

Sidon set, additive combinatorics

def IsMulSidon {G : Type u_1} [CommMonoid G] (A : Set G) :

A set A is multiplicatively Sidon if whenever a * b = c * d for elements a, b, c, d of A, then either a = c and b = d, or a = d and b = c. The two elements in each pair are not required to be distinct.

Equations
Instances For
    def IsAddSidon {G : Type u_1} [AddCommMonoid G] (A : Set G) :

    A set A is additively Sidon if whenever a + b = c + d for elements a, b, c, d of A, then either a = c and b = d, or a = d and b = c. The two elements in each pair are not required to be distinct.

    Equations
    Instances For
      theorem IsMulSidon.mono {G : Type u_1} [CommMonoid G] {A B : Set G} (hAB : A B) (hB : IsMulSidon B) :

      A subset of a Sidon set is Sidon.

      theorem IsAddSidon.mono {G : Type u_1} [AddCommMonoid G] {A B : Set G} (hAB : A B) (hB : IsAddSidon B) :

      A subset of an additively Sidon set is additively Sidon.

      @[simp]

      The empty set is Sidon.

      @[simp]

      The empty set is additively Sidon.

      theorem IsMulSidon.of_subsingleton {G : Type u_1} [CommMonoid G] {A : Set G} (hA : A.Subsingleton) :

      A subsingleton set is Sidon.

      theorem IsAddSidon.of_subsingleton {G : Type u_1} [AddCommMonoid G] {A : Set G} (hA : A.Subsingleton) :

      A subsingleton set is additively Sidon.

      @[simp]
      theorem IsMulSidon.singleton {G : Type u_1} [CommMonoid G] (a : G) :

      A singleton is Sidon.

      @[simp]
      theorem IsAddSidon.singleton {G : Type u_1} [AddCommMonoid G] (a : G) :

      A singleton is additively Sidon.

      theorem IsMulSidon.iUnion {G : Type u_1} [CommMonoid G] {ι : Sort u_2} {A : ιSet G} (hA : Directed (fun (x1 x2 : Set G) => x1 x2) A) (h : ∀ (i : ι), IsMulSidon (A i)) :
      IsMulSidon (⋃ (i : ι), A i)

      A directed union of Sidon sets is Sidon.

      theorem IsAddSidon.iUnion {G : Type u_1} [AddCommMonoid G] {ι : Sort u_2} {A : ιSet G} (hA : Directed (fun (x1 x2 : Set G) => x1 x2) A) (h : ∀ (i : ι), IsAddSidon (A i)) :
      IsAddSidon (⋃ (i : ι), A i)

      A directed union of additively Sidon sets is additively Sidon.

      theorem IsMulSidon.sUnion {G : Type u_1} [CommMonoid G] {S : Set (Set G)} (hS : DirectedOn (fun (x1 x2 : Set G) => x1 x2) S) (h : AS, IsMulSidon A) :

      A directed union of Sidon sets is Sidon.

      theorem IsAddSidon.sUnion {G : Type u_1} [AddCommMonoid G] {S : Set (Set G)} (hS : DirectedOn (fun (x1 x2 : Set G) => x1 x2) S) (h : AS, IsAddSidon A) :

      A directed union of additively Sidon sets is additively Sidon.

      theorem IsMulSidon.pair {G : Type u_1} [CommGroup G] [IsMulTorsionFree G] (a b : G) :

      A pair in a torsion-free group is Sidon.

      theorem IsAddSidon.pair {G : Type u_1} [AddCommGroup G] [IsAddTorsionFree G] (a b : G) :

      A pair in a torsion-free group is additively Sidon.