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βˣ
.
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
- 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 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 : M) => IsUnit.unit (_ : IsUnit (f x))) (_ : ∀ (x : M), ↑(IsUnit.unit (_ : IsUnit (f x))) = ↑(IsUnit.unit (_ : IsUnit (f x))))