# mathlibdocumentation

algebra.group.units_hom

# Lift monoid homomorphisms to group homomorphisms of their units subgroups. #

def units.map {M : Type u} {N : Type v} [monoid M] [monoid N] (f : M →* N) :

The group homomorphism on units induced by a monoid_hom.

Equations
def add_units.map {M : Type u} {N : Type v} [add_monoid M] [add_monoid N] (f : M →+ N) :

The add_group homomorphism on add_units induced by an add_monoid_hom.

Equations
@[simp]
theorem units.coe_map {M : Type u} {N : Type v} [monoid M] [monoid N] (f : M →* N) (x : Mˣ) :
@[simp]
theorem add_units.coe_map {M : Type u} {N : Type v} [add_monoid M] [add_monoid N] (f : M →+ N) (x : add_units M) :
( x) = f x
@[simp]
theorem add_units.coe_map_neg {M : Type u} {N : Type v} [add_monoid M] [add_monoid N] (f : M →+ N) (u : add_units M) :
@[simp]
theorem units.coe_map_inv {M : Type u} {N : Type v} [monoid M] [monoid N] (f : M →* N) (u : Mˣ) :
@[simp]
theorem add_units.map_comp {M : Type u} {N : Type v} {P : Type w} [add_monoid M] [add_monoid N] [add_monoid P] (f : M →+ N) (g : N →+ P) :
@[simp]
theorem units.map_comp {M : Type u} {N : Type v} {P : Type w} [monoid M] [monoid N] [monoid P] (f : M →* N) (g : N →* P) :
@[simp]
theorem units.map_id (M : Type u) [monoid M] :
@[simp]
def units.coe_hom (M : Type u) [monoid M] :
Mˣ →* M

Coercion Mˣ → M as a monoid homomorphism.

Equations
→+ M

Coercion add_units M → M as an add_monoid homomorphism.

Equations
@[simp]
theorem units.coe_hom_apply {M : Type u} [monoid M] (x : Mˣ) :
x = x
@[simp]
x = x
def units.lift_right {M : Type u} {N : Type v} [monoid M] [monoid N] (f : M →* N) (g : M → Nˣ) (h : ∀ (x : M), (g x) = f x) :
M →* Nˣ

If a map g : M → Nˣ agrees with a homomorphism f : M →* N, then this map is a monoid homomorphism too.

Equations
def add_units.lift_right {M : Type u} {N : Type v} [add_monoid M] [add_monoid N] (f : M →+ N) (g : M → ) (h : ∀ (x : M), (g x) = f x) :
M →+

If a map g : M → add_units N agrees with a homomorphism f : M →+ N, then this map is an add_monoid homomorphism too.

Equations
@[simp]
theorem add_units.coe_lift_right {M : Type u} {N : Type v} [add_monoid M] [add_monoid N] {f : M →+ N} {g : M → } (h : ∀ (x : M), (g x) = f x) (x : M) :
( h) x) = f x
@[simp]
theorem units.coe_lift_right {M : Type u} {N : Type v} [monoid M] [monoid N] {f : M →* N} {g : M → Nˣ} (h : ∀ (x : M), (g x) = f x) (x : M) :
( g h) x) = f x
@[simp]
theorem add_units.add_lift_right_neg {M : Type u} {N : Type v} [add_monoid M] [add_monoid N] {f : M →+ N} {g : M → } (h : ∀ (x : M), (g x) = f x) (x : M) :
f x + - h) x = 0
@[simp]
theorem units.mul_lift_right_inv {M : Type u} {N : Type v} [monoid M] [monoid N] {f : M →* N} {g : M → Nˣ} (h : ∀ (x : M), (g x) = f x) (x : M) :
(f x) * ( g h) x)⁻¹ = 1
@[simp]
theorem add_units.lift_right_neg_add {M : Type u} {N : Type v} [add_monoid M] [add_monoid N] {f : M →+ N} {g : M → } (h : ∀ (x : M), (g x) = f x) (x : M) :
- h) x + f x = 0
@[simp]
theorem units.lift_right_inv_mul {M : Type u} {N : Type v} [monoid M] [monoid N] {f : M →* N} {g : M → Nˣ} (h : ∀ (x : M), (g x) = f x) (x : M) :
(( g h) x)⁻¹) * f x = 1
def add_monoid_hom.to_hom_units {G : Type u_1} {M : Type u_2} [add_group G] [add_monoid M] (f : G →+ M) :
G →+

