Submodules of a module #
In this file we define
-
Submodule R M
: a subset of aModule
M
that contains zero and is closed with respect to addition and scalar multiplication. -
Subspace k M
: an abbreviation forSubmodule
assuming thatk
is aField
.
Tags #
submodule, subspace, linear map
A submodule of a module is one which is closed under vector operations. This is a sufficient condition for the subset of vectors in the submodule to themselves form a module.
Instances For
Reinterpret a Submodule
as a SubMulAction
.
Equations
- Submodule.toSubMulAction self = { carrier := self.carrier, smul_mem' := ⋯ }
Instances For
Equations
- ⋯ = ⋯
Equations
- ⋯ = ⋯
Copy of a submodule with a new carrier
equal to the old one. Useful to fix definitional
equalities.
Equations
- Submodule.copy p s hs = { toAddSubmonoid := { toAddSubsemigroup := { carrier := s, add_mem' := ⋯ }, zero_mem' := ⋯ }, smul_mem' := ⋯ }
Instances For
A submodule of a Module
is a Module
.
Equations
This can't be an instance because Lean wouldn't know how to find R
, but we can still use
this to manually derive Module
on specific types.
Equations
- SMulMemClass.toModule' S R' R A s = SMulMemClass.toModule s
Instances For
Equations
- Submodule.add p = { add := fun (x y : ↥p) => { val := ↑x + ↑y, property := ⋯ } }
Equations
- Submodule.zero p = { zero := { val := 0, property := ⋯ } }
Equations
- Submodule.inhabited p = { default := 0 }
Equations
- Submodule.smul p = { smul := fun (c : S) (x : ↥p) => { val := c • ↑x, property := ⋯ } }
Equations
- ⋯ = ⋯
Equations
- ⋯ = ⋯
Equations
- ⋯ = ⋯
Equations
- Submodule.addCommMonoid p = let __src := AddSubmonoid.toAddCommMonoid p.toAddSubmonoid; AddCommMonoid.mk ⋯
Equations
- Submodule.module' p = let __src := let_fun this := SubMulAction.mulAction' (Submodule.toSubMulAction p); this; Module.mk ⋯ ⋯
Equations
Equations
- ⋯ = ⋯
Additive actions by Submodule
s #
These instances transfer the action by an element m : M
of an R
-module M
written as m +ᵥ a
onto the action by an element s : S
of a submodule S : Submodule R M
such that
s +ᵥ a = (s : M) +ᵥ a
.
These instances work particularly well in conjunction with AddGroup.toAddAction
, enabling
s +ᵥ m
as an alias for ↑s + m
.
Equations
- Submodule.instVAddSubtypeMemSubmoduleInstMembershipSetLike p = AddSubmonoid.vadd p.toAddSubmonoid
Equations
- ⋯ = ⋯
Equations
- ⋯ = ⋯
Equations
- ⋯ = ⋯
Reinterpret a submodule as an additive subgroup.
Equations
- Submodule.toAddSubgroup p = let __src := p.toAddSubmonoid; { toAddSubmonoid := __src, neg_mem' := ⋯ }
Instances For
Equations
- Submodule.addCommGroup p = let __src := AddSubgroup.toAddCommGroup (Submodule.toAddSubgroup p); AddCommGroup.mk ⋯