Transporting slicings along a triangulated auto-equivalence #
Groundwork for §8's other half: the Aut(D) action. G̃L⁺(2, ℝ) acts by
moving phases while fixing objects; an autoequivalence does the opposite.
The base slicing API has only HNFiltration.ofIso, which moves a filtration
along an isomorphism of its object. So the three transport definitions here
are built directly, and they are
the substantial part:
PostnikovTower.mapF— push a tower through a triangulated functor. Works becauseComposableArrows C nis a functor category, so the transported chain is literallychain ⋙ F, andFunctor.IsTriangulated.map_distinguishedcarries the distinguished triangles.HNFiltration.mapF— the tower plus unchanged phases; onlysemistableneeds an argument.Slicing.mapEquiv— the slicingX ↦ P φ (Φ⁻¹ X).shift_iffneedsΦ⁻¹to commute with⟦1⟧(hence theCommShifthypotheses) andhn_existspushes a filtration ofΦ⁻¹ Eforward and lands it onEvia the counit.
The tower and HN operations are stated for C ⥤ D; Slicing.mapEquiv then
specializes them to the endofunctors needed by the action.
Why there is no MulAction here #
Unlike GLTilde, the acting object is not a group in Lean. C ≌ C under
composition is associative only up to natural isomorphism, so it carries no
Group instance and MulAction is the wrong target. Bridgeland's "Aut(D)
acts" is a statement about the induced action on isomorphism classes; a strict
formalisation would need to quotient, or to work with a strictified group of
autoequivalences. That is a design decision, not an oversight.
What the full stability-condition action still needs #
K₀functoriality —K₀.map Φ, viaK₀.liftand anIsTriangleAdditiveproof.- Class-map compatibility: an autoequivalence acts on
WithClassMap C vonly together with aλ : Λ ≃+ Λsatisfyingv ∘ K₀.map Φ = λ ∘ v. Forv = idthis is forced; in general it is extra data, exactly asCompatibleis forGLTilde. - Local finiteness under
mapEquiv. Note this is a different problem from step 3c: the phase windows do not move at all here, so no uniform-continuity argument is needed. What is needed instead is that strict finite length is invariant under an equivalence of interval categories — andinterval_thinFiniteLength_of_inclusion_strictdoes not apply, since it compares twointervalProps on the same object.
Why two @[nolint unusedArguments]s below, and one in #
CategoryTheory/Triangulated/GrothendieckGroup/Functorial.lean
The environment linter reports [F.Additive] unused by PostnikovTower.mapF
and [Φ.inverse.Additive] unused by Slicing.mapEquiv. Both are true of the
proof terms, and both hypotheses are kept anyway.
Deleting them does not remove the finding — it moves it one caller up, measured 2026-08-05 by doing exactly that and re-running the linter:
| deleted from | the linter then flags |
|---|---|
PostnikovTower.mapF | HNFiltration.mapF, which passes it straight through |
Slicing.mapEquiv | Slicing.mapEquiv_P, whose statement carries it |
isTriangleAdditive_of_isTriangulated (retired, see below) | K₀.map |
Six errors before, six after; the build stayed green throughout.
The third row's subject was retired in #487: the stability track's
endofunctor-only K₀.mapF and the isTriangleAdditive_of_isTriangulated
instance that fed it are gone, superseded by the generic K₀.map and
K₀.isTriangleAdditive_map. The measurement above is left as recorded rather
than transplanted — it was taken against the retired instance on 2026-08-05 and
has not been re-run against its replacement. What carries over is only the
uncontroversial part: K₀.isTriangleAdditive_map carries the same
@[nolint unusedArguments] for the same stated reason.
Following the chase to its end amputates the hypothesis from K₀.map_of, from
AutStabilityAction, and finally from TriEquiv.iAdd — a structure field
whose whole purpose is to make the six instances of a triangulated
auto-equivalence travel together.
So the hypothesis set is the interface, not an artefact of how the fields were
discharged: "triangulated functor" here means Additive + CommShift ℤ +
IsTriangulated, every consumer supplies all three, and a later reproof that
does use additivity must not be a breaking signature change.
Push a Postnikov tower through a triangulated functor.
Everything is transported structurally: the chain is chain ⋙ F, each
triangle is F.mapTriangle.obj, and distinguishedness is
F.map_distinguished.
[F.Additive] is unused by this term and kept regardless — see the module
docstring, which records what deleting it actually does.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Push an HN filtration through a triangulated functor.
The phases are untouched — the functor moves objects, not phases — so only
semistable carries a hypothesis.
Instances For
Transport a slicing along a triangulated auto-equivalence:
(Φ • s).P φ X = s.P φ (Φ⁻¹ X).
Dual to CategoryTheory.Triangulated.WeakStabilityCondition.StabilityCondition.GroupAction.relabel, which moves phases
and fixes
objects.
[Φ.inverse.Additive] is unused by this term and kept regardless: without it
Φ is no longer an equivalence of triangulated categories, which is what
this definition transports along. See the module docstring.