The concrete (co)kernels in the category of modules are (co)kernels in the categorical sense. #
The category of R-modules has kernels, given by the inclusion of the kernel submodule.
The category of R-modules has cokernels, given by the projection onto the quotient.
noncomputable def
ModuleCat.kernelIsoKer
{R : Type u}
[Ring R]
{G : ModuleCat R}
{H : ModuleCat R}
(f : G ⟶ H)
:
The categorical kernel of a morphism in ModuleCat
agrees with the usual module-theoretical kernel.
Equations
- ModuleCat.kernelIsoKer f = CategoryTheory.Limits.limit.isoLimitCone { cone := ModuleCat.kernelCone f, isLimit := ModuleCat.kernelIsLimit f }
Instances For
theorem
ModuleCat.kernelIsoKer_inv_kernel_ι_apply
{R : Type u}
[Ring R]
{G : ModuleCat R}
{H : ModuleCat R}
(f : G ⟶ H)
(x : (CategoryTheory.forget (ModuleCat R)).obj (ModuleCat.kernelCone f).pt)
:
(CategoryTheory.Limits.kernel.ι f)
((CategoryTheory.Limits.limit.isoLimitCone
{ cone := ModuleCat.kernelCone f, isLimit := ModuleCat.kernelIsLimit f }).inv
x) = (CategoryTheory.Limits.Fork.ι (ModuleCat.kernelCone f)) x
theorem
ModuleCat.kernelIsoKer_hom_ker_subtype_apply
{R : Type u}
[Ring R]
{G : ModuleCat R}
{H : ModuleCat R}
(f : G ⟶ H)
(x : (CategoryTheory.forget (ModuleCat R)).obj (CategoryTheory.Limits.limit.cone (CategoryTheory.Limits.parallelPair f 0)).pt)
:
noncomputable def
ModuleCat.cokernelIsoRangeQuotient
{R : Type u}
[Ring R]
{G : ModuleCat R}
{H : ModuleCat R}
(f : G ⟶ H)
:
CategoryTheory.Limits.cokernel f ≅ ModuleCat.of R (↑H ⧸ LinearMap.range f)
The categorical cokernel of a morphism in ModuleCat
agrees with the usual module-theoretical quotient.
Equations
- ModuleCat.cokernelIsoRangeQuotient f = CategoryTheory.Limits.colimit.isoColimitCocone { cocone := ModuleCat.cokernelCocone f, isColimit := ModuleCat.cokernelIsColimit f }
Instances For
theorem
ModuleCat.cokernel_π_cokernelIsoRangeQuotient_hom_apply
{R : Type u}
[Ring R]
{G : ModuleCat R}
{H : ModuleCat R}
(f : G ⟶ H)
(x : (CategoryTheory.forget (ModuleCat R)).obj
((CategoryTheory.Limits.parallelPair f 0).obj CategoryTheory.Limits.WalkingParallelPair.one))
:
(CategoryTheory.Limits.colimit.isoColimitCocone
{ cocone := ModuleCat.cokernelCocone f, isColimit := ModuleCat.cokernelIsColimit f }).hom
((CategoryTheory.Limits.cokernel.π f) x) = (CategoryTheory.Limits.Cofork.π (ModuleCat.cokernelCocone f)) x
theorem
ModuleCat.range_mkQ_cokernelIsoRangeQuotient_inv_apply
{R : Type u}
[Ring R]
{G : ModuleCat R}
{H : ModuleCat R}
(f : G ⟶ H)
(x : (CategoryTheory.forget (ModuleCat R)).obj
((CategoryTheory.Limits.parallelPair f 0).obj CategoryTheory.Limits.WalkingParallelPair.one))
:
(CategoryTheory.Limits.colimit.isoColimitCocone
{ cocone := ModuleCat.cokernelCocone f, isColimit := ModuleCat.cokernelIsColimit f }).inv
((CategoryTheory.Limits.Cofork.π (ModuleCat.cokernelCocone f)) x) = (CategoryTheory.Limits.cokernel.π f) x