If f is a homomorphism from an additive group G to an additive monoid M, then its image lies in the add_units of M, and f.to_hom_units is the corresponding homomorphism from G to add_units M.

Equations
def monoid_hom.to_hom_units {G : Type u_1} {M : Type u_2} [group G] [monoid M] (f : G →* M) :
G →* Mˣ

If f is a homomorphism from a group G to a monoid M, then its image lies in the units of M, and f.to_hom_units is the corresponding monoid homomorphism from G to Mˣ.

Equations
@[simp]
theorem monoid_hom.coe_to_hom_units {G : Type u_1} {M : Type u_2} [group G] [monoid M] (f : G →* M) (g : G) :
theorem is_unit.map {M : Type u_1} {N : Type u_2} [monoid M] [monoid N] (f : M →* N) {x : M} (h : is_unit x) :
theorem is_add_unit.map {M : Type u_1} {N : Type u_2} [add_monoid M] [add_monoid N] (f : M →+ N) {x : M} (h : is_add_unit x) :
noncomputable def is_unit.lift_right {M : Type u_1} {N : Type u_2} [monoid M] [monoid N] (f : M →* N) (hf : ∀ (x : M), is_unit (f x)) :
M →* Nˣ

If a homomorphism f : M →* N sends each element to an is_unit, then it can be lifted to f : M →* Nˣ. See also units.lift_right for a computable version.

Equations
• = (λ (x : M), _
noncomputable def is_add_unit.lift_right {M : Type u_1} {N : Type u_2} [add_monoid M] [add_monoid N] (f : M →+ N) (hf : ∀ (x : M), is_add_unit (f x)) :
M →+

If a homomorphism f : M →+ N sends each element to an is_add_unit, then it can be lifted to f : M →+ add_units N. See also add_units.lift_right for a computable version.

Equations
• = (λ (x : M), _
theorem is_unit.coe_lift_right {M : Type u_1} {N : Type u_2} [monoid M] [monoid N] (f : M →* N) (hf : ∀ (x : M), is_unit (f x)) (x : M) :
( hf) x) = f x
theorem is_add_unit.coe_lift_right {M : Type u_1} {N : Type u_2} [add_monoid M] [add_monoid N] (f : M →+ N) (hf : ∀ (x : M), is_add_unit (f x)) (x : M) :
( hf) x) = f x
@[simp]
theorem is_unit.mul_lift_right_inv {M : Type u_1} {N : Type u_2} [monoid M] [monoid N] (f : M →* N) (h : ∀ (x : M), is_unit (f x)) (x : M) :
(f x) * ( h) x)⁻¹ = 1
@[simp]
theorem is_add_unit.add_lift_right_neg {M : Type u_1} {N : Type u_2} [add_monoid M] [add_monoid N] (f : M →+ N) (h : ∀ (x : M), is_add_unit (f x)) (x : M) :
f x + - x = 0
@[simp]
theorem is_unit.lift_right_inv_mul {M : Type u_1} {N : Type u_2} [monoid M] [monoid N] (f : M →* N) (h : ∀ (x : M), is_unit (f x)) (x : M) :
(( h) x)⁻¹) * f x = 1
@[simp]
theorem is_add_unit.lift_right_neg_add {M : Type u_1} {N : Type u_2} [add_monoid M] [add_monoid N] (f : M →+ N) (h : ∀ (x : M), is_add_unit (f x)) (x : M) :
- x + f x = 0