# mathlibdocumentation

group_theory.group_action.units

# Group actions on and by Mˣ#

This file provides the action of a unit on a type α, has_scalar 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 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 α#

@[protected, instance]
def units.has_scalar {M : Type u_3} {α : Type u_5} [monoid M] [ α] :
α
Equations
@[protected, instance]
def add_units.has_scalar {M : Type u_3} {α : Type u_5} [add_monoid M] [ α] :
α
Equations
m +ᵥ a = m +ᵥ a
theorem units.smul_def {M : Type u_3} {α : Type u_5} [monoid M] [ α] (m : Mˣ) (a : α) :
m a = m a
@[simp]
theorem units.smul_is_unit {M : Type u_3} {α : Type u_5} [monoid M] [ α] {m : M} (hm : is_unit m) (a : α) :
hm.unit a = m a
theorem is_unit.inv_smul {α : Type u_5} [monoid α] {a : α} (h : is_unit a) :
(h.unit)⁻¹ a = 1
@[protected, instance]
def units.has_faithful_smul {M : Type u_3} {α : Type u_5} [monoid M] [ α] [ α] :
@[protected, instance]
def add_units.has_faithful_vadd {M : Type u_3} {α : Type u_5} [add_monoid M] [ α] [ α] :
@[protected, instance]
α
Equations
@[protected, instance]
def units.mul_action {M : Type u_3} {α : Type u_5} [monoid M] [ α] :
α
Equations
@[protected, instance]
def units.distrib_mul_action {M : Type u_3} {α : Type u_5} [monoid M] [add_monoid α] [ α] :
Equations
@[protected, instance]
def units.mul_distrib_mul_action {M : Type u_3} {α : Type u_5} [monoid M] [monoid α]  :
Equations
@[protected, instance]
def units.smul_comm_class_left {M : Type u_3} {N : Type u_4} {α : Type u_5} [monoid M] [ α] [ α] [ α] :
α
@[protected, instance]
def units.smul_comm_class_right {M : Type u_3} {N : Type u_4} {α : Type u_5} [monoid N] [ α] [ α] [ α] :
α
@[protected, instance]
def units.is_scalar_tower {M : Type u_3} {N : Type u_4} {α : Type u_5} [monoid M] [ N] [ α] [ α] [ α] :
α

### Action of a group G on units of M#

@[protected, instance]
def units.mul_action' {G : Type u_1} {M : Type u_3} [group G] [monoid M] [ M] [ M] [ M] :
Mˣ

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

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

Note that this lemma exists more generally as the global smul_inv

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

Transfer smul_comm_class G H M to smul_comm_class G H Mˣ

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

Transfer is_scalar_tower G H M to is_scalar_tower G H Mˣ

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

Transfer is_scalar_tower G M α to is_scalar_tower G Mˣ α

@[protected, instance]
def units.mul_distrib_mul_action' {G : Type u_1} {M : Type u_3} [group G] [monoid M] [ M] [ M] :

A stronger form of units.mul_action'.

Equations
theorem is_unit.smul {G : Type u_1} {M : Type u_3} [group G] [monoid M] [ M] [ M] [ M] {m : M} (g : G) (h : is_unit m) :
is_unit (g m)