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.isMulFreimanHom
could be relaxed toMulHom.toFreimanHom
by proving(s.map f).prod = (t.map f).prod
directly 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 ofn
elements.
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 ofn
elements.
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 ofn
elements.
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 ofn
elements.
Instances For
An n
-Freiman homomorphism preserves products of n
elements.
Characterisation of 2
-Freiman homs.
Characterisation of 2
-Freiman homs.