# Isomorphism theorems for modules. #

• The Noether's first, second, and third isomorphism theorems for modules are proved as LinearMap.quotKerEquivRange, LinearMap.quotientInfEquivSupQuotient and Submodule.quotientQuotientEquivQuotient.

The first and second isomorphism theorems for modules.

noncomputable def LinearMap.quotKerEquivRange {R : Type u_1} {M : Type u_2} {M₂ : Type u_3} [Ring R] [] [] [Module R M] [Module R M₂] (f : M →ₗ[R] M₂) :
() ≃ₗ[R] ()

The first isomorphism law for modules. The quotient of M by the kernel of f is linearly equivalent to the range of f.

Equations
Instances For
noncomputable def LinearMap.quotKerEquivOfSurjective {R : Type u_1} {M : Type u_2} {M₂ : Type u_3} [Ring R] [] [] [Module R M] [Module R M₂] (f : M →ₗ[R] M₂) (hf : ) :
() ≃ₗ[R] M₂

The first isomorphism theorem for surjective linear maps.

Equations
• f.quotKerEquivOfSurjective hf = f.quotKerEquivRange.trans ()
Instances For
@[simp]
theorem LinearMap.quotKerEquivRange_apply_mk {R : Type u_1} {M : Type u_2} {M₂ : Type u_3} [Ring R] [] [] [Module R M] [Module R M₂] (f : M →ₗ[R] M₂) (x : M) :
(f.quotKerEquivRange ) = f x
@[simp]
theorem LinearMap.quotKerEquivRange_symm_apply_image {R : Type u_1} {M : Type u_2} {M₂ : Type u_3} [Ring R] [] [] [Module R M] [Module R M₂] (f : M →ₗ[R] M₂) (x : M) (h : f x ) :
f.quotKerEquivRange.symm f x, h = ().mkQ x
@[reducible, inline]
abbrev LinearMap.subToSupQuotient {R : Type u_1} {M : Type u_2} [Ring R] [] [Module R M] (p : ) (p' : ) :
p →ₗ[R] (p p') Submodule.comap (p p').subtype p'

Linear map from p to p+p'/p' where p p' are submodules of R

Equations
Instances For
theorem LinearMap.comap_leq_ker_subToSupQuotient {R : Type u_1} {M : Type u_2} [Ring R] [] [Module R M] (p : ) (p' : ) :
Submodule.comap p.subtype (p p')
def LinearMap.quotientInfToSupQuotient {R : Type u_1} {M : Type u_2} [Ring R] [] [Module R M] (p : ) (p' : ) :
p Submodule.comap p.subtype (p p') →ₗ[R] (p p') Submodule.comap (p p').subtype p'

Canonical linear map from the quotient p/(p ∩ p') to (p+p')/p', mapping x + (p ∩ p') to x + p', where p and p' are submodules of an ambient module.

Equations
Instances For
theorem LinearMap.quotientInfEquivSupQuotient_injective {R : Type u_1} {M : Type u_2} [Ring R] [] [Module R M] (p : ) (p' : ) :
theorem LinearMap.quotientInfEquivSupQuotient_surjective {R : Type u_1} {M : Type u_2} [Ring R] [] [Module R M] (p : ) (p' : ) :
noncomputable def LinearMap.quotientInfEquivSupQuotient {R : Type u_1} {M : Type u_2} [Ring R] [] [Module R M] (p : ) (p' : ) :
(p Submodule.comap p.subtype (p p')) ≃ₗ[R] (p p') Submodule.comap (p p').subtype p'

Second Isomorphism Law : the canonical map from p/(p ∩ p') to (p+p')/p' as a linear isomorphism.

Equations
Instances For
theorem LinearMap.coe_quotientInfToSupQuotient {R : Type u_1} {M : Type u_2} [Ring R] [] [Module R M] (p : ) (p' : ) :
@[simp]
theorem LinearMap.quotientInfEquivSupQuotient_apply_mk {R : Type u_1} {M : Type u_2} [Ring R] [] [Module R M] (p : ) (p' : ) (x : p) :
let map := ; = Submodule.Quotient.mk (map x)
theorem LinearMap.quotientInfEquivSupQuotient_symm_apply_left {R : Type u_1} {M : Type u_2} [Ring R] [] [Module R M] (p : ) (p' : ) (x : (p p')) (hx : x p) :
.symm = Submodule.Quotient.mk x, hx
theorem LinearMap.quotientInfEquivSupQuotient_symm_apply_eq_zero_iff {R : Type u_1} {M : Type u_2} [Ring R] [] [Module R M] {p : } {p' : } {x : (p p')} :
.symm = 0 x p'
theorem LinearMap.quotientInfEquivSupQuotient_symm_apply_right {R : Type u_1} {M : Type u_2} [Ring R] [] [Module R M] (p : ) (p' : ) {x : (p p')} (hx : x p') :
.symm = 0

The third isomorphism theorem for modules.

def Submodule.quotientQuotientEquivQuotientAux {R : Type u_1} {M : Type u_2} [Ring R] [] [Module R M] (S : ) (T : ) (h : S T) :
(M S) Submodule.map S.mkQ T →ₗ[R] M T

The map from the third isomorphism theorem for modules: (M / S) / (T / S) → M / T.

Equations
• S.quotientQuotientEquivQuotientAux T h = (Submodule.map S.mkQ T).liftQ (S.mapQ T LinearMap.id h)
Instances For
@[simp]
theorem Submodule.quotientQuotientEquivQuotientAux_mk {R : Type u_1} {M : Type u_2} [Ring R] [] [Module R M] (S : ) (T : ) (h : S T) (x : M S) :
(S.quotientQuotientEquivQuotientAux T h) = (S.mapQ T LinearMap.id h) x
theorem Submodule.quotientQuotientEquivQuotientAux_mk_mk {R : Type u_1} {M : Type u_2} [Ring R] [] [Module R M] (S : ) (T : ) (h : S T) (x : M) :
(S.quotientQuotientEquivQuotientAux T h) =
def Submodule.quotientQuotientEquivQuotient {R : Type u_1} {M : Type u_2} [Ring R] [] [Module R M] (S : ) (T : ) (h : S T) :
((M S) Submodule.map S.mkQ T) ≃ₗ[R] M T

Noether's third isomorphism theorem for modules: (M / S) / (T / S) ≃ M / T.

Equations
• One or more equations did not get rendered due to their size.
Instances For
def Submodule.quotientQuotientEquivQuotientSup {R : Type u_1} {M : Type u_2} [Ring R] [] [Module R M] (S : ) (T : ) :
((M S) Submodule.map S.mkQ T) ≃ₗ[R] M S T

Essentially the same equivalence as in the third isomorphism theorem, except restated in terms of suprema/addition of submodules instead of ≤.

Equations
• S.quotientQuotientEquivQuotientSup T = ((Submodule.map S.mkQ T).quotEquivOfEq (Submodule.map S.mkQ (S T)) ).trans (S.quotientQuotientEquivQuotient (S T) )
Instances For
theorem Submodule.card_quotient_mul_card_quotient {R : Type u_1} {M : Type u_2} [Ring R] [] [Module R M] (S : ) (T : ) (hST : T S) [DecidablePred fun (x : M T) => x Submodule.map T.mkQ S] [Fintype (M S)] [Fintype (M T)] :

Corollary of the third isomorphism theorem: [S : T] [M : S] = [M : T]