Unique products and related notions #
A group G
has unique products if for any two non-empty finite subsets A, B ⊆ G
, there is an
element g ∈ A * B
that can be written uniquely as a product of an element of A
and an element
of B
. We call the formalization this property UniqueProds
. Since the condition requires no
property of the group operation, we define it for a Type simply satisfying Mul
. We also
introduce the analogous "additive" companion, UniqueSums
, and link the two so that to_additive
converts UniqueProds
into UniqueSums
.
A common way of proving that a group satisfies the UniqueProds/Sums
property is by assuming
the existence of some kind of ordering on the group that is well-behaved with respect to the
group operation and showing that minima/maxima are the "unique products/sums".
However, the order is just a convenience and is not part of the UniqueProds/Sums
setup.
Here you can see several examples of Types that have UniqueSums/Prods
(inferInstance
uses Covariant.to_uniqueProds_left
and Covariant.to_uniqueSums_left
).
import Mathlib.Data.Real.Basic
import Mathlib.Data.PNat.Basic
import Mathlib.Algebra.Group.UniqueProds
example : UniqueSums ℕ := inferInstance
example : UniqueSums ℕ+ := inferInstance
example : UniqueSums ℤ := inferInstance
example : UniqueSums ℚ := inferInstance
example : UniqueSums ℝ := inferInstance
example : UniqueProds ℕ+ := inferInstance
Use in (Add)MonoidAlgebra
s #
UniqueProds/Sums
allow to decouple certain arguments about (Add)MonoidAlgebra
s into an argument
about the grading type and then a generic statement of the form "look at the coefficient of the
'unique product/sum'".
The file Algebra/MonoidAlgebra/NoZeroDivisors
contains several examples of this use.
Equations
- (_ : motive x) = (_ : motive x)
Instances For
UniqueAdd
is preserved by inverse images under injective, additive maps.
UniqueMul
is preserved by inverse images under injective, multiplicative maps.
UniqueAdd
is preserved under additive maps that are injective.
See UniqueAdd.addHom_map_iff
for a version with swapped bundling.
Unique_Mul
is preserved under multiplicative maps that are injective.
See UniqueMul.mulHom_map_iff
for a version with swapped bundling.
UniqueAdd
is preserved under embeddings that are additive.
See UniqueAdd.addHom_image_iff
for a version with swapped bundling.
UniqueMul
is preserved under embeddings that are multiplicative.
See UniqueMul.mulHom_image_iff
for a version with swapped bundling.
Let G
be a Type with addition. UniqueSums G
asserts that any two non-empty
finite subsets of G
have the UniqueAdd
property, with respect to some element of their
sum A + B
.
- uniqueAdd_of_nonempty : ∀ {A B : Finset G}, A.Nonempty → B.Nonempty → ∃ a0 ∈ A, ∃ b0 ∈ B, UniqueAdd A B a0 b0
For
A B
two nonempty finite sets, there always exista0 ∈ A, b0 ∈ B
such thatUniqueAdd A B a0 b0
Instances
Let G
be a Type with multiplication. UniqueProds G
asserts that any two non-empty
finite subsets of G
have the UniqueMul
property, with respect to some element of their
product A * B
.
- uniqueMul_of_nonempty : ∀ {A B : Finset G}, A.Nonempty → B.Nonempty → ∃ a0 ∈ A, ∃ b0 ∈ B, UniqueMul A B a0 b0
For
A B
two nonempty finite sets, there always exista0 ∈ A, b0 ∈ B
such thatUniqueMul A B a0 b0
Instances
Let G
be a Type with addition. TwoUniqueSums G
asserts that any two non-empty
finite subsets of G
, at least one of which is not a singleton, possesses at least two pairs
of elements satisfying the UniqueAdd
property.
- uniqueAdd_of_one_lt_card : ∀ {A B : Finset G}, 1 < A.card * B.card → ∃ p1 ∈ A ×ˢ B, ∃ p2 ∈ A ×ˢ B, p1 ≠ p2 ∧ UniqueAdd A B p1.1 p1.2 ∧ UniqueAdd A B p2.1 p2.2
For
A B
two finite sets whose product has cardinality at least 2, we can find at least two unique pairs.
Instances
Let G
be a Type with multiplication. TwoUniqueProds G
asserts that any two non-empty
finite subsets of G
, at least one of which is not a singleton, possesses at least two pairs
of elements satisfying the UniqueMul
property.
- uniqueMul_of_one_lt_card : ∀ {A B : Finset G}, 1 < A.card * B.card → ∃ p1 ∈ A ×ˢ B, ∃ p2 ∈ A ×ˢ B, p1 ≠ p2 ∧ UniqueMul A B p1.1 p1.2 ∧ UniqueMul A B p2.1 p2.2
For
A B
two finite sets whose product has cardinality at least 2, we can find at least two unique pairs.
Instances
Equations
- (_ : UniqueSums G) = (_ : UniqueSums G)
Equations
- (_ : UniqueProds G) = (_ : UniqueProds G)
Equations
- (_ : UniqueProds (Multiplicative M)) = (_ : UniqueProds (Multiplicative M))
Equations
- (_ : TwoUniqueProds (Multiplicative M)) = (_ : TwoUniqueProds (Multiplicative M))
Equations
- (_ : UniqueSums (Additive M)) = (_ : UniqueSums (Additive M))
Equations
- (_ : TwoUniqueSums (Additive M)) = (_ : TwoUniqueSums (Additive M))
UniqueSums
is preserved under additive equivalences.
UniqueProd
is preserved under multiplicative equivalences.
Equations
- (_ : motive x) = (_ : motive x)
Instances For
Equations
- (_ : UniqueSums Gᵃᵒᵖ) = (_ : UniqueSums Gᵃᵒᵖ)
Equations
- (_ : UniqueProds Gᵐᵒᵖ) = (_ : UniqueProds Gᵐᵒᵖ)
Two theorems in [Andrzej Strojnowski, A note on u.p. groups][Strojnowski1980]
UniqueProds G
says that for any two nonempty Finset
s A
and B
in G
, A × B
contains a unique pair with the UniqueMul
property. Strojnowski showed that if G
is
a group, then we only need to check this when A = B
.
Here we generalize the result to cancellative semigroups.
Non-cancellative counterexample: the AddMonoid {0,1} with 1+1=1.
If a group has UniqueProds
, then it actually has TwoUniqueProds
.
For an example of a semigroup G
embeddable into a group that has UniqueProds
but not TwoUniqueProds
, see Example 10.13 in
[J. Okniński, Semigroup Algebras][Okninski1991].
Equations
- (_ : UniqueSums ((i : ι) → G i)) = (_ : UniqueSums ((i : ι) → G i))
Equations
- (_ : UniqueProds ((i : ι) → G i)) = (_ : UniqueProds ((i : ι) → G i))
Equations
- (_ : UniqueSums (G × H)) = (_ : UniqueSums (G × H))
Equations
- (_ : UniqueProds (G × H)) = (_ : UniqueProds (G × H))
Equations
- (_ : UniqueSums (Π₀ (i : ι), G i)) = (_ : UniqueSums (Π₀ (i : ι), G i))
Equations
- (_ : UniqueSums (ι →₀ G)) = (_ : UniqueSums (ι →₀ G))
TwoUniqueSums
is preserved under additive equivalences.
Equations
- (_ : TwoUniqueSums ((i : ι) → G i)) = (_ : TwoUniqueSums ((i : ι) → G i))
Equations
- (_ : TwoUniqueProds ((i : ι) → G i)) = (_ : TwoUniqueProds ((i : ι) → G i))
Equations
- (_ : TwoUniqueSums (G × H)) = (_ : TwoUniqueSums (G × H))
Equations
- (_ : TwoUniqueProds (G × H)) = (_ : TwoUniqueProds (G × H))
Equations
- (_ : TwoUniqueSums Gᵃᵒᵖ) = (_ : TwoUniqueSums Gᵃᵒᵖ)
Equations
- (_ : TwoUniqueProds Gᵐᵒᵖ) = (_ : TwoUniqueProds Gᵐᵒᵖ)
This instance asserts that if G
has a right-cancellative addition, a linear order,
and addition is strictly monotone w.r.t. the second argument, then G
has TwoUniqueSums
.
Equations
- (_ : TwoUniqueSums G) = (_ : TwoUniqueSums G)
This instance asserts that if G
has a right-cancellative multiplication, a linear order, and
multiplication is strictly monotone w.r.t. the second argument, then G
has TwoUniqueProds
.
Equations
- (_ : TwoUniqueProds G) = (_ : TwoUniqueProds G)
This instance asserts that if G
has a left-cancellative addition, a linear order, and
addition is strictly monotone w.r.t. the first argument, then G
has TwoUniqueSums
.
Equations
- (_ : TwoUniqueSums G) = (_ : TwoUniqueSums G)
This instance asserts that if G
has a left-cancellative multiplication, a linear order, and
multiplication is strictly monotone w.r.t. the first argument, then G
has TwoUniqueProds
.
Equations
- (_ : TwoUniqueProds G) = (_ : TwoUniqueProds G)
Alias of UniqueProds.of_injective_mulHom
.
Alias of UniqueSums.of_injective_addHom
.
Alias of MulEquiv.uniqueProds_iff
.
UniqueProd
is preserved under multiplicative equivalences.
Alias of AddEquiv.uniqueSums_iff
.
UniqueSums
is preserved under additive equivalences.
Alias of TwoUniqueProds.of_injective_mulHom
.
Alias of TwoUniqueSums.of_injective_addHom
.
Alias of MulEquiv.twoUniqueProds_iff
.
TwoUniqueProd
is preserved under multiplicative equivalences.
Alias of AddEquiv.twoUniqueSums_iff
.
TwoUniqueSums
is preserved under additive equivalences.
Equations
- (_ : TwoUniqueSums (Π₀ (i : ι), G i)) = (_ : TwoUniqueSums (Π₀ (i : ι), G i))
Equations
- (_ : TwoUniqueSums (ι →₀ G)) = (_ : TwoUniqueSums (ι →₀ G))
Any ℚ
-vector space has TwoUniqueSums
, because it is isomorphic to some
(Basis.ofVectorSpaceIndex ℚ G) →₀ ℚ
by choosing a basis, and ℚ
already has
TwoUniqueSums
because it's ordered.
Equations
- (_ : TwoUniqueSums G) = (_ : TwoUniqueSums G)
Any FreeMonoid
has the TwoUniqueProds
property.
Equations
- (_ : TwoUniqueProds (FreeMonoid κ)) = (_ : TwoUniqueProds (FreeMonoid κ))
Any FreeAddMonoid
has the TwoUniqueSums
property.
Equations
- (_ : TwoUniqueSums (FreeAddMonoid κ)) = (_ : TwoUniqueSums (FreeAddMonoid κ))