Submodules of a module #
In this file we define
Submodule R M: a subset of aModuleMthat contains zero and is closed with respect to addition and scalar multiplication.Subspace k M: an abbreviation forSubmoduleassuming thatkis aField.
Tags #
submodule, subspace, linear map
structure
Submodule
(R : Type u)
(M : Type v)
[Semiring R]
[AddCommMonoid M]
[Module R M]
extends AddSubmonoid M, SubMulAction R M :
Type v
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
Equations
@[simp]
theorem
Submodule.carrier_eq_coe
{R : Type u}
{M : Type v}
[Semiring R]
[AddCommMonoid M]
[Module R M]
(s : Submodule R M)
:
def
Submodule.ofClass
{S : Type u_1}
{R : Type u_2}
{M : Type u_3}
[Semiring R]
[AddCommMonoid M]
[Module R M]
[SetLike S M]
[AddSubmonoidClass S M]
[SMulMemClass S R M]
(s : S)
:
Submodule R M
The actual Submodule obtained from an element of a SMulMemClass and AddSubmonoidClass.
Equations
Instances For
@[simp]
theorem
Submodule.coe_ofClass
{S : Type u_1}
{R : Type u_2}
{M : Type u_3}
[Semiring R]
[AddCommMonoid M]
[Module R M]
[SetLike S M]
[AddSubmonoidClass S M]
[SMulMemClass S R M]
(s : S)
:
@[instance 100]
instance
Submodule.instCanLiftSetCoeAndMemOfNatForallForallForallForallHAddForallForallForallHSMul
{R : Type u}
{M : Type v}
[Semiring R]
[AddCommMonoid M]
[Module R M]
:
instance
Submodule.addSubmonoidClass
{R : Type u}
{M : Type v}
[Semiring R]
[AddCommMonoid M]
[Module R M]
:
AddSubmonoidClass (Submodule R M) M
instance
Submodule.smulMemClass
{R : Type u}
{M : Type v}
[Semiring R]
[AddCommMonoid M]
[Module R M]
:
SMulMemClass (Submodule R M) R M
@[simp]
theorem
Submodule.mem_toAddSubmonoid
{R : Type u}
{M : Type v}
[Semiring R]
[AddCommMonoid M]
[Module R M]
(p : Submodule R M)
(x : M)
:
theorem
Submodule.toAddSubmonoid_injective
{R : Type u}
{M : Type v}
[Semiring R]
[AddCommMonoid M]
[Module R M]
:
@[simp]
theorem
Submodule.toAddSubmonoid_inj
{R : Type u}
{M : Type v}
[Semiring R]
[AddCommMonoid M]
[Module R M]
{p q : Submodule R M}
:
@[simp]
theorem
Submodule.coe_toAddSubmonoid
{R : Type u}
{M : Type v}
[Semiring R]
[AddCommMonoid M]
[Module R M]
(p : Submodule R M)
:
theorem
Submodule.toSubMulAction_injective
{R : Type u}
{M : Type v}
[Semiring R]
[AddCommMonoid M]
[Module R M]
:
theorem
Submodule.toSubMulAction_inj
{R : Type u}
{M : Type v}
[Semiring R]
[AddCommMonoid M]
[Module R M]
{p q : Submodule R M}
:
@[simp]
theorem
Submodule.coe_toSubMulAction
{R : Type u}
{M : Type v}
[Semiring R]
[AddCommMonoid M]
[Module R M]
(p : Submodule R M)
:
@[instance 75]
instance
SMulMemClass.toModule
{R : Type u}
{M : Type v}
[Semiring R]
[AddCommMonoid M]
[Module R M]
{A : Type u_1}
[SetLike A M]
[AddSubmonoidClass A M]
[SMulMemClass A R M]
(S' : A)
:
Module R ↥S'
A submodule of a Module is a Module.
Equations
def
SMulMemClass.toModule'
(S : Type u_2)
(R' : Type u_3)
(R : Type u_4)
(A : Type u_5)
[Semiring R]
[NonUnitalNonAssocSemiring A]
[Module R A]
[Semiring R']
[SMul R' R]
[Module R' A]
[IsScalarTower R' R A]
[SetLike S A]
[AddSubmonoidClass S A]
[SMulMemClass S R A]
(s : S)
:
Module R' ↥s
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
Instances For
theorem
Submodule.zero_mem
{R : Type u}
{M : Type v}
[Semiring R]
[AddCommMonoid M]
{module_M : Module R M}
(p : Submodule R M)
:
theorem
Submodule.smul_of_tower_mem
{S : Type u'}
{R : Type u}
{M : Type v}
[Semiring R]
[AddCommMonoid M]
{module_M : Module R M}
(p : Submodule R M)
{x : M}
[SMul S R]
[SMul S M]
[IsScalarTower S R M]
(r : S)
(h : x ∈ p)
:
@[simp]
theorem
Submodule.smul_mem_iff''
{R : Type u}
{M : Type v}
[Semiring R]
[AddCommMonoid M]
{module_M : Module R M}
(p : Submodule R M)
{r : R}
{x : M}
[Invertible r]
:
instance
Submodule.add
{R : Type u}
{M : Type v}
[Semiring R]
[AddCommMonoid M]
{module_M : Module R M}
(p : Submodule R M)
:
Add ↥p
Equations
instance
Submodule.zero
{R : Type u}
{M : Type v}
[Semiring R]
[AddCommMonoid M]
{module_M : Module R M}
(p : Submodule R M)
:
Zero ↥p
Equations
instance
Submodule.inhabited
{R : Type u}
{M : Type v}
[Semiring R]
[AddCommMonoid M]
{module_M : Module R M}
(p : Submodule R M)
:
Inhabited ↥p
Equations
instance
Submodule.smul
{S : Type u'}
{R : Type u}
{M : Type v}
[Semiring R]
[AddCommMonoid M]
{module_M : Module R M}
(p : Submodule R M)
[SMul S R]
[SMul S M]
[IsScalarTower S R M]
:
SMul S ↥p
Equations
instance
Submodule.isScalarTower
{S : Type u'}
{R : Type u}
{M : Type v}
[Semiring R]
[AddCommMonoid M]
{module_M : Module R M}
(p : Submodule R M)
[SMul S R]
[SMul S M]
[IsScalarTower S R M]
:
IsScalarTower S R ↥p
instance
Submodule.isScalarTower'
{S : Type u'}
{R : Type u}
{M : Type v}
[Semiring R]
[AddCommMonoid M]
{module_M : Module R M}
(p : Submodule R M)
{S' : Type u_1}
[SMul S R]
[SMul S M]
[SMul S' R]
[SMul S' M]
[SMul S S']
[IsScalarTower S' R M]
[IsScalarTower S S' M]
[IsScalarTower S R M]
:
IsScalarTower S S' ↥p
theorem
Submodule.nonempty
{R : Type u}
{M : Type v}
[Semiring R]
[AddCommMonoid M]
{module_M : Module R M}
(p : Submodule R M)
:
(↑p).Nonempty
@[simp]
theorem
Submodule.coe_zero
{R : Type u}
{M : Type v}
[Semiring R]
[AddCommMonoid M]
{module_M : Module R M}
{p : Submodule R M}
:
@[simp]
theorem
Submodule.coe_smul_of_tower
{S : Type u'}
{R : Type u}
{M : Type v}
[Semiring R]
[AddCommMonoid M]
{module_M : Module R M}
{p : Submodule R M}
[SMul S R]
[SMul S M]
[IsScalarTower S R M]
(r : S)
(x : ↥p)
:
theorem
Submodule.coe_mem
{R : Type u}
{M : Type v}
[Semiring R]
[AddCommMonoid M]
{module_M : Module R M}
{p : Submodule R M}
(x : ↥p)
:
instance
Submodule.addCommMonoid
{R : Type u}
{M : Type v}
[Semiring R]
[AddCommMonoid M]
{module_M : Module R M}
(p : Submodule R M)
:
Equations
instance
Submodule.isLeftCancelAdd
{R : Type u}
{M : Type v}
[Semiring R]
[AddCommMonoid M]
{module_M : Module R M}
(p : Submodule R M)
[IsLeftCancelAdd M]
:
instance
Submodule.isRightCancelAdd
{R : Type u}
{M : Type v}
[Semiring R]
[AddCommMonoid M]
{module_M : Module R M}
(p : Submodule R M)
[IsRightCancelAdd M]
:
instance
Submodule.isCancelAdd
{R : Type u}
{M : Type v}
[Semiring R]
[AddCommMonoid M]
{module_M : Module R M}
(p : Submodule R M)
[IsCancelAdd M]
:
IsCancelAdd ↥p
instance
Submodule.module'
{S : Type u'}
{R : Type u}
{M : Type v}
[Semiring R]
[AddCommMonoid M]
{module_M : Module R M}
(p : Submodule R M)
[Semiring S]
[SMul S R]
[Module S M]
[IsScalarTower S R M]
:
Module S ↥p
Equations
instance
Submodule.module
{R : Type u}
{M : Type v}
[Semiring R]
[AddCommMonoid M]
{module_M : Module R M}
(p : Submodule R M)
:
Module R ↥p
Equations
instance
Submodule.addSubgroupClass
{R : Type u}
{M : Type v}
[Ring R]
[AddCommGroup M]
[Module R M]
:
AddSubgroupClass (Submodule R M) M
def
Submodule.toAddSubgroup
{R : Type u}
{M : Type v}
[Ring R]
[AddCommGroup M]
{module_M : Module R M}
(p : Submodule R M)
:
Reinterpret a submodule as an additive subgroup.
Equations
Instances For
@[simp]
theorem
Submodule.coe_toAddSubgroup
{R : Type u}
{M : Type v}
[Ring R]
[AddCommGroup M]
{module_M : Module R M}
(p : Submodule R M)
:
@[simp]
theorem
Submodule.mem_toAddSubgroup
{R : Type u}
{M : Type v}
[Ring R]
[AddCommGroup M]
{module_M : Module R M}
(p : Submodule R M)
{x : M}
:
theorem
Submodule.toAddSubgroup_injective
{R : Type u}
{M : Type v}
[Ring R]
[AddCommGroup M]
{module_M : Module R M}
:
@[simp]
theorem
Submodule.toAddSubgroup_inj
{R : Type u}
{M : Type v}
[Ring R]
[AddCommGroup M]
{module_M : Module R M}
(p p' : Submodule R M)
:
instance
Submodule.addCommGroup
{R : Type u}
{M : Type v}
[Ring R]
[AddCommGroup M]
{module_M : Module R M}
(p : Submodule R M)
:
AddCommGroup ↥p
Equations
@[instance 75]
instance
SubmoduleClass.module'
{S : Type u'}
{R : Type u}
{M : Type v}
{T : Type u_1}
[Semiring R]
[AddCommMonoid M]
[Semiring S]
[Module R M]
[SMul S R]
[Module S M]
[IsScalarTower S R M]
[SetLike T M]
[AddSubmonoidClass T M]
[SMulMemClass T R M]
(t : T)
:
Module S ↥t
Equations
@[instance 75]
instance
SubmoduleClass.module
{S : Type u'}
{R : Type u}
{M : Type v}
[Semiring R]
[AddCommMonoid M]
[Module R M]
[SetLike S M]
[AddSubmonoidClass S M]
[SMulMemClass S R M]
(s : S)
:
Module R ↥s