mathlib documentation

algebra.hom.units

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) :
@[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] :
def units.coe_hom (M : Type u) [monoid M] :
Mˣ →* M

Coercion Mˣ → M as a monoid homomorphism.

Equations
def add_units.coe_hom (M : Type u) [add_monoid 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ˣ) :
@[simp]
theorem add_units.coe_hom_apply {M : Type u} [add_monoid M] (x : add_units M) :
@[simp, norm_cast]
theorem add_units.coe_nsmul {M : Type u} [add_monoid M] (u : add_units M) (n : ) :
(n u) = n u
@[simp, norm_cast]
theorem units.coe_pow {M : Type u} [monoid M] (u : Mˣ) (n : ) :
(u ^ n) = u ^ n
@[simp, norm_cast]
theorem units.coe_zpow {G : Type u_1} [group G] (u : Gˣ) (n : ) :
(u ^ n) = u ^ n
@[simp, norm_cast]
theorem add_units.coe_zsmul {G : Type u_1} [add_group G] (u : add_units G) (n : ) :
(n u) = n u
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 → add_units N) (h : ∀ (x : M), (g x) = f x) :

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 → add_units N} (h : ∀ (x : M), (g x) = f x) (x : M) :
@[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) :
@[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 → add_units N} (h : ∀ (x : M), (g x) = f x) (x : M) :
@[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) * ((units.lift_right f 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 → add_units N} (h : ∀ (x : M), (g x) = f x) (x : M) :
@[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) :
(((units.lift_right f g h) x)⁻¹) * f x = 1
def add_monoid_hom.to_hom_add_units {G : Type u_1} {M : Type u_2} [add_group G] [add_monoid M] (f : G →+ M) :

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 .

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} {F : Type u_3} [monoid M] [monoid N] [monoid_hom_class F M N] (f : F) {x : M} (h : is_unit x) :
theorem is_add_unit.map {M : Type u_1} {N : Type u_2} {F : Type u_3} [add_monoid M] [add_monoid N] [add_monoid_hom_class F M N] (f : F) {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
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)) :

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
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) :
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) :
@[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) :
@[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) :
@[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) :
@[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) :