The splitting at a phase cutoff #
Cutoff.lean cuts two classes out of the category by a number β and proves
that no map runs from the first to the second. This file supplies the other
half of a torsion pair: every object is an extension of an object of F β by
an object of T β.
The object is cut where its own phases cross β. The phases strictly
decrease, so the indices whose phase exceeds β form an initial segment
0, …, k-1; exists_crossIndex names its length k. Cutting the chain there
gives
F.chain k, filtered byrestrict, whose phases areφ₀, …, φ_{k-1}— all aboveβ;E / F.chain k, filtered bytailAt, whose phases areφ_k, …, φ_{n-1}— all at or belowβ.
The two boundary cases are not special pleading: at k = 0 the sub is ⊥ and
at k = n the quotient is the cokernel of an isomorphism, so in each the
missing half is zero and lands in both classes by isZero_mem_*. restrict
covers k = n and tailAt covers k = 0, so no other case is needed.
hnTors_of_iso and hnFree_of_iso are here because a torsion pair asks for
classes closed under isomorphism, which is AbelianHNFiltration.ofIso.
The crossing index. The HN phases strictly decrease, so the indices
whose phase exceeds β are an initial segment; this names its length.
The torsion class is closed under isomorphism.
The torsion-free class is closed under isomorphism.
The splitting. Every object has a subobject in T β whose cokernel is
in F β, obtained by cutting an HN filtration at its crossing index.
The splitting as a short exact sequence with the given object in the middle.