Transporting dg-functor capabilities to H⁰ #
DGFunctor.PreservesShifts and DGFunctor.PreservesChosenCones are dg-level
capabilities, owned by Algebra/Homology/DGCategory/Pretriangulated/Functor.lean.
Every dg functor has both capabilities. This file spends them on the ordinary
functor H⁰(F): h0CommShift packages the chosen shift witnesses into a
CommShift, and h0IsTriangulated proves that every dg functor between
pretriangulated dg categories induces a triangulated functor.
H0/Triangle.lean owns the distinguished triangles of H⁰ and the
pretriangulated instance; everything here consumes them, which is why the
dependency runs this way rather than the other. Both files sit under the
H0 umbrella, so no consumer has to know which of the two a name comes from.
The backward.isDefEq.respectTransparency options are load-bearing #
Five declarations below carry set_option backward.isDefEq.respectTransparency false. They were tried without it: commShift fails with a type mismatch
whose two sides print identically, and
preservesConeTriangles_of_preservesChosenCones fails to find 𝟙 under
Functor.map. Both are the shift and cone witnesses being compared at
instances transparency, which does not unfold H0, IsPretriangulated.shiftObj
or the chosen witnesses. Removing them needs those comparisons restated
through explicit show steps, not a tactic swap.
The two uses in Triangulated/FullSubcategory.lean are the same story. Note
that until this file was given its own umbrella entry nothing imported it, so a
green build was not evidence that these proofs still worked.
Why the cone-generator property is the right hypothesis #
H⁰'s distinguished triangles are by definition those isomorphic to a dg cone
triangle, so a functor is triangulated as soon as it sends cone triangles to
distinguished triangles. PreservesConeTriangles is that condition and
nothing more; preservesConeTriangles_of_preservesChosenCones derives it from
the strong dg-level capability, and the two isTriangulated_of_… results
close the loop.
The shift comparison induced on H⁰ by dg-level shift preservation.
Equations
- One or more equations did not get rendered due to their size.
Instances For
The dg-level shift-preservation data supplies the coherent shift structure
required by the ordinary functor H⁰(F).
Equations
Instances For
The canonical coherent shift package on H⁰(F) for an arbitrary dg
functor between pretriangulated dg categories.
This is an explicit definition rather than a global instance so that callers can control which comparison is used when several naturally isomorphic functor presentations are in scope.
Equations
- F.h0CommShift = F.commShift F.preservesShifts
Instances For
Preservation data for the cone generators of H⁰.
This is the reusable exactness seam for a dg functor: it asks that the image of
each chosen dg cone triangle be isomorphic to a cone triangle in the target.
The record itself is only the weak generator condition; the theorem below
constructs it for every dg functor from the strong split-cone witness. It does
not duplicate Functor.IsTriangulated as a field.
- map_cone {X Y : C} (f : ↥(cocycles X Y)) {Z : C} (hc : IsConeOf (↑f) Z) : ∃ (Z' : D) (hc' : IsConeOf ((F.map 0) ↑f) Z'), Nonempty (F.h0.mapTriangle.obj (H0.coneTriangle f hc) ≅ H0.coneTriangle ⟨(F.map 0) ↑f, ⋯⟩ hc')
The image of a dg cone triangle is a target cone triangle up to triangle isomorphism.
Instances For
Strong dg-level preservation of chosen shifts and cones implies the weak
cone-generator preservation property needed for exactness on H⁰.
The target cone is the image object itself. The comparison triangle has identity components: compatibility of the first two arrows is forced by the stored image inclusions, while compatibility of the connecting arrow is derived from uniqueness of cone projections and the canonical shift comparison.
A dg functor with cone-generator preservation induces a triangulated
functor on H⁰. The proof is the generator argument built into the definition
of H⁰.distinguishedTriangles, followed by closure under triangle isomorphism.
A shift-preserving dg functor needs only cone-generator preservation in
addition to its canonical shift structure to induce a triangulated functor on
H⁰. The explicit instance argument keeps callers from having to reproduce
the commShift construction at every use site.
The strong composable dg capabilities are sufficient to make H⁰(F) a
triangulated functor. The weak cone-generator proposition is derived
internally and does not have to be supplied by callers.
Every dg functor between pretriangulated dg categories induces a
triangulated functor on H⁰.
The shift and cone packages are selected explicitly rather than installed as global instances.