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
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