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.
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
- p.quotientRel = QuotientAddGroup.leftRel p.toAddSubgroup
Instances For
The quotient of a module M
by a submodule p ⊆ M
.
Map associating to an element of M
the corresponding element of M/p
,
when p
is a submodule of M
.
Equations
- Submodule.Quotient.mk = Quotient.mk''
Instances For
Equations
- Submodule.Quotient.instZeroQuotient p = { zero := Quotient.mk'' 0 }
Equations
- Submodule.Quotient.instInhabitedQuotient p = { default := 0 }
Equations
- Submodule.Quotient.addCommGroup p = QuotientAddGroup.Quotient.addCommGroup p.toAddSubgroup
Equations
- Submodule.Quotient.instSMul' P = { smul := fun (a : S) => Quotient.map' (fun (x : M) => a • x) ⋯ }
Shortcut to help the elaborator in the common case.
Equations
Equations
- ⋯ = ⋯
Equations
- ⋯ = ⋯
Equations
- ⋯ = ⋯
Equations
- Submodule.Quotient.mulAction' P = let __src := Function.Surjective.mulAction Submodule.Quotient.mk ⋯ ⋯; MulAction.mk ⋯ ⋯
Equations
Equations
- Submodule.Quotient.smulZeroClass' P = { toFun := Submodule.Quotient.mk, map_zero' := ⋯ }.smulZeroClass ⋯
Equations
- Submodule.Quotient.distribSMul' P = let __src := Function.Surjective.distribSMul { toFun := Submodule.Quotient.mk, map_zero' := ⋯, map_add' := ⋯ } ⋯ ⋯; DistribSMul.mk ⋯
Equations
- Submodule.Quotient.distribMulAction' P = let __src := Function.Surjective.distribMulAction { toFun := Submodule.Quotient.mk, map_zero' := ⋯, map_add' := ⋯ } ⋯ ⋯; DistribMulAction.mk ⋯ ⋯
Equations
- Submodule.Quotient.module' P = let __src := Function.Surjective.module S { toFun := Submodule.Quotient.mk, map_zero' := ⋯, map_add' := ⋯ } ⋯ ⋯; Module.mk ⋯ ⋯
Equations
The quotient of P
as an S
-submodule is the same as the quotient of P
as an R
-submodule,
where P : Submodule R M
.
Equations
- Submodule.Quotient.restrictScalarsEquiv S P = let __src := Quotient.congrRight ⋯; { toFun := __src.toFun, map_add' := ⋯, map_smul' := ⋯, invFun := __src.invFun, left_inv := ⋯, right_inv := ⋯ }
Instances For
Equations
- Submodule.QuotientTop.fintype = Fintype.ofSubsingleton 0
Equations
- Submodule.Quotient.fintype S = Quotient.fintype S.quotientRel
The map from a module M
to the quotient of M
by a submodule p
as a linear map.
Equations
- p.mkQ = { toFun := Submodule.Quotient.mk, map_add' := ⋯, map_smul' := ⋯ }
Instances For
Two LinearMap
s from a quotient module are equal if their compositions with
submodule.mkQ
are equal.
See note [partially-applied ext lemmas].
The map from the quotient of M
by a submodule p
to M₂
induced by a linear map f : M → M₂
vanishing on p
, as a linear map.
Equations
- p.liftQ f h = let __src := QuotientAddGroup.lift p.toAddSubgroup f.toAddMonoidHom h; { toFun := (↑__src).toFun, map_add' := ⋯, map_smul' := ⋯ }
Instances For
Special case of submodule.liftQ
when p
is the span of x
. In this case, the condition on
f
simply becomes vanishing at x
.
Equations
- Submodule.liftQSpanSingleton x f h = (Submodule.span R {x}).liftQ f ⋯
Instances For
The map from the quotient of M
by submodule p
to the quotient of M₂
by submodule q
along
f : M → M₂
is linear.
Equations
- p.mapQ q f h = p.liftQ (q.mkQ.comp f) ⋯
Instances For
Given submodules p ⊆ M
, p₂ ⊆ M₂
, p₃ ⊆ M₃
and maps f : M → M₂
, g : M₂ → M₃
inducing
mapQ f : M ⧸ p → M₂ ⧸ p₂
and mapQ g : M₂ ⧸ p₂ → M₃ ⧸ p₃
then
mapQ (g ∘ f) = (mapQ g) ∘ (mapQ f)
.
The correspondence theorem for modules: there is an order isomorphism between submodules of the
quotient of M
by p
, and submodules of M
larger than p
.
Equations
- One or more equations did not get rendered due to their size.
Instances For
The ordering on submodules of the quotient of M
by p
embeds into the ordering on submodules
of M
.
Equations
- p.comapMkQOrderEmbedding = (RelIso.toRelEmbedding p.comapMkQRelIso).trans (Subtype.relEmbedding (fun (x x_1 : Submodule R M) => x ≤ x_1) fun (p' : Submodule R M) => p ≤ p')
Instances For
If P
is a submodule of M
and Q
a submodule of N
,
and f : M ≃ₗ N
maps P
to Q
, then M ⧸ P
is equivalent to N ⧸ Q
.
Equations
- Submodule.Quotient.equiv P Q f hf = let __src := P.mapQ Q ↑f ⋯; { toFun := ⇑(P.mapQ Q ↑f ⋯), map_add' := ⋯, map_smul' := ⋯, invFun := ⇑(Q.mapQ P ↑f.symm ⋯), left_inv := ⋯, right_inv := ⋯ }
Instances For
An epimorphism is surjective.
If p = ⊥
, then M / p ≃ₗ[R] M
.
Equations
- p.quotEquivOfEqBot hp = LinearEquiv.ofLinear (p.liftQ LinearMap.id ⋯) p.mkQ ⋯ ⋯
Instances For
Quotienting by equal submodules gives linearly equivalent quotients.
Equations
- p.quotEquivOfEq p' h = let __src := Quotient.congr (Equiv.refl M) ⋯; { toFun := __src.toFun, map_add' := ⋯, map_smul' := ⋯, invFun := __src.invFun, left_inv := ⋯, right_inv := ⋯ }
Instances For
Given modules M
, M₂
over a commutative ring, together with submodules p ⊆ M
, q ⊆ M₂
,
the natural map $\{f ∈ Hom(M, M₂) | f(p) ⊆ q \} \to Hom(M/p, M₂/q)$ is linear.
Equations
- p.mapQLinear q = { toFun := fun (f : ↥(p.compatibleMaps q)) => p.mapQ q ↑f ⋯, map_add' := ⋯, map_smul' := ⋯ }