Documentation

DerivedAlgGeo.CategoryTheory.Abelian.QuasiAbelian

Strict morphisms, and finiteness conditions built from them #

A morphism is strict when its canonical coimage-to-image comparison is an isomorphism. The universal-property criteria below avoid importing the corresponding vendor module.

Four layers, in order:

Placement #

Generic category theory: this file imports only Mathlib's abelian, short-complex, pullback, and subobject material, mentions no stability condition, and uses nothing triangulated. It lives under CategoryTheory/Abelian/, beside Mathlib's Abelian/NonPreadditive.lean precedent for a category with exactness conditions weaker than abelian. It sat under StabilityCondition/Foundation/ until #488 because its first consumer was Bridgeland's thin-interval argument (Foundation/Slicing/IntervalStrictness.lean is still the caller), then under Triangulated/ until 2026-09-02, when the review of the Mathlib-mesh restructure applied the rule that a file belongs under Triangulated/ only if it uses something triangulated. The namespace stays CategoryTheory.Triangulated: declaration names are unchanged across moves so that the immutable review payloads the exe/RestateHistoricalNames.lean bridge protects keep resolving.

What this file asserts, and where #

The QuasiAbelian class below states the two stability axioms — strict epimorphisms stable under pullback, strict monomorphisms stable under pushout. It is inhabited: Slicing.intervalCat_quasiAbelian (Foundation/Slicing/IntervalStrictness.lean) shows a thin owner slicing interval is quasi-abelian, and it is the only instance at the time of writing.

Most of the file is prior to that class: strictness of individual morphisms and the finiteness conditions built on it, none of which needs the axioms.

Two earlier versions of this section were wrong, in opposite directions. The first said QuasiAbelian "appears in no declaration in this file", which the class below contradicts. Its replacement said no category is shown to be quasi-abelian, which intervalCat_quasiAbelian contradicts — the search behind that claim matched one line at a time, and the instance carries its type on the next line. Neither claim should have been made without a search that could see a multi-line signature.

A strict epimorphism is the cokernel of its kernel.

Equations
  • One or more equations did not get rendered due to their size.
