Quotients by submodules #
- If
p
is a submodule ofM
,M ⧸ p
is the quotient ofM
with respect top
: that is, elements ofM
are identified if their difference is inp
. This is itself a module.
Main definitions #
Submodule.Quotient.mk
: a function sending an element ofM
toM ⧸ p
Submodule.Quotient.module
:M ⧸ p
is a moduleSubmodule.Quotient.mkQ
: a linear map sending an element ofM
toM ⧸ p
Submodule.quotEquivOfEq
: ifp
andp'
are equal, their quotients are equivalent
def
Submodule.quotientRel
{R : Type u_1}
{M : Type u_2}
[Ring R]
[AddCommGroup M]
[Module R M]
(p : Submodule R M)
:
Setoid M
The equivalence relation associated to a submodule p
, defined by x ≈ y
iff -x + y ∈ p
.
Note this is equivalent to y - x ∈ p
, but defined this way to be defeq to the AddSubgroup
version, where commutativity can't be assumed.
Equations
Instances For
theorem
Submodule.quotientRel_def
{R : Type u_1}
{M : Type u_2}
[Ring R]
[AddCommGroup M]
[Module R M]
(p : Submodule R M)
{x y : M}
:
instance
Submodule.hasQuotient
{R : Type u_1}
{M : Type u_2}
[Ring R]
[AddCommGroup M]
[Module R M]
:
HasQuotient M (Submodule R M)
The quotient of a module M
by a submodule p ⊆ M
.
Equations
def
Submodule.Quotient.mk
{R : Type u_1}
{M : Type u_2}
[Ring R]
[AddCommGroup M]
[Module R M]
{p : Submodule R M}
:
M → M ⧸ p
Map associating to an element of M
the corresponding element of M/p
,
when p
is a submodule of M
.
Equations
Instances For
theorem
Submodule.Quotient.mk'_eq_mk'
{R : Type u_1}
{M : Type u_2}
[Ring R]
[AddCommGroup M]
[Module R M]
{p : Submodule R M}
(x : M)
:
theorem
Submodule.Quotient.mk''_eq_mk
{R : Type u_1}
{M : Type u_2}
[Ring R]
[AddCommGroup M]
[Module R M]
{p : Submodule R M}
(x : M)
:
theorem
Submodule.Quotient.quot_mk_eq_mk
{R : Type u_1}
{M : Type u_2}
[Ring R]
[AddCommGroup M]
[Module R M]
{p : Submodule R M}
(x : M)
:
instance
Submodule.Quotient.instZeroQuotient
{R : Type u_1}
{M : Type u_2}
[Ring R]
[AddCommGroup M]
[Module R M]
(p : Submodule R M)
:
Equations
instance
Submodule.Quotient.instInhabitedQuotient
{R : Type u_1}
{M : Type u_2}
[Ring R]
[AddCommGroup M]
[Module R M]
(p : Submodule R M)
:
Equations
@[simp]
theorem
Submodule.Quotient.mk_zero
{R : Type u_1}
{M : Type u_2}
[Ring R]
[AddCommGroup M]
[Module R M]
(p : Submodule R M)
:
instance
Submodule.Quotient.addCommGroup
{R : Type u_1}
{M : Type u_2}
[Ring R]
[AddCommGroup M]
[Module R M]
(p : Submodule R M)
:
AddCommGroup (M ⧸ p)
Equations
theorem
Submodule.Quotient.subsingleton_iff
{R : Type u_1}
{M : Type u_2}
[Ring R]
[AddCommGroup M]
[Module R M]
(p : Submodule R M)
:
instance
Submodule.Quotient.instSMul'
{R : Type u_1}
{M : Type u_2}
[Ring R]
[AddCommGroup M]
[Module R M]
{S : Type u_3}
[SMul S R]
[SMul S M]
[IsScalarTower S R M]
(P : Submodule R M)
:
Equations
instance
Submodule.Quotient.instSMul
{R : Type u_1}
{M : Type u_2}
[Ring R]
[AddCommGroup M]
[Module R M]
(P : Submodule R M)
:
Shortcut to help the elaborator in the common case.
Equations
instance
Submodule.Quotient.smulCommClass
{R : Type u_1}
{M : Type u_2}
[Ring R]
[AddCommGroup M]
[Module R M]
{S : Type u_3}
[SMul S R]
[SMul S M]
[IsScalarTower S R M]
(P : Submodule R M)
(T : Type u_4)
[SMul T R]
[SMul T M]
[IsScalarTower T R M]
[SMulCommClass S T M]
:
SMulCommClass S T (M ⧸ P)
instance
Submodule.Quotient.isScalarTower
{R : Type u_1}
{M : Type u_2}
[Ring R]
[AddCommGroup M]
[Module R M]
{S : Type u_3}
[SMul S R]
[SMul S M]
[IsScalarTower S R M]
(P : Submodule R M)
(T : Type u_4)
[SMul T R]
[SMul T M]
[IsScalarTower T R M]
[SMul S T]
[IsScalarTower S T M]
:
IsScalarTower S T (M ⧸ P)
instance
Submodule.Quotient.isCentralScalar
{R : Type u_1}
{M : Type u_2}
[Ring R]
[AddCommGroup M]
[Module R M]
{S : Type u_3}
[SMul S R]
[SMul S M]
[IsScalarTower S R M]
(P : Submodule R M)
[SMul Sᵐᵒᵖ R]
[SMul Sᵐᵒᵖ M]
[IsScalarTower Sᵐᵒᵖ R M]
[IsCentralScalar S M]
:
IsCentralScalar S (M ⧸ P)
instance
Submodule.Quotient.mulAction'
{R : Type u_1}
{M : Type u_2}
[Ring R]
[AddCommGroup M]
[Module R M]
{S : Type u_3}
[Monoid S]
[SMul S R]
[MulAction S M]
[IsScalarTower S R M]
(P : Submodule R M)
:
Equations
instance
Submodule.Quotient.mulAction
{R : Type u_1}
{M : Type u_2}
[Ring R]
[AddCommGroup M]
[Module R M]
(P : Submodule R M)
:
Equations
instance
Submodule.Quotient.smulZeroClass'
{R : Type u_1}
{M : Type u_2}
[Ring R]
[AddCommGroup M]
[Module R M]
{S : Type u_3}
[SMul S R]
[SMulZeroClass S M]
[IsScalarTower S R M]
(P : Submodule R M)
:
SMulZeroClass S (M ⧸ P)
Equations
instance
Submodule.Quotient.smulZeroClass
{R : Type u_1}
{M : Type u_2}
[Ring R]
[AddCommGroup M]
[Module R M]
(P : Submodule R M)
:
SMulZeroClass R (M ⧸ P)
Equations
instance
Submodule.Quotient.distribSMul'
{R : Type u_1}
{M : Type u_2}
[Ring R]
[AddCommGroup M]
[Module R M]
{S : Type u_3}
[SMul S R]
[DistribSMul S M]
[IsScalarTower S R M]
(P : Submodule R M)
:
DistribSMul S (M ⧸ P)
Equations
instance
Submodule.Quotient.distribSMul
{R : Type u_1}
{M : Type u_2}
[Ring R]
[AddCommGroup M]
[Module R M]
(P : Submodule R M)
:
DistribSMul R (M ⧸ P)
Equations
instance
Submodule.Quotient.distribMulAction'
{R : Type u_1}
{M : Type u_2}
[Ring R]
[AddCommGroup M]
[Module R M]
{S : Type u_3}
[Monoid S]
[SMul S R]
[DistribMulAction S M]
[IsScalarTower S R M]
(P : Submodule R M)
:
DistribMulAction S (M ⧸ P)
Equations
instance
Submodule.Quotient.distribMulAction
{R : Type u_1}
{M : Type u_2}
[Ring R]
[AddCommGroup M]
[Module R M]
(P : Submodule R M)
:
DistribMulAction R (M ⧸ P)
Equations
instance
Submodule.Quotient.module'
{R : Type u_1}
{M : Type u_2}
[Ring R]
[AddCommGroup M]
[Module R M]
{S : Type u_3}
[Semiring S]
[SMul S R]
[Module S M]
[IsScalarTower S R M]
(P : Submodule R M)
:
Equations
instance
Submodule.Quotient.module
{R : Type u_1}
{M : Type u_2}
[Ring R]
[AddCommGroup M]
[Module R M]
(P : Submodule R M)
:
Equations
theorem
Submodule.Quotient.mk_surjective
{R : Type u_1}
{M : Type u_2}
[Ring R]
[AddCommGroup M]
[Module R M]
(p : Submodule R M)
:
theorem
Submodule.quot_hom_ext
{R : Type u_1}
{M : Type u_2}
[Ring R]
[AddCommGroup M]
[Module R M]
(p : Submodule R M)
{M₂ : Type u_3}
[AddCommGroup M₂]
[Module R M₂]
(f g : M ⧸ p →ₗ[R] M₂)
(h : ∀ (x : M), f (Quotient.mk x) = g (Quotient.mk x))
:
@[simp]
theorem
Submodule.mkQ_apply
{R : Type u_1}
{M : Type u_2}
[Ring R]
[AddCommGroup M]
[Module R M]
(p : Submodule R M)
(x : M)
:
theorem
Submodule.mkQ_surjective
{R : Type u_1}
{M : Type u_2}
[Ring R]
[AddCommGroup M]
[Module R M]
(p : Submodule R M)
:
theorem
Submodule.linearMap_qext
{R : Type u_1}
{M : Type u_2}
[Ring R]
[AddCommGroup M]
[Module R M]
(p : Submodule R M)
{R₂ : Type u_3}
{M₂ : Type u_4}
[Ring R₂]
[AddCommGroup M₂]
[Module R₂ M₂]
{τ₁₂ : R →+* R₂}
⦃f g : M ⧸ p →ₛₗ[τ₁₂] M₂⦄
(h : f ∘ₛₗ p.mkQ = g ∘ₛₗ p.mkQ)
:
Two LinearMap
s from a quotient module are equal if their compositions with
submodule.mkQ
are equal.
See note [partially-applied ext lemmas].
@[simp]
theorem
Submodule.quotEquivOfEq_mk
{R : Type u_1}
{M : Type u_2}
[Ring R]
[AddCommGroup M]
[Module R M]
(p p' : Submodule R M)
(h : p = p')
(x : M)
: