Quotients by submodules #
THIS FILE IS SYNCHRONIZED WITH MATHLIB4. Any changes to this file require a corresponding PR to mathlib4.
- 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 be defeq to the add_subgroup
version, where commutativity can't be assumed.
Equations
The quotient of a module M
by a submodule p ⊆ M
.
Equations
- submodule.has_quotient = {quotient' := λ (p : submodule R M), quotient p.quotient_rel}
Map associating to an element of M
the corresponding element of M/p
,
when p
is a submodule of M
.
Equations
Equations
Equations
Equations
- submodule.quotient.has_smul' P = {smul := λ (a : S), quotient.map' (has_smul.smul a) _}
Shortcut to help the elaborator in the common case.
Equations
Equations
Equations
Equations
- submodule.quotient.distrib_smul' P = function.surjective.distrib_smul {to_fun := submodule.quotient.mk P, map_zero' := _, map_add' := _} _ _
Equations
Equations
Equations
- submodule.quotient.module' P = function.surjective.module S {to_fun := submodule.quotient.mk P, map_zero' := _, map_add' := _} _ _
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.restrict_scalars_equiv S P = {to_fun := (quotient.congr_right _).to_fun, map_add' := _, map_smul' := _, inv_fun := (quotient.congr_right _).inv_fun, left_inv := _, right_inv := _}
Equations
- submodule.quotient_top.unique = {to_inhabited := {default := 0}, uniq := _}
Equations
Equations
Two linear_map
s from a quotient module are equal if their compositions with
submodule.mkq
are equal.
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 = {to_fun := (quotient_add_group.lift p.to_add_subgroup f.to_add_monoid_hom h).to_fun, map_add' := _, map_smul' := _}
Special case of liftq
when p
is the span of x
. In this case, the condition on f
simply
becomes vanishing at x
.
Equations
- submodule.liftq_span_singleton x f h = (submodule.span R {x}).liftq f _
The map from the quotient of M
by submodule p
to the quotient of M₂
by submodule q
along
f : M → M₂
is linear.
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
- submodule.comap_mkq.rel_iso p = {to_equiv := {to_fun := λ (p' : submodule R (M ⧸ p)), ⟨submodule.comap p.mkq p', _⟩, inv_fun := λ (q : {p' // p ≤ p'}), submodule.map p.mkq ↑q, left_inv := _, right_inv := _}, map_rel_iff' := _}
The ordering on submodules of the quotient of M
by p
embeds into the ordering on submodules
of M
.
Equations
- submodule.comap_mkq.order_embedding p = (rel_iso.to_rel_embedding (submodule.comap_mkq.rel_iso p)).trans (subtype.rel_embedding has_le.le (λ (p' : submodule R M), p ≤ p'))
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
.
An epimorphism is surjective.
If p = ⊥
, then M / p ≃ₗ[R] M
.
Equations
- p.quot_equiv_of_eq_bot hp = linear_equiv.of_linear (p.liftq linear_map.id _) p.mkq _ _
Quotienting by equal submodules gives linearly equivalent quotients.
Equations
- p.quot_equiv_of_eq p' h = {to_fun := (quotient.congr (equiv.refl M) _).to_fun, map_add' := _, map_smul' := _, inv_fun := (quotient.congr (equiv.refl M) _).inv_fun, left_inv := _, right_inv := _}
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.mapq_linear q = {to_fun := λ (f : ↥(p.compatible_maps q)), p.mapq q f.val _, map_add' := _, map_smul' := _}