Instances For

    A strict monomorphism is the kernel of its cokernel.

    Equations
    • One or more equations did not get rendered due to their size.
    Instances For
      @[reducible]

      A strict epimorphism supplies a normal epimorphism witness.

      Equations
      Instances For
        @[reducible]

        A strict monomorphism supplies a normal monomorphism witness.

        Equations
        Instances For

          A kernel inclusion is a strict monomorphism.

          A cokernel projection is a strict epimorphism.

          An owner quasi-abelian category is preabelian and has pullbacks and pushouts, with strict epimorphisms stable under pullback and strict monomorphisms stable under pushout.

          Instances

            A strict short exact sequence is a short exact complex whose two maps are strict.

            Instances For
              theorem CategoryTheory.Triangulated.IsStrictEpi.strictShortExact_kernel {D : Type u} [Category.{v, u} D] [Preadditive D] [Limits.HasKernels D] [Limits.HasCokernels D] {X Y : D} (q : X ⟶ Y) [Limits.HasZeroObject D] (hq : IsStrictEpi q) :
              StrictShortExact { X₁ := Limits.kernel q, X₂ := X, X₃ := Y, f := Limits.kernel.ι q, g := q, zero := ⋯ }

              The canonical kernel sequence of a strict epimorphism is strict short exact.

              Every morphism in an abelian category is strict.

              Every monomorphism in an abelian category is strict.

              Every epimorphism in an abelian category is strict.

              Every short exact sequence in an abelian category is strictly short exact.

              A strict subobject is one whose canonical inclusion is an owner strict monomorphism.

              Equations
              Instances For
                @[reducible, inline]

                The ordered type of strict subobjects of an object.

                Equations
                Instances For

                  A strict-Artinian object in an abelian category is Artinian.

                  A strict-Noetherian object in an abelian category is Noetherian.

                  The map on subobjects induced by a full faithful functor preserving monomorphisms.

                  Equations
                  Instances For

                    A full faithful functor preserving monomorphisms reflects finiteness of subobject lattices.

                    Artinian objects transfer across full faithful functors preserving monomorphisms.

                    Noetherian objects transfer across full faithful functors preserving monomorphisms.

                    A full faithful functor that maps strict monomorphisms induces a map from owner strict subobjects to ambient subobjects.

                    Equations
                    Instances For

                      The ambient-subobject image of owner strict subobjects is monotone.

                      Strict-Artinian objects transfer across full faithful functors that map strict monomorphisms to strict monomorphisms.

                      Strict-Noetherian objects transfer across full faithful functors that map strict monomorphisms to strict monomorphisms.

                      Both chain conditions on StrictSubobject X at once.

                      The conditions are stated on strict subobjects rather than on all of Subobject X because that is the order a quasi-abelian category actually controls: a strict monomorphism is exactly one that is the kernel of its own cokernel (IsStrictMono.isLimitKernelFork), so a strict subobject has a well-behaved quotient and a non-strict one need not. This is the hypothesis Harder–Narasimhan recursion needs — it terminates on chains of strict subobjects — and it is strictly weaker than IsFiniteLengthObject in general, because StrictSubobject X is a subtype of Subobject X and a chain condition on a subtype is the easier statement. The two coincide exactly when every mono is strict, which isStrictFiniteLengthObject_iff_isFiniteLengthObject records for abelian categories.

                      Equations
                      Instances For

                        Both chain conditions on Subobject X at once.

                        Mathlib has IsArtinianObject and IsNoetherianObject but no bundled object-level finite-length predicate, so this is defined here rather than imported; it is a plausible upstreaming candidate. It exists in this file only to state the comparison results below — the owner API is built on IsStrictFiniteLengthObject.

                        Equations
                        Instances For

                          Destructure strict finite length into its two chain conditions.

                          Definitionally Iff.rfl. It exists so that a deformation hypothesis carrying an IsStrictFiniteLengthObject can produce the two instances without callers unfolding the definition, which keeps later proofs stable if the conjunction is ever replaced by a structure.

                          The descending chain condition carried by strict finite length.

                          A deformation hypothesis arrives as a bare IsStrictFiniteLengthObject X, but every consumer downstream wants the chain conditions as instances, so the recurring idiom is letI := h.isStrictArtinianObject. Going through the named projection rather than h.1 keeps those call sites readable and unbroken if the conjunction ever becomes a structure.

                          The ascending chain condition carried by strict finite length.

                          See IsStrictFiniteLengthObject.isStrictArtinianObject for why this is a named projection rather than h.2.

                          Assemble strict finite length from the two chain conditions as instances.

                          The mirror image of the projections: consumers hand back instances, and this is what turns them into the packaged hypothesis without an anonymous constructor at every call site.

                          The descending chain condition carried by ordinary finite length.

                          The ascending chain condition carried by ordinary finite length.

                          Assemble ordinary finite length from the two chain conditions as instances.

                          Finitely many subobjects force strict finite length.

                          Both halves come from the single Finite (Subobject X) hypothesis: it makes the subtype StrictSubobject X finite, and a finite order is well-founded in both directions at once, so neither chain condition needs a separate argument. This is the constructor to reach for on an object of a heart with finitely many subobjects, where checking the chain conditions directly would mean an induction.

                          Finite length implies strict finite length, in any quasi-abelian category.

                          The implication runs this way and not the other because well-foundedness restricts along the inclusion StrictSubobject X ↪ Subobject X: a chain of strict subobjects is in particular a chain of subobjects, so both conditions transport by InvImage.wf. Recovering the converse needs every mono to be strict, and so is available only under Abelian — see isStrictFiniteLengthObject_iff_isFiniteLengthObject.

                          Over an abelian category the strict and ordinary notions agree.

                          Abelian is what collapses the distinction: every monomorphism is strict, so StrictSubobject X is the whole of Subobject X and the two chain conditions are the same statement. Only the forward direction consumes the hypothesis; the reverse is the general implication above. The practical use is to import finite-length facts about a heart, which is abelian, into the quasi-abelian interval categories where the owner theory lives — the transfer is sound in that direction precisely because this equivalence is unavailable in the quasi-abelian setting itself.