# mathlibdocumentation

group_theory.group_action.defs

# Definitions of group actions

This file defines a heirarchy of group action type-classes:

• has_scalar α β
• mul_action α β
• distrib_mul_action α β

The hierarchy is extended further by semimodule, defined elsewhere.

Also provided are type-classes regarding the interaction of different group actions,

• smul_comm_class M N α
• is_scalar_tower M N α

## Notation

a • b is used as notation for smul a b.

## Implementation details

This file should avoid depending on other parts of group_theory, to avoid import cycles. More sophisticated lemmas belong in group_theory.group_action.

@[class]
structure has_scalar (α : Type u) (γ : Type v) :
Type (max u v)
• smul : α → γ → γ

Typeclass for types with a scalar multiplication operation, denoted • (\bu)

Instances
@[class]
structure mul_action (α : Type u) (β : Type v) [monoid α] :
Type (max u v)
• to_has_scalar : β
• one_smul : ∀ (b : β), 1 b = b
• mul_smul : ∀ (x y : α) (b : β), (x * y) b = x y b

Typeclass for multiplicative actions by monoids. This generalizes group actions.

Instances
@[class]
structure smul_comm_class (M : Type u_1) (N : Type u_2) (α : Type u_3) [ α] [ α] :
Prop
• smul_comm : ∀ (m : M) (n : N) (a : α), m n a = n m a

A typeclass mixin saying that two actions on the same space commute.

Instances
theorem smul_comm_class.symm (M : Type u_1) (N : Type u_2) (α : Type u_3) [ α] [ α] [ α] :
α

Commutativity of actions is a symmetric relation. This lemma can't be an instance because this would cause a loop in the instance search graph.

@[instance]
def smul_comm_class_self (M : Type u_1) (α : Type u_2) [comm_monoid M] [ α] :
α

@[class]
structure is_scalar_tower (M : Type u_1) (N : Type u_2) (α : Type u_3) [ N] [ α] [ α] :
Prop
• smul_assoc : ∀ (x : M) (y : N) (z : α), (x y) z = x y z

An instance of is_scalar_tower M N α states that the multiplicative action of M on α is determined by the multiplicative actions of M on N and N on α.

Instances
@[simp]
theorem smul_assoc {α : Type u} {M : Type u_1} {N : Type u_2} [ N] [ α] [ α] [ α] (x : M) (y : N) (z : α) :
(x y) z = x y z

theorem smul_smul {α : Type u} {β : Type v} [monoid α] [ β] (a₁ a₂ : α) (b : β) :
a₁ a₂ b = (a₁ * a₂) b

@[simp]
theorem one_smul (α : Type u) {β : Type v} [monoid α] [ β] (b : β) :
1 b = b

def function.injective.mul_action {α : Type u} {β : Type v} {γ : Type w} [monoid α] [ β] [ γ] (f : γ → β) (hf : function.injective f) (smul : ∀ (c : α) (x : γ), f (c x) = c f x) :
γ

Pullback a multiplicative action along an injective map respecting •.

Equations
def function.surjective.mul_action {α : Type u} {β : Type v} {γ : Type w} [monoid α] [ β] [ γ] (f : β → γ) (hf : function.surjective f) (smul : ∀ (c : α) (x : β), f (c x) = c f x) :
γ

Pushforward a multiplicative action along a surjective map respecting •.

Equations
theorem ite_smul {α : Type u} {β : Type v} [monoid α] [ β] (p : Prop) [decidable p] (a₁ a₂ : α) (b : β) :
ite p a₁ a₂ b = ite p (a₁ b) (a₂ b)

theorem smul_ite {α : Type u} {β : Type v} [monoid α] [ β] (p : Prop) [decidable p] (a : α) (b₁ b₂ : β) :
a ite p b₁ b₂ = ite p (a b₁) (a b₂)

def mul_action.regular (α : Type u) [monoid α] :
α

The regular action of a monoid on itself by left multiplication.

Equations
@[instance]
def mul_action.is_scalar_tower.left (α : Type u) {β : Type v} [monoid α] [ β] :
β

def mul_action.to_fun (α : Type u) (β : Type v) [monoid α] [ β] :
β α → β

Embedding induced by action.

Equations
@[simp]
theorem mul_action.to_fun_apply {α : Type u} {β : Type v} [monoid α] [ β] (x : α) (y : β) :
β) y x = x y

def mul_action.comp_hom {α : Type u} (β : Type v) {γ : Type w} [monoid α] [ β] [monoid γ] (g : γ →* α) :
β

An action of α on β and a monoid homomorphism γ → α induce an action of γ on β.

Equations
@[simp]
theorem smul_one_smul {α : Type u} {M : Type u_1} (N : Type u_2) [monoid N] [ N] [ α] [ α] [ α] (x : M) (y : α) :
(x 1) y = x y

@[class]
structure distrib_mul_action (α : Type u) (β : Type v) [monoid α] [add_monoid β] :
Type (max u v)
• to_mul_action : β
• smul_add : ∀ (r : α) (x y : β), r (x + y) = r x + r y
• smul_zero : ∀ (r : α), r 0 = 0

Typeclass for multiplicative actions on additive structures. This generalizes group modules.

Instances
@[simp]
theorem smul_add {α : Type u} {β : Type v} [monoid α] [add_monoid β] [ β] (a : α) (b₁ b₂ : β) :
a (b₁ + b₂) = a b₁ + a b₂

@[simp]
theorem smul_zero {α : Type u} {β : Type v} [monoid α] [add_monoid β] [ β] (a : α) :
a 0 = 0

def function.injective.distrib_mul_action {α : Type u} {β : Type v} {γ : Type w} [monoid α] [add_monoid β] [ β] [add_monoid γ] [ γ] (f : γ →+ β) (hf : function.injective f) (smul : ∀ (c : α) (x : γ), f (c x) = c f x) :

Pullback a distributive multiplicative action along an injective additive monoid homomorphism.

Equations
def function.surjective.distrib_mul_action {α : Type u} {β : Type v} {γ : Type w} [monoid α] [add_monoid β] [ β] [add_monoid γ] [ γ] (f : β →+ γ) (hf : function.surjective f) (smul : ∀ (c : α) (x : β), f (c x) = c f x) :

Pushforward a distributive multiplicative action along a surjective additive monoid homomorphism.

Equations
def const_smul_hom {α : Type u} (β : Type v) [monoid α] [add_monoid β] [ β] (r : α) :
β →+ β

Scalar multiplication by r as an add_monoid_hom.

Equations
@[simp]
theorem const_smul_hom_apply {α : Type u} {β : Type v} [monoid α] [add_monoid β] [ β] (r : α) (x : β) :
r) x = r x

@[simp]
theorem smul_neg {α : Type u} {β : Type v} [monoid α] [add_group β] [ β] (r : α) (x : β) :
r -x = -(r x)

theorem smul_sub {α : Type u} {β : Type v} [monoid α] [add_group β] [ β] (r : α) (x y : β) :
r (x - y) = r x - r y