mathlib documentation

group_theory.group_action.units

Group actions on and by units M #

This file provides the action of a unit on a type α, has_scalar (units M) α, in the presence of has_scalar M α, with the obvious definition stated in units.smul_def. This definition preserves mul_action and distrib_mul_action structures too.

Additionally, a mul_action G M for some group G satisfying some additional properties admits a mul_action G (units M) structure, again with the obvious definition stated in units.coe_smul. These instances use a primed name.

The results are repeated for add_units and has_vadd where relevant.

Action of the units of M on a type α #

@[instance]
def units.has_scalar {M : Type u_3} {α : Type u_5} [monoid M] [has_scalar M α] :
Equations
@[instance]
def add_units.has_scalar {M : Type u_3} {α : Type u_5} [add_monoid M] [has_vadd M α] :
theorem add_units.vadd_def {M : Type u_3} {α : Type u_5} [add_monoid M] [has_vadd M α] (m : add_units M) (a : α) :
m +ᵥ a = m +ᵥ a
theorem units.smul_def {M : Type u_3} {α : Type u_5} [monoid M] [has_scalar M α] (m : units M) (a : α) :
m a = m a
theorem is_unit.inv_smul {α : Type u_5} [monoid α] {a : α} (h : is_unit a) :
(h.unit)⁻¹ a = 1
@[instance]
def add_units.has_faithful_scalar {M : Type u_3} {α : Type u_5} [add_monoid M] [has_vadd M α] [has_faithful_vadd M α] :
@[instance]
def units.has_faithful_scalar {M : Type u_3} {α : Type u_5} [monoid M] [has_scalar M α] [has_faithful_scalar M α] :
@[instance]
def add_units.add_action {M : Type u_3} {α : Type u_5} [add_monoid M] [add_action M α] :
@[instance]
def units.mul_action {M : Type u_3} {α : Type u_5} [monoid M] [mul_action M α] :
Equations
@[instance]
def units.smul_comm_class_left {M : Type u_3} {N : Type u_4} {α : Type u_5} [monoid M] [has_scalar M α] [has_scalar N α] [smul_comm_class M N α] :
@[instance]
def units.smul_comm_class_right {M : Type u_3} {N : Type u_4} {α : Type u_5} [monoid N] [has_scalar M α] [has_scalar N α] [smul_comm_class M N α] :
@[instance]
def units.is_scalar_tower {M : Type u_3} {N : Type u_4} {α : Type u_5} [monoid M] [has_scalar M N] [has_scalar M α] [has_scalar N α] [is_scalar_tower M N α] :

Action of a group G on units of M #

@[instance]
def units.mul_action' {G : Type u_1} {M : Type u_3} [group G] [monoid M] [mul_action G M] [smul_comm_class G M M] [is_scalar_tower G M M] :

If an action G associates and commutes with multiplication on M, then it lifts to an action on units M. Notably, this provides mul_action (units M) (units N) under suitable conditions.

Equations
@[simp]
theorem units.coe_smul {G : Type u_1} {M : Type u_3} [group G] [monoid M] [mul_action G M] [smul_comm_class G M M] [is_scalar_tower G M M] (g : G) (m : units M) :
(g m) = g m
@[simp]
theorem units.smul_inv {G : Type u_1} {M : Type u_3} [group G] [monoid M] [mul_action G M] [smul_comm_class G M M] [is_scalar_tower G M M] (g : G) (m : units M) :

Note that this lemma exists more generally as the global smul_inv

@[instance]
def units.smul_comm_class' {G : Type u_1} {H : Type u_2} {M : Type u_3} [group G] [group H] [monoid M] [mul_action G M] [smul_comm_class G M M] [mul_action H M] [smul_comm_class H M M] [is_scalar_tower G M M] [is_scalar_tower H M M] [smul_comm_class G H M] :

Transfer smul_comm_class G H M to smul_comm_class G H (units M)

@[instance]
def units.is_scalar_tower' {G : Type u_1} {H : Type u_2} {M : Type u_3} [has_scalar G H] [group G] [group H] [monoid M] [mul_action G M] [smul_comm_class G M M] [mul_action H M] [smul_comm_class H M M] [is_scalar_tower G M M] [is_scalar_tower H M M] [is_scalar_tower G H M] :

Transfer is_scalar_tower G H M to is_scalar_tower G H (units M)

@[instance]
def units.is_scalar_tower'_left {G : Type u_1} {M : Type u_3} {α : Type u_5} [group G] [monoid M] [mul_action G M] [has_scalar M α] [has_scalar G α] [smul_comm_class G M M] [is_scalar_tower G M M] [is_scalar_tower G M α] :

Transfer is_scalar_tower G M α to is_scalar_tower G (units M) α