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⁻¹
.
The additive homomorphism on AddUnit
s induced by an AddMonoidHom
.
Equations
- AddUnits.map f = AddMonoidHom.mk' (fun (u : AddUnits M) => { val := f ↑u, neg := f u.neg, val_neg := ⋯, neg_val := ⋯ }) ⋯
Instances For
Coercion AddUnits M → M
as an AddMonoid homomorphism.
Equations
- AddUnits.coeHom M = { toZeroHom := { toFun := AddUnits.val, map_zero' := ⋯ }, map_add' := ⋯ }
Instances For
Coercion Mˣ → M
as a monoid homomorphism.
Equations
- Units.coeHom M = { toOneHom := { toFun := Units.val, map_one' := ⋯ }, map_mul' := ⋯ }
Instances For
If a map g : M → AddUnits N
agrees with a homomorphism f : M →+ N
, then this map
is an AddMonoid homomorphism too.
Equations
- AddUnits.liftRight f g h = { toZeroHom := { toFun := g, map_zero' := ⋯ }, map_add' := ⋯ }
Instances For
If a map g : M → Nˣ
agrees with a homomorphism f : M →* N
, then
this map is a monoid homomorphism too.
Equations
- Units.liftRight f g h = { toOneHom := { toFun := g, map_one' := ⋯ }, map_mul' := ⋯ }
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
- AddMonoidHom.toHomAddUnits f = AddUnits.liftRight f (fun (g : G) => { val := f g, neg := f (-g), val_neg := ⋯, neg_val := ⋯ }) ⋯
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
- MonoidHom.toHomUnits f = Units.liftRight f (fun (g : G) => { val := f g, inv := f g⁻¹, val_inv := ⋯, inv_val := ⋯ }) ⋯
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 : M) => IsAddUnit.addUnit ⋯) ⋯
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 ⋯) ⋯