5. QuasiAbelian
5.1. IsStrict
A morphism f : X \to Y in a category with kernels and cokernels is strict if the canonical comparison morphism from the (abelian) coimage to the (abelian) image is an isomorphism. In an abelian category every morphism is strict, so strictness is a nontrivial condition only in the pre-abelian setting.
Construction: Defined as IsIso (Abelian.coimageImageComparison f), using the comparison morphism from Mathlib that is defined without assuming the ambient category is abelian.
CategoryTheory.IsStrict.{v, u} {C : Type u} [CategoryTheory.Category.{v, u} C] [CategoryTheory.Limits.HasZeroMorphisms C] {X Y : C} (f : X ⟶ Y) [CategoryTheory.Limits.HasKernel f] [CategoryTheory.Limits.HasCokernel f] [CategoryTheory.Limits.HasKernel (CategoryTheory.Limits.cokernel.π f)] [CategoryTheory.Limits.HasCokernel (CategoryTheory.Limits.kernel.ι f)] : PropCategoryTheory.IsStrict.{v, u} {C : Type u} [CategoryTheory.Category.{v, u} C] [CategoryTheory.Limits.HasZeroMorphisms C] {X Y : C} (f : X ⟶ Y) [CategoryTheory.Limits.HasKernel f] [CategoryTheory.Limits.HasCokernel f] [CategoryTheory.Limits.HasKernel (CategoryTheory.Limits.cokernel.π f)] [CategoryTheory.Limits.HasCokernel (CategoryTheory.Limits.kernel.ι f)] : Prop
Something wrong, better idea? Suggest a change
5.2. IsStrictMono
A morphism f is a strict monomorphism if it is both a monomorphism and strict: f is mono and the coimage-to-image comparison is an isomorphism.
Construction: A Prop-valued structure with two fields: mono : Mono f and strict : IsStrict f.
CategoryTheory.IsStrictMono.{v, u} {C : Type u} [CategoryTheory.Category.{v, u} C] [CategoryTheory.Limits.HasZeroMorphisms C] {X Y : C} (f : X ⟶ Y) [CategoryTheory.Limits.HasKernel f] [CategoryTheory.Limits.HasCokernel f] [CategoryTheory.Limits.HasKernel (CategoryTheory.Limits.cokernel.π f)] [CategoryTheory.Limits.HasCokernel (CategoryTheory.Limits.kernel.ι f)] : PropCategoryTheory.IsStrictMono.{v, u} {C : Type u} [CategoryTheory.Category.{v, u} C] [CategoryTheory.Limits.HasZeroMorphisms C] {X Y : C} (f : X ⟶ Y) [CategoryTheory.Limits.HasKernel f] [CategoryTheory.Limits.HasCokernel f] [CategoryTheory.Limits.HasKernel (CategoryTheory.Limits.cokernel.π f)] [CategoryTheory.Limits.HasCokernel (CategoryTheory.Limits.kernel.ι f)] : Prop
Constructor
CategoryTheory.IsStrictMono.mk.{v, u}
Fields
mono : CategoryTheory.Mono f
strict : CategoryTheory.IsStrict f
Something wrong, better idea? Suggest a change
5.3. IsStrictEpi
A morphism f is a strict epimorphism if it is both an epimorphism and strict: f is epi and the coimage-to-image comparison is an isomorphism.
Construction: A Prop-valued structure with two fields: epi : Epi f and strict : IsStrict f.
CategoryTheory.IsStrictEpi.{v, u} {C : Type u} [CategoryTheory.Category.{v, u} C] [CategoryTheory.Limits.HasZeroMorphisms C] {X Y : C} (f : X ⟶ Y) [CategoryTheory.Limits.HasKernel f] [CategoryTheory.Limits.HasCokernel f] [CategoryTheory.Limits.HasKernel (CategoryTheory.Limits.cokernel.π f)] [CategoryTheory.Limits.HasCokernel (CategoryTheory.Limits.kernel.ι f)] : PropCategoryTheory.IsStrictEpi.{v, u} {C : Type u} [CategoryTheory.Category.{v, u} C] [CategoryTheory.Limits.HasZeroMorphisms C] {X Y : C} (f : X ⟶ Y) [CategoryTheory.Limits.HasKernel f] [CategoryTheory.Limits.HasCokernel f] [CategoryTheory.Limits.HasKernel (CategoryTheory.Limits.cokernel.π f)] [CategoryTheory.Limits.HasCokernel (CategoryTheory.Limits.kernel.ι f)] : Prop
Constructor
CategoryTheory.IsStrictEpi.mk.{v, u}
Fields
epi : CategoryTheory.Epi f
strict : CategoryTheory.IsStrict f
Something wrong, better idea? Suggest a change
5.4. isColimitCokernelCofork
A strict epimorphism is the cokernel of its kernel: the cofork \operatorname{ker}(f) \xrightarrow{\iota} X \xrightarrow{f} Y is a colimit.
Construction: Constructs an IsColimit witness for the cokernel cofork of f at its kernel, using the isomorphism \operatorname{Coim}(f) \cong Y that results from strictness and the epi hypothesis.
CategoryTheory.IsStrictEpi.isColimitCokernelCofork.{v, u} {C : Type u} [CategoryTheory.Category.{v, u} C] [CategoryTheory.Limits.HasZeroMorphisms C] {X Y : C} {f : X ⟶ Y} [CategoryTheory.Limits.HasZeroObject C] [CategoryTheory.Limits.HasKernel f] [CategoryTheory.Limits.HasCokernel f] [CategoryTheory.Limits.HasKernel (CategoryTheory.Limits.cokernel.π f)] [CategoryTheory.Limits.HasCokernel (CategoryTheory.Limits.kernel.ι f)] (hf : CategoryTheory.IsStrictEpi f) : CategoryTheory.Limits.IsColimit (CategoryTheory.Limits.CokernelCofork.ofπ f ⋯)CategoryTheory.IsStrictEpi.isColimitCokernelCofork.{v, u} {C : Type u} [CategoryTheory.Category.{v, u} C] [CategoryTheory.Limits.HasZeroMorphisms C] {X Y : C} {f : X ⟶ Y} [CategoryTheory.Limits.HasZeroObject C] [CategoryTheory.Limits.HasKernel f] [CategoryTheory.Limits.HasCokernel f] [CategoryTheory.Limits.HasKernel (CategoryTheory.Limits.cokernel.π f)] [CategoryTheory.Limits.HasCokernel (CategoryTheory.Limits.kernel.ι f)] (hf : CategoryTheory.IsStrictEpi f) : CategoryTheory.Limits.IsColimit (CategoryTheory.Limits.CokernelCofork.ofπ f ⋯)
Something wrong, better idea? Suggest a change
5.5. isLimitKernelFork
A strict monomorphism is the kernel of its cokernel: the fork X \xrightarrow{f} Y \xrightarrow{\pi} \operatorname{coker}(f) is a limit.
Construction: Constructs an IsLimit witness for the kernel fork of f at its cokernel, using the isomorphism X \cong \operatorname{Im}(f) that results from strictness and the mono hypothesis.
CategoryTheory.IsStrictMono.isLimitKernelFork.{v, u} {C : Type u} [CategoryTheory.Category.{v, u} C] [CategoryTheory.Limits.HasZeroMorphisms C] {X Y : C} {f : X ⟶ Y} [CategoryTheory.Limits.HasZeroObject C] [CategoryTheory.Limits.HasKernel f] [CategoryTheory.Limits.HasCokernel f] [CategoryTheory.Limits.HasKernel (CategoryTheory.Limits.cokernel.π f)] [CategoryTheory.Limits.HasCokernel (CategoryTheory.Limits.kernel.ι f)] (hf : CategoryTheory.IsStrictMono f) : CategoryTheory.Limits.IsLimit (CategoryTheory.Limits.KernelFork.ofι f ⋯)CategoryTheory.IsStrictMono.isLimitKernelFork.{v, u} {C : Type u} [CategoryTheory.Category.{v, u} C] [CategoryTheory.Limits.HasZeroMorphisms C] {X Y : C} {f : X ⟶ Y} [CategoryTheory.Limits.HasZeroObject C] [CategoryTheory.Limits.HasKernel f] [CategoryTheory.Limits.HasCokernel f] [CategoryTheory.Limits.HasKernel (CategoryTheory.Limits.cokernel.π f)] [CategoryTheory.Limits.HasCokernel (CategoryTheory.Limits.kernel.ι f)] (hf : CategoryTheory.IsStrictMono f) : CategoryTheory.Limits.IsLimit (CategoryTheory.Limits.KernelFork.ofι f ⋯)
Something wrong, better idea? Suggest a change
5.6. isStrictEpi_of_isColimitCokernelCofork
If f is the cokernel of its kernel, then f is a strict epimorphism.
Proof: The colimit hypothesis makes f epi. The coimage-to-image comparison is shown to be an isomorphism by factoring it as \operatorname{inv}(\operatorname{image.\iota}) \circ e where e : \operatorname{Coim}(f) \cong Y comes from the colimit comparison.
CategoryTheory.isStrictEpi_of_isColimitCokernelCofork.{v, u} {C : Type u} [CategoryTheory.Category.{v, u} C] [CategoryTheory.Limits.HasZeroMorphisms C] {X Y : C} {f : X ⟶ Y} [CategoryTheory.Limits.HasZeroObject C] [CategoryTheory.Limits.HasKernel f] [CategoryTheory.Limits.HasCokernel f] [CategoryTheory.Limits.HasKernel (CategoryTheory.Limits.cokernel.π f)] [CategoryTheory.Limits.HasCokernel (CategoryTheory.Limits.kernel.ι f)] (hf : CategoryTheory.Limits.IsColimit (CategoryTheory.Limits.CokernelCofork.ofπ f ⋯)) : CategoryTheory.IsStrictEpi fCategoryTheory.isStrictEpi_of_isColimitCokernelCofork.{v, u} {C : Type u} [CategoryTheory.Category.{v, u} C] [CategoryTheory.Limits.HasZeroMorphisms C] {X Y : C} {f : X ⟶ Y} [CategoryTheory.Limits.HasZeroObject C] [CategoryTheory.Limits.HasKernel f] [CategoryTheory.Limits.HasCokernel f] [CategoryTheory.Limits.HasKernel (CategoryTheory.Limits.cokernel.π f)] [CategoryTheory.Limits.HasCokernel (CategoryTheory.Limits.kernel.ι f)] (hf : CategoryTheory.Limits.IsColimit (CategoryTheory.Limits.CokernelCofork.ofπ f ⋯)) : CategoryTheory.IsStrictEpi f
Something wrong, better idea? Suggest a change
5.7. isStrictMono_of_isLimitKernelFork
If f is the kernel of its cokernel, then f is a strict monomorphism.
Proof: The limit hypothesis makes f mono. An explicit inverse pair of kernel.lift morphisms establishes X \cong \operatorname{Im}(f), and the coimage-to-image comparison is expressed as a composition of isomorphisms.
CategoryTheory.isStrictMono_of_isLimitKernelFork.{v, u} {C : Type u} [CategoryTheory.Category.{v, u} C] [CategoryTheory.Limits.HasZeroMorphisms C] {X Y : C} {f : X ⟶ Y} [CategoryTheory.Limits.HasZeroObject C] [CategoryTheory.Limits.HasKernel f] [CategoryTheory.Limits.HasCokernel f] [CategoryTheory.Limits.HasKernel (CategoryTheory.Limits.cokernel.π f)] [CategoryTheory.Limits.HasCokernel (CategoryTheory.Limits.kernel.ι f)] (hf : CategoryTheory.Limits.IsLimit (CategoryTheory.Limits.KernelFork.ofι f ⋯)) : CategoryTheory.IsStrictMono fCategoryTheory.isStrictMono_of_isLimitKernelFork.{v, u} {C : Type u} [CategoryTheory.Category.{v, u} C] [CategoryTheory.Limits.HasZeroMorphisms C] {X Y : C} {f : X ⟶ Y} [CategoryTheory.Limits.HasZeroObject C] [CategoryTheory.Limits.HasKernel f] [CategoryTheory.Limits.HasCokernel f] [CategoryTheory.Limits.HasKernel (CategoryTheory.Limits.cokernel.π f)] [CategoryTheory.Limits.HasCokernel (CategoryTheory.Limits.kernel.ι f)] (hf : CategoryTheory.Limits.IsLimit (CategoryTheory.Limits.KernelFork.ofι f ⋯)) : CategoryTheory.IsStrictMono f
Something wrong, better idea? Suggest a change
5.8. isStrictMono_of_isIso
An isomorphism is a strict monomorphism.
Proof: Apply isStrictMono_of_isLimitKernelFork: the cokernel of an iso is zero, so f is trivially the kernel of its zero cokernel.
CategoryTheory.isStrictMono_of_isIso.{v, u} {C : Type u} [CategoryTheory.Category.{v, u} C] [CategoryTheory.Limits.HasZeroMorphisms C] {X Y : C} {f : X ⟶ Y} [CategoryTheory.Limits.HasZeroObject C] [CategoryTheory.Limits.HasKernel f] [CategoryTheory.Limits.HasCokernel f] [CategoryTheory.Limits.HasKernel (CategoryTheory.Limits.cokernel.π f)] [CategoryTheory.Limits.HasCokernel (CategoryTheory.Limits.kernel.ι f)] [CategoryTheory.IsIso f] : CategoryTheory.IsStrictMono fCategoryTheory.isStrictMono_of_isIso.{v, u} {C : Type u} [CategoryTheory.Category.{v, u} C] [CategoryTheory.Limits.HasZeroMorphisms C] {X Y : C} {f : X ⟶ Y} [CategoryTheory.Limits.HasZeroObject C] [CategoryTheory.Limits.HasKernel f] [CategoryTheory.Limits.HasCokernel f] [CategoryTheory.Limits.HasKernel (CategoryTheory.Limits.cokernel.π f)] [CategoryTheory.Limits.HasCokernel (CategoryTheory.Limits.kernel.ι f)] [CategoryTheory.IsIso f] : CategoryTheory.IsStrictMono f
Something wrong, better idea? Suggest a change
5.9. isStrictEpi_of_isIso
An isomorphism is a strict epimorphism.
Proof: Apply isStrictEpi_of_isColimitCokernelCofork: the kernel of an iso is zero, so f is trivially the cokernel of its zero kernel.
CategoryTheory.isStrictEpi_of_isIso.{v, u} {C : Type u} [CategoryTheory.Category.{v, u} C] [CategoryTheory.Limits.HasZeroMorphisms C] {X Y : C} {f : X ⟶ Y} [CategoryTheory.Limits.HasZeroObject C] [CategoryTheory.Limits.HasKernel f] [CategoryTheory.Limits.HasCokernel f] [CategoryTheory.Limits.HasKernel (CategoryTheory.Limits.cokernel.π f)] [CategoryTheory.Limits.HasCokernel (CategoryTheory.Limits.kernel.ι f)] [CategoryTheory.IsIso f] : CategoryTheory.IsStrictEpi fCategoryTheory.isStrictEpi_of_isIso.{v, u} {C : Type u} [CategoryTheory.Category.{v, u} C] [CategoryTheory.Limits.HasZeroMorphisms C] {X Y : C} {f : X ⟶ Y} [CategoryTheory.Limits.HasZeroObject C] [CategoryTheory.Limits.HasKernel f] [CategoryTheory.Limits.HasCokernel f] [CategoryTheory.Limits.HasKernel (CategoryTheory.Limits.cokernel.π f)] [CategoryTheory.Limits.HasCokernel (CategoryTheory.Limits.kernel.ι f)] [CategoryTheory.IsIso f] : CategoryTheory.IsStrictEpi f
Something wrong, better idea? Suggest a change
5.10. IsStrictEpi.isIso
A strict epimorphism that is also mono is an isomorphism.
Proof: The kernel is zero since f is mono. Descend through the cokernel colimit to construct a section, making f a split mono. A split mono that is also epi is an isomorphism.
CategoryTheory.IsStrictEpi.isIso.{v, u} {C : Type u} [CategoryTheory.Category.{v, u} C] [CategoryTheory.Limits.HasZeroMorphisms C] {X Y : C} {f : X ⟶ Y} [CategoryTheory.Limits.HasZeroObject C] [CategoryTheory.Limits.HasKernel f] [CategoryTheory.Limits.HasCokernel f] [CategoryTheory.Limits.HasKernel (CategoryTheory.Limits.cokernel.π f)] [CategoryTheory.Limits.HasCokernel (CategoryTheory.Limits.kernel.ι f)] (hf : CategoryTheory.IsStrictEpi f) [CategoryTheory.Mono f] : CategoryTheory.IsIso fCategoryTheory.IsStrictEpi.isIso.{v, u} {C : Type u} [CategoryTheory.Category.{v, u} C] [CategoryTheory.Limits.HasZeroMorphisms C] {X Y : C} {f : X ⟶ Y} [CategoryTheory.Limits.HasZeroObject C] [CategoryTheory.Limits.HasKernel f] [CategoryTheory.Limits.HasCokernel f] [CategoryTheory.Limits.HasKernel (CategoryTheory.Limits.cokernel.π f)] [CategoryTheory.Limits.HasCokernel (CategoryTheory.Limits.kernel.ι f)] (hf : CategoryTheory.IsStrictEpi f) [CategoryTheory.Mono f] : CategoryTheory.IsIso f
Something wrong, better idea? Suggest a change
5.11. IsStrictMono.isIso
A strict monomorphism that is also epi is an isomorphism.
Proof: The cokernel is zero since f is epi. Lift through the kernel limit to construct a retraction, making f a split epi. A split epi that is also mono is an isomorphism.
CategoryTheory.IsStrictMono.isIso.{v, u} {C : Type u} [CategoryTheory.Category.{v, u} C] [CategoryTheory.Limits.HasZeroMorphisms C] {X Y : C} {f : X ⟶ Y} [CategoryTheory.Limits.HasZeroObject C] [CategoryTheory.Limits.HasKernel f] [CategoryTheory.Limits.HasCokernel f] [CategoryTheory.Limits.HasKernel (CategoryTheory.Limits.cokernel.π f)] [CategoryTheory.Limits.HasCokernel (CategoryTheory.Limits.kernel.ι f)] (hf : CategoryTheory.IsStrictMono f) [CategoryTheory.Epi f] : CategoryTheory.IsIso fCategoryTheory.IsStrictMono.isIso.{v, u} {C : Type u} [CategoryTheory.Category.{v, u} C] [CategoryTheory.Limits.HasZeroMorphisms C] {X Y : C} {f : X ⟶ Y} [CategoryTheory.Limits.HasZeroObject C] [CategoryTheory.Limits.HasKernel f] [CategoryTheory.Limits.HasCokernel f] [CategoryTheory.Limits.HasKernel (CategoryTheory.Limits.cokernel.π f)] [CategoryTheory.Limits.HasCokernel (CategoryTheory.Limits.kernel.ι f)] (hf : CategoryTheory.IsStrictMono f) [CategoryTheory.Epi f] : CategoryTheory.IsIso f
Something wrong, better idea? Suggest a change
5.12. normalEpi
A strict epimorphism is a normal epimorphism: it is the cokernel of some morphism (namely, its own kernel).
Construction: Constructs a NormalEpi instance from the cokernel colimit witness.
CategoryTheory.IsStrictEpi.normalEpi.{v, u} {C : Type u} [CategoryTheory.Category.{v, u} C] [CategoryTheory.Limits.HasZeroMorphisms C] {X Y : C} {f : X ⟶ Y} [CategoryTheory.Limits.HasZeroObject C] [CategoryTheory.Limits.HasKernel f] [CategoryTheory.Limits.HasCokernel f] [CategoryTheory.Limits.HasKernel (CategoryTheory.Limits.cokernel.π f)] [CategoryTheory.Limits.HasCokernel (CategoryTheory.Limits.kernel.ι f)] (hf : CategoryTheory.IsStrictEpi f) : CategoryTheory.NormalEpi fCategoryTheory.IsStrictEpi.normalEpi.{v, u} {C : Type u} [CategoryTheory.Category.{v, u} C] [CategoryTheory.Limits.HasZeroMorphisms C] {X Y : C} {f : X ⟶ Y} [CategoryTheory.Limits.HasZeroObject C] [CategoryTheory.Limits.HasKernel f] [CategoryTheory.Limits.HasCokernel f] [CategoryTheory.Limits.HasKernel (CategoryTheory.Limits.cokernel.π f)] [CategoryTheory.Limits.HasCokernel (CategoryTheory.Limits.kernel.ι f)] (hf : CategoryTheory.IsStrictEpi f) : CategoryTheory.NormalEpi f
Something wrong, better idea? Suggest a change
5.13. regularEpi
A strict epimorphism is a regular epimorphism.
Construction: Obtained from the normal epi structure via NormalEpi.regularEpi.
CategoryTheory.IsStrictEpi.regularEpi.{v, u} {C : Type u} [CategoryTheory.Category.{v, u} C] [CategoryTheory.Limits.HasZeroMorphisms C] {X Y : C} {f : X ⟶ Y} [CategoryTheory.Limits.HasZeroObject C] [CategoryTheory.Limits.HasKernel f] [CategoryTheory.Limits.HasCokernel f] [CategoryTheory.Limits.HasKernel (CategoryTheory.Limits.cokernel.π f)] [CategoryTheory.Limits.HasCokernel (CategoryTheory.Limits.kernel.ι f)] (hf : CategoryTheory.IsStrictEpi f) : CategoryTheory.RegularEpi fCategoryTheory.IsStrictEpi.regularEpi.{v, u} {C : Type u} [CategoryTheory.Category.{v, u} C] [CategoryTheory.Limits.HasZeroMorphisms C] {X Y : C} {f : X ⟶ Y} [CategoryTheory.Limits.HasZeroObject C] [CategoryTheory.Limits.HasKernel f] [CategoryTheory.Limits.HasCokernel f] [CategoryTheory.Limits.HasKernel (CategoryTheory.Limits.cokernel.π f)] [CategoryTheory.Limits.HasCokernel (CategoryTheory.Limits.kernel.ι f)] (hf : CategoryTheory.IsStrictEpi f) : CategoryTheory.RegularEpi f
Something wrong, better idea? Suggest a change
5.14. strongEpi
A strict epimorphism is a strong epimorphism.
Proof: A regular epi is a strong epi in any category.
CategoryTheory.IsStrictEpi.strongEpi.{v, u} {C : Type u} [CategoryTheory.Category.{v, u} C] [CategoryTheory.Limits.HasZeroMorphisms C] {X Y : C} {f : X ⟶ Y} [CategoryTheory.Limits.HasZeroObject C] [CategoryTheory.Limits.HasKernel f] [CategoryTheory.Limits.HasCokernel f] [CategoryTheory.Limits.HasKernel (CategoryTheory.Limits.cokernel.π f)] [CategoryTheory.Limits.HasCokernel (CategoryTheory.Limits.kernel.ι f)] (hf : CategoryTheory.IsStrictEpi f) : CategoryTheory.StrongEpi fCategoryTheory.IsStrictEpi.strongEpi.{v, u} {C : Type u} [CategoryTheory.Category.{v, u} C] [CategoryTheory.Limits.HasZeroMorphisms C] {X Y : C} {f : X ⟶ Y} [CategoryTheory.Limits.HasZeroObject C] [CategoryTheory.Limits.HasKernel f] [CategoryTheory.Limits.HasCokernel f] [CategoryTheory.Limits.HasKernel (CategoryTheory.Limits.cokernel.π f)] [CategoryTheory.Limits.HasCokernel (CategoryTheory.Limits.kernel.ι f)] (hf : CategoryTheory.IsStrictEpi f) : CategoryTheory.StrongEpi f
Something wrong, better idea? Suggest a change
5.15. isStrictEpi_of_normalEpi
A normal epimorphism in a preadditive category with kernels and cokernels is strict.
Proof: Factor the normal epi's colimit through the kernel inclusion to obtain a colimit for the cokernel cofork, then apply isStrictEpi_of_isColimitCokernelCofork.
CategoryTheory.isStrictEpi_of_normalEpi.{v, u} {C : Type u} [CategoryTheory.Category.{v, u} C] [CategoryTheory.Limits.HasZeroMorphisms C] {X Y : C} {f : X ⟶ Y} [CategoryTheory.Limits.HasZeroObject C] [CategoryTheory.Limits.HasKernel f] [CategoryTheory.Limits.HasCokernel f] [CategoryTheory.Limits.HasKernel (CategoryTheory.Limits.cokernel.π f)] [CategoryTheory.Limits.HasCokernel (CategoryTheory.Limits.kernel.ι f)] [hf : CategoryTheory.NormalEpi f] : CategoryTheory.IsStrictEpi fCategoryTheory.isStrictEpi_of_normalEpi.{v, u} {C : Type u} [CategoryTheory.Category.{v, u} C] [CategoryTheory.Limits.HasZeroMorphisms C] {X Y : C} {f : X ⟶ Y} [CategoryTheory.Limits.HasZeroObject C] [CategoryTheory.Limits.HasKernel f] [CategoryTheory.Limits.HasCokernel f] [CategoryTheory.Limits.HasKernel (CategoryTheory.Limits.cokernel.π f)] [CategoryTheory.Limits.HasCokernel (CategoryTheory.Limits.kernel.ι f)] [hf : CategoryTheory.NormalEpi f] : CategoryTheory.IsStrictEpi f
Something wrong, better idea? Suggest a change
5.16. normalMono
A strict monomorphism is a normal monomorphism: it is the kernel of some morphism (namely, its own cokernel).
Construction: Constructs a NormalMono instance from the kernel limit witness.
CategoryTheory.IsStrictMono.normalMono.{v, u} {C : Type u} [CategoryTheory.Category.{v, u} C] [CategoryTheory.Limits.HasZeroMorphisms C] {X Y : C} {f : X ⟶ Y} [CategoryTheory.Limits.HasZeroObject C] [CategoryTheory.Limits.HasKernel f] [CategoryTheory.Limits.HasCokernel f] [CategoryTheory.Limits.HasKernel (CategoryTheory.Limits.cokernel.π f)] [CategoryTheory.Limits.HasCokernel (CategoryTheory.Limits.kernel.ι f)] (hf : CategoryTheory.IsStrictMono f) : CategoryTheory.NormalMono fCategoryTheory.IsStrictMono.normalMono.{v, u} {C : Type u} [CategoryTheory.Category.{v, u} C] [CategoryTheory.Limits.HasZeroMorphisms C] {X Y : C} {f : X ⟶ Y} [CategoryTheory.Limits.HasZeroObject C] [CategoryTheory.Limits.HasKernel f] [CategoryTheory.Limits.HasCokernel f] [CategoryTheory.Limits.HasKernel (CategoryTheory.Limits.cokernel.π f)] [CategoryTheory.Limits.HasCokernel (CategoryTheory.Limits.kernel.ι f)] (hf : CategoryTheory.IsStrictMono f) : CategoryTheory.NormalMono f
Something wrong, better idea? Suggest a change
5.17. isStrictMono_of_normalMono
A normal monomorphism in a preadditive category with kernels and cokernels is strict.
Proof: Factor the normal mono's limit through the cokernel projection to obtain a limit for the kernel fork, then apply isStrictMono_of_isLimitKernelFork.
CategoryTheory.isStrictMono_of_normalMono.{v, u} {C : Type u} [CategoryTheory.Category.{v, u} C] [CategoryTheory.Limits.HasZeroMorphisms C] {X Y : C} {f : X ⟶ Y} [CategoryTheory.Limits.HasZeroObject C] [CategoryTheory.Limits.HasKernel f] [CategoryTheory.Limits.HasCokernel f] [CategoryTheory.Limits.HasKernel (CategoryTheory.Limits.cokernel.π f)] [CategoryTheory.Limits.HasCokernel (CategoryTheory.Limits.kernel.ι f)] [hf : CategoryTheory.NormalMono f] : CategoryTheory.IsStrictMono fCategoryTheory.isStrictMono_of_normalMono.{v, u} {C : Type u} [CategoryTheory.Category.{v, u} C] [CategoryTheory.Limits.HasZeroMorphisms C] {X Y : C} {f : X ⟶ Y} [CategoryTheory.Limits.HasZeroObject C] [CategoryTheory.Limits.HasKernel f] [CategoryTheory.Limits.HasCokernel f] [CategoryTheory.Limits.HasKernel (CategoryTheory.Limits.cokernel.π f)] [CategoryTheory.Limits.HasCokernel (CategoryTheory.Limits.kernel.ι f)] [hf : CategoryTheory.NormalMono f] : CategoryTheory.IsStrictMono f
Something wrong, better idea? Suggest a change
5.18. QuasiAbelian
[Definition 4.1]
A preadditive category with kernels, cokernels, pullbacks, and pushouts is quasi-abelian if pullbacks of strict epimorphisms are strict epimorphisms and pushouts of strict monomorphisms are strict monomorphisms. This is the definition from Schneiders (1999), used in Bridgeland's treatment of hearts of t-structures.
Construction: A Prop-valued typeclass with two fields: pullback_strictEpi (stability of strict epis under pullback) and pushout_strictMono (stability of strict monos under pushout).
CategoryTheory.QuasiAbelian.{v, u} (C : Type u) [CategoryTheory.Category.{v, u} C] [CategoryTheory.Preadditive C] [CategoryTheory.Limits.HasKernels C] [CategoryTheory.Limits.HasCokernels C] [CategoryTheory.Limits.HasPullbacks C] [CategoryTheory.Limits.HasPushouts C] : PropCategoryTheory.QuasiAbelian.{v, u} (C : Type u) [CategoryTheory.Category.{v, u} C] [CategoryTheory.Preadditive C] [CategoryTheory.Limits.HasKernels C] [CategoryTheory.Limits.HasCokernels C] [CategoryTheory.Limits.HasPullbacks C] [CategoryTheory.Limits.HasPushouts C] : Prop
Instance Constructor
CategoryTheory.QuasiAbelian.mk.{v, u}
Methods
pullback_strictEpi : ∀ {X Y Z : C} (f : X ⟶ Z) (g : Y ⟶ Z), CategoryTheory.IsStrictEpi g → CategoryTheory.IsStrictEpi (CategoryTheory.Limits.pullback.fst f g)
The pullback of a strict epimorphism along any morphism is a strict epimorphism.
pushout_strictMono : ∀ {X Y Z : C} (f : Z ⟶ X) (g : Z ⟶ Y), CategoryTheory.IsStrictMono f → CategoryTheory.IsStrictMono (CategoryTheory.Limits.pushout.inr f g)
The pushout of a strict monomorphism along any morphism is a strict monomorphism.
Something wrong, better idea? Suggest a change
5.19. StrictShortExact
A strict short exact sequence is a ShortComplex that is short exact (mono left, epi right, exact in the middle) and where both morphisms f and g are strict. In a quasi-abelian category, kernels of strict epis are strict monos and cokernels of strict monos are strict epis.
Construction: A Prop-valued structure carrying shortExact : S.ShortExact, strict_f : IsStrict S.f, and strict_g : IsStrict S.g.
CategoryTheory.StrictShortExact.{v, u} {C : Type u} [CategoryTheory.Category.{v, u} C] [CategoryTheory.Preadditive C] [CategoryTheory.Limits.HasKernels C] [CategoryTheory.Limits.HasCokernels C] (S : CategoryTheory.ShortComplex C) : PropCategoryTheory.StrictShortExact.{v, u} {C : Type u} [CategoryTheory.Category.{v, u} C] [CategoryTheory.Preadditive C] [CategoryTheory.Limits.HasKernels C] [CategoryTheory.Limits.HasCokernels C] (S : CategoryTheory.ShortComplex C) : Prop
Constructor
CategoryTheory.StrictShortExact.mk.{v, u}
Fields
shortExact : S.ShortExact
strict_f : CategoryTheory.IsStrict S.f
strict_g : CategoryTheory.IsStrict S.g
Something wrong, better idea? Suggest a change
5.20. isStrictMono_kernel
The kernel of any morphism is a strict monomorphism. The coimage-to-image comparison for \operatorname{ker}(g) \hookrightarrow X is an isomorphism because \operatorname{ker}(g) is mono (making the coimage trivial) and an explicit inverse pair of kernel.lift morphisms establishes \operatorname{ker}(g) \cong \operatorname{Im}(\operatorname{ker}(g)).
Proof: Since \operatorname{ker.\iota}(g) is mono, its kernel is zero, so \operatorname{cokernel.\pi}(\operatorname{ker.\iota}(\operatorname{ker.\iota}(g))) is an iso. An explicit inverse pair of kernel.lift morphisms shows \operatorname{ker}(g) \cong \operatorname{ker}(\operatorname{cokernel.\pi}( \operatorname{ker.\iota}(g))), and the comparison factors through these isos.
CategoryTheory.isStrictMono_kernel.{v, u} {C : Type u} [CategoryTheory.Category.{v, u} C] [CategoryTheory.Limits.HasZeroMorphisms C] [CategoryTheory.Limits.HasKernels C] [CategoryTheory.Limits.HasCokernels C] {X Y : C} (g : X ⟶ Y) : CategoryTheory.IsStrictMono (CategoryTheory.Limits.kernel.ι g)CategoryTheory.isStrictMono_kernel.{v, u} {C : Type u} [CategoryTheory.Category.{v, u} C] [CategoryTheory.Limits.HasZeroMorphisms C] [CategoryTheory.Limits.HasKernels C] [CategoryTheory.Limits.HasCokernels C] {X Y : C} (g : X ⟶ Y) : CategoryTheory.IsStrictMono (CategoryTheory.Limits.kernel.ι g)
Something wrong, better idea? Suggest a change
5.21. isStrictEpi_cokernel
The cokernel of any morphism is a strict epimorphism. The coimage-to-image comparison for Y \twoheadrightarrow \operatorname{coker}(g) is an isomorphism because \operatorname{coker}(g) is epi (making the image trivial) and an explicit inverse pair of cokernel.desc morphisms establishes \operatorname{Coim}(\operatorname{coker.\pi}(g)) \cong \operatorname{coker}(g).
Proof: Dual to isStrictMono_kernel: since \operatorname{coker.\pi}(g) is epi, its cokernel is zero, making \operatorname{ker.\iota}(\operatorname{coker.\pi}( \operatorname{coker.\pi}(g))) an iso. An explicit inverse pair of cokernel.desc morphisms completes the argument.
CategoryTheory.isStrictEpi_cokernel.{v, u} {C : Type u} [CategoryTheory.Category.{v, u} C] [CategoryTheory.Limits.HasZeroMorphisms C] [CategoryTheory.Limits.HasKernels C] [CategoryTheory.Limits.HasCokernels C] {X Y : C} (g : X ⟶ Y) : CategoryTheory.IsStrictEpi (CategoryTheory.Limits.cokernel.π g)CategoryTheory.isStrictEpi_cokernel.{v, u} {C : Type u} [CategoryTheory.Category.{v, u} C] [CategoryTheory.Limits.HasZeroMorphisms C] [CategoryTheory.Limits.HasKernels C] [CategoryTheory.Limits.HasCokernels C] {X Y : C} (g : X ⟶ Y) : CategoryTheory.IsStrictEpi (CategoryTheory.Limits.cokernel.π g)
Something wrong, better idea? Suggest a change
5.22. isStrict_of_abelian
In an abelian category, every morphism is strict.
Proof: In an abelian category, Abelian.coimageImageComparison is an isomorphism by definition.
CategoryTheory.isStrict_of_abelian.{v, u} {C : Type u} [CategoryTheory.Category.{v, u} C] [CategoryTheory.Abelian C] {X Y : C} (f : X ⟶ Y) : CategoryTheory.IsStrict fCategoryTheory.isStrict_of_abelian.{v, u} {C : Type u} [CategoryTheory.Category.{v, u} C] [CategoryTheory.Abelian C] {X Y : C} (f : X ⟶ Y) : CategoryTheory.IsStrict f
Something wrong, better idea? Suggest a change
5.23. isStrictMono_of_mono
In an abelian category, every monomorphism is a strict monomorphism.
Proof: Combine the mono hypothesis with isStrict_of_abelian.
CategoryTheory.isStrictMono_of_mono.{v, u} {C : Type u} [CategoryTheory.Category.{v, u} C] [CategoryTheory.Abelian C] {X Y : C} (f : X ⟶ Y) [CategoryTheory.Mono f] : CategoryTheory.IsStrictMono fCategoryTheory.isStrictMono_of_mono.{v, u} {C : Type u} [CategoryTheory.Category.{v, u} C] [CategoryTheory.Abelian C] {X Y : C} (f : X ⟶ Y) [CategoryTheory.Mono f] : CategoryTheory.IsStrictMono f
Something wrong, better idea? Suggest a change
5.24. isStrictEpi_of_epi
In an abelian category, every epimorphism is a strict epimorphism.
Proof: Combine the epi hypothesis with isStrict_of_abelian.
CategoryTheory.isStrictEpi_of_epi.{v, u} {C : Type u} [CategoryTheory.Category.{v, u} C] [CategoryTheory.Abelian C] {X Y : C} (f : X ⟶ Y) [CategoryTheory.Epi f] : CategoryTheory.IsStrictEpi fCategoryTheory.isStrictEpi_of_epi.{v, u} {C : Type u} [CategoryTheory.Category.{v, u} C] [CategoryTheory.Abelian C] {X Y : C} (f : X ⟶ Y) [CategoryTheory.Epi f] : CategoryTheory.IsStrictEpi f
Something wrong, better idea? Suggest a change
5.25. strictShortExact_of_shortExact
In an abelian category, every short exact sequence is a strict short exact sequence.
Proof: Apply isStrict_of_abelian to both morphisms of the short complex.
CategoryTheory.strictShortExact_of_shortExact.{v, u} {C : Type u} [CategoryTheory.Category.{v, u} C] [CategoryTheory.Abelian C] {S : CategoryTheory.ShortComplex C} (h : S.ShortExact) : CategoryTheory.StrictShortExact SCategoryTheory.strictShortExact_of_shortExact.{v, u} {C : Type u} [CategoryTheory.Category.{v, u} C] [CategoryTheory.Abelian C] {S : CategoryTheory.ShortComplex C} (h : S.ShortExact) : CategoryTheory.StrictShortExact S
Something wrong, better idea? Suggest a change
5.26. Subobject.IsStrict
A subobject is strict if its arrow is a strict monomorphism. This is the quasi-abelian notion of admissible/exact subobject used in Bridgeland's finite-length thin interval categories.
Construction: Defined as IsStrictMono P.arrow.
CategoryTheory.Subobject.IsStrict.{v, u} {C : Type u} [CategoryTheory.Category.{v, u} C] [CategoryTheory.Limits.HasZeroMorphisms C] [CategoryTheory.Limits.HasKernels C] [CategoryTheory.Limits.HasCokernels C] {X : C} (P : CategoryTheory.Subobject X) : PropCategoryTheory.Subobject.IsStrict.{v, u} {C : Type u} [CategoryTheory.Category.{v, u} C] [CategoryTheory.Limits.HasZeroMorphisms C] [CategoryTheory.Limits.HasKernels C] [CategoryTheory.Limits.HasCokernels C] {X : C} (P : CategoryTheory.Subobject X) : Prop
Something wrong, better idea? Suggest a change
5.27. isStrict_iff
A subobject P is strict if and only if its arrow is a strict monomorphism.
Proof: Definitional unfolding (Iff.rfl).
CategoryTheory.Subobject.isStrict_iff.{v, u} {C : Type u} [CategoryTheory.Category.{v, u} C] [CategoryTheory.Limits.HasZeroMorphisms C] [CategoryTheory.Limits.HasKernels C] [CategoryTheory.Limits.HasCokernels C] {X : C} (P : CategoryTheory.Subobject X) : P.IsStrict ↔ CategoryTheory.IsStrictMono P.arrowCategoryTheory.Subobject.isStrict_iff.{v, u} {C : Type u} [CategoryTheory.Category.{v, u} C] [CategoryTheory.Limits.HasZeroMorphisms C] [CategoryTheory.Limits.HasKernels C] [CategoryTheory.Limits.HasCokernels C] {X : C} (P : CategoryTheory.Subobject X) : P.IsStrict ↔ CategoryTheory.IsStrictMono P.arrow
Something wrong, better idea? Suggest a change
5.28. StrictSubobject
The ordered type of strict subobjects of X: subobjects whose arrows are strict monomorphisms.
Construction: An abbreviation for \{ P : Subobject X // P.IsStrict \}.
CategoryTheory.StrictSubobject.{v, u} {C : Type u} [CategoryTheory.Category.{v, u} C] [CategoryTheory.Limits.HasZeroMorphisms C] [CategoryTheory.Limits.HasKernels C] [CategoryTheory.Limits.HasCokernels C] (X : C) : Type (max 0 u v)CategoryTheory.StrictSubobject.{v, u} {C : Type u} [CategoryTheory.Category.{v, u} C] [CategoryTheory.Limits.HasZeroMorphisms C] [CategoryTheory.Limits.HasKernels C] [CategoryTheory.Limits.HasCokernels C] (X : C) : Type (max 0 u v)
Something wrong, better idea? Suggest a change
5.29. isStrictArtinianObject
An object X is strict-Artinian if the strict subobjects of X satisfy the descending chain condition. This is the finite-length notion relevant to quasi-abelian categories.
Construction: Defined as an ObjectProperty asserting WellFoundedLT (StrictSubobject X).
CategoryTheory.isStrictArtinianObject.{v, u} {C : Type u} [CategoryTheory.Category.{v, u} C] [CategoryTheory.Limits.HasZeroMorphisms C] [CategoryTheory.Limits.HasKernels C] [CategoryTheory.Limits.HasCokernels C] : CategoryTheory.ObjectProperty CCategoryTheory.isStrictArtinianObject.{v, u} {C : Type u} [CategoryTheory.Category.{v, u} C] [CategoryTheory.Limits.HasZeroMorphisms C] [CategoryTheory.Limits.HasKernels C] [CategoryTheory.Limits.HasCokernels C] : CategoryTheory.ObjectProperty C
Something wrong, better idea? Suggest a change
5.30. IsStrictArtinianObject
The proposition that X is strict-Artinian.
Construction: An abbreviation for isStrictArtinianObject.Is X.
CategoryTheory.IsStrictArtinianObject.{v, u} {C : Type u} [CategoryTheory.Category.{v, u} C] [CategoryTheory.Limits.HasZeroMorphisms C] [CategoryTheory.Limits.HasKernels C] [CategoryTheory.Limits.HasCokernels C] (X : C) : PropCategoryTheory.IsStrictArtinianObject.{v, u} {C : Type u} [CategoryTheory.Category.{v, u} C] [CategoryTheory.Limits.HasZeroMorphisms C] [CategoryTheory.Limits.HasKernels C] [CategoryTheory.Limits.HasCokernels C] (X : C) : Prop
Something wrong, better idea? Suggest a change
5.31. instWellFoundedLTStrictSubobjectOfIsStrictArtinianObject
If X is strictly Artinian (i.e., its strict subobjects satisfy the descending chain condition), then the poset of strict subobjects of X is well-founded for <.
Construction: Extracted from the isStrictArtinianObject property via prop_of_is.
CategoryTheory.instWellFoundedLTStrictSubobjectOfIsStrictArtinianObject.{v, u} {C : Type u} [CategoryTheory.Category.{v, u} C] [CategoryTheory.Limits.HasZeroMorphisms C] [CategoryTheory.Limits.HasKernels C] [CategoryTheory.Limits.HasCokernels C] (X : C) [CategoryTheory.IsStrictArtinianObject X] : WellFoundedLT (CategoryTheory.StrictSubobject X)CategoryTheory.instWellFoundedLTStrictSubobjectOfIsStrictArtinianObject.{v, u} {C : Type u} [CategoryTheory.Category.{v, u} C] [CategoryTheory.Limits.HasZeroMorphisms C] [CategoryTheory.Limits.HasKernels C] [CategoryTheory.Limits.HasCokernels C] (X : C) [CategoryTheory.IsStrictArtinianObject X] : WellFoundedLT (CategoryTheory.StrictSubobject X)
Something wrong, better idea? Suggest a change
5.32. isStrictNoetherianObject
An object X is strict-Noetherian if the strict subobjects of X satisfy the ascending chain condition.
Construction: Defined as an ObjectProperty asserting WellFoundedGT (StrictSubobject X).
CategoryTheory.isStrictNoetherianObject.{v, u} {C : Type u} [CategoryTheory.Category.{v, u} C] [CategoryTheory.Limits.HasZeroMorphisms C] [CategoryTheory.Limits.HasKernels C] [CategoryTheory.Limits.HasCokernels C] : CategoryTheory.ObjectProperty CCategoryTheory.isStrictNoetherianObject.{v, u} {C : Type u} [CategoryTheory.Category.{v, u} C] [CategoryTheory.Limits.HasZeroMorphisms C] [CategoryTheory.Limits.HasKernels C] [CategoryTheory.Limits.HasCokernels C] : CategoryTheory.ObjectProperty C
Something wrong, better idea? Suggest a change
5.33. IsStrictNoetherianObject
The proposition that X is strict-Noetherian.
Construction: An abbreviation for isStrictNoetherianObject.Is X.
CategoryTheory.IsStrictNoetherianObject.{v, u} {C : Type u} [CategoryTheory.Category.{v, u} C] [CategoryTheory.Limits.HasZeroMorphisms C] [CategoryTheory.Limits.HasKernels C] [CategoryTheory.Limits.HasCokernels C] (X : C) : PropCategoryTheory.IsStrictNoetherianObject.{v, u} {C : Type u} [CategoryTheory.Category.{v, u} C] [CategoryTheory.Limits.HasZeroMorphisms C] [CategoryTheory.Limits.HasKernels C] [CategoryTheory.Limits.HasCokernels C] (X : C) : Prop
Something wrong, better idea? Suggest a change
5.34. instWellFoundedGTStrictSubobjectOfIsStrictNoetherianObject
If X is strictly Noetherian (i.e., its strict subobjects satisfy the ascending chain condition), then the poset of strict subobjects of X is well-founded for >.
Construction: Extracted from the isStrictNoetherianObject property via prop_of_is.
CategoryTheory.instWellFoundedGTStrictSubobjectOfIsStrictNoetherianObject.{v, u} {C : Type u} [CategoryTheory.Category.{v, u} C] [CategoryTheory.Limits.HasZeroMorphisms C] [CategoryTheory.Limits.HasKernels C] [CategoryTheory.Limits.HasCokernels C] (X : C) [CategoryTheory.IsStrictNoetherianObject X] : WellFoundedGT (CategoryTheory.StrictSubobject X)CategoryTheory.instWellFoundedGTStrictSubobjectOfIsStrictNoetherianObject.{v, u} {C : Type u} [CategoryTheory.Category.{v, u} C] [CategoryTheory.Limits.HasZeroMorphisms C] [CategoryTheory.Limits.HasKernels C] [CategoryTheory.Limits.HasCokernels C] (X : C) [CategoryTheory.IsStrictNoetherianObject X] : WellFoundedGT (CategoryTheory.StrictSubobject X)
Something wrong, better idea? Suggest a change
5.35. isStrictArtinianObject_of_isArtinianObject
Ordinary Artinian objects are strict-Artinian, since strict subobjects form a subtype of all subobjects and descending chains in the subtype lift to descending chains in the full subobject lattice.
Proof: The inclusion StrictSubobject X \hookrightarrow Subobject X is order-preserving, so InvImage.wf transfers the well-foundedness.
CategoryTheory.isStrictArtinianObject_of_isArtinianObject.{v, u} {C : Type u} [CategoryTheory.Category.{v, u} C] [CategoryTheory.Limits.HasZeroMorphisms C] [CategoryTheory.Limits.HasKernels C] [CategoryTheory.Limits.HasCokernels C] (X : C) [CategoryTheory.IsArtinianObject X] : CategoryTheory.IsStrictArtinianObject XCategoryTheory.isStrictArtinianObject_of_isArtinianObject.{v, u} {C : Type u} [CategoryTheory.Category.{v, u} C] [CategoryTheory.Limits.HasZeroMorphisms C] [CategoryTheory.Limits.HasKernels C] [CategoryTheory.Limits.HasCokernels C] (X : C) [CategoryTheory.IsArtinianObject X] : CategoryTheory.IsStrictArtinianObject X
Something wrong, better idea? Suggest a change
5.36. isStrictNoetherianObject_of_isNoetherianObject
Ordinary Noetherian objects are strict-Noetherian, since strict subobjects form a subtype of all subobjects and ascending chains in the subtype lift to ascending chains in the full subobject lattice.
Proof: The inclusion StrictSubobject X \hookrightarrow Subobject X is order-preserving, so InvImage.wf transfers the well-foundedness.
CategoryTheory.isStrictNoetherianObject_of_isNoetherianObject.{v, u} {C : Type u} [CategoryTheory.Category.{v, u} C] [CategoryTheory.Limits.HasZeroMorphisms C] [CategoryTheory.Limits.HasKernels C] [CategoryTheory.Limits.HasCokernels C] (X : C) [CategoryTheory.IsNoetherianObject X] : CategoryTheory.IsStrictNoetherianObject XCategoryTheory.isStrictNoetherianObject_of_isNoetherianObject.{v, u} {C : Type u} [CategoryTheory.Category.{v, u} C] [CategoryTheory.Limits.HasZeroMorphisms C] [CategoryTheory.Limits.HasKernels C] [CategoryTheory.Limits.HasCokernels C] (X : C) [CategoryTheory.IsNoetherianObject X] : CategoryTheory.IsStrictNoetherianObject X
Something wrong, better idea? Suggest a change
5.37. isArtinianObject_of_isStrictArtinianObject
In an abelian category, strict-Artinian and Artinian coincide, because every mono is strict.
Proof: Every subobject is strict (since every mono is strict in an abelian category), so descending chains of subobjects are descending chains of strict subobjects. Apply the antitone chain condition.
CategoryTheory.isArtinianObject_of_isStrictArtinianObject.{v, u} {C : Type u} [CategoryTheory.Category.{v, u} C] [CategoryTheory.Abelian C] {X : C} [CategoryTheory.IsStrictArtinianObject X] : CategoryTheory.IsArtinianObject XCategoryTheory.isArtinianObject_of_isStrictArtinianObject.{v, u} {C : Type u} [CategoryTheory.Category.{v, u} C] [CategoryTheory.Abelian C] {X : C} [CategoryTheory.IsStrictArtinianObject X] : CategoryTheory.IsArtinianObject X
Something wrong, better idea? Suggest a change
5.38. isNoetherianObject_of_isStrictNoetherianObject
In an abelian category, strict-Noetherian and Noetherian coincide, because every mono is strict.
Proof: Every subobject is strict (since every mono is strict in an abelian category), so ascending chains of subobjects are ascending chains of strict subobjects. Apply the monotone chain condition.
CategoryTheory.isNoetherianObject_of_isStrictNoetherianObject.{v, u} {C : Type u} [CategoryTheory.Category.{v, u} C] [CategoryTheory.Abelian C] {X : C} [CategoryTheory.IsStrictNoetherianObject X] : CategoryTheory.IsNoetherianObject XCategoryTheory.isNoetherianObject_of_isStrictNoetherianObject.{v, u} {C : Type u} [CategoryTheory.Category.{v, u} C] [CategoryTheory.Abelian C] {X : C} [CategoryTheory.IsStrictNoetherianObject X] : CategoryTheory.IsNoetherianObject X
Something wrong, better idea? Suggest a change
5.39. subobject_of_faithful_preservesMono
A faithful functor F : \mathcal{A} \to \mathcal{C} that preserves monomorphisms induces an injection on subobject lattices. If Finite (Subobject (F.obj E)) in \mathcal{C}, then Finite (Subobject E) in \mathcal{A}. The key use case is the full subcategory inclusion \iota : \mathcal{P}(\phi) \hookrightarrow \mathcal{C}, transferring local finiteness of the slicing.
Proof: Construct an injective map Subobject E \to Subobject (F.obj E) by applying F to representative arrows, verify injectivity using faithfulness and preimageIso, and apply Finite.of_injective.
CategoryTheory.Finite.subobject_of_faithful_preservesMono.{v, u} {A : Type u} [CategoryTheory.Category.{v, u} A] {C : Type u} [CategoryTheory.Category.{v, u} C] (F : CategoryTheory.Functor A C) [F.Full] [F.Faithful] [F.PreservesMonomorphisms] {E : A} (h : Finite (CategoryTheory.Subobject (F.obj E))) : Finite (CategoryTheory.Subobject E)CategoryTheory.Finite.subobject_of_faithful_preservesMono.{v, u} {A : Type u} [CategoryTheory.Category.{v, u} A] {C : Type u} [CategoryTheory.Category.{v, u} C] (F : CategoryTheory.Functor A C) [F.Full] [F.Faithful] [F.PreservesMonomorphisms] {E : A} (h : Finite (CategoryTheory.Subobject (F.obj E))) : Finite (CategoryTheory.Subobject E)
Something wrong, better idea? Suggest a change
5.40. isArtinianObject_of_faithful_preservesMono
Artinian objects transfer across full faithful functors that preserve monomorphisms.
Proof: Map descending chains of subobjects in \mathcal{A} to descending chains in \mathcal{C} via the injective monotone subobject image map. Stabilization in \mathcal{C} pulls back to stabilization in \mathcal{A} by injectivity.
CategoryTheory.isArtinianObject_of_faithful_preservesMono.{v, u} {A : Type u} [CategoryTheory.Category.{v, u} A] {C : Type u} [CategoryTheory.Category.{v, u} C] (F : CategoryTheory.Functor A C) [F.Full] [F.Faithful] [F.PreservesMonomorphisms] {E : A} [CategoryTheory.IsArtinianObject (F.obj E)] : CategoryTheory.IsArtinianObject ECategoryTheory.isArtinianObject_of_faithful_preservesMono.{v, u} {A : Type u} [CategoryTheory.Category.{v, u} A] {C : Type u} [CategoryTheory.Category.{v, u} C] (F : CategoryTheory.Functor A C) [F.Full] [F.Faithful] [F.PreservesMonomorphisms] {E : A} [CategoryTheory.IsArtinianObject (F.obj E)] : CategoryTheory.IsArtinianObject E
Something wrong, better idea? Suggest a change
5.41. isNoetherianObject_of_faithful_preservesMono
Noetherian objects transfer across full faithful functors that preserve monomorphisms.
Proof: Map ascending chains of subobjects in \mathcal{A} to ascending chains in \mathcal{C} via the injective monotone subobject image map. Stabilization in \mathcal{C} pulls back to stabilization in \mathcal{A} by injectivity.
CategoryTheory.isNoetherianObject_of_faithful_preservesMono.{v, u} {A : Type u} [CategoryTheory.Category.{v, u} A] {C : Type u} [CategoryTheory.Category.{v, u} C] (F : CategoryTheory.Functor A C) [F.Full] [F.Faithful] [F.PreservesMonomorphisms] {E : A} [CategoryTheory.IsNoetherianObject (F.obj E)] : CategoryTheory.IsNoetherianObject ECategoryTheory.isNoetherianObject_of_faithful_preservesMono.{v, u} {A : Type u} [CategoryTheory.Category.{v, u} A] {C : Type u} [CategoryTheory.Category.{v, u} C] (F : CategoryTheory.Functor A C) [F.Full] [F.Faithful] [F.PreservesMonomorphisms] {E : A} [CategoryTheory.IsNoetherianObject (F.obj E)] : CategoryTheory.IsNoetherianObject E
Something wrong, better idea? Suggest a change
5.42. isStrictArtinianObject_of_faithful_map_strictMono
Strict-Artinian objects transfer across full faithful functors that send strict monomorphisms to strict monomorphisms.
Proof: Map descending chains of strict subobjects in \mathcal{A} to descending chains of subobjects in \mathcal{C} via the injective monotone strict-subobject image map, then use the Artinian hypothesis in \mathcal{C} and injectivity.
CategoryTheory.isStrictArtinianObject_of_faithful_map_strictMono.{v, u} {A : Type u} [CategoryTheory.Category.{v, u} A] [CategoryTheory.Limits.HasZeroMorphisms A] [CategoryTheory.Limits.HasKernels A] [CategoryTheory.Limits.HasCokernels A] {C : Type u} [CategoryTheory.Category.{v, u} C] [CategoryTheory.Limits.HasZeroMorphisms C] [CategoryTheory.Limits.HasKernels C] [CategoryTheory.Limits.HasCokernels C] (F : CategoryTheory.Functor A C) [F.Full] [F.Faithful] (hF : ∀ {X Y : A} (f : X ⟶ Y), CategoryTheory.IsStrictMono f → CategoryTheory.IsStrictMono (F.map f)) {E : A} [CategoryTheory.IsArtinianObject (F.obj E)] : CategoryTheory.IsStrictArtinianObject ECategoryTheory.isStrictArtinianObject_of_faithful_map_strictMono.{v, u} {A : Type u} [CategoryTheory.Category.{v, u} A] [CategoryTheory.Limits.HasZeroMorphisms A] [CategoryTheory.Limits.HasKernels A] [CategoryTheory.Limits.HasCokernels A] {C : Type u} [CategoryTheory.Category.{v, u} C] [CategoryTheory.Limits.HasZeroMorphisms C] [CategoryTheory.Limits.HasKernels C] [CategoryTheory.Limits.HasCokernels C] (F : CategoryTheory.Functor A C) [F.Full] [F.Faithful] (hF : ∀ {X Y : A} (f : X ⟶ Y), CategoryTheory.IsStrictMono f → CategoryTheory.IsStrictMono (F.map f)) {E : A} [CategoryTheory.IsArtinianObject (F.obj E)] : CategoryTheory.IsStrictArtinianObject E
Something wrong, better idea? Suggest a change
5.43. isStrictNoetherianObject_of_faithful_map_strictMono
Strict-Noetherian objects transfer across full faithful functors that send strict monomorphisms to strict monomorphisms.
Proof: Map ascending chains of strict subobjects in \mathcal{A} to ascending chains of subobjects in \mathcal{C} via the injective monotone strict-subobject image map, then use the Noetherian hypothesis in \mathcal{C} and injectivity.
CategoryTheory.isStrictNoetherianObject_of_faithful_map_strictMono.{v, u} {A : Type u} [CategoryTheory.Category.{v, u} A] [CategoryTheory.Limits.HasZeroMorphisms A] [CategoryTheory.Limits.HasKernels A] [CategoryTheory.Limits.HasCokernels A] {C : Type u} [CategoryTheory.Category.{v, u} C] [CategoryTheory.Limits.HasZeroMorphisms C] [CategoryTheory.Limits.HasKernels C] [CategoryTheory.Limits.HasCokernels C] (F : CategoryTheory.Functor A C) [F.Full] [F.Faithful] (hF : ∀ {X Y : A} (f : X ⟶ Y), CategoryTheory.IsStrictMono f → CategoryTheory.IsStrictMono (F.map f)) {E : A} [CategoryTheory.IsNoetherianObject (F.obj E)] : CategoryTheory.IsStrictNoetherianObject ECategoryTheory.isStrictNoetherianObject_of_faithful_map_strictMono.{v, u} {A : Type u} [CategoryTheory.Category.{v, u} A] [CategoryTheory.Limits.HasZeroMorphisms A] [CategoryTheory.Limits.HasKernels A] [CategoryTheory.Limits.HasCokernels A] {C : Type u} [CategoryTheory.Category.{v, u} C] [CategoryTheory.Limits.HasZeroMorphisms C] [CategoryTheory.Limits.HasKernels C] [CategoryTheory.Limits.HasCokernels C] (F : CategoryTheory.Functor A C) [F.Full] [F.Faithful] (hF : ∀ {X Y : A} (f : X ⟶ Y), CategoryTheory.IsStrictMono f → CategoryTheory.IsStrictMono (F.map f)) {E : A} [CategoryTheory.IsNoetherianObject (F.obj E)] : CategoryTheory.IsStrictNoetherianObject E
Something wrong, better idea? Suggest a change