The seam commutes with the shift #
dg-enhancements-e7. Cdg.seam : H⁰(C^dg A) ≌ K(A) is an equivalence of
ordinary categories, and both sides carry a shift by ℤ: on the left the one
H0Shift.lean builds out of IsPretriangulated.exists_shift, on the right
Mathlib's, induced through the quotient. Nothing so far relates them.
Functor.CommShift does, and #378 calls it "the real content of this epic".
The route: factor through cochain complexes #
The two shifts are built by different routes out of the same shift on
CochainComplex A ℤ, so the comparison is cleanest with that common source kept
in the picture. The tautological functor
Cdg.toH0 : CochainComplex A ℤ ⥤ H⁰(C^dg A)
is the identity on objects, sends a chain map to the class of its own cochain,
and is full; and it satisfies Cdg.toH0 ⋙ Cdg.h0Functor = HomotopyCategory.quotient
on morphisms as well as objects (Cdg.h0Functor_map_toH0_map). So a CommShift
structure on Cdg.toH0, together with Mathlib's on the quotient functor,
assembles into one on the seam -- and that assembly is formal, which is the point
of going this way round.
Where the mathematics actually is #
All of it is in Cdg.toH0's two coherence identities, and both reduce to
IsShiftBy.compare bookkeeping over the model lemmas of
HomotopyCategory/ShiftComparison.lean. The chosen shift
IsPretriangulated.shiftObj is
Classical.choice, so it is never unfolded; what is used is that any two shifts
of the same object by the same degree are canonically isomorphic and that those
comparisons compose (IsShiftBy.compare_trans). The add coherence telescopes a
four-term composite into a single compare in exactly that way.
backward.isDefEq.respectTransparency #
H0 C is a type synonym for C, so goals about H0 (Cdg A) are routinely
ill-typed at instances transparency and no rewrite fires. Mathlib's own
set_option backward.isDefEq.respectTransparency false is the sanctioned way
through, and it is used here for exactly the declarations that need it.
Cochain complexes into H⁰(C^dg A).
Equations
- One or more equations did not get rendered due to their size.
Instances For
The tautological functor from cochain complexes to H⁰(C^dg A) is
additive.
The comparison between the model shift and the chosen shift, in H⁰.
Equations
Instances For
The zero coherence, componentwise.
The add coherence, componentwise.
Equations
- One or more equations did not get rendered due to their size.
The seam's commutation isomorphism with the shift, at one object: undo the
comparison of Cdg.toH0, then apply Mathlib's for the quotient functor.
Equations
- One or more equations did not get rendered due to their size.
Instances For
The seam commutes with the shift.
Equations
Instances For
dg-enhancements-e7, the shift half.
Equations
- CategoryTheory.Cdg.h0FunctorCommShift = { commShiftIso := CategoryTheory.Cdg.seamCommShiftIso, commShiftIso_zero := ⋯, commShiftIso_add := ⋯ }