Definitions of group actions #
This file defines a hierarchy of group action type-classes on top of the previously defined
notation classes has_scalar and its additive version has_vadd:
mul_action M αand its additive versionadd_action G Pare typeclasses used for actions of multiplicative and additive monoids and groups; they extend notation classeshas_scalarandhas_vaddthat are defined inalgebra.group.defs;distrib_mul_action 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.
Also provided are typeclasses for faithful and transitive actions, and typeclasses regarding the interaction of different group actions,
smul_comm_class M N αand its additive versionvadd_comm_class M N α;is_scalar_tower M N α(no additive version).is_central_scalar M α(no additive version).
Notation #
a • bis used as notation forhas_scalar.smul a b.a +ᵥ bis used as notation forhas_vadd.vadd 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.
Tags #
group action
Faithful actions #
Typeclass for faithful actions.
Typeclass for faithful actions.
Instances
- function.End.apply_has_faithful_scalar
- add_monoid.End.apply_has_faithful_scalar
- left_cancel_monoid.to_has_faithful_opposite_scalar
- cancel_monoid_with_zero.to_has_faithful_opposite_scalar
- prod.has_faithful_scalar_left
- prod.has_faithful_scalar_right
- mul_aut.apply_has_faithful_scalar
- add_aut.apply_has_faithful_scalar
- units.has_faithful_scalar
- right_cancel_monoid.to_has_faithful_scalar
- equiv.perm.apply_has_faithful_scalar
- cancel_monoid_with_zero.to_has_faithful_scalar
- ring_hom.apply_has_faithful_scalar
- submonoid.has_faithful_scalar
- subgroup.has_faithful_scalar
- subsemiring.has_faithful_scalar
- subring.has_faithful_scalar
- pi.has_faithful_scalar
- finsupp.has_faithful_scalar
- linear_map.apply_has_faithful_scalar
- linear_equiv.apply_has_faithful_scalar
- alg_equiv.apply_has_faithful_scalar
- subalgebra.has_faithful_scalar
- monoid_algebra.has_faithful_scalar
- add_monoid_algebra.has_faithful_scalar
- mv_polynomial.has_faithful_scalar
- polynomial.has_faithful_scalar
See also monoid.to_mul_action and mul_zero_class.to_smul_with_zero.
Equations
- has_mul.to_has_scalar α = {smul := has_mul.mul _inst_1}
Equations
- has_add.to_has_scalar α = {vadd := has_add.add _inst_1}
- 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
- add_monoid.to_add_action
- add_action.function_End
- add_opposite.add_action
- add_monoid.to_opposite_add_action
- prod.add_action
- add_units.add_action
- add_submonoid.add_action
- add_subgroup.add_action
- pi.add_action
- pi.add_action'
- add_action.orbit.add_action
- add_action.quotient
- add_action.add_left_cosets_comp_subtype_val
- filter.add_action
- set.add_action_set
- set.add_action
- to_has_scalar : 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
- distrib_mul_action.to_mul_action
- mul_distrib_mul_action.to_mul_action
- mul_action_with_zero.to_mul_action
- monoid.to_mul_action
- function.End.apply_mul_action
- mul_opposite.mul_action
- monoid.to_opposite_mul_action
- prod.mul_action
- units.mul_action
- units.mul_action'
- equiv.perm.apply_mul_action
- submonoid.mul_action
- subgroup.mul_action
- subsemiring.mul_action
- subring.mul_action
- punit.mul_action
- pi.mul_action
- pi.mul_action'
- mul_action.orbit.mul_action
- mul_action.quotient
- mul_action.mul_left_cosets_comp_subtype_val
- sub_mul_action.mul_action'
- sub_mul_action.mul_action
- submodule.quotient.mul_action'
- submodule.quotient.mul_action
- localization.mul_action
- subalgebra.mul_action
- matrix.mul_action
- category_theory.End.mul_action_right
- category_theory.End.mul_action_left
- conj_act.mul_action₀
- filter.mul_action
- continuous_linear_map.mul_action
- nnreal.mul_action
- ennreal.mul_action
- subalgebra.pointwise_mul_action
- subring.pointwise_mul_action
- subsemiring.pointwise_mul_action
- add_subgroup.pointwise_mul_action
- subgroup.pointwise_mul_action
- add_submonoid.pointwise_mul_action
- submonoid.pointwise_mul_action
- set.mul_action_set
- set.mul_action
(Pre)transitive action #
M acts pretransitively on α if for any x y there is g such that g • x = y (or g +ᵥ x = y
for an additive action). A transitive action should furthermore have α nonempty.
In this section we define typeclasses mul_action.is_pretransitive and
add_action.is_pretransitive and provide mul_action.exists_smul_eq/add_action.exists_vadd_eq,
mul_action.surjective_smul/add_action.surjective_vadd as public interface to access this
property. We do not provide typeclasses *_action.is_transitive; users should assume
[mul_action.is_pretransitive M α] [nonempty α] instead.
M acts pretransitively on α if for any x y there is g such that g +ᵥ x = y.
A transitive action should furthermore have α nonempty.
M acts pretransitively on α if for any x y there is g such that g • x = y.
A transitive action should furthermore have α nonempty.
The regular action of a group on itself is transitive.
Scalar tower and commuting actions #
A typeclass mixin saying that two additive actions on the same space commute.
Instances
- vadd_comm_class_self
- add_opposite.vadd_comm_class
- add_semigroup.opposite_vadd_comm_class
- add_semigroup.opposite_vadd_comm_class'
- prod.vadd_comm_class
- prod.vadd_comm_class_both
- set.vadd_comm_class_set
- set.vadd_comm_class_set'
- set.vadd_comm_class
- add_submonoid.vadd_comm_class_left
- add_submonoid.vadd_comm_class_right
- add_subgroup.vadd_comm_class_left
- add_subgroup.vadd_comm_class_right
- pi.vadd_comm_class
- pi.vadd_comm_class'
- pi.vadd_comm_class''
- function.vadd_comm_class
- finset.vadd_comm_class_set
- finset.vadd_comm_class_set'
- finset.vadd_comm_class
- filter.vadd_comm_class_filter
- filter.vadd_comm_class_filter'
- filter.vadd_comm_class
A typeclass mixin saying that two multiplicative actions on the same space commute.
Instances
- smul_comm_class.op_left
- smul_comm_class.op_right
- is_scalar_tower.to_smul_comm_class
- is_scalar_tower.to_smul_comm_class'
- smul_comm_class_self
- add_monoid.nat_smul_comm_class
- add_monoid.nat_smul_comm_class'
- add_group.int_smul_comm_class
- add_group.int_smul_comm_class'
- non_unital_non_assoc_semiring.nat_smul_comm_class
- non_unital_non_assoc_ring.int_smul_comm_class
- mul_opposite.smul_comm_class
- semigroup.opposite_smul_comm_class
- semigroup.opposite_smul_comm_class'
- smul_comm_class.opposite_mid
- prod.smul_comm_class
- prod.smul_comm_class_both
- units.smul_comm_class_left
- units.smul_comm_class_right
- units.smul_comm_class'
- smul_comm_class.rat
- smul_comm_class.rat'
- set.smul_comm_class_set
- set.smul_comm_class_set'
- set.smul_comm_class
- submonoid.smul_comm_class_left
- submonoid.smul_comm_class_right
- subgroup.smul_comm_class_left
- subgroup.smul_comm_class_right
- subsemiring.smul_comm_class_left
- subsemiring.smul_comm_class_right
- subring.smul_comm_class_left
- subring.smul_comm_class_right
- punit.smul_comm_class
- pi.smul_comm_class
- pi.smul_comm_class'
- pi.smul_comm_class''
- finsupp.smul_comm_class
- add_monoid_hom.smul_comm_class
- linear_map.smul_comm_class
- module.End.smul_comm_class
- module.End.smul_comm_class'
- linear_map.apply_smul_comm_class
- linear_map.apply_smul_comm_class'
- linear_equiv.apply_smul_comm_class
- linear_equiv.apply_smul_comm_class'
- dfinsupp.smul_comm_class
- function.smul_comm_class
- alg_equiv.apply_smul_comm_class
- alg_equiv.apply_smul_comm_class'
- submodule.quotient.smul_comm_class
- finset.smul_comm_class_set
- finset.smul_comm_class_set'
- finset.smul_comm_class
- localization.smul_comm_class
- localization.smul_comm_class_right
- subalgebra.smul_comm_class_left
- subalgebra.smul_comm_class_right
- monoid_algebra.smul_comm_class
- monoid_algebra.smul_comm_class_self
- monoid_algebra.smul_comm_class_symm_self
- add_monoid_algebra.smul_comm_class
- add_monoid_algebra.smul_comm_class_self
- add_monoid_algebra.smul_comm_class_symm_self
- mv_polynomial.smul_comm_class
- polynomial.smul_comm_class
- matrix.smul_comm_class
- matrix.semiring.smul_comm_class
- filter.smul_comm_class_filter
- filter.smul_comm_class_filter'
- filter.smul_comm_class
- continuous_linear_map.smul_comm_class
- hahn_series.smul_comm_class
- adjoin_root.smul_comm_class
- direct_sum.smul_comm_class
- nnreal.smul_comm_class_left
- nnreal.smul_comm_class_right
- ennreal.smul_comm_class_left
- ennreal.smul_comm_class_right
- fixed_points.smul_comm_class
- fixed_points.smul_comm_class'
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 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
- is_scalar_tower.op_left
- is_scalar_tower.op_right
- is_scalar_tower.subsemiring
- semigroup.is_scalar_tower
- is_scalar_tower.left
- non_unital_non_assoc_semiring.nat_is_scalar_tower
- non_unital_non_assoc_ring.int_is_scalar_tower
- mul_opposite.is_scalar_tower
- is_scalar_tower.opposite_mid
- prod.is_scalar_tower
- prod.is_scalar_tower_both
- units.is_scalar_tower
- units.is_scalar_tower'
- units.is_scalar_tower'_left
- add_comm_monoid.nat_is_scalar_tower
- add_comm_group.int_is_scalar_tower
- is_scalar_tower.rat
- set.is_scalar_tower
- set.is_scalar_tower'
- set.is_scalar_tower''
- submonoid.is_scalar_tower
- subgroup.is_scalar_tower
- subsemiring.is_scalar_tower
- subring.is_scalar_tower
- punit.is_scalar_tower
- pi.is_scalar_tower
- pi.is_scalar_tower'
- pi.is_scalar_tower''
- finsupp.is_scalar_tower
- add_monoid_hom.is_scalar_tower
- linear_map.is_scalar_tower
- module.End.is_scalar_tower
- linear_map.apply_is_scalar_tower
- sub_mul_action.is_scalar_tower
- submodule.is_scalar_tower
- submodule.restrict_scalars.is_scalar_tower
- dfinsupp.is_scalar_tower
- is_scalar_tower.right
- submodule.quotient.is_scalar_tower
- tensor_product.is_scalar_tower_left
- tensor_product.is_scalar_tower_right
- tensor_product.is_scalar_tower
- finset.is_scalar_tower
- finset.is_scalar_tower'
- finset.is_scalar_tower''
- ideal.quotient.is_scalar_tower
- localization.is_scalar_tower
- localization.is_scalar_tower_right
- subalgebra.is_scalar_tower
- subalgebra.is_scalar_tower_left
- is_scalar_tower.subalgebra
- is_scalar_tower.subalgebra'
- is_scalar_tower.of_ring_hom
- monoid_algebra.is_scalar_tower
- monoid_algebra.is_scalar_tower_self
- add_monoid_algebra.is_scalar_tower
- add_monoid_algebra.is_scalar_tower_self
- mv_polynomial.is_scalar_tower
- mv_polynomial.is_scalar_tower'
- polynomial.is_scalar_tower
- restrict_scalars.is_scalar_tower
- matrix.is_scalar_tower
- matrix.semiring.is_scalar_tower
- fraction_ring.is_scalar_tower
- ideal.quotient.tower_quotient_map_quotient
- filter.is_scalar_tower
- filter.is_scalar_tower'
- filter.is_scalar_tower''
- continuous_linear_map.is_scalar_tower
- mv_power_series.is_scalar_tower
- power_series.is_scalar_tower
- hahn_series.is_scalar_tower
- ratfunc.is_scalar_tower
- ratfunc.laurent_series.is_scalar_tower
- adjoin_root.is_scalar_tower
- polynomial.splitting_field_aux.is_scalar_tower
- polynomial.splitting_field_aux.scalar_tower'
- polynomial.splitting_field_aux.scalar_tower
- direct_sum.is_scalar_tower
- algebraic_closure.step.scalar_tower
- algebraic_closure.is_scalar_tower
- intermediate_field.is_scalar_tower
- intermediate_field.is_scalar_tower_bot
- intermediate_field.is_scalar_tower_mid
- intermediate_field.is_scalar_tower_mid'
- intermediate_field.lift2_tower
- intermediate_field.is_scalar_tower_over_bot
- nnreal.is_scalar_tower
- ennreal.is_scalar_tower
- intermediate_field.fixed_field.is_scalar_tower
- op_smul_eq_smul : ∀ (m : M) (a : α), mul_opposite.op m • a = m • a
A typeclass indicating that the right (aka mul_opposite) 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 •.
Instances
- mul_opposite.is_central_scalar
- comm_semigroup.is_central_scalar
- prod.is_central_scalar
- set.is_central_scalar
- submonoid.pointwise_central_scalar
- add_submonoid.pointwise_central_scalar
- punit.is_central_scalar
- pi.is_central_scalar
- finsupp.is_central_scalar
- add_monoid_hom.is_central_scalar
- linear_map.is_central_scalar
- sub_mul_action.is_central_scalar
- submodule.is_central_scalar
- dfinsupp.is_central_scalar
- submodule.quotient.is_central_scalar
- tensor_product.is_central_scalar
- subgroup.pointwise_central_scalar
- add_subgroup.pointwise_central_scalar
- submodule.pointwise_central_scalar
- finset.is_central_scalar
- localization.is_central_scalar
- monoid_algebra.is_central_scalar
- add_monoid_algebra.is_central_scalar
- mv_polynomial.is_central_scalar
- polynomial.is_central_scalar
- matrix.is_central_scalar
- subsemiring.pointwise_central_scalar
- subring.pointwise_central_scalar
- filter.is_central_scalar
- continuous_linear_map.is_central_scalar
- direct_sum.is_central_scalar
Auxiliary definition for has_vadd.comp, add_action.comp_hom, etc.
Equations
- has_vadd.comp.vadd g n a = g n +ᵥ a
Auxiliary definition for has_scalar.comp, mul_action.comp_hom,
distrib_mul_action.comp_hom, module.comp_hom, etc.
Equations
- has_scalar.comp.smul g n a = g n • a
An additive action of M on α and a function N → M induces
an additive action of N on α
Equations
- has_vadd.comp α g = {vadd := has_vadd.comp.vadd g}
An action of M on α and a function N → M induces an action of N on α.
See note [reducible non-instances]. Since this is reducible, we make sure to go via
has_scalar.comp.smul to prevent typeclass inference unfolding too far.
Equations
- has_scalar.comp α g = {smul := has_scalar.comp.smul g}
Given a tower of scalar actions M → α → β, if we use has_scalar.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 has_scalar arguments
are still metavariables.
This cannot be an instance because it can cause infinite loops whenever the has_scalar arguments
are still metavariables.
This cannot be an instance because it can cause infinite loops whenever the has_scalar arguments
are still metavariables.
Note that the smul_comm_class α β β typeclass argument is usually satisfied by algebra α β.
Note that the is_scalar_tower α β β typeclass argument is usually satisfied by algebra α β.
has_scalar version of one_mul_eq_id
has_scalar version of comp_mul_left
Pullback a multiplicative action along an injective map respecting •.
See note [reducible non-instances].
Equations
- function.injective.mul_action f hf smul = {to_has_scalar := {smul := has_scalar.smul _inst_3}, one_smul := _, mul_smul := _}
Pullback an additive action along an injective map respecting +ᵥ.
Equations
- function.injective.add_action f hf smul = {to_has_vadd := {vadd := has_vadd.vadd _inst_3}, zero_vadd := _, add_vadd := _}
Pushforward an additive action along a surjective map respecting +ᵥ.
Equations
- function.surjective.add_action f hf smul = {to_has_vadd := {vadd := has_vadd.vadd _inst_3}, zero_vadd := _, add_vadd := _}
Pushforward a multiplicative action along a surjective map respecting •.
See note [reducible non-instances].
Equations
- function.surjective.mul_action f hf smul = {to_has_scalar := {smul := has_scalar.smul _inst_3}, one_smul := _, mul_smul := _}
Push forward the action of R on M along a compatible surjective map f : R →* S.
See also function.surjective.distrib_mul_action_left and function.surjective.module_left.
Equations
- function.surjective.mul_action_left f hf hsmul = {to_has_scalar := {smul := has_scalar.smul _inst_6}, one_smul := _, mul_smul := _}
Push forward the action of R on M along a compatible
surjective map f : R →+ S.
Equations
- function.surjective.add_action_left f hf hsmul = {to_has_vadd := {vadd := has_vadd.vadd _inst_6}, zero_vadd := _, add_vadd := _}
The regular action of a monoid on itself by left multiplication.
This is promoted to a module by semiring.to_module.
Equations
- monoid.to_mul_action M = {to_has_scalar := {smul := has_mul.mul (mul_one_class.to_has_mul M)}, one_smul := _, mul_smul := _}
The regular action of a monoid on itself by left addition.
This is promoted to an add_torsor by add_group_is_add_torsor.
Equations
- add_monoid.to_add_action M = {to_has_vadd := {vadd := has_add.add (add_zero_class.to_has_add M)}, zero_vadd := _, add_vadd := _}
Note that the is_scalar_tower M α α and smul_comm_class M α α typeclass arguments are
usually satisfied by algebra M α.
Embedding of α into functions M → α induced by a multiplicative action of M on α.
Embedding of α into functions M → α induced by an additive action of M on α.
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
- mul_action.comp_hom α g = {to_has_scalar := {smul := has_scalar.comp.smul ⇑g}, one_smul := _, mul_smul := _}
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].
Equations
- add_action.comp_hom α g = {to_has_vadd := {vadd := has_vadd.comp.vadd ⇑g}, zero_vadd := _, add_vadd := _}
- 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
- module.to_distrib_mul_action
- mul_semiring_action.to_distrib_mul_action
- add_monoid.End.apply_distrib_mul_action
- mul_opposite.distrib_mul_action
- prod.distrib_mul_action
- add_aut.apply_distrib_mul_action
- units.distrib_mul_action
- ring_hom.apply_distrib_mul_action
- submonoid.distrib_mul_action
- subgroup.distrib_mul_action
- subsemiring.distrib_mul_action
- subring.distrib_mul_action
- punit.distrib_mul_action
- pi.distrib_mul_action
- pi.distrib_mul_action'
- finsupp.distrib_mul_action
- add_monoid_hom.distrib_mul_action
- linear_map.distrib_mul_action
- linear_equiv.apply_distrib_mul_action
- dfinsupp.distrib_mul_action
- dfinsupp.distrib_mul_action₂
- submodule.quotient.distrib_mul_action'
- submodule.quotient.distrib_mul_action
- tensor_product.left_distrib_mul_action
- tensor_product.distrib_mul_action
- localization.distrib_mul_action
- subalgebra.distrib_mul_action
- monoid_algebra.distrib_mul_action
- add_monoid_algebra.distrib_mul_action
- mv_polynomial.distrib_mul_action
- polynomial.distrib_mul_action
- matrix.distrib_mul_action
- multilinear_map.distrib_mul_action
- alternating_map.distrib_mul_action
- conj_act.distrib_mul_action₀
- continuous_linear_map.distrib_mul_action
- hahn_series.distrib_mul_action
- nnreal.distrib_mul_action
- ennreal.distrib_mul_action
- submodule.pointwise_distrib_mul_action
- set.distrib_mul_action_set
Pullback a distributive multiplicative action along an injective additive monoid homomorphism. See note [reducible non-instances].
Equations
- function.injective.distrib_mul_action f hf smul = {to_mul_action := {to_has_scalar := {smul := has_scalar.smul _inst_5}, one_smul := _, mul_smul := _}, smul_add := _, smul_zero := _}
Pushforward a distributive multiplicative action along a surjective additive monoid homomorphism. See note [reducible non-instances].
Equations
- function.surjective.distrib_mul_action f hf smul = {to_mul_action := {to_has_scalar := {smul := has_scalar.smul _inst_5}, one_smul := _, mul_smul := _}, smul_add := _, smul_zero := _}
Push forward the action of R on M along a compatible surjective map f : R →* S.
See also function.surjective.mul_action_left and function.surjective.module_left.
Equations
- function.surjective.distrib_mul_action_left f hf hsmul = {to_mul_action := {to_has_scalar := {smul := has_scalar.smul _inst_8}, one_smul := _, mul_smul := _}, smul_add := _, smul_zero := _}
Compose a distrib_mul_action with a monoid_hom, with action f r' • m.
See note [reducible non-instances].
Equations
- distrib_mul_action.comp_hom A f = {to_mul_action := {to_has_scalar := {smul := has_scalar.comp.smul ⇑f}, one_smul := _, mul_smul := _}, smul_add := _, smul_zero := _}
Each element of the monoid defines a additive monoid homomorphism.
Equations
- distrib_mul_action.to_add_monoid_hom A x = {to_fun := has_scalar.smul x, map_zero' := _, map_add' := _}
Each element of the monoid defines an additive monoid homomorphism.
Equations
- distrib_mul_action.to_add_monoid_End M A = {to_fun := distrib_mul_action.to_add_monoid_hom A _inst_3, map_one' := _, map_mul' := _}
- to_mul_action : mul_action M A
- smul_mul : ∀ (r : M) (x y : A), r • x * y = (r • x) * r • y
- smul_one : ∀ (r : M), r • 1 = 1
Typeclass for multiplicative actions on multiplicative structures. This generalizes conjugation actions.
Instances
- mul_semiring_action.to_mul_distrib_mul_action
- mul_opposite.mul_distrib_mul_action
- prod.mul_distrib_mul_action
- mul_aut.apply_mul_distrib_mul_action
- units.mul_distrib_mul_action
- units.mul_distrib_mul_action'
- submonoid.mul_distrib_mul_action
- subgroup.mul_distrib_mul_action
- subsemiring.mul_distrib_mul_action
- subring.mul_distrib_mul_action
- punit.mul_distrib_mul_action
- pi.mul_distrib_mul_action
- pi.mul_distrib_mul_action'
- localization.mul_distrib_mul_action
- conj_act.units_mul_distrib_mul_action
- conj_act.mul_distrib_mul_action
- conj_act.subgroup.conj_mul_distrib_mul_action
- set.mul_distrib_mul_action_set
Pullback a multiplicative distributive multiplicative action along an injective monoid homomorphism. See note [reducible non-instances].
Equations
- function.injective.mul_distrib_mul_action f hf smul = {to_mul_action := {to_has_scalar := {smul := has_scalar.smul _inst_5}, one_smul := _, mul_smul := _}, smul_mul := _, smul_one := _}
Pushforward a multiplicative distributive multiplicative action along a surjective monoid homomorphism. See note [reducible non-instances].
Equations
- function.surjective.mul_distrib_mul_action f hf smul = {to_mul_action := {to_has_scalar := {smul := has_scalar.smul _inst_5}, one_smul := _, mul_smul := _}, smul_mul := _, smul_one := _}
Compose a mul_distrib_mul_action with a monoid_hom, with action f r' • m.
See note [reducible non-instances].
Equations
- mul_distrib_mul_action.comp_hom A f = {to_mul_action := {to_has_scalar := {smul := has_scalar.comp.smul ⇑f}, one_smul := _, mul_smul := _}, smul_mul := _, smul_one := _}
Scalar multiplication by r as a monoid_hom.
Equations
- mul_distrib_mul_action.to_monoid_hom A r = {to_fun := has_scalar.smul r, map_one' := _, map_mul' := _}
Each element of the monoid defines a monoid homomorphism.
Equations
- mul_distrib_mul_action.to_monoid_End M A = {to_fun := mul_distrib_mul_action.to_monoid_hom A _inst_3, map_one' := _, map_mul' := _}
The monoid of endomorphisms.
Note that this is generalized by category_theory.End to categories other than Type u.
Equations
- function.End α = (α → α)
Equations
- function.End.monoid α = {mul := function.comp α, mul_assoc := _, one := id α, one_mul := _, mul_one := _, npow := npow_rec (mul_one_class.to_has_mul (function.End α)), npow_zero' := _, npow_succ' := _}
Equations
- function.End.inhabited α = {default := 1}
The tautological action by function.End α on α.
This is generalized to bundled endomorphisms by:
equiv.perm.apply_mul_actionadd_monoid.End.apply_distrib_mul_actionadd_aut.apply_distrib_mul_actionmul_aut.apply_mul_distrib_mul_actionring_hom.apply_distrib_mul_actionlinear_equiv.apply_distrib_mul_actionlinear_map.apply_modulering_hom.apply_mul_semiring_actionalg_equiv.apply_mul_semiring_action
Equations
- function.End.apply_mul_action = {to_has_scalar := {smul := λ (_x : function.End α) (_y : α), _x _y}, one_smul := _, mul_smul := _}
function.End.apply_mul_action is faithful.
The tautological action by add_monoid.End α on α.
This generalizes function.End.apply_mul_action.
Equations
- add_monoid.End.apply_distrib_mul_action = {to_mul_action := {to_has_scalar := {smul := λ (_x : add_monoid.End α) (_y : α), ⇑_x _y}, one_smul := _, mul_smul := _}, smul_add := _, smul_zero := _}
add_monoid.End.apply_distrib_mul_action is faithful.
The monoid hom representing a monoid action.
When M is a group, see mul_action.to_perm_hom.
Equations
- mul_action.to_End_hom = {to_fun := has_scalar.smul mul_action.to_has_scalar, map_one' := _, map_mul' := _}
The monoid action induced by a monoid hom to function.End α
See note [reducible non-instances].
Equations
The tautological additive action by additive (function.End α) on α.
Equations
- add_action.function_End = {to_has_vadd := {vadd := λ (_x : additive (function.End α)) (_y : α), _x _y}, zero_vadd := _, add_vadd := _}
The additive monoid hom representing an additive monoid action.
When M is a group, see add_action.to_perm_hom.
Equations
- add_action.to_End_hom = {to_fun := has_vadd.vadd add_action.to_has_vadd, map_zero' := _, map_add' := _}
The additive action induced by a hom to additive (function.End α)
See note [reducible non-instances].