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
:
SMulZeroClass
is a typeclass for an action that preserves zeroDistribSMul M A
is a typeclass for an action on an additive monoid (AddZeroClass
) that preserves addition and zeroDistribMulAction 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.
Notation #
a • b
is used as notation forSMul.smul a b
.
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
Pullback a zero-preserving scalar multiplication along an injective zero-preserving map. See note [reducible non-instances].
Equations
- Function.Injective.smulZeroClass f hf smul = SMulZeroClass.mk ⋯
Instances For
Pushforward a zero-preserving scalar multiplication along a zero-preserving map. See note [reducible non-instances].
Equations
- f.smulZeroClass smul = SMulZeroClass.mk ⋯
Instances For
Push forward the multiplication of R
on M
along a compatible surjective map f : R → S
.
See also Function.Surjective.distribMulActionLeft
.
Equations
- Function.Surjective.smulZeroClassLeft f hf hsmul = SMulZeroClass.mk ⋯
Instances For
Compose a SMulZeroClass
with a function, with scalar multiplication f r' • m
.
See note [reducible non-instances].
Equations
Instances For
Each element of the scalars defines a zero-preserving map.
Equations
- SMulZeroClass.toZeroHom A x = { toFun := fun (x_1 : A) => x • x_1, map_zero' := ⋯ }
Instances For
Typeclass for scalar multiplication that preserves 0
and +
on the right.
This is exactly DistribMulAction
without the MulAction
part.
- smul : M → A → A
Scalar multiplication distributes across addition
Instances
Equations
- AddMonoidHom.smulZeroClass = SMulZeroClass.mk ⋯
Pullback a distributive scalar multiplication along an injective additive monoid homomorphism. See note [reducible non-instances].
Equations
- Function.Injective.distribSMul f hf smul = DistribSMul.mk ⋯
Instances For
Pushforward a distributive scalar multiplication along a surjective additive monoid homomorphism. See note [reducible non-instances].
Equations
- Function.Surjective.distribSMul f hf smul = DistribSMul.mk ⋯
Instances For
Push forward the multiplication of R
on M
along a compatible surjective map f : R → S
.
See also Function.Surjective.distribMulActionLeft
.
Equations
- Function.Surjective.distribSMulLeft f hf hsmul = DistribSMul.mk ⋯
Instances For
Compose a DistribSMul
with a function, with scalar multiplication f r' • m
.
See note [reducible non-instances].
Equations
Instances For
Each element of the scalars defines an additive monoid homomorphism.
Equations
- DistribSMul.toAddMonoidHom A x = { toFun := fun (x_1 : A) => x • x_1, map_zero' := ⋯, map_add' := ⋯ }
Instances For
Typeclass for multiplicative actions on additive structures. This generalizes group modules.
- smul : M → A → A
Multiplying
0
by a scalar gives0
Scalar multiplication distributes across addition
Instances
Equations
- DistribMulAction.toDistribSMul = DistribSMul.mk ⋯
Since Lean 3 does not have definitional eta for structures, we have to make sure
that the definition of DistribMulAction.toDistribSMul
was done correctly,
and the two paths from DistribMulAction
to SMul
are indeed definitionally equal.
Pullback a distributive multiplicative action along an injective additive monoid homomorphism. See note [reducible non-instances].
Equations
- Function.Injective.distribMulAction f hf smul = DistribMulAction.mk ⋯ ⋯
Instances For
Pushforward a distributive multiplicative action along a surjective additive monoid homomorphism. See note [reducible non-instances].
Equations
- Function.Surjective.distribMulAction f hf smul = DistribMulAction.mk ⋯ ⋯
Instances For
Each element of the monoid defines an additive monoid homomorphism.
Equations
Instances For
Each element of the monoid defines an additive monoid homomorphism.
Equations
- DistribMulAction.toAddMonoidEnd M A = { toFun := DistribMulAction.toAddMonoidHom A, map_one' := ⋯, map_mul' := ⋯ }
Instances For
Typeclass for multiplicative actions on multiplicative structures. This generalizes conjugation actions.
- smul : M → A → A
Distributivity of
•
across*
Multiplying
1
by a scalar gives1
Instances
Pullback a multiplicative distributive multiplicative action along an injective monoid homomorphism. See note [reducible non-instances].
Equations
- Function.Injective.mulDistribMulAction f hf smul = MulDistribMulAction.mk ⋯ ⋯
Instances For
Pushforward a multiplicative distributive multiplicative action along a surjective monoid homomorphism. See note [reducible non-instances].
Equations
- Function.Surjective.mulDistribMulAction f hf smul = MulDistribMulAction.mk ⋯ ⋯
Instances For
Scalar multiplication by r
as a MonoidHom
.
Equations
- MulDistribMulAction.toMonoidHom A r = { toFun := fun (x : A) => r • x, map_one' := ⋯, map_mul' := ⋯ }