Definitions of group actions #
This file defines a hierarchy of group action type-classes on top of the previously defined
notation classes SMul
and its additive version VAdd
:
MulAction M α
and its additive versionAddAction G P
are typeclasses used for actions of multiplicative and additive monoids and groups; they extend notation classesSMul
andVAdd
that are defined inAlgebra.Group.Defs
;DistribMulAction M A
is a typeclass for an action of a multiplicative monoid on an additive monoid such thata • (b + c) = a • b + a • c
anda • 0 = 0
.
The hierarchy is extended further by Module
, defined elsewhere.
Also provided are typeclasses regarding the interaction of different group actions,
SMulCommClass M N α
and its additive versionVAddCommClass M N α
;IsScalarTower M N α
and its additive versionVAddAssocClass M N α
;IsCentralScalar M α
and its additive versionIsCentralVAdd M N α
.
Notation #
Implementation details #
This file should avoid depending on other parts of GroupTheory
, to avoid import cycles.
More sophisticated lemmas belong in GroupTheory.GroupAction
.
Tags #
group action
See also Monoid.toMulAction
and MulZeroClass.toSMulWithZero
.
Equations
- Mul.toSMul α = { smul := fun (x1 x2 : α) => x1 * x2 }
See also AddMonoid.toAddAction
Equations
- Add.toVAdd α = { vadd := fun (x1 x2 : α) => x1 + x2 }
Type class for additive monoid actions.
- vadd : G → P → P
Zero is a neutral element for
+ᵥ
Associativity of
+
and+ᵥ
Instances
Typeclass for multiplicative actions by monoids. This generalizes group actions.
- smul : α → β → β
One is the neutral element for
•
Associativity of
•
and*
Instances
Scalar tower and commuting actions #
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.
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.
An instance of VAddAssocClass M N α
states that the additive action of M
on α
is
determined by the additive actions of M
on N
and N
on α
.
Associativity of
+ᵥ
Instances
An instance of IsScalarTower M N α
states that the multiplicative
action of M
on α
is determined by the multiplicative actions of M
on N
and N
on α
.
Associativity of
•
Instances
A typeclass indicating that the right (aka AddOpposite
) and left actions by M
on α
are
equal, that is that M
acts centrally on α
. This can be thought of as a version of commutativity
for +ᵥ
.
- op_vadd_eq_vadd : ∀ (m : M) (a : α), AddOpposite.op m +ᵥ a = m +ᵥ a
The right and left actions of
M
onα
are equal.
Instances
A typeclass indicating that the right (aka MulOpposite
) and left actions by M
on α
are
equal, that is that M
acts centrally on α
. This can be thought of as a version of commutativity
for •
.
- op_smul_eq_smul : ∀ (m : M) (a : α), MulOpposite.op m • a = m • a
The right and left actions of
M
onα
are equal.
Instances
Auxiliary definition for SMul.comp
, MulAction.compHom
,
DistribMulAction.compHom
, Module.compHom
, etc.
Equations
- SMul.comp.smul g n a = g n • a
Instances For
Auxiliary definition for VAdd.comp
, AddAction.compHom
, etc.
Equations
- VAdd.comp.vadd g n a = g n +ᵥ a
Instances For
Given a tower of scalar actions M → α → β
, if we use SMul.comp
to pull back both of M
's actions by a map g : N → M
, then we obtain a new
tower of scalar actions N → α → β
.
This cannot be an instance because it can cause infinite loops whenever the SMul
arguments
are still metavariables.
Given a tower of additive actions M → α → β
, if we use SMul.comp
to pull back both of
M
's actions by a map g : N → M
, then we obtain a new tower of scalar actions N → α → β
.
This cannot be an instance because it can cause infinite loops whenever the SMul
arguments
are still metavariables.
This cannot be an instance because it can cause infinite loops whenever the SMul
arguments
are still metavariables.
This cannot be an instance because it can cause infinite loops whenever the VAdd
arguments
are still metavariables.
This cannot be an instance because it can cause infinite loops whenever the SMul
arguments
are still metavariables.
This cannot be an instance because it can cause infinite loops whenever the VAdd
arguments
are still metavariables.
Note that the SMulCommClass α β β
typeclass argument is usually satisfied by Algebra α β
.
Note that the IsScalarTower α β β
typeclass argument is usually satisfied by Algebra α β
.
Note that the IsScalarTower α β β
typeclass argument is usually satisfied by Algebra α β
.
Note that the IsScalarTower α β β
and SMulCommClass α β β
typeclass arguments are usually
satisfied by Algebra α β
.
Alias of smul_mul_smul_comm
.
Note that the IsScalarTower α β β
and SMulCommClass α β β
typeclass arguments are usually
satisfied by Algebra α β
.
Note that the IsScalarTower α β β
and SMulCommClass α β β
typeclass arguments are usually
satisfied by Algebra α β
.
Pullback a multiplicative action along an injective map respecting •
.
See note [reducible non-instances].
Equations
- Function.Injective.mulAction f hf smul = MulAction.mk ⋯ ⋯
Instances For
Pullback an additive action along an injective map respecting +ᵥ
.
Equations
- Function.Injective.addAction f hf smul = AddAction.mk ⋯ ⋯
Instances For
Pushforward a multiplicative action along a surjective map respecting •
.
See note [reducible non-instances].
Equations
- Function.Surjective.mulAction f hf smul = MulAction.mk ⋯ ⋯
Instances For
Pushforward an additive action along a surjective map respecting +ᵥ
.
Equations
- Function.Surjective.addAction f hf smul = AddAction.mk ⋯ ⋯
Instances For
The regular action of a monoid on itself by left multiplication.
This is promoted to a module by Semiring.toModule
.
Equations
- Monoid.toMulAction M = MulAction.mk ⋯ ⋯
The regular action of a monoid on itself by left addition.
This is promoted to an AddTorsor
by addGroup_is_addTorsor
.
Equations
Embedding of α
into functions M → α
induced by a multiplicative action of M
on α
.
Equations
- MulAction.toFun M α = { toFun := fun (y : α) (x : M) => x • y, inj' := ⋯ }
Instances For
Embedding of α
into functions M → α
induced by an additive action of M
on α
.
Equations
- AddAction.toFun M α = { toFun := fun (y : α) (x : M) => x +ᵥ y, inj' := ⋯ }