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.
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 declaration #
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.
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 α⦄, (∀ ⦃x : α⦄, x ∈ s → x ∈ A) → (∀ ⦃x : α⦄, x ∈ t → x ∈ A) → Multiset.card s = n → Multiset.card t = n → 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 additive n-Freiman homomorphism preserves sums of n elements.
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 α⦄, (∀ ⦃x : α⦄, x ∈ s → x ∈ A) → (∀ ⦃x : α⦄, x ∈ t → x ∈ A) → Multiset.card s = n → Multiset.card t = n → s.prod = t.prod → (Multiset.map f s).prod = (Multiset.map f t).prod
An
n-Freiman homomorphism preserves products ofnelements.
Instances For
An n-Freiman homomorphism preserves products of n elements.
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 α⦄, (∀ ⦃x : α⦄, x ∈ s → x ∈ A) → (∀ ⦃x : α⦄, x ∈ t → x ∈ A) → Multiset.card s = n → Multiset.card t = 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 additive n-Freiman homomorphism preserves sums of n elements.
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 α⦄, (∀ ⦃x : α⦄, x ∈ s → x ∈ A) → (∀ ⦃x : α⦄, x ∈ t → x ∈ A) → Multiset.card s = n → Multiset.card t = n → ((Multiset.map f s).prod = (Multiset.map f t).prod ↔ s.prod = t.prod)
An
n-Freiman homomorphism preserves products ofnelements.
Instances For
An n-Freiman homomorphism preserves products of n elements.
Characterisation of 2-Freiman homs.
Characterisation of 2-Freiman homs.