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βˣ
.IsLocalHom
: A predicate on monoid maps, requiring that it maps nonunits to nonunits. For local rings, this means that the image of the unique maximal ideal is again contained in the unique maximal ideal. This is developed earlier, and in the generality of monoids, as it allows its use in non-local-ring related contexts, but it does have the strange consequence that it does not require local rings, or even rings.
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.
Add a @[to_additive]
version of IsLocalHom
.
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 = { 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
Prefer IsLocalHom.of_leftInverse
, but we can't get rid of this because of ToAdditive
.
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) ⋯
Instances For
A local ring homomorphism is a map f
between monoids such that a
in the domain
is a unit if f a
is a unit for any a
. See LocalRing.local_hom_TFAE
for other equivalent
definitions in the local ring case - from where this concept originates, but it is useful in
other contexts, so we allow this generalisation in mathlib.
A local homomorphism
f : R ⟶ S
will send nonunits ofR
to nonunits ofS
.
Instances
Alias of IsLocalHom
.
A local ring homomorphism is a map f
between monoids such that a
in the domain
is a unit if f a
is a unit for any a
. See LocalRing.local_hom_TFAE
for other equivalent
definitions in the local ring case - from where this concept originates, but it is useful in
other contexts, so we allow this generalisation in mathlib.
Equations
Instances For
Alias of IsUnit.of_map
.
Alias of isLocalHom_of_leftInverse
.
Alias of MonoidHom.isLocalHom_comp
.
Alias of isLocalHom_toMonoidHom
.
Alias of MonoidHom.isLocalHom_of_comp
.