Module docstring
{"# Group actions and (endo)morphisms "}
{"# Group actions and (endo)morphisms "}
Function.Surjective.distribMulActionLeft
abbrev
{R S M : Type*} [Monoid R] [AddMonoid M] [DistribMulAction R M] [Monoid S] [SMul S M] (f : R →* S)
(hf : Function.Surjective f) (hsmul : ∀ (c) (x : M), f c • x = c • x) : DistribMulAction S M
/-- Push forward the action of `R` on `M` along a compatible surjective map `f : R →* S`.
See also `Function.Surjective.mulActionLeft` and `Function.Surjective.moduleLeft`.
-/
abbrev Function.Surjective.distribMulActionLeft {R S M : Type*} [Monoid R] [AddMonoid M]
[DistribMulAction R M] [Monoid S] [SMul S M] (f : R →* S) (hf : Function.Surjective f)
(hsmul : ∀ (c) (x : M), f c • x = c • x) : DistribMulAction S M :=
{ hf.distribSMulLeft f hsmul, hf.mulActionLeft f hsmul with }
DistribMulAction.compHom
abbrev
[Monoid N] (f : N →* M) : DistribMulAction N A
/-- Compose a `DistribMulAction` with a `MonoidHom`, with action `f r' • m`.
See note [reducible non-instances]. -/
abbrev DistribMulAction.compHom [Monoid N] (f : N →* M) : DistribMulAction N A :=
{ DistribSMul.compFun A f, MulAction.compHom A f with }
MulDistribMulAction.compHom
abbrev
[Monoid N] (f : N →* M) : MulDistribMulAction N A
/-- Compose a `MulDistribMulAction` with a `MonoidHom`, with action `f r' • m`.
See note [reducible non-instances]. -/
abbrev MulDistribMulAction.compHom [Monoid N] (f : N →* M) : MulDistribMulAction N A :=
{ MulAction.compHom A f with
smul_one := fun x => smul_one (f x),
smul_mul := fun x => smul_mul' (f x) }
AddMonoid.End.applyDistribMulAction
instance
[AddMonoid α] : DistribMulAction (AddMonoid.End α) α
/-- The tautological action by `AddMonoid.End α` on `α`.
This generalizes `Function.End.applyMulAction`. -/
instance AddMonoid.End.applyDistribMulAction [AddMonoid α] :
DistribMulAction (AddMonoid.End α) α where
smul := (· <| ·)
smul_zero := AddMonoidHom.map_zero
smul_add := AddMonoidHom.map_add
one_smul _ := rfl
mul_smul _ _ _ := rfl
AddMonoid.End.smul_def
theorem
[AddMonoid α] (f : AddMonoid.End α) (a : α) : f • a = f a
@[simp]
theorem AddMonoid.End.smul_def [AddMonoid α] (f : AddMonoid.End α) (a : α) : f • a = f a :=
rfl
AddMonoid.End.applyFaithfulSMul
instance
[AddMonoid α] : FaithfulSMul (AddMonoid.End α) α
/-- `AddMonoid.End.applyDistribMulAction` is faithful. -/
instance AddMonoid.End.applyFaithfulSMul [AddMonoid α] :
FaithfulSMul (AddMonoid.End α) α :=
⟨fun {_ _ h} => AddMonoidHom.ext h⟩
DistribMulAction.toAddEquiv₀
definition
{α : Type*} (β : Type*) [GroupWithZero α] [AddMonoid β] [DistribMulAction α β] (x : α) (hx : x ≠ 0) : β ≃+ β
/-- Each non-zero element of a `GroupWithZero` defines an additive monoid isomorphism of an
`AddMonoid` on which it acts distributively.
This is a stronger version of `DistribMulAction.toAddMonoidHom`. -/
def DistribMulAction.toAddEquiv₀ {α : Type*} (β : Type*) [GroupWithZero α] [AddMonoid β]
[DistribMulAction α β] (x : α) (hx : x ≠ 0) : β ≃+ β :=
{ DistribMulAction.toAddMonoidHom β x with
invFun := fun b ↦ x⁻¹ • b
left_inv := fun b ↦ inv_smul_smul₀ hx b
right_inv := fun b ↦ smul_inv_smul₀ hx b }