mathlib documentation

group_theory.group_action.defs

Definitions of group actions #

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

The hierarchy is extended further by module, defined elsewhere.

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

Notation #

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.

Tags #

group action

@[class]
structure has_vadd (G : Type u_9) (P : Type u_10) :
Type (max u_10 u_9)
  • vadd : G → P → P

Type class for the +ᵥ notation.

Instances
@[class]
structure has_scalar (M : Type u_9) (α : Type u_10) :
Type (max u_10 u_9)
  • smul : M → α → α

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

Instances
@[instance]
def has_mul.to_has_scalar (α : Type u_1) [has_mul α] :

See also monoid.to_mul_action and mul_zero_class.to_smul_with_zero.

Equations
@[instance]
def has_add.to_has_scalar (α : Type u_1) [has_add α] :
has_vadd α α
@[simp]
theorem vadd_eq_add (α : Type u_1) [has_add α] {a a' : α} :
a +ᵥ a' = a + a'
@[simp]
theorem smul_eq_mul (α : Type u_1) [has_mul α] {a a' : α} :
a a' = a * a'
@[class]
structure add_action (G : Type u_9) (P : Type u_10) [add_monoid G] :
Type (max u_10 u_9)
  • to_has_vadd : has_vadd G P
  • zero_vadd : ∀ (p : P), 0 +ᵥ p = p
  • add_vadd : ∀ (g₁ g₂ : G) (p : P), g₁ + g₂ +ᵥ p = g₁ +ᵥ (g₂ +ᵥ p)

Type class for additive monoid actions.

Instances
@[class]
structure vadd_comm_class (M : Type u_9) (N : Type u_10) (α : Type u_11) [has_vadd M α] [has_vadd N α] :
Prop

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

Instances
@[class]
structure smul_comm_class (M : Type u_9) (N : Type u_10) (α : Type u_11) [has_scalar M α] [has_scalar N α] :
Prop
  • smul_comm : ∀ (m : M) (n : N) (a : α), m n a = n m a

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

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

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.

theorem vadd_comm_class.symm (M : Type u_1) (N : Type u_2) (α : Type u_3) [has_vadd M α] [has_vadd N α] [vadd_comm_class M N α] :

Commutativity of additive 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 vadd_comm_class_self (M : Type u_1) (α : Type u_2) [add_comm_monoid M] [add_action M α] :
@[instance]
def smul_comm_class_self (M : Type u_1) (α : Type u_2) [comm_monoid M] [mul_action M α] :
@[class]
structure is_scalar_tower (M : Type u_9) (N : Type u_10) (α : Type u_11) [has_scalar M N] [has_scalar N α] [has_scalar M α] :
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_6} {M : Type u_1} {N : Type u_2} [has_scalar M N] [has_scalar N α] [has_scalar M α] [is_scalar_tower M N α] (x : M) (y : N) (z : α) :
(x y) z = x y z
theorem smul_smul {M : Type u_1} {α : Type u_6} [monoid M] [mul_action M α] (a₁ a₂ : M) (b : α) :
a₁ a₂ b = (a₁ * a₂) b
theorem vadd_vadd {M : Type u_1} {α : Type u_6} [add_monoid M] [add_action M α] (a₁ a₂ : M) (b : α) :
a₁ +ᵥ (a₂ +ᵥ b) = a₁ + a₂ +ᵥ b
@[simp]
theorem one_smul (M : Type u_1) {α : Type u_6} [monoid M] [mul_action M α] (b : α) :
1 b = b
@[simp]
theorem zero_vadd (M : Type u_1) {α : Type u_6} [add_monoid M] [add_action M α] (b : α) :
0 +ᵥ b = b
def function.injective.mul_action {M : Type u_1} {α : Type u_6} {β : Type u_7} [monoid M] [mul_action M α] [has_scalar M β] (f : β → α) (hf : function.injective f) (smul : ∀ (c : M) (x : β), f (c x) = c f x) :

Pullback a multiplicative action along an injective map respecting . See note [reducible non-instances].

Equations
def function.injective.add_action {M : Type u_1} {α : Type u_6} {β : Type u_7} [add_monoid M] [add_action M α] [has_vadd M β] (f : β → α) (hf : function.injective f) (smul : ∀ (c : M) (x : β), f (c +ᵥ x) = c +ᵥ f x) :

Pullback an additive action along an injective map respecting +ᵥ.

def function.surjective.add_action {M : Type u_1} {α : Type u_6} {β : Type u_7} [add_monoid M] [add_action M α] [has_vadd M β] (f : α → β) (hf : function.surjective f) (smul : ∀ (c : M) (x : α), f (c +ᵥ x) = c +ᵥ f x) :

Pushforward an additive action along a surjective map respecting +ᵥ.

def function.surjective.mul_action {M : Type u_1} {α : Type u_6} {β : Type u_7} [monoid M] [mul_action M α] [has_scalar M β] (f : α → β) (hf : function.surjective f) (smul : ∀ (c : M) (x : α), f (c x) = c f x) :

Pushforward a multiplicative action along a surjective map respecting . See note [reducible non-instances].

Equations
theorem ite_smul {M : Type u_1} {α : Type u_6} [monoid M] [mul_action M α] (p : Prop) [decidable p] (a₁ a₂ : M) (b : α) :
ite p a₁ a₂ b = ite p (a₁ b) (a₂ b)
theorem ite_vadd {M : Type u_1} {α : Type u_6} [add_monoid M] [add_action M α] (p : Prop) [decidable p] (a₁ a₂ : M) (b : α) :
ite p a₁ a₂ +ᵥ b = ite p (a₁ +ᵥ b) (a₂ +ᵥ b)
theorem smul_ite {M : Type u_1} {α : Type u_6} [monoid M] [mul_action M α] (p : Prop) [decidable p] (a : M) (b₁ b₂ : α) :
a ite p b₁ b₂ = ite p (a b₁) (a b₂)
theorem vadd_ite {M : Type u_1} {α : Type u_6} [add_monoid M] [add_action M α] (p : Prop) [decidable p] (a : M) (b₁ b₂ : α) :
a +ᵥ ite p b₁ b₂ = ite p (a +ᵥ b₁) (a +ᵥ b₂)
@[instance]
def monoid.to_mul_action (M : Type u_1) [monoid M] :

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

This is promoted to a module by semiring.to_module.

Equations
@[instance]
def add_monoid.to_add_action (M : Type u_1) [add_monoid M] :

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

This is promoted to an add_torsor by add_group_is_add_torsor.

@[instance]
def is_scalar_tower.left (M : Type u_1) {α : Type u_6} [monoid M] [mul_action M α] :
theorem add_vadd_comm {M : Type u_1} {α : Type u_6} [add_monoid M] [add_action M α] [has_add α] (s : M) (x y : α) [vadd_comm_class M α α] :
x + (s +ᵥ y) = s +ᵥ (x + y)
theorem mul_smul_comm {M : Type u_1} {α : Type u_6} [monoid M] [mul_action M α] [has_mul α] (s : M) (x y : α) [smul_comm_class M α α] :
x * s y = s x * y

Note that the smul_comm_class M α α typeclass argument is usually satisfied by algebra M α.

theorem smul_mul_assoc {M : Type u_1} {α : Type u_6} [monoid M] [mul_action M α] [has_mul α] (r : M) (x y : α) [is_scalar_tower M α α] :
(r x) * y = r x * y

Note that the is_scalar_tower M α α typeclass argument is usually satisfied by algebra M α.

theorem smul_mul_smul {M : Type u_1} {α : Type u_6} [monoid M] [mul_action M α] [has_mul α] (r s : M) (x y : α) [is_scalar_tower M α α] [smul_comm_class M α α] :
(r x) * s y = (r * s) x * y

Note that the is_scalar_tower M α α and smul_comm_class M α α typeclass arguments are usually satisfied by algebra M α.

def mul_action.to_fun (M : Type u_1) (α : Type u_6) [monoid M] [mul_action M α] :
α M → α

Embedding of α into functions M → α induced by a multiplicative action of M on α.

Equations
def add_action.to_fun (M : Type u_1) (α : Type u_6) [add_monoid M] [add_action M α] :
α M → α

Embedding of α into functions M → α induced by an additive action of M on α.

@[simp]
theorem mul_action.to_fun_apply {M : Type u_1} {α : Type u_6} [monoid M] [mul_action M α] (x : M) (y : α) :
(mul_action.to_fun M α) y x = x y
@[simp]
theorem add_action.to_fun_apply {M : Type u_1} {α : Type u_6} [add_monoid M] [add_action M α] (x : M) (y : α) :
(add_action.to_fun M α) y x = x +ᵥ y
def mul_action.comp_hom {M : Type u_1} {N : Type u_2} (α : Type u_6) [monoid M] [mul_action M α] [monoid N] (g : N →* M) :

A multiplicative action of M on α and a monoid homomorphism N → M induce a multiplicative action of N on α.

See note [reducible non-instances].

Equations
def add_action.comp_hom {M : Type u_1} {N : Type u_2} (α : Type u_6) [add_monoid M] [add_action M α] [add_monoid N] (g : N →+ M) :

An additive action of M on α and an additive monoid homomorphism N → M induce an additive action of N on α.

See note [reducible non-instances].

@[simp]
theorem smul_one_smul {α : Type u_6} {M : Type u_1} (N : Type u_2) [monoid N] [has_scalar M N] [mul_action N α] [has_scalar M α] [is_scalar_tower M N α] (x : M) (y : α) :
(x 1) y = x y
@[class]
structure distrib_mul_action (M : Type u_9) (A : Type u_10) [monoid M] [add_monoid A] :
Type (max u_10 u_9)
  • to_mul_action : mul_action M A
  • smul_add : ∀ (r : M) (x y : A), r (x + y) = r x + r y
  • smul_zero : ∀ (r : M), r 0 = 0

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

Instances
@[simp]
theorem smul_add {M : Type u_1} {A : Type u_4} [monoid M] [add_monoid A] [distrib_mul_action M A] (a : M) (b₁ b₂ : A) :
a (b₁ + b₂) = a b₁ + a b₂
@[simp]
theorem smul_zero {M : Type u_1} {A : Type u_4} [monoid M] [add_monoid A] [distrib_mul_action M A] (a : M) :
a 0 = 0
def function.injective.distrib_mul_action {M : Type u_1} {A : Type u_4} {B : Type u_5} [monoid M] [add_monoid A] [distrib_mul_action M A] [add_monoid B] [has_scalar M B] (f : B →+ A) (hf : function.injective f) (smul : ∀ (c : M) (x : B), f (c x) = c f x) :

Pullback a distributive multiplicative action along an injective additive monoid homomorphism. See note [reducible non-instances].

Equations
def function.surjective.distrib_mul_action {M : Type u_1} {A : Type u_4} {B : Type u_5} [monoid M] [add_monoid A] [distrib_mul_action M A] [add_monoid B] [has_scalar M B] (f : A →+ B) (hf : function.surjective f) (smul : ∀ (c : M) (x : A), f (c x) = c f x) :

Pushforward a distributive multiplicative action along a surjective additive monoid homomorphism. See note [reducible non-instances].

Equations
def distrib_mul_action.comp_hom {M : Type u_1} {N : Type u_2} (A : Type u_4) [monoid M] [add_monoid A] [distrib_mul_action M A] [monoid N] (f : N →* M) :

Compose a distrib_mul_action with a monoid_hom, with action f r' • m. See note [reducible non-instances].

Equations
def const_smul_hom {M : Type u_1} (A : Type u_4) [monoid M] [add_monoid A] [distrib_mul_action M A] (r : M) :
A →+ A

Scalar multiplication by r as an add_monoid_hom.

Equations
@[simp]
theorem const_smul_hom_apply {M : Type u_1} {A : Type u_4} [monoid M] [add_monoid A] [distrib_mul_action M A] (r : M) (x : A) :
(const_smul_hom A r) x = r x
@[simp]
theorem const_smul_hom_one {M : Type u_1} {A : Type u_4} [monoid M] [add_monoid A] [distrib_mul_action M A] :
@[simp]
theorem smul_neg {M : Type u_1} {A : Type u_4} [monoid M] [add_group A] [distrib_mul_action M A] (r : M) (x : A) :
r -x = -(r x)
theorem smul_sub {M : Type u_1} {A : Type u_4} [monoid M] [add_group A] [distrib_mul_action M A] (r : M) (x y : A) :
r (x - y) = r x - r y
def function.End (α : Type u_6) :
Type u_6

The monoid of endomorphisms.

Note that this is generalized by category_theory.End to categories other than Type u.

Equations
@[instance]
def function.End.monoid (α : Type u_6) :
Equations
@[instance]
def function.End.inhabited (α : Type u_6) :
Equations
@[instance]
def mul_action.function_End {α : Type u_6} :

The tautological action by function.End α on α.

Equations
@[simp]
theorem function.End.smul_def {α : Type u_6} (f : function.End α) (a : α) :
f a = f a
def mul_action.to_End_hom {M : Type u_1} {α : Type u_6} [monoid M] [mul_action M α] :

The monoid hom representing a monoid action.

When M is a group, see mul_action.to_perm_hom.

Equations
def mul_action.of_End_hom {M : Type u_1} {α : Type u_6} [monoid M] (f : M →* function.End α) :

The monoid action induced by a monoid hom to function.End α

See note [reducible non-instances].

Equations
@[instance]
def add_action.function_End {α : Type u_6} :

The tautological additive action by additive (function.End α) on α.

Equations
def add_action.to_End_hom {M : Type u_1} {α : Type u_6} [add_monoid M] [add_action M α] :

The additive monoid hom representing an additive monoid action.

When M is a group, see add_action.to_perm_hom.

Equations
def add_action.of_End_hom {M : Type u_1} {α : Type u_6} [add_monoid M] (f : M →+ additive (function.End α)) :

The additive action induced by a hom to additive (function.End α)

See note [reducible non-instances].

Equations