Freiman homomorphisms #
In this file, we define Freiman homomorphisms and isomorphism.
An n-Freiman homomorphism from A to B is a function f : α → β such that f '' A ⊆ B and
f x₁ * ... * f xₙ = f y₁ * ... * f yₙ for all x₁, ..., xₙ, y₁, ..., yₙ ∈ A such that
x₁ * ... * xₙ = y₁ * ... * yₙ. In particular, any MulHom is a Freiman homomorphism.
Note a 0- or 1-Freiman homomorphism is simply a map, thus a 2-Freiman homomorphism is the
first interesting case (and the most common). As n increases further, the property of being
an n-Freiman homomorphism between abelian groups becomes increasingly stronger.
An n-Freiman isomorphism from A to B is a function f : α → β bijective between A and B
such that f x₁ * ... * f xₙ = f y₁ * ... * f yₙ ↔ x₁ * ... * xₙ = y₁ * ... * yₙ for all
x₁, ..., xₙ, y₁, ..., yₙ ∈ A. In particular, any MulEquiv is a Freiman isomorphism.
They are of interest in additive combinatorics.
Main declarations #
IsMulFreimanHom: Predicate for a function to be a multiplicative Freiman homomorphism.IsAddFreimanHom: Predicate for a function to be an additive Freiman homomorphism.IsMulFreimanIso: Predicate for a function to be a multiplicative Freiman isomorphism.IsAddFreimanIso: Predicate for a function to be an additive Freiman isomorphism.
Main results #
isMulFreimanHom_two: Characterisation of2-Freiman homomorphisms.IsMulFreimanHom.mono: Ifm ≤ nandfis ann-Freiman homomorphism, then it is also anm-Freiman homomorphism.
Implementation notes #
In the context of combinatorics, we are interested in Freiman homomorphisms over sets which are not
necessarily closed under addition/multiplication. This means we must parametrize them with a set in
an AddMonoid/Monoid instead of the AddMonoid/Monoid itself.
References #
Yufei Zhao, 18.225: Graph Theory and Additive Combinatorics
TODO #
MonoidHomClass.isMulFreimanHomcould be relaxed toMulHom.toFreimanHomby proving(s.map f).prod = (t.map f).proddirectly by induction instead of going throughf s.prod.- Affine maps are Freiman homs.
An additive n-Freiman homomorphism from a set A to a set B is a map which preserves sums
of n elements.
- mapsTo : Set.MapsTo f A B
- map_sum_eq_map_sum ⦃s t : Multiset α⦄ (hsA : ∀ ⦃x : α⦄, x ∈ s → x ∈ A) (htA : ∀ ⦃x : α⦄, x ∈ t → x ∈ A) (hs : s.card = n) (ht : t.card = n) (h : s.sum = t.sum) : (Multiset.map f s).sum = (Multiset.map f t).sum
An additive
n-Freiman homomorphism preserves sums ofnelements.
Instances For
An n-Freiman homomorphism from a set A to a set B is a map which preserves products of n
elements.
- mapsTo : Set.MapsTo f A B
- map_prod_eq_map_prod ⦃s t : Multiset α⦄ (hsA : ∀ ⦃x : α⦄, x ∈ s → x ∈ A) (htA : ∀ ⦃x : α⦄, x ∈ t → x ∈ A) (hs : s.card = n) (ht : t.card = n) (h : s.prod = t.prod) : (Multiset.map f s).prod = (Multiset.map f t).prod
An
n-Freiman homomorphism preserves products ofnelements.
Instances For
An additive n-Freiman homomorphism from a set A to a set B is a bijective map which
preserves sums of n elements.
- bijOn : Set.BijOn f A B
- map_sum_eq_map_sum ⦃s t : Multiset α⦄ (hsA : ∀ ⦃x : α⦄, x ∈ s → x ∈ A) (htA : ∀ ⦃x : α⦄, x ∈ t → x ∈ A) (hs : s.card = n) (ht : t.card = n) : (Multiset.map f s).sum = (Multiset.map f t).sum ↔ s.sum = t.sum
An additive
n-Freiman homomorphism preserves sums ofnelements.
Instances For
An n-Freiman homomorphism from a set A to a set B is a map which preserves products of n
elements.
- bijOn : Set.BijOn f A B
- map_prod_eq_map_prod ⦃s t : Multiset α⦄ (hsA : ∀ ⦃x : α⦄, x ∈ s → x ∈ A) (htA : ∀ ⦃x : α⦄, x ∈ t → x ∈ A) (hs : s.card = n) (ht : t.card = n) : (Multiset.map f s).prod = (Multiset.map f t).prod ↔ s.prod = t.prod
An
n-Freiman homomorphism preserves products ofnelements.
Instances For
Characterisation of 2-Freiman homomorphisms.
Characterisation of 2-Freiman homomorphisms.
Characterisation of 2-Freiman homs.
Characterisation of 2-Freiman isomorphisms.
Alias of IsAddFreimanHom.prodMap.
Alias of IsMulFreimanHom.prodMap.
Alias of IsAddFreimanIso.prodMap.
Alias of IsMulFreimanIso.prodMap.