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:
SMulZeroClassis a typeclass for an action that preserves zeroDistribSMul M Ais a typeclass for an action on an additive monoid (AddZeroClass) that preserves addition and zeroDistribMulAction M Ais a typeclass for an action of a multiplicative monoid on an additive monoid such thata • (b + c) = a • b + a • canda • 0 = 0.
The hierarchy is extended further by Module, defined elsewhere.
Notation #
a • bis 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
Typeclass for scalar multiplication that preserves 0 on the right.
- smul : M → A → A
- smul_zero (a : M) : a • 0 = 0
Multiplying
0by a scalar gives0
Instances
Pullback a zero-preserving scalar multiplication along an injective zero-preserving map. See note [reducible non-instances].
Instances For
Pushforward a zero-preserving scalar multiplication along a zero-preserving map. See note [reducible non-instances].
Instances For
Push forward the multiplication of R on M along a compatible surjective map f : R → S.
See also Function.Surjective.distribMulActionLeft.
Instances For
Compose a SMulZeroClass with a function, with scalar multiplication f r' • m.
See note [reducible non-instances].
Instances For
Each element of the scalars defines a zero-preserving map.
Instances For
SMulWithZero is a class consisting of a Type M₀ with 0 ∈ M₀ and a scalar multiplication
of M₀ on a Type A with 0, such that the equality r • m = 0 holds if at least one among r
or m equals 0.
- smul : M₀ → A → A
- zero_smul (m : A) : 0 • m = 0
Scalar multiplication by the scalar
0is0.
Instances
Like MulZeroClass.toSMulWithZero, but multiplies on the right.
Pullback a SMulWithZero structure along an injective zero-preserving homomorphism.
Instances For
Pushforward a SMulWithZero structure along a surjective zero-preserving homomorphism.
Instances For
Compose a SMulWithZero with a ZeroHom, with action f r' • m
Instances For
An action of a monoid with zero M₀ on a Type A, also with 0, extends MulAction and
is compatible with 0 (both in M₀ and in A), with 1 ∈ M₀, and with associativity of
multiplication on the monoid A.
- smul : M₀ → A → A
- smul_zero (r : M₀) : r • 0 = 0
Scalar multiplication by any element send
0to0. - zero_smul (m : A) : 0 • m = 0
Scalar multiplication by the scalar
0is0.
Instances
See also Semiring.toModule
Like MonoidWithZero.toMulActionWithZero, but multiplies on the right. See also
Semiring.toOppositeModule
Pullback a MulActionWithZero structure along an injective zero-preserving homomorphism.
Instances For
Pushforward a MulActionWithZero structure along a surjective zero-preserving homomorphism.
Instances For
Compose a MulActionWithZero with a MonoidWithZeroHom, with action f r' • m
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
- smul_add (a : M) (x y : A) : a • (x + y) = a • x + a • y
Scalar multiplication distributes across addition
Instances
Pullback a distributive scalar multiplication along an injective additive monoid homomorphism. See note [reducible non-instances].
Instances For
Pushforward a distributive scalar multiplication along a surjective additive monoid homomorphism. See note [reducible non-instances].
Instances For
Push forward the multiplication of R on M along a compatible surjective map f : R → S.
See also Function.Surjective.distribMulActionLeft.
Instances For
Compose a DistribSMul with a function, with scalar multiplication f r' • m.
See note [reducible non-instances].
Instances For
Each element of the scalars defines an additive monoid homomorphism.
Instances For
Typeclass for multiplicative actions on additive structures.
For example, if G is a group (with group law written as multiplication) and A is an
abelian group (with group law written as addition), then to give A a G-module
structure (for example, to use the theory of group cohomology) is to say [DistribMulAction G A].
Note in that we do not use the Module typeclass for G-modules, as the Module typeclass
is for modules over a ring rather than a group.
Mathematically, DistribMulAction G A is equivalent to giving A the structure of
a ℤ[G]-module.
- smul : M → A → A
- smul_zero (a : M) : a • 0 = 0
Multiplying
0by a scalar gives0 - smul_add (a : M) (x y : A) : a • (x + y) = a • x + a • y
Scalar multiplication distributes across addition
Instances
We 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].
Instances For
Pushforward a distributive multiplicative action along a surjective additive monoid homomorphism. See note [reducible non-instances].
Instances For
Each element of the monoid defines an additive monoid homomorphism.
Instances For
Each element of the monoid defines an additive monoid homomorphism.
Instances For
A version of smul_inv' for groups with zero.