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 AddUnits 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 = { toFun := AddUnits.val, map_zero' := ⋯, map_add' := ⋯ }
Instances For
Coercion Mˣ → M as a monoid homomorphism.
Equations
- Units.coeHom M = { 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 = { 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 = { 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
- f.toHomAddUnits = 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
- f.toHomUnits = 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) => ⋯.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) => ⋯.unit) ⋯