Endomorphisms of a module #
In this file we define the type of linear endomorphisms of a module over a ring (Module.End
).
We set up the basic theory,
including the action of Module.End
on the module we are considering endomorphisms of.
Main results #
Module.End.semiring
andModule.End.ring
: the (semi)ring of endomorphisms formed by taking the additive structure above with composition as multiplication.
Linear endomorphisms of a module, with associated ring structure
Module.End.semiring
and algebra structure Module.End.algebra
.
Equations
- Module.End R M = (M →ₗ[R] M)
Instances For
Monoid structure of endomorphisms #
Equations
- LinearMap.instOneEnd = { one := LinearMap.id }
Equations
- LinearMap.instMulEnd = { mul := fun (f g : Module.End R M) => f ∘ₗ g }
Equations
- Module.End.semiring = Semiring.mk ⋯ ⋯ ⋯ ⋯ Monoid.npow ⋯ ⋯
See also Module.End.natCast_def
.
See also Module.End.intCast_def
.
Action by a module endomorphism. #
The tautological action by Module.End R M
(aka M →ₗ[R] M
) on M
.
This generalizes Function.End.applyMulAction
.
LinearMap.applyModule
is faithful.
Actions as module endomorphisms #
Each element of the monoid defines a linear map.
This is a stronger version of DistribMulAction.toAddMonoidHom
.
Equations
- DistribMulAction.toLinearMap R M s = { toFun := HSMul.hSMul s, map_add' := ⋯, map_smul' := ⋯ }
Instances For
Each element of the monoid defines a module endomorphism.
This is a stronger version of DistribMulAction.toAddMonoidEnd
.
Equations
- DistribMulAction.toModuleEnd R M = { toFun := DistribMulAction.toLinearMap R M, map_one' := ⋯, map_mul' := ⋯ }
Instances For
Each element of the semiring defines a module endomorphism.
This is a stronger version of DistribMulAction.toModuleEnd
.
Equations
- Module.toModuleEnd R M = { toFun := DistribMulAction.toLinearMap R M, map_one' := ⋯, map_mul' := ⋯, map_zero' := ⋯, map_add' := ⋯ }
Instances For
The canonical (semi)ring isomorphism from Rᵐᵒᵖ
to Module.End R R
induced by the right
multiplication.
Equations
- Module.moduleEndSelf R = { toFun := DistribMulAction.toLinearMap R R, invFun := fun (f : Module.End R R) => MulOpposite.op (f 1), left_inv := ⋯, right_inv := ⋯, map_mul' := ⋯, map_add' := ⋯ }
Instances For
The canonical (semi)ring isomorphism from R
to Module.End Rᵐᵒᵖ R
induced by the left
multiplication.
Equations
- Module.moduleEndSelfOp R = { toFun := DistribMulAction.toLinearMap Rᵐᵒᵖ R, invFun := fun (f : Module.End Rᵐᵒᵖ R) => f 1, left_inv := ⋯, right_inv := ⋯, map_mul' := ⋯, map_add' := ⋯ }
Instances For
When f
is an R
-linear map taking values in S
, then fun b ↦ f b • x
is an R
-linear
map.
Instances For
Applying a linear map at v : M
, seen as S
-linear map from M →ₗ[R] M₂
to M₂
.
See LinearMap.applyₗ
for a version where S = R
.
Equations
- LinearMap.applyₗ' S = { toFun := fun (v : M) => { toFun := fun (f : M →ₗ[R] M₂) => f v, map_add' := ⋯, map_smul' := ⋯ }, map_zero' := ⋯, map_add' := ⋯ }
Instances For
Composition by f : M₂ → M₃
is a linear map from the space of linear maps M → M₂
to the space of linear maps M → M₃
.
Instances For
Applying a linear map at v : M
, seen as a linear map from M →ₗ[R] M₂
to M₂
.
See also LinearMap.applyₗ'
for a version that works with two different semirings.
This is the LinearMap
version of toAddMonoidHom.eval
.
Equations
- One or more equations did not get rendered due to their size.
Instances For
The family of linear maps M₂ → M
parameterised by f ∈ M₂ → R
, x ∈ M
, is linear in f
, x
.