Monoid homomorphisms and units #
This file allows to lift monoid homomorphisms to group homomorphisms of their units subgroups. It
also contains unrelated results about Units
that depend on MonoidHom
.
Main declarations #
Units.map
: Turn a homomorphism fromα
toβ
monoids into a homomorphism fromαˣ
toβˣ
.MonoidHom.toHomUnits
: Turn a homomorphism from a groupα
toβ
into a homomorphism fromα
toβˣ
.
TODO #
The results that don't mention homomorphisms should be proved (earlier?) in a different file and be
used to golf the basic Group
lemmas.
If two homomorphisms from a subtraction monoid to an additive monoid are equal at an
additive unit x
, then they are equal at -x
.
If two homomorphisms from a division monoid to a monoid are equal at a unit x
, then they are
equal at x⁻¹
.
If a map g : M → AddUnits N
agrees with a homomorphism f : M →+ N
, then this map
is an AddMonoid homomorphism too.
Equations
- One or more equations did not get rendered due to their size.
Instances For
If a map g : M → Nˣ
agrees with a homomorphism f : M →* N
, then
this map is a monoid homomorphism too.
Equations
- One or more equations did not get rendered due to their size.
Instances For
If f
is a homomorphism from an additive group G
to an additive monoid M
,
then its image lies in the AddUnits
of M
,
and f.toHomUnits
is the corresponding homomorphism from G
to AddUnits M
.
Equations
- One or more equations did not get rendered due to their size.
Instances For
If f
is a homomorphism from a group G
to a monoid M
,
then its image lies in the units of M
,
and f.toHomUnits
is the corresponding monoid homomorphism from G
to Mˣ
.
Equations
- One or more equations did not get rendered due to their size.
Instances For
If a homomorphism f : M →+ N
sends each element to an IsAddUnit
, then it can be
lifted to f : M →+ AddUnits N
. See also AddUnits.liftRight
for a computable version.
Equations
- IsAddUnit.liftRight f hf = AddUnits.liftRight f (fun x => IsAddUnit.addUnit (hf x)) (_ : ∀ (x : M), ↑(IsAddUnit.addUnit (hf x)) = ↑(IsAddUnit.addUnit (hf x)))
Instances For
If a homomorphism f : M →* N
sends each element to an IsUnit
, then it can be lifted
to f : M →* Nˣ
. See also Units.liftRight
for a computable version.
Equations
- IsUnit.liftRight f hf = Units.liftRight f (fun x => IsUnit.unit (hf x)) (_ : ∀ (x : M), ↑(IsUnit.unit (hf x)) = ↑(IsUnit.unit (hf x)))
Instances For
The element of the additive group of additive units, corresponding to an element of
an additive monoid which is an additive unit. As opposed to IsAddUnit.addUnit
, the negation is
computable and comes from the negation on α
. This is useful to transfer properties of negation
in AddUnits α
to α
. See also toAddUnits
.
Equations
Instances For
The element of the group of units, corresponding to an element of a monoid which is a unit. As
opposed to IsUnit.unit
, the inverse is computable and comes from the inversion on α
. This is
useful to transfer properties of inversion in Units α
to α
. See also toUnits
.
Equations
Instances For
The AddGroup
version of this lemma is sub_add_cancel''
The Group
version of this lemma is div_mul_cancel'''