algebra.homology.homology
⟷
Mathlib.Algebra.Homology.Homology
The following section lists changes to this file in mathlib3 and mathlib4 that occured after the initial port. Most recent changes are shown first. Hovering over a commit will show all commits associated with the same mathlib3 commit.
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(last sync)
mathlib commit https://github.com/leanprover-community/mathlib/commit/65a1391a0106c9204fe45bc73a039f056558cb83
@@ -185,7 +185,7 @@ def ChainComplex.homology'ZeroIso [HasKernels V] [HasImages V] [HasCokernels V]
Arrow.mk (C.dTo 0) ≅ Arrow.mk (C.d 1 0))
(Arrow.isoMk (Iso.refl _) (Iso.refl _) <| by
simp [C.d_from_eq_zero fun h : _ = _ =>
- one_ne_zero <| by rwa [ChainComplex.next_nat_zero] at h ] :
+ one_ne_zero <| by rwa [ChainComplex.next_nat_zero] at h] :
Arrow.mk (C.dFrom 0) ≅ Arrow.mk 0)
rfl).trans <|
homology'OfZeroRight _
mathlib commit https://github.com/leanprover-community/mathlib/commit/3365b20c2ffa7c35e47e5209b89ba9abdddf3ffe
@@ -46,31 +46,31 @@ section Cycles
variable [HasKernels V]
-#print HomologicalComplex.cycles /-
+#print HomologicalComplex.cycles' /-
/-- The cycles at index `i`, as a subobject. -/
-abbrev cycles (i : ι) : Subobject (C.pt i) :=
+abbrev cycles' (i : ι) : Subobject (C.pt i) :=
kernelSubobject (C.dFrom i)
-#align homological_complex.cycles HomologicalComplex.cycles
+#align homological_complex.cycles HomologicalComplex.cycles'
-/
-#print HomologicalComplex.cycles_eq_kernelSubobject /-
-theorem cycles_eq_kernelSubobject {i j : ι} (r : c.Rel i j) :
- C.cycles i = kernelSubobject (C.d i j) :=
+#print HomologicalComplex.cycles'_eq_kernelSubobject /-
+theorem cycles'_eq_kernelSubobject {i j : ι} (r : c.Rel i j) :
+ C.cycles' i = kernelSubobject (C.d i j) :=
C.kernel_from_eq_kernel r
-#align homological_complex.cycles_eq_kernel_subobject HomologicalComplex.cycles_eq_kernelSubobject
+#align homological_complex.cycles_eq_kernel_subobject HomologicalComplex.cycles'_eq_kernelSubobject
-/
-#print HomologicalComplex.cyclesIsoKernel /-
+#print HomologicalComplex.cycles'IsoKernel /-
/-- The underlying object of `C.cycles i` is isomorphic to `kernel (C.d i j)`,
for any `j` such that `rel i j`.
-/
-def cyclesIsoKernel {i j : ι} (r : c.Rel i j) : (C.cycles i : V) ≅ kernel (C.d i j) :=
- Subobject.isoOfEq _ _ (C.cycles_eq_kernelSubobject r) ≪≫ kernelSubobjectIso (C.d i j)
-#align homological_complex.cycles_iso_kernel HomologicalComplex.cyclesIsoKernel
+def cycles'IsoKernel {i j : ι} (r : c.Rel i j) : (C.cycles' i : V) ≅ kernel (C.d i j) :=
+ Subobject.isoOfEq _ _ (C.cycles'_eq_kernelSubobject r) ≪≫ kernelSubobjectIso (C.d i j)
+#align homological_complex.cycles_iso_kernel HomologicalComplex.cycles'IsoKernel
-/
#print HomologicalComplex.cycles_eq_top /-
-theorem cycles_eq_top {i} (h : ¬c.Rel i (c.next i)) : C.cycles i = ⊤ :=
+theorem cycles_eq_top {i} (h : ¬c.Rel i (c.next i)) : C.cycles' i = ⊤ :=
by
rw [eq_top_iff]
apply le_kernel_subobject
@@ -123,63 +123,63 @@ section
variable [HasKernels V] [HasImages V]
-#print HomologicalComplex.boundaries_le_cycles /-
-theorem boundaries_le_cycles (C : HomologicalComplex V c) (i : ι) : C.boundaries i ≤ C.cycles i :=
+#print HomologicalComplex.boundaries_le_cycles' /-
+theorem boundaries_le_cycles' (C : HomologicalComplex V c) (i : ι) : C.boundaries i ≤ C.cycles' i :=
image_le_kernel _ _ (C.dTo_comp_dFrom i)
-#align homological_complex.boundaries_le_cycles HomologicalComplex.boundaries_le_cycles
+#align homological_complex.boundaries_le_cycles HomologicalComplex.boundaries_le_cycles'
-/
-#print HomologicalComplex.boundariesToCycles /-
+#print HomologicalComplex.boundariesToCycles' /-
/-- The canonical map from `boundaries i` to `cycles i`.
-/
-abbrev boundariesToCycles (C : HomologicalComplex V c) (i : ι) :
- (C.boundaries i : V) ⟶ (C.cycles i : V) :=
+abbrev boundariesToCycles' (C : HomologicalComplex V c) (i : ι) :
+ (C.boundaries i : V) ⟶ (C.cycles' i : V) :=
imageToKernel _ _ (C.dTo_comp_dFrom i)
-#align homological_complex.boundaries_to_cycles HomologicalComplex.boundariesToCycles
+#align homological_complex.boundaries_to_cycles HomologicalComplex.boundariesToCycles'
-/
-#print HomologicalComplex.imageToKernel_as_boundariesToCycles /-
+#print HomologicalComplex.imageToKernel_as_boundariesToCycles' /-
/-- Prefer `boundaries_to_cycles`. -/
@[simp]
-theorem imageToKernel_as_boundariesToCycles (C : HomologicalComplex V c) (i : ι) (h) :
- (C.boundaries i).of_le (C.cycles i) h = C.boundariesToCycles i :=
+theorem imageToKernel_as_boundariesToCycles' (C : HomologicalComplex V c) (i : ι) (h) :
+ (C.boundaries i).of_le (C.cycles' i) h = C.boundariesToCycles' i :=
rfl
-#align homological_complex.image_to_kernel_as_boundaries_to_cycles HomologicalComplex.imageToKernel_as_boundariesToCycles
+#align homological_complex.image_to_kernel_as_boundaries_to_cycles HomologicalComplex.imageToKernel_as_boundariesToCycles'
-/
variable [HasCokernels V]
-#print HomologicalComplex.homology /-
+#print HomologicalComplex.homology' /-
/-- The homology of a complex at index `i`.
-/
-abbrev homology (C : HomologicalComplex V c) (i : ι) : V :=
- homology (C.dTo i) (C.dFrom i) (C.dTo_comp_dFrom i)
-#align homological_complex.homology HomologicalComplex.homology
+abbrev homology' (C : HomologicalComplex V c) (i : ι) : V :=
+ homology' (C.dTo i) (C.dFrom i) (C.dTo_comp_dFrom i)
+#align homological_complex.homology HomologicalComplex.homology'
-/
-#print HomologicalComplex.homologyIso /-
+#print HomologicalComplex.homology'Iso /-
/-- The `j`th homology of a homological complex (as kernel of 'the differential from `Cⱼ`' modulo
the image of 'the differential to `Cⱼ`') is isomorphic to the kernel of `d : Cⱼ → Cₖ` modulo
the image of `d : Cᵢ → Cⱼ` when `rel i j` and `rel j k`. -/
-def homologyIso (C : HomologicalComplex V c) {i j k : ι} (hij : c.Rel i j) (hjk : c.Rel j k) :
- C.homology j ≅ homology (C.d i j) (C.d j k) (C.d_comp_d i j k) :=
- homology.mapIso _ _
+def homology'Iso (C : HomologicalComplex V c) {i j k : ι} (hij : c.Rel i j) (hjk : c.Rel j k) :
+ C.homology' j ≅ homology' (C.d i j) (C.d j k) (C.d_comp_d i j k) :=
+ homology'.mapIso _ _
(Arrow.isoMk (C.xPrevIso hij) (Iso.refl _) <| by dsimp <;> rw [C.d_to_eq hij, category.comp_id])
(Arrow.isoMk (Iso.refl _) (C.xNextIso hjk) <| by
dsimp <;> rw [C.d_from_comp_X_next_iso hjk, category.id_comp])
rfl
-#align homological_complex.homology_iso HomologicalComplex.homologyIso
+#align homological_complex.homology_iso HomologicalComplex.homology'Iso
-/
end
end HomologicalComplex
-#print ChainComplex.homologyZeroIso /-
+#print ChainComplex.homology'ZeroIso /-
/-- The 0th homology of a chain complex is isomorphic to the cokernel of `d : C₁ ⟶ C₀`. -/
-def ChainComplex.homologyZeroIso [HasKernels V] [HasImages V] [HasCokernels V]
- (C : ChainComplex V ℕ) [Epi (factorThruImage (C.d 1 0))] : C.homology 0 ≅ cokernel (C.d 1 0) :=
- (homology.mapIso _ _
+def ChainComplex.homology'ZeroIso [HasKernels V] [HasImages V] [HasCokernels V]
+ (C : ChainComplex V ℕ) [Epi (factorThruImage (C.d 1 0))] : C.homology' 0 ≅ cokernel (C.d 1 0) :=
+ (homology'.mapIso _ _
(Arrow.isoMk (C.xPrevIso rfl) (Iso.refl _) <| by
rw [C.d_to_eq rfl] <;> exact (category.comp_id _).symm :
Arrow.mk (C.dTo 0) ≅ Arrow.mk (C.d 1 0))
@@ -188,45 +188,45 @@ def ChainComplex.homologyZeroIso [HasKernels V] [HasImages V] [HasCokernels V]
one_ne_zero <| by rwa [ChainComplex.next_nat_zero] at h ] :
Arrow.mk (C.dFrom 0) ≅ Arrow.mk 0)
rfl).trans <|
- homologyOfZeroRight _
-#align chain_complex.homology_zero_iso ChainComplex.homologyZeroIso
+ homology'OfZeroRight _
+#align chain_complex.homology_zero_iso ChainComplex.homology'ZeroIso
-/
-#print CochainComplex.homologyZeroIso /-
+#print CochainComplex.homology'ZeroIso /-
/-- The 0th cohomology of a cochain complex is isomorphic to the kernel of `d : C₀ → C₁`. -/
-def CochainComplex.homologyZeroIso [HasZeroObject V] [HasKernels V] [HasImages V] [HasCokernels V]
- (C : CochainComplex V ℕ) : C.homology 0 ≅ kernel (C.d 0 1) :=
- (homology.mapIso _ _
+def CochainComplex.homology'ZeroIso [HasZeroObject V] [HasKernels V] [HasImages V] [HasCokernels V]
+ (C : CochainComplex V ℕ) : C.homology' 0 ≅ kernel (C.d 0 1) :=
+ (homology'.mapIso _ _
(Arrow.isoMk (C.xPrevIsoSelf (by rw [CochainComplex.prev_nat_zero] <;> exact one_ne_zero))
(Iso.refl _) (by simp) :
Arrow.mk (C.dTo 0) ≅ Arrow.mk 0)
(Arrow.isoMk (Iso.refl _) (C.xNextIso rfl) (by simp) :
Arrow.mk (C.dFrom 0) ≅ Arrow.mk (C.d 0 1)) <|
by simpa).trans <|
- homologyOfZeroLeft _
-#align cochain_complex.homology_zero_iso CochainComplex.homologyZeroIso
+ homology'OfZeroLeft _
+#align cochain_complex.homology_zero_iso CochainComplex.homology'ZeroIso
-/
-#print ChainComplex.homologySuccIso /-
+#print ChainComplex.homology'SuccIso /-
/-- The `n + 1`th homology of a chain complex (as kernel of 'the differential from `Cₙ₊₁`' modulo
the image of 'the differential to `Cₙ₊₁`') is isomorphic to the kernel of `d : Cₙ₊₁ → Cₙ` modulo
the image of `d : Cₙ₊₂ → Cₙ₊₁`. -/
-def ChainComplex.homologySuccIso [HasKernels V] [HasImages V] [HasCokernels V]
+def ChainComplex.homology'SuccIso [HasKernels V] [HasImages V] [HasCokernels V]
(C : ChainComplex V ℕ) (n : ℕ) :
- C.homology (n + 1) ≅ homology (C.d (n + 2) (n + 1)) (C.d (n + 1) n) (C.d_comp_d _ _ _) :=
- C.homologyIso rfl rfl
-#align chain_complex.homology_succ_iso ChainComplex.homologySuccIso
+ C.homology' (n + 1) ≅ homology' (C.d (n + 2) (n + 1)) (C.d (n + 1) n) (C.d_comp_d _ _ _) :=
+ C.homology'Iso rfl rfl
+#align chain_complex.homology_succ_iso ChainComplex.homology'SuccIso
-/
-#print CochainComplex.homologySuccIso /-
+#print CochainComplex.homology'SuccIso /-
/-- The `n + 1`th cohomology of a cochain complex (as kernel of 'the differential from `Cₙ₊₁`'
modulo the image of 'the differential to `Cₙ₊₁`') is isomorphic to the kernel of `d : Cₙ₊₁ → Cₙ₊₂`
modulo the image of `d : Cₙ → Cₙ₊₁`. -/
-def CochainComplex.homologySuccIso [HasKernels V] [HasImages V] [HasCokernels V]
+def CochainComplex.homology'SuccIso [HasKernels V] [HasImages V] [HasCokernels V]
(C : CochainComplex V ℕ) (n : ℕ) :
- C.homology (n + 1) ≅ homology (C.d n (n + 1)) (C.d (n + 1) (n + 2)) (C.d_comp_d _ _ _) :=
- C.homologyIso rfl rfl
-#align cochain_complex.homology_succ_iso CochainComplex.homologySuccIso
+ C.homology' (n + 1) ≅ homology' (C.d n (n + 1)) (C.d (n + 1) (n + 2)) (C.d_comp_d _ _ _) :=
+ C.homology'Iso rfl rfl
+#align cochain_complex.homology_succ_iso CochainComplex.homology'SuccIso
-/
open HomologicalComplex
@@ -240,45 +240,45 @@ variable [HasKernels V]
variable {C₁ C₂ C₃ : HomologicalComplex V c} (f : C₁ ⟶ C₂)
-#print cyclesMap /-
+#print cycles'Map /-
/-- The morphism between cycles induced by a chain map.
-/
-abbrev cyclesMap (f : C₁ ⟶ C₂) (i : ι) : (C₁.cycles i : V) ⟶ (C₂.cycles i : V) :=
- Subobject.factorThru _ ((C₁.cycles i).arrow ≫ f.f i) (kernelSubobject_factors _ _ (by simp))
-#align cycles_map cyclesMap
+abbrev cycles'Map (f : C₁ ⟶ C₂) (i : ι) : (C₁.cycles' i : V) ⟶ (C₂.cycles' i : V) :=
+ Subobject.factorThru _ ((C₁.cycles' i).arrow ≫ f.f i) (kernelSubobject_factors _ _ (by simp))
+#align cycles_map cycles'Map
-/
-#print cyclesMap_arrow /-
+#print cycles'Map_arrow /-
@[simp, reassoc, elementwise]
-theorem cyclesMap_arrow (f : C₁ ⟶ C₂) (i : ι) :
- cyclesMap f i ≫ (C₂.cycles i).arrow = (C₁.cycles i).arrow ≫ f.f i := by simp
-#align cycles_map_arrow cyclesMap_arrow
+theorem cycles'Map_arrow (f : C₁ ⟶ C₂) (i : ι) :
+ cycles'Map f i ≫ (C₂.cycles' i).arrow = (C₁.cycles' i).arrow ≫ f.f i := by simp
+#align cycles_map_arrow cycles'Map_arrow
-/
-#print cyclesMap_id /-
+#print cycles'Map_id /-
@[simp]
-theorem cyclesMap_id (i : ι) : cyclesMap (𝟙 C₁) i = 𝟙 _ := by dsimp only [cyclesMap]; simp
-#align cycles_map_id cyclesMap_id
+theorem cycles'Map_id (i : ι) : cycles'Map (𝟙 C₁) i = 𝟙 _ := by dsimp only [cycles'Map]; simp
+#align cycles_map_id cycles'Map_id
-/
-#print cyclesMap_comp /-
+#print cycles'Map_comp /-
@[simp]
-theorem cyclesMap_comp (f : C₁ ⟶ C₂) (g : C₂ ⟶ C₃) (i : ι) :
- cyclesMap (f ≫ g) i = cyclesMap f i ≫ cyclesMap g i := by dsimp only [cyclesMap];
+theorem cycles'Map_comp (f : C₁ ⟶ C₂) (g : C₂ ⟶ C₃) (i : ι) :
+ cycles'Map (f ≫ g) i = cycles'Map f i ≫ cycles'Map g i := by dsimp only [cycles'Map];
simp [subobject.factor_thru_right]
-#align cycles_map_comp cyclesMap_comp
+#align cycles_map_comp cycles'Map_comp
-/
variable (V c)
-#print cyclesFunctor /-
+#print cycles'Functor /-
/-- Cycles as a functor. -/
@[simps]
-def cyclesFunctor (i : ι) : HomologicalComplex V c ⥤ V
+def cycles'Functor (i : ι) : HomologicalComplex V c ⥤ V
where
- obj C := C.cycles i
- map C₁ C₂ f := cyclesMap f i
-#align cycles_functor cyclesFunctor
+ obj C := C.cycles' i
+ map C₁ C₂ f := cycles'Map f i
+#align cycles_functor cycles'Functor
-/
end
@@ -323,63 +323,63 @@ variable [HasEqualizers V] [HasImages V] [HasImageMaps V]
variable {C₁ C₂ : HomologicalComplex V c} (f : C₁ ⟶ C₂)
-#print boundariesToCycles_naturality /-
+#print boundariesToCycles'_naturality /-
@[simp, reassoc]
-theorem boundariesToCycles_naturality (i : ι) :
- boundariesMap f i ≫ C₂.boundariesToCycles i = C₁.boundariesToCycles i ≫ cyclesMap f i := by ext;
- simp
-#align boundaries_to_cycles_naturality boundariesToCycles_naturality
+theorem boundariesToCycles'_naturality (i : ι) :
+ boundariesMap f i ≫ C₂.boundariesToCycles' i = C₁.boundariesToCycles' i ≫ cycles'Map f i := by
+ ext; simp
+#align boundaries_to_cycles_naturality boundariesToCycles'_naturality
-/
variable (V c)
-#print boundariesToCyclesNatTrans /-
+#print boundariesToCycles'NatTrans /-
/-- The natural transformation from the boundaries functor to the cycles functor. -/
@[simps]
-def boundariesToCyclesNatTrans (i : ι) : boundariesFunctor V c i ⟶ cyclesFunctor V c i
+def boundariesToCycles'NatTrans (i : ι) : boundariesFunctor V c i ⟶ cycles'Functor V c i
where
- app C := C.boundariesToCycles i
- naturality' C₁ C₂ f := boundariesToCycles_naturality f i
-#align boundaries_to_cycles_nat_trans boundariesToCyclesNatTrans
+ app C := C.boundariesToCycles' i
+ naturality' C₁ C₂ f := boundariesToCycles'_naturality f i
+#align boundaries_to_cycles_nat_trans boundariesToCycles'NatTrans
-/
-#print homologyFunctor /-
+#print homology'Functor /-
/-- The `i`-th homology, as a functor to `V`. -/
@[simps]
-def homologyFunctor [HasCokernels V] (i : ι) : HomologicalComplex V c ⥤ V
+def homology'Functor [HasCokernels V] (i : ι) : HomologicalComplex V c ⥤ V
where
-- It would be nice if we could just write
-- `cokernel (boundaries_to_cycles_nat_trans V c i)`
-- here, but universe implementation details get in the way...
- obj C := C.homology i
- map C₁ C₂ f := homology.map _ _ (f.sqTo i) (f.sqFrom i) rfl
+ obj C := C.homology' i
+ map C₁ C₂ f := homology'.map _ _ (f.sqTo i) (f.sqFrom i) rfl
map_id' := by
intros; ext1
- simp only [homology.π_map, kernel_subobject_map_id, hom.sq_from_id, category.id_comp,
+ simp only [homology'.π_map, kernel_subobject_map_id, hom.sq_from_id, category.id_comp,
category.comp_id]
map_comp' := by
intros; ext1
- simp only [hom.sq_from_comp, kernel_subobject_map_comp, homology.π_map_assoc, homology.π_map,
+ simp only [hom.sq_from_comp, kernel_subobject_map_comp, homology'.π_map_assoc, homology'.π_map,
category.assoc]
-#align homology_functor homologyFunctor
+#align homology_functor homology'Functor
-/
-#print gradedHomologyFunctor /-
+#print gradedHomology'Functor /-
/-- The homology functor from `ι`-indexed complexes to `ι`-graded objects in `V`. -/
@[simps]
-def gradedHomologyFunctor [HasCokernels V] : HomologicalComplex V c ⥤ GradedObject ι V
+def gradedHomology'Functor [HasCokernels V] : HomologicalComplex V c ⥤ GradedObject ι V
where
- obj C i := C.homology i
- map C C' f i := (homologyFunctor V c i).map f
+ obj C i := C.homology' i
+ map C C' f i := (homology'Functor V c i).map f
map_id' := by
intros; ext
- simp only [pi.id_apply, homology.π_map, homologyFunctor_map, kernel_subobject_map_id,
+ simp only [pi.id_apply, homology'.π_map, homology'Functor_map, kernel_subobject_map_id,
hom.sq_from_id, category.id_comp, category.comp_id]
map_comp' := by
intros; ext
- simp only [hom.sq_from_comp, kernel_subobject_map_comp, homology.π_map_assoc, pi.comp_apply,
- homology.π_map, homologyFunctor_map, category.assoc]
-#align graded_homology_functor gradedHomologyFunctor
+ simp only [hom.sq_from_comp, kernel_subobject_map_comp, homology'.π_map_assoc, pi.comp_apply,
+ homology'.π_map, homology'Functor_map, category.assoc]
+#align graded_homology_functor gradedHomology'Functor
-/
end
mathlib commit https://github.com/leanprover-community/mathlib/commit/ce64cd319bb6b3e82f31c2d38e79080d377be451
@@ -3,9 +3,9 @@ Copyright (c) 2021 Scott Morrison. All rights reserved.
Released under Apache 2.0 license as described in the file LICENSE.
Authors: Scott Morrison
-/
-import Mathbin.Algebra.Homology.ImageToKernel
-import Mathbin.Algebra.Homology.HomologicalComplex
-import Mathbin.CategoryTheory.GradedObject
+import Algebra.Homology.ImageToKernel
+import Algebra.Homology.HomologicalComplex
+import CategoryTheory.GradedObject
#align_import algebra.homology.homology from "leanprover-community/mathlib"@"8eb9c42d4d34c77f6ee84ea766ae4070233a973c"
mathlib commit https://github.com/leanprover-community/mathlib/commit/8ea5598db6caeddde6cb734aa179cc2408dbd345
@@ -2,16 +2,13 @@
Copyright (c) 2021 Scott Morrison. All rights reserved.
Released under Apache 2.0 license as described in the file LICENSE.
Authors: Scott Morrison
-
-! This file was ported from Lean 3 source module algebra.homology.homology
-! leanprover-community/mathlib commit 8eb9c42d4d34c77f6ee84ea766ae4070233a973c
-! Please do not edit these lines, except to modify the commit id
-! if you have ported upstream changes.
-/
import Mathbin.Algebra.Homology.ImageToKernel
import Mathbin.Algebra.Homology.HomologicalComplex
import Mathbin.CategoryTheory.GradedObject
+#align_import algebra.homology.homology from "leanprover-community/mathlib"@"8eb9c42d4d34c77f6ee84ea766ae4070233a973c"
+
/-!
# The homology of a complex
mathlib commit https://github.com/leanprover-community/mathlib/commit/9fb8964792b4237dac6200193a0d533f1b3f7423
@@ -56,24 +56,30 @@ abbrev cycles (i : ι) : Subobject (C.pt i) :=
#align homological_complex.cycles HomologicalComplex.cycles
-/
+#print HomologicalComplex.cycles_eq_kernelSubobject /-
theorem cycles_eq_kernelSubobject {i j : ι} (r : c.Rel i j) :
C.cycles i = kernelSubobject (C.d i j) :=
C.kernel_from_eq_kernel r
#align homological_complex.cycles_eq_kernel_subobject HomologicalComplex.cycles_eq_kernelSubobject
+-/
+#print HomologicalComplex.cyclesIsoKernel /-
/-- The underlying object of `C.cycles i` is isomorphic to `kernel (C.d i j)`,
for any `j` such that `rel i j`.
-/
def cyclesIsoKernel {i j : ι} (r : c.Rel i j) : (C.cycles i : V) ≅ kernel (C.d i j) :=
Subobject.isoOfEq _ _ (C.cycles_eq_kernelSubobject r) ≪≫ kernelSubobjectIso (C.d i j)
#align homological_complex.cycles_iso_kernel HomologicalComplex.cyclesIsoKernel
+-/
+#print HomologicalComplex.cycles_eq_top /-
theorem cycles_eq_top {i} (h : ¬c.Rel i (c.next i)) : C.cycles i = ⊤ :=
by
rw [eq_top_iff]
apply le_kernel_subobject
rw [C.d_from_eq_zero h, comp_zero]
#align homological_complex.cycles_eq_top HomologicalComplex.cycles_eq_top
+-/
end Cycles
@@ -88,11 +94,14 @@ abbrev boundaries (C : HomologicalComplex V c) (j : ι) : Subobject (C.pt j) :=
#align homological_complex.boundaries HomologicalComplex.boundaries
-/
+#print HomologicalComplex.boundaries_eq_imageSubobject /-
theorem boundaries_eq_imageSubobject [HasEqualizers V] {i j : ι} (r : c.Rel i j) :
C.boundaries j = imageSubobject (C.d i j) :=
C.image_to_eq_image r
#align homological_complex.boundaries_eq_image_subobject HomologicalComplex.boundaries_eq_imageSubobject
+-/
+#print HomologicalComplex.boundariesIsoImage /-
/-- The underlying object of `C.boundaries j` is isomorphic to `image (C.d i j)`,
for any `i` such that `rel i j`.
-/
@@ -100,13 +109,16 @@ def boundariesIsoImage [HasEqualizers V] {i j : ι} (r : c.Rel i j) :
(C.boundaries j : V) ≅ image (C.d i j) :=
Subobject.isoOfEq _ _ (C.boundaries_eq_imageSubobject r) ≪≫ imageSubobjectIso (C.d i j)
#align homological_complex.boundaries_iso_image HomologicalComplex.boundariesIsoImage
+-/
+#print HomologicalComplex.boundaries_eq_bot /-
theorem boundaries_eq_bot [HasZeroObject V] {j} (h : ¬c.Rel (c.prev j) j) : C.boundaries j = ⊥ :=
by
rw [eq_bot_iff]
refine' image_subobject_le _ 0 _
rw [C.d_to_eq_zero h, zero_comp]
#align homological_complex.boundaries_eq_bot HomologicalComplex.boundaries_eq_bot
+-/
end Boundaries
@@ -114,23 +126,29 @@ section
variable [HasKernels V] [HasImages V]
+#print HomologicalComplex.boundaries_le_cycles /-
theorem boundaries_le_cycles (C : HomologicalComplex V c) (i : ι) : C.boundaries i ≤ C.cycles i :=
image_le_kernel _ _ (C.dTo_comp_dFrom i)
#align homological_complex.boundaries_le_cycles HomologicalComplex.boundaries_le_cycles
+-/
+#print HomologicalComplex.boundariesToCycles /-
/-- The canonical map from `boundaries i` to `cycles i`.
-/
abbrev boundariesToCycles (C : HomologicalComplex V c) (i : ι) :
(C.boundaries i : V) ⟶ (C.cycles i : V) :=
imageToKernel _ _ (C.dTo_comp_dFrom i)
#align homological_complex.boundaries_to_cycles HomologicalComplex.boundariesToCycles
+-/
+#print HomologicalComplex.imageToKernel_as_boundariesToCycles /-
/-- Prefer `boundaries_to_cycles`. -/
@[simp]
theorem imageToKernel_as_boundariesToCycles (C : HomologicalComplex V c) (i : ι) (h) :
(C.boundaries i).of_le (C.cycles i) h = C.boundariesToCycles i :=
rfl
#align homological_complex.image_to_kernel_as_boundaries_to_cycles HomologicalComplex.imageToKernel_as_boundariesToCycles
+-/
variable [HasCokernels V]
@@ -225,26 +243,34 @@ variable [HasKernels V]
variable {C₁ C₂ C₃ : HomologicalComplex V c} (f : C₁ ⟶ C₂)
+#print cyclesMap /-
/-- The morphism between cycles induced by a chain map.
-/
abbrev cyclesMap (f : C₁ ⟶ C₂) (i : ι) : (C₁.cycles i : V) ⟶ (C₂.cycles i : V) :=
Subobject.factorThru _ ((C₁.cycles i).arrow ≫ f.f i) (kernelSubobject_factors _ _ (by simp))
#align cycles_map cyclesMap
+-/
+#print cyclesMap_arrow /-
@[simp, reassoc, elementwise]
theorem cyclesMap_arrow (f : C₁ ⟶ C₂) (i : ι) :
cyclesMap f i ≫ (C₂.cycles i).arrow = (C₁.cycles i).arrow ≫ f.f i := by simp
#align cycles_map_arrow cyclesMap_arrow
+-/
+#print cyclesMap_id /-
@[simp]
theorem cyclesMap_id (i : ι) : cyclesMap (𝟙 C₁) i = 𝟙 _ := by dsimp only [cyclesMap]; simp
#align cycles_map_id cyclesMap_id
+-/
+#print cyclesMap_comp /-
@[simp]
theorem cyclesMap_comp (f : C₁ ⟶ C₂) (g : C₂ ⟶ C₃) (i : ι) :
cyclesMap (f ≫ g) i = cyclesMap f i ≫ cyclesMap g i := by dsimp only [cyclesMap];
simp [subobject.factor_thru_right]
#align cycles_map_comp cyclesMap_comp
+-/
variable (V c)
@@ -269,11 +295,13 @@ variable [HasImages V] [HasImageMaps V]
variable {C₁ C₂ C₃ : HomologicalComplex V c} (f : C₁ ⟶ C₂)
+#print boundariesMap /-
/-- The morphism between boundaries induced by a chain map.
-/
abbrev boundariesMap (f : C₁ ⟶ C₂) (i : ι) : (C₁.boundaries i : V) ⟶ (C₂.boundaries i : V) :=
imageSubobjectMap (f.sqTo i)
#align boundaries_map boundariesMap
+-/
variable (V c)
@@ -298,11 +326,13 @@ variable [HasEqualizers V] [HasImages V] [HasImageMaps V]
variable {C₁ C₂ : HomologicalComplex V c} (f : C₁ ⟶ C₂)
+#print boundariesToCycles_naturality /-
@[simp, reassoc]
theorem boundariesToCycles_naturality (i : ι) :
boundariesMap f i ≫ C₂.boundariesToCycles i = C₁.boundariesToCycles i ≫ cyclesMap f i := by ext;
simp
#align boundaries_to_cycles_naturality boundariesToCycles_naturality
+-/
variable (V c)
mathlib commit https://github.com/leanprover-community/mathlib/commit/cca40788df1b8755d5baf17ab2f27dacc2e17acb
@@ -170,7 +170,7 @@ def ChainComplex.homologyZeroIso [HasKernels V] [HasImages V] [HasCokernels V]
Arrow.mk (C.dTo 0) ≅ Arrow.mk (C.d 1 0))
(Arrow.isoMk (Iso.refl _) (Iso.refl _) <| by
simp [C.d_from_eq_zero fun h : _ = _ =>
- one_ne_zero <| by rwa [ChainComplex.next_nat_zero] at h] :
+ one_ne_zero <| by rwa [ChainComplex.next_nat_zero] at h ] :
Arrow.mk (C.dFrom 0) ≅ Arrow.mk 0)
rfl).trans <|
homologyOfZeroRight _
@@ -327,11 +327,11 @@ def homologyFunctor [HasCokernels V] (i : ι) : HomologicalComplex V c ⥤ V
obj C := C.homology i
map C₁ C₂ f := homology.map _ _ (f.sqTo i) (f.sqFrom i) rfl
map_id' := by
- intros ; ext1
+ intros; ext1
simp only [homology.π_map, kernel_subobject_map_id, hom.sq_from_id, category.id_comp,
category.comp_id]
map_comp' := by
- intros ; ext1
+ intros; ext1
simp only [hom.sq_from_comp, kernel_subobject_map_comp, homology.π_map_assoc, homology.π_map,
category.assoc]
#align homology_functor homologyFunctor
@@ -345,11 +345,11 @@ def gradedHomologyFunctor [HasCokernels V] : HomologicalComplex V c ⥤ GradedOb
obj C i := C.homology i
map C C' f i := (homologyFunctor V c i).map f
map_id' := by
- intros ; ext
+ intros; ext
simp only [pi.id_apply, homology.π_map, homologyFunctor_map, kernel_subobject_map_id,
hom.sq_from_id, category.id_comp, category.comp_id]
map_comp' := by
- intros ; ext
+ intros; ext
simp only [hom.sq_from_comp, kernel_subobject_map_comp, homology.π_map_assoc, pi.comp_apply,
homology.π_map, homologyFunctor_map, category.assoc]
#align graded_homology_functor gradedHomologyFunctor
mathlib commit https://github.com/leanprover-community/mathlib/commit/917c3c072e487b3cccdbfeff17e75b40e45f66cb
@@ -39,7 +39,7 @@ variable {V : Type u} [Category.{v} V] [HasZeroMorphisms V]
variable {c : ComplexShape ι} (C : HomologicalComplex V c)
-open Classical ZeroObject
+open scoped Classical ZeroObject
noncomputable section
mathlib commit https://github.com/leanprover-community/mathlib/commit/917c3c072e487b3cccdbfeff17e75b40e45f66cb
@@ -56,23 +56,11 @@ abbrev cycles (i : ι) : Subobject (C.pt i) :=
#align homological_complex.cycles HomologicalComplex.cycles
-/
-/- warning: homological_complex.cycles_eq_kernel_subobject -> HomologicalComplex.cycles_eq_kernelSubobject is a dubious translation:
-lean 3 declaration is
- forall {ι : Type.{u3}} {V : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u1, u2} V] [_inst_2 : CategoryTheory.Limits.HasZeroMorphisms.{u1, u2} V _inst_1] {c : ComplexShape.{u3} ι} (C : HomologicalComplex.{u1, u2, u3} ι V _inst_1 _inst_2 c) [_inst_3 : CategoryTheory.Limits.HasKernels.{u1, u2} V _inst_1 _inst_2] {i : ι} {j : ι}, (ComplexShape.Rel.{u3} ι c i j) -> (Eq.{succ (max u2 u1)} (CategoryTheory.Subobject.{u1, u2} V _inst_1 (HomologicalComplex.x.{u1, u2, u3} ι V _inst_1 _inst_2 c C i)) (HomologicalComplex.cycles.{u1, u2, u3} ι V _inst_1 _inst_2 c C _inst_3 i) (CategoryTheory.Limits.kernelSubobject.{u1, u2} V _inst_1 (HomologicalComplex.x.{u1, u2, u3} ι V _inst_1 _inst_2 c C i) (HomologicalComplex.x.{u1, u2, u3} ι V _inst_1 _inst_2 c C j) _inst_2 (HomologicalComplex.d.{u1, u2, u3} ι V _inst_1 _inst_2 c C i j) (CategoryTheory.Limits.HasKernels.has_limit.{u1, u2} V _inst_1 _inst_2 _inst_3 (HomologicalComplex.x.{u1, u2, u3} ι V _inst_1 _inst_2 c C i) (HomologicalComplex.x.{u1, u2, u3} ι V _inst_1 _inst_2 c C j) (HomologicalComplex.d.{u1, u2, u3} ι V _inst_1 _inst_2 c C i j))))
-but is expected to have type
- forall {ι : Type.{u1}} {V : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u2, u3} V] [_inst_2 : CategoryTheory.Limits.HasZeroMorphisms.{u2, u3} V _inst_1] {c : ComplexShape.{u1} ι} (C : HomologicalComplex.{u2, u3, u1} ι V _inst_1 _inst_2 c) [_inst_3 : CategoryTheory.Limits.HasKernels.{u2, u3} V _inst_1 _inst_2] {i : ι} {j : ι}, (ComplexShape.Rel.{u1} ι c i j) -> (Eq.{max (succ u3) (succ u2)} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C i)) (HomologicalComplex.cycles.{u2, u3, u1} ι V _inst_1 _inst_2 c C _inst_3 i) (CategoryTheory.Limits.kernelSubobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C i) (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C j) _inst_2 (HomologicalComplex.d.{u2, u3, u1} ι V _inst_1 _inst_2 c C i j) (CategoryTheory.Limits.HasKernels.has_limit.{u2, u3} V _inst_1 _inst_2 _inst_3 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C i) (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C j) (HomologicalComplex.d.{u2, u3, u1} ι V _inst_1 _inst_2 c C i j))))
-Case conversion may be inaccurate. Consider using '#align homological_complex.cycles_eq_kernel_subobject HomologicalComplex.cycles_eq_kernelSubobjectₓ'. -/
theorem cycles_eq_kernelSubobject {i j : ι} (r : c.Rel i j) :
C.cycles i = kernelSubobject (C.d i j) :=
C.kernel_from_eq_kernel r
#align homological_complex.cycles_eq_kernel_subobject HomologicalComplex.cycles_eq_kernelSubobject
-/- warning: homological_complex.cycles_iso_kernel -> HomologicalComplex.cyclesIsoKernel is a dubious translation:
-lean 3 declaration is
- forall {ι : Type.{u3}} {V : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u1, u2} V] [_inst_2 : CategoryTheory.Limits.HasZeroMorphisms.{u1, u2} V _inst_1] {c : ComplexShape.{u3} ι} (C : HomologicalComplex.{u1, u2, u3} ι V _inst_1 _inst_2 c) [_inst_3 : CategoryTheory.Limits.HasKernels.{u1, u2} V _inst_1 _inst_2] {i : ι} {j : ι}, (ComplexShape.Rel.{u3} ι c i j) -> (CategoryTheory.Iso.{u1, u2} V _inst_1 ((fun (a : Type.{max u2 u1}) (b : Type.{u2}) [self : HasLiftT.{succ (max u2 u1), succ u2} a b] => self.0) (CategoryTheory.Subobject.{u1, u2} V _inst_1 (HomologicalComplex.x.{u1, u2, u3} ι V _inst_1 _inst_2 c C i)) V (HasLiftT.mk.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 (HomologicalComplex.x.{u1, u2, u3} ι V _inst_1 _inst_2 c C i)) V (CoeTCₓ.coe.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 (HomologicalComplex.x.{u1, u2, u3} ι V _inst_1 _inst_2 c C i)) V (coeBase.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 (HomologicalComplex.x.{u1, u2, u3} ι V _inst_1 _inst_2 c C i)) V (CategoryTheory.Subobject.hasCoe.{u1, u2} V _inst_1 (HomologicalComplex.x.{u1, u2, u3} ι V _inst_1 _inst_2 c C i))))) (HomologicalComplex.cycles.{u1, u2, u3} ι V _inst_1 _inst_2 c C _inst_3 i)) (CategoryTheory.Limits.kernel.{u1, u2} V _inst_1 _inst_2 (HomologicalComplex.x.{u1, u2, u3} ι V _inst_1 _inst_2 c C i) (HomologicalComplex.x.{u1, u2, u3} ι V _inst_1 _inst_2 c C j) (HomologicalComplex.d.{u1, u2, u3} ι V _inst_1 _inst_2 c C i j) (HomologicalComplex.cyclesIsoKernel._proof_1.{u2, u3, u1} ι V _inst_1 _inst_2 c C _inst_3 i j)))
-but is expected to have type
- forall {ι : Type.{u3}} {V : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u1, u2} V] [_inst_2 : CategoryTheory.Limits.HasZeroMorphisms.{u1, u2} V _inst_1] {c : ComplexShape.{u3} ι} (C : HomologicalComplex.{u1, u2, u3} ι V _inst_1 _inst_2 c) [_inst_3 : CategoryTheory.Limits.HasKernels.{u1, u2} V _inst_1 _inst_2] {i : ι} {j : ι}, (ComplexShape.Rel.{u3} ι c i j) -> (CategoryTheory.Iso.{u1, u2} V _inst_1 (Prefunctor.obj.{max (succ u2) (succ u1), succ u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 (HomologicalComplex.X.{u1, u2, u3} ι V _inst_1 _inst_2 c C i)) (CategoryTheory.CategoryStruct.toQuiver.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 (HomologicalComplex.X.{u1, u2, u3} ι V _inst_1 _inst_2 c C i)) (CategoryTheory.Category.toCategoryStruct.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 (HomologicalComplex.X.{u1, u2, u3} ι V _inst_1 _inst_2 c C i)) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 (HomologicalComplex.X.{u1, u2, u3} ι V _inst_1 _inst_2 c C i)) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 (HomologicalComplex.X.{u1, u2, u3} ι V _inst_1 _inst_2 c C i)) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 (HomologicalComplex.X.{u1, u2, u3} ι V _inst_1 _inst_2 c C i)))))) V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) (CategoryTheory.Functor.toPrefunctor.{max u2 u1, u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 (HomologicalComplex.X.{u1, u2, u3} ι V _inst_1 _inst_2 c C i)) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 (HomologicalComplex.X.{u1, u2, u3} ι V _inst_1 _inst_2 c C i)) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 (HomologicalComplex.X.{u1, u2, u3} ι V _inst_1 _inst_2 c C i)) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 (HomologicalComplex.X.{u1, u2, u3} ι V _inst_1 _inst_2 c C i)))) V _inst_1 (CategoryTheory.Subobject.underlying.{u1, u2} V _inst_1 (HomologicalComplex.X.{u1, u2, u3} ι V _inst_1 _inst_2 c C i))) (HomologicalComplex.cycles.{u1, u2, u3} ι V _inst_1 _inst_2 c C _inst_3 i)) (CategoryTheory.Limits.kernel.{u1, u2} V _inst_1 _inst_2 (HomologicalComplex.X.{u1, u2, u3} ι V _inst_1 _inst_2 c C i) (HomologicalComplex.X.{u1, u2, u3} ι V _inst_1 _inst_2 c C j) (HomologicalComplex.d.{u1, u2, u3} ι V _inst_1 _inst_2 c C i j) (CategoryTheory.Limits.HasKernels.has_limit.{u1, u2} V _inst_1 _inst_2 _inst_3 (HomologicalComplex.X.{u1, u2, u3} ι V _inst_1 _inst_2 c C i) (HomologicalComplex.X.{u1, u2, u3} ι V _inst_1 _inst_2 c C j) (HomologicalComplex.d.{u1, u2, u3} ι V _inst_1 _inst_2 c C i j))))
-Case conversion may be inaccurate. Consider using '#align homological_complex.cycles_iso_kernel HomologicalComplex.cyclesIsoKernelₓ'. -/
/-- The underlying object of `C.cycles i` is isomorphic to `kernel (C.d i j)`,
for any `j` such that `rel i j`.
-/
@@ -80,12 +68,6 @@ def cyclesIsoKernel {i j : ι} (r : c.Rel i j) : (C.cycles i : V) ≅ kernel (C.
Subobject.isoOfEq _ _ (C.cycles_eq_kernelSubobject r) ≪≫ kernelSubobjectIso (C.d i j)
#align homological_complex.cycles_iso_kernel HomologicalComplex.cyclesIsoKernel
-/- warning: homological_complex.cycles_eq_top -> HomologicalComplex.cycles_eq_top is a dubious translation:
-lean 3 declaration is
- forall {ι : Type.{u3}} {V : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u1, u2} V] [_inst_2 : CategoryTheory.Limits.HasZeroMorphisms.{u1, u2} V _inst_1] {c : ComplexShape.{u3} ι} (C : HomologicalComplex.{u1, u2, u3} ι V _inst_1 _inst_2 c) [_inst_3 : CategoryTheory.Limits.HasKernels.{u1, u2} V _inst_1 _inst_2] {i : ι}, (Not (ComplexShape.Rel.{u3} ι c i (ComplexShape.next.{u3} ι c i))) -> (Eq.{succ (max u2 u1)} (CategoryTheory.Subobject.{u1, u2} V _inst_1 (HomologicalComplex.x.{u1, u2, u3} ι V _inst_1 _inst_2 c C i)) (HomologicalComplex.cycles.{u1, u2, u3} ι V _inst_1 _inst_2 c C _inst_3 i) (Top.top.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 (HomologicalComplex.x.{u1, u2, u3} ι V _inst_1 _inst_2 c C i)) (OrderTop.toHasTop.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 (HomologicalComplex.x.{u1, u2, u3} ι V _inst_1 _inst_2 c C i)) (Preorder.toHasLe.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 (HomologicalComplex.x.{u1, u2, u3} ι V _inst_1 _inst_2 c C i)) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 (HomologicalComplex.x.{u1, u2, u3} ι V _inst_1 _inst_2 c C i)) (CategoryTheory.Subobject.partialOrder.{u2, u1} V _inst_1 (HomologicalComplex.x.{u1, u2, u3} ι V _inst_1 _inst_2 c C i)))) (CategoryTheory.Subobject.orderTop.{u1, u2} V _inst_1 (HomologicalComplex.x.{u1, u2, u3} ι V _inst_1 _inst_2 c C i)))))
-but is expected to have type
- forall {ι : Type.{u1}} {V : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u2, u3} V] [_inst_2 : CategoryTheory.Limits.HasZeroMorphisms.{u2, u3} V _inst_1] {c : ComplexShape.{u1} ι} (C : HomologicalComplex.{u2, u3, u1} ι V _inst_1 _inst_2 c) [_inst_3 : CategoryTheory.Limits.HasKernels.{u2, u3} V _inst_1 _inst_2] {i : ι}, (Not (ComplexShape.Rel.{u1} ι c i (ComplexShape.next.{u1} ι c i))) -> (Eq.{max (succ u3) (succ u2)} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C i)) (HomologicalComplex.cycles.{u2, u3, u1} ι V _inst_1 _inst_2 c C _inst_3 i) (Top.top.{max u3 u2} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C i)) (OrderTop.toTop.{max u3 u2} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C i)) (Preorder.toLE.{max u3 u2} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C i)) (PartialOrder.toPreorder.{max u3 u2} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C i)) (CategoryTheory.instPartialOrderSubobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C i)))) (CategoryTheory.Subobject.orderTop.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C i)))))
-Case conversion may be inaccurate. Consider using '#align homological_complex.cycles_eq_top HomologicalComplex.cycles_eq_topₓ'. -/
theorem cycles_eq_top {i} (h : ¬c.Rel i (c.next i)) : C.cycles i = ⊤ :=
by
rw [eq_top_iff]
@@ -106,20 +88,11 @@ abbrev boundaries (C : HomologicalComplex V c) (j : ι) : Subobject (C.pt j) :=
#align homological_complex.boundaries HomologicalComplex.boundaries
-/
-/- warning: homological_complex.boundaries_eq_image_subobject -> HomologicalComplex.boundaries_eq_imageSubobject is a dubious translation:
-lean 3 declaration is
- forall {ι : Type.{u3}} {V : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u1, u2} V] [_inst_2 : CategoryTheory.Limits.HasZeroMorphisms.{u1, u2} V _inst_1] {c : ComplexShape.{u3} ι} (C : HomologicalComplex.{u1, u2, u3} ι V _inst_1 _inst_2 c) [_inst_3 : CategoryTheory.Limits.HasImages.{u1, u2} V _inst_1] [_inst_4 : CategoryTheory.Limits.HasEqualizers.{u1, u2} V _inst_1] {i : ι} {j : ι}, (ComplexShape.Rel.{u3} ι c i j) -> (Eq.{succ (max u2 u1)} (CategoryTheory.Subobject.{u1, u2} V _inst_1 (HomologicalComplex.x.{u1, u2, u3} ι V _inst_1 _inst_2 c C j)) (HomologicalComplex.boundaries.{u1, u2, u3} ι V _inst_1 _inst_2 c _inst_3 C j) (CategoryTheory.Limits.imageSubobject.{u1, u2} V _inst_1 (HomologicalComplex.x.{u1, u2, u3} ι V _inst_1 _inst_2 c C i) (HomologicalComplex.x.{u1, u2, u3} ι V _inst_1 _inst_2 c C j) (HomologicalComplex.d.{u1, u2, u3} ι V _inst_1 _inst_2 c C i j) (CategoryTheory.Limits.HasImages.hasImage.{u1, u2} V _inst_1 _inst_3 (HomologicalComplex.x.{u1, u2, u3} ι V _inst_1 _inst_2 c C i) (HomologicalComplex.x.{u1, u2, u3} ι V _inst_1 _inst_2 c C j) (HomologicalComplex.d.{u1, u2, u3} ι V _inst_1 _inst_2 c C i j))))
-but is expected to have type
- forall {ι : Type.{u1}} {V : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u2, u3} V] [_inst_2 : CategoryTheory.Limits.HasZeroMorphisms.{u2, u3} V _inst_1] {c : ComplexShape.{u1} ι} (C : HomologicalComplex.{u2, u3, u1} ι V _inst_1 _inst_2 c) [_inst_3 : CategoryTheory.Limits.HasImages.{u2, u3} V _inst_1] [_inst_4 : CategoryTheory.Limits.HasEqualizers.{u2, u3} V _inst_1] {i : ι} {j : ι}, (ComplexShape.Rel.{u1} ι c i j) -> (Eq.{max (succ u3) (succ u2)} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C j)) (HomologicalComplex.boundaries.{u2, u3, u1} ι V _inst_1 _inst_2 c _inst_3 C j) (CategoryTheory.Limits.imageSubobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C i) (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C j) (HomologicalComplex.d.{u2, u3, u1} ι V _inst_1 _inst_2 c C i j) (CategoryTheory.Limits.HasImages.has_image.{u2, u3} V _inst_1 _inst_3 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C i) (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C j) (HomologicalComplex.d.{u2, u3, u1} ι V _inst_1 _inst_2 c C i j))))
-Case conversion may be inaccurate. Consider using '#align homological_complex.boundaries_eq_image_subobject HomologicalComplex.boundaries_eq_imageSubobjectₓ'. -/
theorem boundaries_eq_imageSubobject [HasEqualizers V] {i j : ι} (r : c.Rel i j) :
C.boundaries j = imageSubobject (C.d i j) :=
C.image_to_eq_image r
#align homological_complex.boundaries_eq_image_subobject HomologicalComplex.boundaries_eq_imageSubobject
-/- warning: homological_complex.boundaries_iso_image -> HomologicalComplex.boundariesIsoImage is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align homological_complex.boundaries_iso_image HomologicalComplex.boundariesIsoImageₓ'. -/
/-- The underlying object of `C.boundaries j` is isomorphic to `image (C.d i j)`,
for any `i` such that `rel i j`.
-/
@@ -128,12 +101,6 @@ def boundariesIsoImage [HasEqualizers V] {i j : ι} (r : c.Rel i j) :
Subobject.isoOfEq _ _ (C.boundaries_eq_imageSubobject r) ≪≫ imageSubobjectIso (C.d i j)
#align homological_complex.boundaries_iso_image HomologicalComplex.boundariesIsoImage
-/- warning: homological_complex.boundaries_eq_bot -> HomologicalComplex.boundaries_eq_bot is a dubious translation:
-lean 3 declaration is
- forall {ι : Type.{u3}} {V : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u1, u2} V] [_inst_2 : CategoryTheory.Limits.HasZeroMorphisms.{u1, u2} V _inst_1] {c : ComplexShape.{u3} ι} (C : HomologicalComplex.{u1, u2, u3} ι V _inst_1 _inst_2 c) [_inst_3 : CategoryTheory.Limits.HasImages.{u1, u2} V _inst_1] [_inst_4 : CategoryTheory.Limits.HasZeroObject.{u1, u2} V _inst_1] {j : ι}, (Not (ComplexShape.Rel.{u3} ι c (ComplexShape.prev.{u3} ι c j) j)) -> (Eq.{succ (max u2 u1)} (CategoryTheory.Subobject.{u1, u2} V _inst_1 (HomologicalComplex.x.{u1, u2, u3} ι V _inst_1 _inst_2 c C j)) (HomologicalComplex.boundaries.{u1, u2, u3} ι V _inst_1 _inst_2 c _inst_3 C j) (Bot.bot.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 (HomologicalComplex.x.{u1, u2, u3} ι V _inst_1 _inst_2 c C j)) (OrderBot.toHasBot.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 (HomologicalComplex.x.{u1, u2, u3} ι V _inst_1 _inst_2 c C j)) (Preorder.toHasLe.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 (HomologicalComplex.x.{u1, u2, u3} ι V _inst_1 _inst_2 c C j)) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 (HomologicalComplex.x.{u1, u2, u3} ι V _inst_1 _inst_2 c C j)) (CategoryTheory.Subobject.partialOrder.{u2, u1} V _inst_1 (HomologicalComplex.x.{u1, u2, u3} ι V _inst_1 _inst_2 c C j)))) (CategoryTheory.Subobject.orderBot.{u1, u2} V _inst_1 (CategoryTheory.Limits.HasZeroObject.hasInitial.{u1, u2} V _inst_1 _inst_4) (CategoryTheory.Limits.HasZeroObject.initialMonoClass.{u1, u2} V _inst_1 _inst_4) (HomologicalComplex.x.{u1, u2, u3} ι V _inst_1 _inst_2 c C j)))))
-but is expected to have type
- forall {ι : Type.{u1}} {V : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u2, u3} V] [_inst_2 : CategoryTheory.Limits.HasZeroMorphisms.{u2, u3} V _inst_1] {c : ComplexShape.{u1} ι} (C : HomologicalComplex.{u2, u3, u1} ι V _inst_1 _inst_2 c) [_inst_3 : CategoryTheory.Limits.HasImages.{u2, u3} V _inst_1] [_inst_4 : CategoryTheory.Limits.HasZeroObject.{u2, u3} V _inst_1] {j : ι}, (Not (ComplexShape.Rel.{u1} ι c (ComplexShape.prev.{u1} ι c j) j)) -> (Eq.{max (succ u3) (succ u2)} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C j)) (HomologicalComplex.boundaries.{u2, u3, u1} ι V _inst_1 _inst_2 c _inst_3 C j) (Bot.bot.{max u3 u2} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C j)) (OrderBot.toBot.{max u3 u2} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C j)) (Preorder.toLE.{max u3 u2} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C j)) (PartialOrder.toPreorder.{max u3 u2} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C j)) (CategoryTheory.instPartialOrderSubobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C j)))) (CategoryTheory.Subobject.orderBot.{u2, u3} V _inst_1 (CategoryTheory.Limits.HasZeroObject.hasInitial.{u2, u3} V _inst_1 _inst_4) (CategoryTheory.Limits.HasZeroObject.initialMonoClass.{u2, u3} V _inst_1 _inst_4) (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C j)))))
-Case conversion may be inaccurate. Consider using '#align homological_complex.boundaries_eq_bot HomologicalComplex.boundaries_eq_botₓ'. -/
theorem boundaries_eq_bot [HasZeroObject V] {j} (h : ¬c.Rel (c.prev j) j) : C.boundaries j = ⊥ :=
by
rw [eq_bot_iff]
@@ -147,22 +114,10 @@ section
variable [HasKernels V] [HasImages V]
-/- warning: homological_complex.boundaries_le_cycles -> HomologicalComplex.boundaries_le_cycles is a dubious translation:
-lean 3 declaration is
- forall {ι : Type.{u3}} {V : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u1, u2} V] [_inst_2 : CategoryTheory.Limits.HasZeroMorphisms.{u1, u2} V _inst_1] {c : ComplexShape.{u3} ι} [_inst_3 : CategoryTheory.Limits.HasKernels.{u1, u2} V _inst_1 _inst_2] [_inst_4 : CategoryTheory.Limits.HasImages.{u1, u2} V _inst_1] (C : HomologicalComplex.{u1, u2, u3} ι V _inst_1 _inst_2 c) (i : ι), LE.le.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 (HomologicalComplex.x.{u1, u2, u3} ι V _inst_1 _inst_2 c C i)) (Preorder.toHasLe.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 (HomologicalComplex.x.{u1, u2, u3} ι V _inst_1 _inst_2 c C i)) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 (HomologicalComplex.x.{u1, u2, u3} ι V _inst_1 _inst_2 c C i)) (CategoryTheory.Subobject.partialOrder.{u2, u1} V _inst_1 (HomologicalComplex.x.{u1, u2, u3} ι V _inst_1 _inst_2 c C i)))) (HomologicalComplex.boundaries.{u1, u2, u3} ι V _inst_1 _inst_2 c _inst_4 C i) (HomologicalComplex.cycles.{u1, u2, u3} ι V _inst_1 _inst_2 c C _inst_3 i)
-but is expected to have type
- forall {ι : Type.{u1}} {V : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u2, u3} V] [_inst_2 : CategoryTheory.Limits.HasZeroMorphisms.{u2, u3} V _inst_1] {c : ComplexShape.{u1} ι} [_inst_3 : CategoryTheory.Limits.HasKernels.{u2, u3} V _inst_1 _inst_2] [_inst_4 : CategoryTheory.Limits.HasImages.{u2, u3} V _inst_1] (C : HomologicalComplex.{u2, u3, u1} ι V _inst_1 _inst_2 c) (i : ι), LE.le.{max u3 u2} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C i)) (Preorder.toLE.{max u3 u2} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C i)) (PartialOrder.toPreorder.{max u3 u2} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C i)) (CategoryTheory.instPartialOrderSubobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C i)))) (HomologicalComplex.boundaries.{u2, u3, u1} ι V _inst_1 _inst_2 c _inst_4 C i) (HomologicalComplex.cycles.{u2, u3, u1} ι V _inst_1 _inst_2 c C _inst_3 i)
-Case conversion may be inaccurate. Consider using '#align homological_complex.boundaries_le_cycles HomologicalComplex.boundaries_le_cyclesₓ'. -/
theorem boundaries_le_cycles (C : HomologicalComplex V c) (i : ι) : C.boundaries i ≤ C.cycles i :=
image_le_kernel _ _ (C.dTo_comp_dFrom i)
#align homological_complex.boundaries_le_cycles HomologicalComplex.boundaries_le_cycles
-/- warning: homological_complex.boundaries_to_cycles -> HomologicalComplex.boundariesToCycles is a dubious translation:
-lean 3 declaration is
- forall {ι : Type.{u3}} {V : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u1, u2} V] [_inst_2 : CategoryTheory.Limits.HasZeroMorphisms.{u1, u2} V _inst_1] {c : ComplexShape.{u3} ι} [_inst_3 : CategoryTheory.Limits.HasKernels.{u1, u2} V _inst_1 _inst_2] [_inst_4 : CategoryTheory.Limits.HasImages.{u1, u2} V _inst_1] (C : HomologicalComplex.{u1, u2, u3} ι V _inst_1 _inst_2 c) (i : ι), Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) ((fun (a : Type.{max u2 u1}) (b : Type.{u2}) [self : HasLiftT.{succ (max u2 u1), succ u2} a b] => self.0) (CategoryTheory.Subobject.{u1, u2} V _inst_1 (HomologicalComplex.x.{u1, u2, u3} ι V _inst_1 _inst_2 c C i)) V (HasLiftT.mk.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 (HomologicalComplex.x.{u1, u2, u3} ι V _inst_1 _inst_2 c C i)) V (CoeTCₓ.coe.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 (HomologicalComplex.x.{u1, u2, u3} ι V _inst_1 _inst_2 c C i)) V (coeBase.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 (HomologicalComplex.x.{u1, u2, u3} ι V _inst_1 _inst_2 c C i)) V (CategoryTheory.Subobject.hasCoe.{u1, u2} V _inst_1 (HomologicalComplex.x.{u1, u2, u3} ι V _inst_1 _inst_2 c C i))))) (HomologicalComplex.boundaries.{u1, u2, u3} ι V _inst_1 _inst_2 c _inst_4 C i)) ((fun (a : Type.{max u2 u1}) (b : Type.{u2}) [self : HasLiftT.{succ (max u2 u1), succ u2} a b] => self.0) (CategoryTheory.Subobject.{u1, u2} V _inst_1 (HomologicalComplex.x.{u1, u2, u3} ι V _inst_1 _inst_2 c C i)) V (HasLiftT.mk.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 (HomologicalComplex.x.{u1, u2, u3} ι V _inst_1 _inst_2 c C i)) V (CoeTCₓ.coe.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 (HomologicalComplex.x.{u1, u2, u3} ι V _inst_1 _inst_2 c C i)) V (coeBase.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 (HomologicalComplex.x.{u1, u2, u3} ι V _inst_1 _inst_2 c C i)) V (CategoryTheory.Subobject.hasCoe.{u1, u2} V _inst_1 (HomologicalComplex.x.{u1, u2, u3} ι V _inst_1 _inst_2 c C i))))) (HomologicalComplex.cycles.{u1, u2, u3} ι V _inst_1 _inst_2 c C _inst_3 i))
-but is expected to have type
- forall {ι : Type.{u3}} {V : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u1, u2} V] [_inst_2 : CategoryTheory.Limits.HasZeroMorphisms.{u1, u2} V _inst_1] {c : ComplexShape.{u3} ι} [_inst_3 : CategoryTheory.Limits.HasKernels.{u1, u2} V _inst_1 _inst_2] [_inst_4 : CategoryTheory.Limits.HasImages.{u1, u2} V _inst_1] (C : HomologicalComplex.{u1, u2, u3} ι V _inst_1 _inst_2 c) (i : ι), Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) (Prefunctor.obj.{max (succ u2) (succ u1), succ u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 (HomologicalComplex.X.{u1, u2, u3} ι V _inst_1 _inst_2 c C i)) (CategoryTheory.CategoryStruct.toQuiver.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 (HomologicalComplex.X.{u1, u2, u3} ι V _inst_1 _inst_2 c C i)) (CategoryTheory.Category.toCategoryStruct.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 (HomologicalComplex.X.{u1, u2, u3} ι V _inst_1 _inst_2 c C i)) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 (HomologicalComplex.X.{u1, u2, u3} ι V _inst_1 _inst_2 c C i)) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 (HomologicalComplex.X.{u1, u2, u3} ι V _inst_1 _inst_2 c C i)) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 (HomologicalComplex.X.{u1, u2, u3} ι V _inst_1 _inst_2 c C i)))))) V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) (CategoryTheory.Functor.toPrefunctor.{max u2 u1, u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 (HomologicalComplex.X.{u1, u2, u3} ι V _inst_1 _inst_2 c C i)) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 (HomologicalComplex.X.{u1, u2, u3} ι V _inst_1 _inst_2 c C i)) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 (HomologicalComplex.X.{u1, u2, u3} ι V _inst_1 _inst_2 c C i)) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 (HomologicalComplex.X.{u1, u2, u3} ι V _inst_1 _inst_2 c C i)))) V _inst_1 (CategoryTheory.Subobject.underlying.{u1, u2} V _inst_1 (HomologicalComplex.X.{u1, u2, u3} ι V _inst_1 _inst_2 c C i))) (HomologicalComplex.boundaries.{u1, u2, u3} ι V _inst_1 _inst_2 c _inst_4 C i)) (Prefunctor.obj.{max (succ u2) (succ u1), succ u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 (HomologicalComplex.X.{u1, u2, u3} ι V _inst_1 _inst_2 c C i)) (CategoryTheory.CategoryStruct.toQuiver.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 (HomologicalComplex.X.{u1, u2, u3} ι V _inst_1 _inst_2 c C i)) (CategoryTheory.Category.toCategoryStruct.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 (HomologicalComplex.X.{u1, u2, u3} ι V _inst_1 _inst_2 c C i)) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 (HomologicalComplex.X.{u1, u2, u3} ι V _inst_1 _inst_2 c C i)) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 (HomologicalComplex.X.{u1, u2, u3} ι V _inst_1 _inst_2 c C i)) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 (HomologicalComplex.X.{u1, u2, u3} ι V _inst_1 _inst_2 c C i)))))) V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) (CategoryTheory.Functor.toPrefunctor.{max u2 u1, u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 (HomologicalComplex.X.{u1, u2, u3} ι V _inst_1 _inst_2 c C i)) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 (HomologicalComplex.X.{u1, u2, u3} ι V _inst_1 _inst_2 c C i)) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 (HomologicalComplex.X.{u1, u2, u3} ι V _inst_1 _inst_2 c C i)) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 (HomologicalComplex.X.{u1, u2, u3} ι V _inst_1 _inst_2 c C i)))) V _inst_1 (CategoryTheory.Subobject.underlying.{u1, u2} V _inst_1 (HomologicalComplex.X.{u1, u2, u3} ι V _inst_1 _inst_2 c C i))) (HomologicalComplex.cycles.{u1, u2, u3} ι V _inst_1 _inst_2 c C _inst_3 i))
-Case conversion may be inaccurate. Consider using '#align homological_complex.boundaries_to_cycles HomologicalComplex.boundariesToCyclesₓ'. -/
/-- The canonical map from `boundaries i` to `cycles i`.
-/
abbrev boundariesToCycles (C : HomologicalComplex V c) (i : ι) :
@@ -170,9 +125,6 @@ abbrev boundariesToCycles (C : HomologicalComplex V c) (i : ι) :
imageToKernel _ _ (C.dTo_comp_dFrom i)
#align homological_complex.boundaries_to_cycles HomologicalComplex.boundariesToCycles
-/- warning: homological_complex.image_to_kernel_as_boundaries_to_cycles -> HomologicalComplex.imageToKernel_as_boundariesToCycles is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align homological_complex.image_to_kernel_as_boundaries_to_cycles HomologicalComplex.imageToKernel_as_boundariesToCyclesₓ'. -/
/-- Prefer `boundaries_to_cycles`. -/
@[simp]
theorem imageToKernel_as_boundariesToCycles (C : HomologicalComplex V c) (i : ι) (h) :
@@ -273,36 +225,21 @@ variable [HasKernels V]
variable {C₁ C₂ C₃ : HomologicalComplex V c} (f : C₁ ⟶ C₂)
-/- warning: cycles_map -> cyclesMap is a dubious translation:
-lean 3 declaration is
- forall {ι : Type.{u3}} {V : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u1, u2} V] [_inst_2 : CategoryTheory.Limits.HasZeroMorphisms.{u1, u2} V _inst_1] {c : ComplexShape.{u3} ι} [_inst_3 : CategoryTheory.Limits.HasKernels.{u1, u2} V _inst_1 _inst_2] {C₁ : HomologicalComplex.{u1, u2, u3} ι V _inst_1 _inst_2 c} {C₂ : HomologicalComplex.{u1, u2, u3} ι V _inst_1 _inst_2 c}, (Quiver.Hom.{succ (max u3 u1), max u2 u3 u1} (HomologicalComplex.{u1, u2, u3} ι V _inst_1 _inst_2 c) (CategoryTheory.CategoryStruct.toQuiver.{max u3 u1, max u2 u3 u1} (HomologicalComplex.{u1, u2, u3} ι V _inst_1 _inst_2 c) (CategoryTheory.Category.toCategoryStruct.{max u3 u1, max u2 u3 u1} (HomologicalComplex.{u1, u2, u3} ι V _inst_1 _inst_2 c) (HomologicalComplex.CategoryTheory.category.{u1, u2, u3} ι V _inst_1 _inst_2 c))) C₁ C₂) -> (forall (i : ι), Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) ((fun (a : Type.{max u2 u1}) (b : Type.{u2}) [self : HasLiftT.{succ (max u2 u1), succ u2} a b] => self.0) (CategoryTheory.Subobject.{u1, u2} V _inst_1 (HomologicalComplex.x.{u1, u2, u3} ι V _inst_1 _inst_2 c C₁ i)) V (HasLiftT.mk.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 (HomologicalComplex.x.{u1, u2, u3} ι V _inst_1 _inst_2 c C₁ i)) V (CoeTCₓ.coe.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 (HomologicalComplex.x.{u1, u2, u3} ι V _inst_1 _inst_2 c C₁ i)) V (coeBase.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 (HomologicalComplex.x.{u1, u2, u3} ι V _inst_1 _inst_2 c C₁ i)) V (CategoryTheory.Subobject.hasCoe.{u1, u2} V _inst_1 (HomologicalComplex.x.{u1, u2, u3} ι V _inst_1 _inst_2 c C₁ i))))) (HomologicalComplex.cycles.{u1, u2, u3} ι V _inst_1 _inst_2 c C₁ _inst_3 i)) ((fun (a : Type.{max u2 u1}) (b : Type.{u2}) [self : HasLiftT.{succ (max u2 u1), succ u2} a b] => self.0) (CategoryTheory.Subobject.{u1, u2} V _inst_1 (HomologicalComplex.x.{u1, u2, u3} ι V _inst_1 _inst_2 c C₂ i)) V (HasLiftT.mk.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 (HomologicalComplex.x.{u1, u2, u3} ι V _inst_1 _inst_2 c C₂ i)) V (CoeTCₓ.coe.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 (HomologicalComplex.x.{u1, u2, u3} ι V _inst_1 _inst_2 c C₂ i)) V (coeBase.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 (HomologicalComplex.x.{u1, u2, u3} ι V _inst_1 _inst_2 c C₂ i)) V (CategoryTheory.Subobject.hasCoe.{u1, u2} V _inst_1 (HomologicalComplex.x.{u1, u2, u3} ι V _inst_1 _inst_2 c C₂ i))))) (HomologicalComplex.cycles.{u1, u2, u3} ι V _inst_1 _inst_2 c C₂ _inst_3 i)))
-but is expected to have type
- forall {ι : Type.{u3}} {V : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u1, u2} V] [_inst_2 : CategoryTheory.Limits.HasZeroMorphisms.{u1, u2} V _inst_1] {c : ComplexShape.{u3} ι} [_inst_3 : CategoryTheory.Limits.HasKernels.{u1, u2} V _inst_1 _inst_2] {C₁ : HomologicalComplex.{u1, u2, u3} ι V _inst_1 _inst_2 c} {C₂ : HomologicalComplex.{u1, u2, u3} ι V _inst_1 _inst_2 c}, (Quiver.Hom.{max (succ u1) (succ u3), max (max u2 u1) u3} (HomologicalComplex.{u1, u2, u3} ι V _inst_1 _inst_2 c) (CategoryTheory.CategoryStruct.toQuiver.{max u1 u3, max (max u2 u1) u3} (HomologicalComplex.{u1, u2, u3} ι V _inst_1 _inst_2 c) (CategoryTheory.Category.toCategoryStruct.{max u1 u3, max (max u2 u1) u3} (HomologicalComplex.{u1, u2, u3} ι V _inst_1 _inst_2 c) (HomologicalComplex.instCategoryHomologicalComplex.{u1, u2, u3} ι V _inst_1 _inst_2 c))) C₁ C₂) -> (forall (i : ι), Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) (Prefunctor.obj.{max (succ u2) (succ u1), succ u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 (HomologicalComplex.X.{u1, u2, u3} ι V _inst_1 _inst_2 c C₁ i)) (CategoryTheory.CategoryStruct.toQuiver.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 (HomologicalComplex.X.{u1, u2, u3} ι V _inst_1 _inst_2 c C₁ i)) (CategoryTheory.Category.toCategoryStruct.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 (HomologicalComplex.X.{u1, u2, u3} ι V _inst_1 _inst_2 c C₁ i)) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 (HomologicalComplex.X.{u1, u2, u3} ι V _inst_1 _inst_2 c C₁ i)) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 (HomologicalComplex.X.{u1, u2, u3} ι V _inst_1 _inst_2 c C₁ i)) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 (HomologicalComplex.X.{u1, u2, u3} ι V _inst_1 _inst_2 c C₁ i)))))) V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) (CategoryTheory.Functor.toPrefunctor.{max u2 u1, u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 (HomologicalComplex.X.{u1, u2, u3} ι V _inst_1 _inst_2 c C₁ i)) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 (HomologicalComplex.X.{u1, u2, u3} ι V _inst_1 _inst_2 c C₁ i)) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 (HomologicalComplex.X.{u1, u2, u3} ι V _inst_1 _inst_2 c C₁ i)) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 (HomologicalComplex.X.{u1, u2, u3} ι V _inst_1 _inst_2 c C₁ i)))) V _inst_1 (CategoryTheory.Subobject.underlying.{u1, u2} V _inst_1 (HomologicalComplex.X.{u1, u2, u3} ι V _inst_1 _inst_2 c C₁ i))) (HomologicalComplex.cycles.{u1, u2, u3} ι V _inst_1 _inst_2 c C₁ _inst_3 i)) (Prefunctor.obj.{max (succ u2) (succ u1), succ u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 (HomologicalComplex.X.{u1, u2, u3} ι V _inst_1 _inst_2 c C₂ i)) (CategoryTheory.CategoryStruct.toQuiver.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 (HomologicalComplex.X.{u1, u2, u3} ι V _inst_1 _inst_2 c C₂ i)) (CategoryTheory.Category.toCategoryStruct.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 (HomologicalComplex.X.{u1, u2, u3} ι V _inst_1 _inst_2 c C₂ i)) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 (HomologicalComplex.X.{u1, u2, u3} ι V _inst_1 _inst_2 c C₂ i)) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 (HomologicalComplex.X.{u1, u2, u3} ι V _inst_1 _inst_2 c C₂ i)) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 (HomologicalComplex.X.{u1, u2, u3} ι V _inst_1 _inst_2 c C₂ i)))))) V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) (CategoryTheory.Functor.toPrefunctor.{max u2 u1, u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 (HomologicalComplex.X.{u1, u2, u3} ι V _inst_1 _inst_2 c C₂ i)) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 (HomologicalComplex.X.{u1, u2, u3} ι V _inst_1 _inst_2 c C₂ i)) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 (HomologicalComplex.X.{u1, u2, u3} ι V _inst_1 _inst_2 c C₂ i)) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 (HomologicalComplex.X.{u1, u2, u3} ι V _inst_1 _inst_2 c C₂ i)))) V _inst_1 (CategoryTheory.Subobject.underlying.{u1, u2} V _inst_1 (HomologicalComplex.X.{u1, u2, u3} ι V _inst_1 _inst_2 c C₂ i))) (HomologicalComplex.cycles.{u1, u2, u3} ι V _inst_1 _inst_2 c C₂ _inst_3 i)))
-Case conversion may be inaccurate. Consider using '#align cycles_map cyclesMapₓ'. -/
/-- The morphism between cycles induced by a chain map.
-/
abbrev cyclesMap (f : C₁ ⟶ C₂) (i : ι) : (C₁.cycles i : V) ⟶ (C₂.cycles i : V) :=
Subobject.factorThru _ ((C₁.cycles i).arrow ≫ f.f i) (kernelSubobject_factors _ _ (by simp))
#align cycles_map cyclesMap
-/- warning: cycles_map_arrow -> cyclesMap_arrow is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align cycles_map_arrow cyclesMap_arrowₓ'. -/
@[simp, reassoc, elementwise]
theorem cyclesMap_arrow (f : C₁ ⟶ C₂) (i : ι) :
cyclesMap f i ≫ (C₂.cycles i).arrow = (C₁.cycles i).arrow ≫ f.f i := by simp
#align cycles_map_arrow cyclesMap_arrow
-/- warning: cycles_map_id -> cyclesMap_id is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align cycles_map_id cyclesMap_idₓ'. -/
@[simp]
theorem cyclesMap_id (i : ι) : cyclesMap (𝟙 C₁) i = 𝟙 _ := by dsimp only [cyclesMap]; simp
#align cycles_map_id cyclesMap_id
-/- warning: cycles_map_comp -> cyclesMap_comp is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align cycles_map_comp cyclesMap_compₓ'. -/
@[simp]
theorem cyclesMap_comp (f : C₁ ⟶ C₂) (g : C₂ ⟶ C₃) (i : ι) :
cyclesMap (f ≫ g) i = cyclesMap f i ≫ cyclesMap g i := by dsimp only [cyclesMap];
@@ -332,9 +269,6 @@ variable [HasImages V] [HasImageMaps V]
variable {C₁ C₂ C₃ : HomologicalComplex V c} (f : C₁ ⟶ C₂)
-/- warning: boundaries_map -> boundariesMap is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align boundaries_map boundariesMapₓ'. -/
/-- The morphism between boundaries induced by a chain map.
-/
abbrev boundariesMap (f : C₁ ⟶ C₂) (i : ι) : (C₁.boundaries i : V) ⟶ (C₂.boundaries i : V) :=
@@ -364,9 +298,6 @@ variable [HasEqualizers V] [HasImages V] [HasImageMaps V]
variable {C₁ C₂ : HomologicalComplex V c} (f : C₁ ⟶ C₂)
-/- warning: boundaries_to_cycles_naturality -> boundariesToCycles_naturality is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align boundaries_to_cycles_naturality boundariesToCycles_naturalityₓ'. -/
@[simp, reassoc]
theorem boundariesToCycles_naturality (i : ι) :
boundariesMap f i ≫ C₂.boundariesToCycles i = C₁.boundariesToCycles i ≫ cyclesMap f i := by ext;
mathlib commit https://github.com/leanprover-community/mathlib/commit/917c3c072e487b3cccdbfeff17e75b40e45f66cb
@@ -297,10 +297,7 @@ theorem cyclesMap_arrow (f : C₁ ⟶ C₂) (i : ι) :
<too large>
Case conversion may be inaccurate. Consider using '#align cycles_map_id cyclesMap_idₓ'. -/
@[simp]
-theorem cyclesMap_id (i : ι) : cyclesMap (𝟙 C₁) i = 𝟙 _ :=
- by
- dsimp only [cyclesMap]
- simp
+theorem cyclesMap_id (i : ι) : cyclesMap (𝟙 C₁) i = 𝟙 _ := by dsimp only [cyclesMap]; simp
#align cycles_map_id cyclesMap_id
/- warning: cycles_map_comp -> cyclesMap_comp is a dubious translation:
@@ -308,9 +305,7 @@ theorem cyclesMap_id (i : ι) : cyclesMap (𝟙 C₁) i = 𝟙 _ :=
Case conversion may be inaccurate. Consider using '#align cycles_map_comp cyclesMap_compₓ'. -/
@[simp]
theorem cyclesMap_comp (f : C₁ ⟶ C₂) (g : C₂ ⟶ C₃) (i : ι) :
- cyclesMap (f ≫ g) i = cyclesMap f i ≫ cyclesMap g i :=
- by
- dsimp only [cyclesMap]
+ cyclesMap (f ≫ g) i = cyclesMap f i ≫ cyclesMap g i := by dsimp only [cyclesMap];
simp [subobject.factor_thru_right]
#align cycles_map_comp cyclesMap_comp
@@ -374,9 +369,7 @@ variable {C₁ C₂ : HomologicalComplex V c} (f : C₁ ⟶ C₂)
Case conversion may be inaccurate. Consider using '#align boundaries_to_cycles_naturality boundariesToCycles_naturalityₓ'. -/
@[simp, reassoc]
theorem boundariesToCycles_naturality (i : ι) :
- boundariesMap f i ≫ C₂.boundariesToCycles i = C₁.boundariesToCycles i ≫ cyclesMap f i :=
- by
- ext
+ boundariesMap f i ≫ C₂.boundariesToCycles i = C₁.boundariesToCycles i ≫ cyclesMap f i := by ext;
simp
#align boundaries_to_cycles_naturality boundariesToCycles_naturality
mathlib commit https://github.com/leanprover-community/mathlib/commit/917c3c072e487b3cccdbfeff17e75b40e45f66cb
@@ -118,10 +118,7 @@ theorem boundaries_eq_imageSubobject [HasEqualizers V] {i j : ι} (r : c.Rel i j
#align homological_complex.boundaries_eq_image_subobject HomologicalComplex.boundaries_eq_imageSubobject
/- warning: homological_complex.boundaries_iso_image -> HomologicalComplex.boundariesIsoImage is a dubious translation:
-lean 3 declaration is
- forall {ι : Type.{u3}} {V : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u1, u2} V] [_inst_2 : CategoryTheory.Limits.HasZeroMorphisms.{u1, u2} V _inst_1] {c : ComplexShape.{u3} ι} (C : HomologicalComplex.{u1, u2, u3} ι V _inst_1 _inst_2 c) [_inst_3 : CategoryTheory.Limits.HasImages.{u1, u2} V _inst_1] [_inst_4 : CategoryTheory.Limits.HasEqualizers.{u1, u2} V _inst_1] {i : ι} {j : ι}, (ComplexShape.Rel.{u3} ι c i j) -> (CategoryTheory.Iso.{u1, u2} V _inst_1 ((fun (a : Type.{max u2 u1}) (b : Type.{u2}) [self : HasLiftT.{succ (max u2 u1), succ u2} a b] => self.0) (CategoryTheory.Subobject.{u1, u2} V _inst_1 (HomologicalComplex.x.{u1, u2, u3} ι V _inst_1 _inst_2 c C j)) V (HasLiftT.mk.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 (HomologicalComplex.x.{u1, u2, u3} ι V _inst_1 _inst_2 c C j)) V (CoeTCₓ.coe.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 (HomologicalComplex.x.{u1, u2, u3} ι V _inst_1 _inst_2 c C j)) V (coeBase.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 (HomologicalComplex.x.{u1, u2, u3} ι V _inst_1 _inst_2 c C j)) V (CategoryTheory.Subobject.hasCoe.{u1, u2} V _inst_1 (HomologicalComplex.x.{u1, u2, u3} ι V _inst_1 _inst_2 c C j))))) (HomologicalComplex.boundaries.{u1, u2, u3} ι V _inst_1 _inst_2 c _inst_3 C j)) (CategoryTheory.Limits.image.{u1, u2} V _inst_1 (HomologicalComplex.x.{u1, u2, u3} ι V _inst_1 _inst_2 c C i) (HomologicalComplex.x.{u1, u2, u3} ι V _inst_1 _inst_2 c C j) (HomologicalComplex.d.{u1, u2, u3} ι V _inst_1 _inst_2 c C i j) (HomologicalComplex.boundariesIsoImage._proof_1.{u2, u3, u1} ι V _inst_1 _inst_2 c C _inst_3 i j)))
-but is expected to have type
- forall {ι : Type.{u3}} {V : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u1, u2} V] [_inst_2 : CategoryTheory.Limits.HasZeroMorphisms.{u1, u2} V _inst_1] {c : ComplexShape.{u3} ι} (C : HomologicalComplex.{u1, u2, u3} ι V _inst_1 _inst_2 c) [_inst_3 : CategoryTheory.Limits.HasImages.{u1, u2} V _inst_1] [_inst_4 : CategoryTheory.Limits.HasEqualizers.{u1, u2} V _inst_1] {i : ι} {j : ι}, (ComplexShape.Rel.{u3} ι c i j) -> (CategoryTheory.Iso.{u1, u2} V _inst_1 (Prefunctor.obj.{max (succ u2) (succ u1), succ u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 (HomologicalComplex.X.{u1, u2, u3} ι V _inst_1 _inst_2 c C j)) (CategoryTheory.CategoryStruct.toQuiver.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 (HomologicalComplex.X.{u1, u2, u3} ι V _inst_1 _inst_2 c C j)) (CategoryTheory.Category.toCategoryStruct.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 (HomologicalComplex.X.{u1, u2, u3} ι V _inst_1 _inst_2 c C j)) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 (HomologicalComplex.X.{u1, u2, u3} ι V _inst_1 _inst_2 c C j)) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 (HomologicalComplex.X.{u1, u2, u3} ι V _inst_1 _inst_2 c C j)) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 (HomologicalComplex.X.{u1, u2, u3} ι V _inst_1 _inst_2 c C j)))))) V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) (CategoryTheory.Functor.toPrefunctor.{max u2 u1, u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 (HomologicalComplex.X.{u1, u2, u3} ι V _inst_1 _inst_2 c C j)) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 (HomologicalComplex.X.{u1, u2, u3} ι V _inst_1 _inst_2 c C j)) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 (HomologicalComplex.X.{u1, u2, u3} ι V _inst_1 _inst_2 c C j)) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 (HomologicalComplex.X.{u1, u2, u3} ι V _inst_1 _inst_2 c C j)))) V _inst_1 (CategoryTheory.Subobject.underlying.{u1, u2} V _inst_1 (HomologicalComplex.X.{u1, u2, u3} ι V _inst_1 _inst_2 c C j))) (HomologicalComplex.boundaries.{u1, u2, u3} ι V _inst_1 _inst_2 c _inst_3 C j)) (CategoryTheory.Limits.image.{u1, u2} V _inst_1 (HomologicalComplex.X.{u1, u2, u3} ι V _inst_1 _inst_2 c C i) (HomologicalComplex.X.{u1, u2, u3} ι V _inst_1 _inst_2 c C j) (HomologicalComplex.d.{u1, u2, u3} ι V _inst_1 _inst_2 c C i j) (CategoryTheory.Limits.HasImages.has_image.{u1, u2} V _inst_1 _inst_3 (HomologicalComplex.X.{u1, u2, u3} ι V _inst_1 _inst_2 c C i) (HomologicalComplex.X.{u1, u2, u3} ι V _inst_1 _inst_2 c C j) (HomologicalComplex.d.{u1, u2, u3} ι V _inst_1 _inst_2 c C i j))))
+<too large>
Case conversion may be inaccurate. Consider using '#align homological_complex.boundaries_iso_image HomologicalComplex.boundariesIsoImageₓ'. -/
/-- The underlying object of `C.boundaries j` is isomorphic to `image (C.d i j)`,
for any `i` such that `rel i j`.
@@ -174,10 +171,7 @@ abbrev boundariesToCycles (C : HomologicalComplex V c) (i : ι) :
#align homological_complex.boundaries_to_cycles HomologicalComplex.boundariesToCycles
/- warning: homological_complex.image_to_kernel_as_boundaries_to_cycles -> HomologicalComplex.imageToKernel_as_boundariesToCycles is a dubious translation:
-lean 3 declaration is
- forall {ι : Type.{u3}} {V : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u1, u2} V] [_inst_2 : CategoryTheory.Limits.HasZeroMorphisms.{u1, u2} V _inst_1] {c : ComplexShape.{u3} ι} [_inst_3 : CategoryTheory.Limits.HasKernels.{u1, u2} V _inst_1 _inst_2] [_inst_4 : CategoryTheory.Limits.HasImages.{u1, u2} V _inst_1] (C : HomologicalComplex.{u1, u2, u3} ι V _inst_1 _inst_2 c) (i : ι) (h : LE.le.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 (HomologicalComplex.x.{u1, u2, u3} ι V _inst_1 _inst_2 c C i)) (Preorder.toHasLe.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 (HomologicalComplex.x.{u1, u2, u3} ι V _inst_1 _inst_2 c C i)) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 (HomologicalComplex.x.{u1, u2, u3} ι V _inst_1 _inst_2 c C i)) (CategoryTheory.Subobject.partialOrder.{u2, u1} V _inst_1 (HomologicalComplex.x.{u1, u2, u3} ι V _inst_1 _inst_2 c C i)))) (HomologicalComplex.boundaries.{u1, u2, u3} ι V _inst_1 _inst_2 c _inst_4 C i) (HomologicalComplex.cycles.{u1, u2, u3} ι V _inst_1 _inst_2 c C _inst_3 i)), Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) ((fun (a : Type.{max u2 u1}) (b : Type.{u2}) [self : HasLiftT.{succ (max u2 u1), succ u2} a b] => self.0) (CategoryTheory.Subobject.{u1, u2} V _inst_1 (HomologicalComplex.x.{u1, u2, u3} ι V _inst_1 _inst_2 c C i)) V (HasLiftT.mk.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 (HomologicalComplex.x.{u1, u2, u3} ι V _inst_1 _inst_2 c C i)) V (CoeTCₓ.coe.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 (HomologicalComplex.x.{u1, u2, u3} ι V _inst_1 _inst_2 c C i)) V (coeBase.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 (HomologicalComplex.x.{u1, u2, u3} ι V _inst_1 _inst_2 c C i)) V (CategoryTheory.Subobject.hasCoe.{u1, u2} V _inst_1 (HomologicalComplex.x.{u1, u2, u3} ι V _inst_1 _inst_2 c C i))))) (HomologicalComplex.boundaries.{u1, u2, u3} ι V _inst_1 _inst_2 c _inst_4 C i)) ((fun (a : Type.{max u2 u1}) (b : Type.{u2}) [self : HasLiftT.{succ (max u2 u1), succ u2} a b] => self.0) (CategoryTheory.Subobject.{u1, u2} V _inst_1 (HomologicalComplex.x.{u1, u2, u3} ι V _inst_1 _inst_2 c C i)) V (HasLiftT.mk.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 (HomologicalComplex.x.{u1, u2, u3} ι V _inst_1 _inst_2 c C i)) V (CoeTCₓ.coe.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 (HomologicalComplex.x.{u1, u2, u3} ι V _inst_1 _inst_2 c C i)) V (coeBase.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 (HomologicalComplex.x.{u1, u2, u3} ι V _inst_1 _inst_2 c C i)) V (CategoryTheory.Subobject.hasCoe.{u1, u2} V _inst_1 (HomologicalComplex.x.{u1, u2, u3} ι V _inst_1 _inst_2 c C i))))) (HomologicalComplex.cycles.{u1, u2, u3} ι V _inst_1 _inst_2 c C _inst_3 i))) (CategoryTheory.Subobject.ofLE.{u1, u2} V _inst_1 (HomologicalComplex.x.{u1, u2, u3} ι V _inst_1 _inst_2 c C i) (HomologicalComplex.boundaries.{u1, u2, u3} ι V _inst_1 _inst_2 c _inst_4 C i) (HomologicalComplex.cycles.{u1, u2, u3} ι V _inst_1 _inst_2 c C _inst_3 i) h) (HomologicalComplex.boundariesToCycles.{u1, u2, u3} ι V _inst_1 _inst_2 c _inst_3 _inst_4 C i)
-but is expected to have type
- forall {ι : Type.{u1}} {V : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u2, u3} V] [_inst_2 : CategoryTheory.Limits.HasZeroMorphisms.{u2, u3} V _inst_1] {c : ComplexShape.{u1} ι} [_inst_3 : CategoryTheory.Limits.HasKernels.{u2, u3} V _inst_1 _inst_2] [_inst_4 : CategoryTheory.Limits.HasImages.{u2, u3} V _inst_1] (C : HomologicalComplex.{u2, u3, u1} ι V _inst_1 _inst_2 c) (i : ι) (h : LE.le.{max u3 u2} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C i)) (Preorder.toLE.{max u3 u2} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C i)) (PartialOrder.toPreorder.{max u3 u2} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C i)) (CategoryTheory.instPartialOrderSubobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C i)))) (HomologicalComplex.boundaries.{u2, u3, u1} ι V _inst_1 _inst_2 c _inst_4 C i) (HomologicalComplex.cycles.{u2, u3, u1} ι V _inst_1 _inst_2 c C _inst_3 i)), Eq.{succ u2} (Quiver.Hom.{succ u2, u3} V (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} V (CategoryTheory.Category.toCategoryStruct.{u2, u3} V _inst_1)) (Prefunctor.obj.{max (succ u3) (succ u2), succ u2, max u3 u2, u3} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C i)) (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, max u3 u2} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C i)) (CategoryTheory.Category.toCategoryStruct.{max u3 u2, max u3 u2} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C i)) (Preorder.smallCategory.{max u3 u2} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C i)) (PartialOrder.toPreorder.{max u3 u2} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C i)) (CategoryTheory.instPartialOrderSubobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C i)))))) V (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} V (CategoryTheory.Category.toCategoryStruct.{u2, u3} V _inst_1)) (CategoryTheory.Functor.toPrefunctor.{max u3 u2, u2, max u3 u2, u3} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C i)) (Preorder.smallCategory.{max u3 u2} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C i)) (PartialOrder.toPreorder.{max u3 u2} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C i)) (CategoryTheory.instPartialOrderSubobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C i)))) V _inst_1 (CategoryTheory.Subobject.underlying.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C i))) (HomologicalComplex.boundaries.{u2, u3, u1} ι V _inst_1 _inst_2 c _inst_4 C i)) (Prefunctor.obj.{max (succ u3) (succ u2), succ u2, max u3 u2, u3} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C i)) (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, max u3 u2} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C i)) (CategoryTheory.Category.toCategoryStruct.{max u3 u2, max u3 u2} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C i)) (Preorder.smallCategory.{max u3 u2} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C i)) (PartialOrder.toPreorder.{max u3 u2} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C i)) (CategoryTheory.instPartialOrderSubobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C i)))))) V (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} V (CategoryTheory.Category.toCategoryStruct.{u2, u3} V _inst_1)) (CategoryTheory.Functor.toPrefunctor.{max u3 u2, u2, max u3 u2, u3} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C i)) (Preorder.smallCategory.{max u3 u2} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C i)) (PartialOrder.toPreorder.{max u3 u2} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C i)) (CategoryTheory.instPartialOrderSubobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C i)))) V _inst_1 (CategoryTheory.Subobject.underlying.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C i))) (HomologicalComplex.cycles.{u2, u3, u1} ι V _inst_1 _inst_2 c C _inst_3 i))) (CategoryTheory.Subobject.ofLE.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C i) (HomologicalComplex.boundaries.{u2, u3, u1} ι V _inst_1 _inst_2 c _inst_4 C i) (HomologicalComplex.cycles.{u2, u3, u1} ι V _inst_1 _inst_2 c C _inst_3 i) h) (HomologicalComplex.boundariesToCycles.{u2, u3, u1} ι V _inst_1 _inst_2 c _inst_3 _inst_4 C i)
+<too large>
Case conversion may be inaccurate. Consider using '#align homological_complex.image_to_kernel_as_boundaries_to_cycles HomologicalComplex.imageToKernel_as_boundariesToCyclesₓ'. -/
/-- Prefer `boundaries_to_cycles`. -/
@[simp]
@@ -292,10 +286,7 @@ abbrev cyclesMap (f : C₁ ⟶ C₂) (i : ι) : (C₁.cycles i : V) ⟶ (C₂.cy
#align cycles_map cyclesMap
/- warning: cycles_map_arrow -> cyclesMap_arrow is a dubious translation:
-lean 3 declaration is
- forall {ι : Type.{u3}} {V : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u1, u2} V] [_inst_2 : CategoryTheory.Limits.HasZeroMorphisms.{u1, u2} V _inst_1] {c : ComplexShape.{u3} ι} [_inst_3 : CategoryTheory.Limits.HasKernels.{u1, u2} V _inst_1 _inst_2] {C₁ : HomologicalComplex.{u1, u2, u3} ι V _inst_1 _inst_2 c} {C₂ : HomologicalComplex.{u1, u2, u3} ι V _inst_1 _inst_2 c} (f : Quiver.Hom.{succ (max u3 u1), max u2 u3 u1} (HomologicalComplex.{u1, u2, u3} ι V _inst_1 _inst_2 c) (CategoryTheory.CategoryStruct.toQuiver.{max u3 u1, max u2 u3 u1} (HomologicalComplex.{u1, u2, u3} ι V _inst_1 _inst_2 c) (CategoryTheory.Category.toCategoryStruct.{max u3 u1, max u2 u3 u1} (HomologicalComplex.{u1, u2, u3} ι V _inst_1 _inst_2 c) (HomologicalComplex.CategoryTheory.category.{u1, u2, u3} ι V _inst_1 _inst_2 c))) C₁ C₂) (i : ι), Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) ((fun (a : Type.{max u2 u1}) (b : Type.{u2}) [self : HasLiftT.{succ (max u2 u1), succ u2} a b] => self.0) (CategoryTheory.Subobject.{u1, u2} V _inst_1 (HomologicalComplex.x.{u1, u2, u3} ι V _inst_1 _inst_2 c C₁ i)) V (HasLiftT.mk.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 (HomologicalComplex.x.{u1, u2, u3} ι V _inst_1 _inst_2 c C₁ i)) V (CoeTCₓ.coe.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 (HomologicalComplex.x.{u1, u2, u3} ι V _inst_1 _inst_2 c C₁ i)) V (coeBase.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 (HomologicalComplex.x.{u1, u2, u3} ι V _inst_1 _inst_2 c C₁ i)) V (CategoryTheory.Subobject.hasCoe.{u1, u2} V _inst_1 (HomologicalComplex.x.{u1, u2, u3} ι V _inst_1 _inst_2 c C₁ i))))) (HomologicalComplex.cycles.{u1, u2, u3} ι V _inst_1 _inst_2 c C₁ _inst_3 i)) (HomologicalComplex.x.{u1, u2, u3} ι V _inst_1 _inst_2 c C₂ i)) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) ((fun (a : Type.{max u2 u1}) (b : Type.{u2}) [self : HasLiftT.{succ (max u2 u1), succ u2} a b] => self.0) (CategoryTheory.Subobject.{u1, u2} V _inst_1 (HomologicalComplex.x.{u1, u2, u3} ι V _inst_1 _inst_2 c C₁ i)) V (HasLiftT.mk.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 (HomologicalComplex.x.{u1, u2, u3} ι V _inst_1 _inst_2 c C₁ i)) V (CoeTCₓ.coe.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 (HomologicalComplex.x.{u1, u2, u3} ι V _inst_1 _inst_2 c C₁ i)) V (coeBase.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 (HomologicalComplex.x.{u1, u2, u3} ι V _inst_1 _inst_2 c C₁ i)) V (CategoryTheory.Subobject.hasCoe.{u1, u2} V _inst_1 (HomologicalComplex.x.{u1, u2, u3} ι V _inst_1 _inst_2 c C₁ i))))) (HomologicalComplex.cycles.{u1, u2, u3} ι V _inst_1 _inst_2 c C₁ _inst_3 i)) ((fun (a : Type.{max u2 u1}) (b : Type.{u2}) [self : HasLiftT.{succ (max u2 u1), succ u2} a b] => self.0) (CategoryTheory.Subobject.{u1, u2} V _inst_1 (HomologicalComplex.x.{u1, u2, u3} ι V _inst_1 _inst_2 c C₂ i)) V (HasLiftT.mk.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 (HomologicalComplex.x.{u1, u2, u3} ι V _inst_1 _inst_2 c C₂ i)) V (CoeTCₓ.coe.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 (HomologicalComplex.x.{u1, u2, u3} ι V _inst_1 _inst_2 c C₂ i)) V (coeBase.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 (HomologicalComplex.x.{u1, u2, u3} ι V _inst_1 _inst_2 c C₂ i)) V (CategoryTheory.Subobject.hasCoe.{u1, u2} V _inst_1 (HomologicalComplex.x.{u1, u2, u3} ι V _inst_1 _inst_2 c C₂ i))))) (HomologicalComplex.cycles.{u1, u2, u3} ι V _inst_1 _inst_2 c C₂ _inst_3 i)) (HomologicalComplex.x.{u1, u2, u3} ι V _inst_1 _inst_2 c C₂ i) (cyclesMap.{u1, u2, u3} ι V _inst_1 _inst_2 c _inst_3 C₁ C₂ f i) (CategoryTheory.Subobject.arrow.{u1, u2} V _inst_1 (HomologicalComplex.x.{u1, u2, u3} ι V _inst_1 _inst_2 c C₂ i) (HomologicalComplex.cycles.{u1, u2, u3} ι V _inst_1 _inst_2 c C₂ _inst_3 i))) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) ((fun (a : Type.{max u2 u1}) (b : Type.{u2}) [self : HasLiftT.{succ (max u2 u1), succ u2} a b] => self.0) (CategoryTheory.Subobject.{u1, u2} V _inst_1 (HomologicalComplex.x.{u1, u2, u3} ι V _inst_1 _inst_2 c C₁ i)) V (HasLiftT.mk.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 (HomologicalComplex.x.{u1, u2, u3} ι V _inst_1 _inst_2 c C₁ i)) V (CoeTCₓ.coe.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 (HomologicalComplex.x.{u1, u2, u3} ι V _inst_1 _inst_2 c C₁ i)) V (coeBase.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 (HomologicalComplex.x.{u1, u2, u3} ι V _inst_1 _inst_2 c C₁ i)) V (CategoryTheory.Subobject.hasCoe.{u1, u2} V _inst_1 (HomologicalComplex.x.{u1, u2, u3} ι V _inst_1 _inst_2 c C₁ i))))) (HomologicalComplex.cycles.{u1, u2, u3} ι V _inst_1 _inst_2 c C₁ _inst_3 i)) (HomologicalComplex.x.{u1, u2, u3} ι V _inst_1 _inst_2 c C₁ i) (HomologicalComplex.x.{u1, u2, u3} ι V _inst_1 _inst_2 c C₂ i) (CategoryTheory.Subobject.arrow.{u1, u2} V _inst_1 (HomologicalComplex.x.{u1, u2, u3} ι V _inst_1 _inst_2 c C₁ i) (HomologicalComplex.cycles.{u1, u2, u3} ι V _inst_1 _inst_2 c C₁ _inst_3 i)) (HomologicalComplex.Hom.f.{u1, u2, u3} ι V _inst_1 _inst_2 c C₁ C₂ f i))
-but is expected to have type
- forall {ι : Type.{u1}} {V : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u2, u3} V] [_inst_2 : CategoryTheory.Limits.HasZeroMorphisms.{u2, u3} V _inst_1] {c : ComplexShape.{u1} ι} [_inst_3 : CategoryTheory.Limits.HasKernels.{u2, u3} V _inst_1 _inst_2] {C₁ : HomologicalComplex.{u2, u3, u1} ι V _inst_1 _inst_2 c} {C₂ : HomologicalComplex.{u2, u3, u1} ι V _inst_1 _inst_2 c} (f : Quiver.Hom.{max (succ u2) (succ u1), max (max u3 u2) u1} (HomologicalComplex.{u2, u3, u1} ι V _inst_1 _inst_2 c) (CategoryTheory.CategoryStruct.toQuiver.{max u2 u1, max (max u3 u2) u1} (HomologicalComplex.{u2, u3, u1} ι V _inst_1 _inst_2 c) (CategoryTheory.Category.toCategoryStruct.{max u2 u1, max (max u3 u2) u1} (HomologicalComplex.{u2, u3, u1} ι V _inst_1 _inst_2 c) (HomologicalComplex.instCategoryHomologicalComplex.{u2, u3, u1} ι V _inst_1 _inst_2 c))) C₁ C₂) (i : ι), Eq.{succ u2} (Quiver.Hom.{succ u2, u3} V (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} V (CategoryTheory.Category.toCategoryStruct.{u2, u3} V _inst_1)) (Prefunctor.obj.{max (succ u3) (succ u2), succ u2, max u3 u2, u3} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₁ i)) (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, max u3 u2} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₁ i)) (CategoryTheory.Category.toCategoryStruct.{max u3 u2, max u3 u2} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₁ i)) (Preorder.smallCategory.{max u3 u2} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₁ i)) (PartialOrder.toPreorder.{max u3 u2} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₁ i)) (CategoryTheory.instPartialOrderSubobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₁ i)))))) V (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} V (CategoryTheory.Category.toCategoryStruct.{u2, u3} V _inst_1)) (CategoryTheory.Functor.toPrefunctor.{max u3 u2, u2, max u3 u2, u3} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₁ i)) (Preorder.smallCategory.{max u3 u2} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₁ i)) (PartialOrder.toPreorder.{max u3 u2} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₁ i)) (CategoryTheory.instPartialOrderSubobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₁ i)))) V _inst_1 (CategoryTheory.Subobject.underlying.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₁ i))) (HomologicalComplex.cycles.{u2, u3, u1} ι V _inst_1 _inst_2 c C₁ _inst_3 i)) (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₂ i)) (CategoryTheory.CategoryStruct.comp.{u2, u3} V (CategoryTheory.Category.toCategoryStruct.{u2, u3} V _inst_1) (Prefunctor.obj.{max (succ u3) (succ u2), succ u2, max u3 u2, u3} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₁ i)) (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, max u3 u2} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₁ i)) (CategoryTheory.Category.toCategoryStruct.{max u3 u2, max u3 u2} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₁ i)) (Preorder.smallCategory.{max u3 u2} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₁ i)) (PartialOrder.toPreorder.{max u3 u2} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₁ i)) (CategoryTheory.instPartialOrderSubobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₁ i)))))) V (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} V (CategoryTheory.Category.toCategoryStruct.{u2, u3} V _inst_1)) (CategoryTheory.Functor.toPrefunctor.{max u3 u2, u2, max u3 u2, u3} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₁ i)) (Preorder.smallCategory.{max u3 u2} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₁ i)) (PartialOrder.toPreorder.{max u3 u2} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₁ i)) (CategoryTheory.instPartialOrderSubobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₁ i)))) V _inst_1 (CategoryTheory.Subobject.underlying.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₁ i))) (HomologicalComplex.cycles.{u2, u3, u1} ι V _inst_1 _inst_2 c C₁ _inst_3 i)) (Prefunctor.obj.{max (succ u3) (succ u2), succ u2, max u3 u2, u3} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₂ i)) (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, max u3 u2} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₂ i)) (CategoryTheory.Category.toCategoryStruct.{max u3 u2, max u3 u2} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₂ i)) (Preorder.smallCategory.{max u3 u2} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₂ i)) (PartialOrder.toPreorder.{max u3 u2} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₂ i)) (CategoryTheory.instPartialOrderSubobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₂ i)))))) V (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} V (CategoryTheory.Category.toCategoryStruct.{u2, u3} V _inst_1)) (CategoryTheory.Functor.toPrefunctor.{max u3 u2, u2, max u3 u2, u3} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₂ i)) (Preorder.smallCategory.{max u3 u2} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₂ i)) (PartialOrder.toPreorder.{max u3 u2} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₂ i)) (CategoryTheory.instPartialOrderSubobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₂ i)))) V _inst_1 (CategoryTheory.Subobject.underlying.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₂ i))) (HomologicalComplex.cycles.{u2, u3, u1} ι V _inst_1 _inst_2 c C₂ _inst_3 i)) (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₂ i) (cyclesMap.{u2, u3, u1} ι V _inst_1 _inst_2 c _inst_3 C₁ C₂ f i) (CategoryTheory.Subobject.arrow.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₂ i) (HomologicalComplex.cycles.{u2, u3, u1} ι V _inst_1 _inst_2 c C₂ _inst_3 i))) (CategoryTheory.CategoryStruct.comp.{u2, u3} V (CategoryTheory.Category.toCategoryStruct.{u2, u3} V _inst_1) (Prefunctor.obj.{max (succ u3) (succ u2), succ u2, max u3 u2, u3} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₁ i)) (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, max u3 u2} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₁ i)) (CategoryTheory.Category.toCategoryStruct.{max u3 u2, max u3 u2} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₁ i)) (Preorder.smallCategory.{max u3 u2} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₁ i)) (PartialOrder.toPreorder.{max u3 u2} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₁ i)) (CategoryTheory.instPartialOrderSubobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₁ i)))))) V (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} V (CategoryTheory.Category.toCategoryStruct.{u2, u3} V _inst_1)) (CategoryTheory.Functor.toPrefunctor.{max u3 u2, u2, max u3 u2, u3} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₁ i)) (Preorder.smallCategory.{max u3 u2} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₁ i)) (PartialOrder.toPreorder.{max u3 u2} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₁ i)) (CategoryTheory.instPartialOrderSubobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₁ i)))) V _inst_1 (CategoryTheory.Subobject.underlying.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₁ i))) (HomologicalComplex.cycles.{u2, u3, u1} ι V _inst_1 _inst_2 c C₁ _inst_3 i)) (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₁ i) (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₂ i) (CategoryTheory.Subobject.arrow.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₁ i) (HomologicalComplex.cycles.{u2, u3, u1} ι V _inst_1 _inst_2 c C₁ _inst_3 i)) (HomologicalComplex.Hom.f.{u2, u3, u1} ι V _inst_1 _inst_2 c C₁ C₂ f i))
+<too large>
Case conversion may be inaccurate. Consider using '#align cycles_map_arrow cyclesMap_arrowₓ'. -/
@[simp, reassoc, elementwise]
theorem cyclesMap_arrow (f : C₁ ⟶ C₂) (i : ι) :
@@ -303,10 +294,7 @@ theorem cyclesMap_arrow (f : C₁ ⟶ C₂) (i : ι) :
#align cycles_map_arrow cyclesMap_arrow
/- warning: cycles_map_id -> cyclesMap_id is a dubious translation:
-lean 3 declaration is
- forall {ι : Type.{u3}} {V : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u1, u2} V] [_inst_2 : CategoryTheory.Limits.HasZeroMorphisms.{u1, u2} V _inst_1] {c : ComplexShape.{u3} ι} [_inst_3 : CategoryTheory.Limits.HasKernels.{u1, u2} V _inst_1 _inst_2] {C₁ : HomologicalComplex.{u1, u2, u3} ι V _inst_1 _inst_2 c} (i : ι), Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) ((fun (a : Type.{max u2 u1}) (b : Type.{u2}) [self : HasLiftT.{succ (max u2 u1), succ u2} a b] => self.0) (CategoryTheory.Subobject.{u1, u2} V _inst_1 (HomologicalComplex.x.{u1, u2, u3} ι V _inst_1 _inst_2 c C₁ i)) V (HasLiftT.mk.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 (HomologicalComplex.x.{u1, u2, u3} ι V _inst_1 _inst_2 c C₁ i)) V (CoeTCₓ.coe.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 (HomologicalComplex.x.{u1, u2, u3} ι V _inst_1 _inst_2 c C₁ i)) V (coeBase.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 (HomologicalComplex.x.{u1, u2, u3} ι V _inst_1 _inst_2 c C₁ i)) V (CategoryTheory.Subobject.hasCoe.{u1, u2} V _inst_1 (HomologicalComplex.x.{u1, u2, u3} ι V _inst_1 _inst_2 c C₁ i))))) (HomologicalComplex.cycles.{u1, u2, u3} ι V _inst_1 _inst_2 c C₁ _inst_3 i)) ((fun (a : Type.{max u2 u1}) (b : Type.{u2}) [self : HasLiftT.{succ (max u2 u1), succ u2} a b] => self.0) (CategoryTheory.Subobject.{u1, u2} V _inst_1 (HomologicalComplex.x.{u1, u2, u3} ι V _inst_1 _inst_2 c C₁ i)) V (HasLiftT.mk.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 (HomologicalComplex.x.{u1, u2, u3} ι V _inst_1 _inst_2 c C₁ i)) V (CoeTCₓ.coe.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 (HomologicalComplex.x.{u1, u2, u3} ι V _inst_1 _inst_2 c C₁ i)) V (coeBase.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 (HomologicalComplex.x.{u1, u2, u3} ι V _inst_1 _inst_2 c C₁ i)) V (CategoryTheory.Subobject.hasCoe.{u1, u2} V _inst_1 (HomologicalComplex.x.{u1, u2, u3} ι V _inst_1 _inst_2 c C₁ i))))) (HomologicalComplex.cycles.{u1, u2, u3} ι V _inst_1 _inst_2 c C₁ _inst_3 i))) (cyclesMap.{u1, u2, u3} ι V _inst_1 _inst_2 c _inst_3 C₁ C₁ (CategoryTheory.CategoryStruct.id.{max u3 u1, max u2 u3 u1} (HomologicalComplex.{u1, u2, u3} ι V _inst_1 _inst_2 c) (CategoryTheory.Category.toCategoryStruct.{max u3 u1, max u2 u3 u1} (HomologicalComplex.{u1, u2, u3} ι V _inst_1 _inst_2 c) (HomologicalComplex.CategoryTheory.category.{u1, u2, u3} ι V _inst_1 _inst_2 c)) C₁) i) (CategoryTheory.CategoryStruct.id.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) ((fun (a : Type.{max u2 u1}) (b : Type.{u2}) [self : HasLiftT.{succ (max u2 u1), succ u2} a b] => self.0) (CategoryTheory.Subobject.{u1, u2} V _inst_1 (HomologicalComplex.x.{u1, u2, u3} ι V _inst_1 _inst_2 c C₁ i)) V (HasLiftT.mk.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 (HomologicalComplex.x.{u1, u2, u3} ι V _inst_1 _inst_2 c C₁ i)) V (CoeTCₓ.coe.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 (HomologicalComplex.x.{u1, u2, u3} ι V _inst_1 _inst_2 c C₁ i)) V (coeBase.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 (HomologicalComplex.x.{u1, u2, u3} ι V _inst_1 _inst_2 c C₁ i)) V (CategoryTheory.Subobject.hasCoe.{u1, u2} V _inst_1 (HomologicalComplex.x.{u1, u2, u3} ι V _inst_1 _inst_2 c C₁ i))))) (HomologicalComplex.cycles.{u1, u2, u3} ι V _inst_1 _inst_2 c C₁ _inst_3 i)))
-but is expected to have type
- forall {ι : Type.{u1}} {V : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u2, u3} V] [_inst_2 : CategoryTheory.Limits.HasZeroMorphisms.{u2, u3} V _inst_1] {c : ComplexShape.{u1} ι} [_inst_3 : CategoryTheory.Limits.HasKernels.{u2, u3} V _inst_1 _inst_2] {C₁ : HomologicalComplex.{u2, u3, u1} ι V _inst_1 _inst_2 c} (i : ι), Eq.{succ u2} (Quiver.Hom.{succ u2, u3} V (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} V (CategoryTheory.Category.toCategoryStruct.{u2, u3} V _inst_1)) (Prefunctor.obj.{max (succ u3) (succ u2), succ u2, max u3 u2, u3} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₁ i)) (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, max u3 u2} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₁ i)) (CategoryTheory.Category.toCategoryStruct.{max u3 u2, max u3 u2} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₁ i)) (Preorder.smallCategory.{max u3 u2} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₁ i)) (PartialOrder.toPreorder.{max u3 u2} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₁ i)) (CategoryTheory.instPartialOrderSubobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₁ i)))))) V (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} V (CategoryTheory.Category.toCategoryStruct.{u2, u3} V _inst_1)) (CategoryTheory.Functor.toPrefunctor.{max u3 u2, u2, max u3 u2, u3} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₁ i)) (Preorder.smallCategory.{max u3 u2} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₁ i)) (PartialOrder.toPreorder.{max u3 u2} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₁ i)) (CategoryTheory.instPartialOrderSubobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₁ i)))) V _inst_1 (CategoryTheory.Subobject.underlying.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₁ i))) (HomologicalComplex.cycles.{u2, u3, u1} ι V _inst_1 _inst_2 c C₁ _inst_3 i)) (Prefunctor.obj.{max (succ u3) (succ u2), succ u2, max u3 u2, u3} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₁ i)) (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, max u3 u2} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₁ i)) (CategoryTheory.Category.toCategoryStruct.{max u3 u2, max u3 u2} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₁ i)) (Preorder.smallCategory.{max u3 u2} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₁ i)) (PartialOrder.toPreorder.{max u3 u2} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₁ i)) (CategoryTheory.instPartialOrderSubobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₁ i)))))) V (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} V (CategoryTheory.Category.toCategoryStruct.{u2, u3} V _inst_1)) (CategoryTheory.Functor.toPrefunctor.{max u3 u2, u2, max u3 u2, u3} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₁ i)) (Preorder.smallCategory.{max u3 u2} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₁ i)) (PartialOrder.toPreorder.{max u3 u2} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₁ i)) (CategoryTheory.instPartialOrderSubobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₁ i)))) V _inst_1 (CategoryTheory.Subobject.underlying.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₁ i))) (HomologicalComplex.cycles.{u2, u3, u1} ι V _inst_1 _inst_2 c C₁ _inst_3 i))) (cyclesMap.{u2, u3, u1} ι V _inst_1 _inst_2 c _inst_3 C₁ C₁ (CategoryTheory.CategoryStruct.id.{max u2 u1, max (max u3 u2) u1} (HomologicalComplex.{u2, u3, u1} ι V _inst_1 _inst_2 c) (CategoryTheory.Category.toCategoryStruct.{max u2 u1, max (max u3 u2) u1} (HomologicalComplex.{u2, u3, u1} ι V _inst_1 _inst_2 c) (HomologicalComplex.instCategoryHomologicalComplex.{u2, u3, u1} ι V _inst_1 _inst_2 c)) C₁) i) (CategoryTheory.CategoryStruct.id.{u2, u3} V (CategoryTheory.Category.toCategoryStruct.{u2, u3} V _inst_1) (Prefunctor.obj.{max (succ u3) (succ u2), succ u2, max u3 u2, u3} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₁ i)) (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, max u3 u2} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₁ i)) (CategoryTheory.Category.toCategoryStruct.{max u3 u2, max u3 u2} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₁ i)) (Preorder.smallCategory.{max u3 u2} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₁ i)) (PartialOrder.toPreorder.{max u3 u2} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₁ i)) (CategoryTheory.instPartialOrderSubobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₁ i)))))) V (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} V (CategoryTheory.Category.toCategoryStruct.{u2, u3} V _inst_1)) (CategoryTheory.Functor.toPrefunctor.{max u3 u2, u2, max u3 u2, u3} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₁ i)) (Preorder.smallCategory.{max u3 u2} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₁ i)) (PartialOrder.toPreorder.{max u3 u2} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₁ i)) (CategoryTheory.instPartialOrderSubobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₁ i)))) V _inst_1 (CategoryTheory.Subobject.underlying.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₁ i))) (HomologicalComplex.cycles.{u2, u3, u1} ι V _inst_1 _inst_2 c C₁ _inst_3 i)))
+<too large>
Case conversion may be inaccurate. Consider using '#align cycles_map_id cyclesMap_idₓ'. -/
@[simp]
theorem cyclesMap_id (i : ι) : cyclesMap (𝟙 C₁) i = 𝟙 _ :=
@@ -316,10 +304,7 @@ theorem cyclesMap_id (i : ι) : cyclesMap (𝟙 C₁) i = 𝟙 _ :=
#align cycles_map_id cyclesMap_id
/- warning: cycles_map_comp -> cyclesMap_comp is a dubious translation:
-lean 3 declaration is
- forall {ι : Type.{u3}} {V : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u1, u2} V] [_inst_2 : CategoryTheory.Limits.HasZeroMorphisms.{u1, u2} V _inst_1] {c : ComplexShape.{u3} ι} [_inst_3 : CategoryTheory.Limits.HasKernels.{u1, u2} V _inst_1 _inst_2] {C₁ : HomologicalComplex.{u1, u2, u3} ι V _inst_1 _inst_2 c} {C₂ : HomologicalComplex.{u1, u2, u3} ι V _inst_1 _inst_2 c} {C₃ : HomologicalComplex.{u1, u2, u3} ι V _inst_1 _inst_2 c} (f : Quiver.Hom.{succ (max u3 u1), max u2 u3 u1} (HomologicalComplex.{u1, u2, u3} ι V _inst_1 _inst_2 c) (CategoryTheory.CategoryStruct.toQuiver.{max u3 u1, max u2 u3 u1} (HomologicalComplex.{u1, u2, u3} ι V _inst_1 _inst_2 c) (CategoryTheory.Category.toCategoryStruct.{max u3 u1, max u2 u3 u1} (HomologicalComplex.{u1, u2, u3} ι V _inst_1 _inst_2 c) (HomologicalComplex.CategoryTheory.category.{u1, u2, u3} ι V _inst_1 _inst_2 c))) C₁ C₂) (g : Quiver.Hom.{succ (max u3 u1), max u2 u3 u1} (HomologicalComplex.{u1, u2, u3} ι V _inst_1 _inst_2 c) (CategoryTheory.CategoryStruct.toQuiver.{max u3 u1, max u2 u3 u1} (HomologicalComplex.{u1, u2, u3} ι V _inst_1 _inst_2 c) (CategoryTheory.Category.toCategoryStruct.{max u3 u1, max u2 u3 u1} (HomologicalComplex.{u1, u2, u3} ι V _inst_1 _inst_2 c) (HomologicalComplex.CategoryTheory.category.{u1, u2, u3} ι V _inst_1 _inst_2 c))) C₂ C₃) (i : ι), Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) ((fun (a : Type.{max u2 u1}) (b : Type.{u2}) [self : HasLiftT.{succ (max u2 u1), succ u2} a b] => self.0) (CategoryTheory.Subobject.{u1, u2} V _inst_1 (HomologicalComplex.x.{u1, u2, u3} ι V _inst_1 _inst_2 c C₁ i)) V (HasLiftT.mk.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 (HomologicalComplex.x.{u1, u2, u3} ι V _inst_1 _inst_2 c C₁ i)) V (CoeTCₓ.coe.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 (HomologicalComplex.x.{u1, u2, u3} ι V _inst_1 _inst_2 c C₁ i)) V (coeBase.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 (HomologicalComplex.x.{u1, u2, u3} ι V _inst_1 _inst_2 c C₁ i)) V (CategoryTheory.Subobject.hasCoe.{u1, u2} V _inst_1 (HomologicalComplex.x.{u1, u2, u3} ι V _inst_1 _inst_2 c C₁ i))))) (HomologicalComplex.cycles.{u1, u2, u3} ι V _inst_1 _inst_2 c C₁ _inst_3 i)) ((fun (a : Type.{max u2 u1}) (b : Type.{u2}) [self : HasLiftT.{succ (max u2 u1), succ u2} a b] => self.0) (CategoryTheory.Subobject.{u1, u2} V _inst_1 (HomologicalComplex.x.{u1, u2, u3} ι V _inst_1 _inst_2 c C₃ i)) V (HasLiftT.mk.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 (HomologicalComplex.x.{u1, u2, u3} ι V _inst_1 _inst_2 c C₃ i)) V (CoeTCₓ.coe.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 (HomologicalComplex.x.{u1, u2, u3} ι V _inst_1 _inst_2 c C₃ i)) V (coeBase.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 (HomologicalComplex.x.{u1, u2, u3} ι V _inst_1 _inst_2 c C₃ i)) V (CategoryTheory.Subobject.hasCoe.{u1, u2} V _inst_1 (HomologicalComplex.x.{u1, u2, u3} ι V _inst_1 _inst_2 c C₃ i))))) (HomologicalComplex.cycles.{u1, u2, u3} ι V _inst_1 _inst_2 c C₃ _inst_3 i))) (cyclesMap.{u1, u2, u3} ι V _inst_1 _inst_2 c _inst_3 C₁ C₃ (CategoryTheory.CategoryStruct.comp.{max u3 u1, max u2 u3 u1} (HomologicalComplex.{u1, u2, u3} ι V _inst_1 _inst_2 c) (CategoryTheory.Category.toCategoryStruct.{max u3 u1, max u2 u3 u1} (HomologicalComplex.{u1, u2, u3} ι V _inst_1 _inst_2 c) (HomologicalComplex.CategoryTheory.category.{u1, u2, u3} ι V _inst_1 _inst_2 c)) C₁ C₂ C₃ f g) i) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) ((fun (a : Type.{max u2 u1}) (b : Type.{u2}) [self : HasLiftT.{succ (max u2 u1), succ u2} a b] => self.0) (CategoryTheory.Subobject.{u1, u2} V _inst_1 (HomologicalComplex.x.{u1, u2, u3} ι V _inst_1 _inst_2 c C₁ i)) V (HasLiftT.mk.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 (HomologicalComplex.x.{u1, u2, u3} ι V _inst_1 _inst_2 c C₁ i)) V (CoeTCₓ.coe.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 (HomologicalComplex.x.{u1, u2, u3} ι V _inst_1 _inst_2 c C₁ i)) V (coeBase.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 (HomologicalComplex.x.{u1, u2, u3} ι V _inst_1 _inst_2 c C₁ i)) V (CategoryTheory.Subobject.hasCoe.{u1, u2} V _inst_1 (HomologicalComplex.x.{u1, u2, u3} ι V _inst_1 _inst_2 c C₁ i))))) (HomologicalComplex.cycles.{u1, u2, u3} ι V _inst_1 _inst_2 c C₁ _inst_3 i)) ((fun (a : Type.{max u2 u1}) (b : Type.{u2}) [self : HasLiftT.{succ (max u2 u1), succ u2} a b] => self.0) (CategoryTheory.Subobject.{u1, u2} V _inst_1 (HomologicalComplex.x.{u1, u2, u3} ι V _inst_1 _inst_2 c C₂ i)) V (HasLiftT.mk.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 (HomologicalComplex.x.{u1, u2, u3} ι V _inst_1 _inst_2 c C₂ i)) V (CoeTCₓ.coe.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 (HomologicalComplex.x.{u1, u2, u3} ι V _inst_1 _inst_2 c C₂ i)) V (coeBase.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 (HomologicalComplex.x.{u1, u2, u3} ι V _inst_1 _inst_2 c C₂ i)) V (CategoryTheory.Subobject.hasCoe.{u1, u2} V _inst_1 (HomologicalComplex.x.{u1, u2, u3} ι V _inst_1 _inst_2 c C₂ i))))) (HomologicalComplex.cycles.{u1, u2, u3} ι V _inst_1 _inst_2 c C₂ _inst_3 i)) ((fun (a : Type.{max u2 u1}) (b : Type.{u2}) [self : HasLiftT.{succ (max u2 u1), succ u2} a b] => self.0) (CategoryTheory.Subobject.{u1, u2} V _inst_1 (HomologicalComplex.x.{u1, u2, u3} ι V _inst_1 _inst_2 c C₃ i)) V (HasLiftT.mk.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 (HomologicalComplex.x.{u1, u2, u3} ι V _inst_1 _inst_2 c C₃ i)) V (CoeTCₓ.coe.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 (HomologicalComplex.x.{u1, u2, u3} ι V _inst_1 _inst_2 c C₃ i)) V (coeBase.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 (HomologicalComplex.x.{u1, u2, u3} ι V _inst_1 _inst_2 c C₃ i)) V (CategoryTheory.Subobject.hasCoe.{u1, u2} V _inst_1 (HomologicalComplex.x.{u1, u2, u3} ι V _inst_1 _inst_2 c C₃ i))))) (HomologicalComplex.cycles.{u1, u2, u3} ι V _inst_1 _inst_2 c C₃ _inst_3 i)) (cyclesMap.{u1, u2, u3} ι V _inst_1 _inst_2 c _inst_3 C₁ C₂ f i) (cyclesMap.{u1, u2, u3} ι V _inst_1 _inst_2 c _inst_3 C₂ C₃ g i))
-but is expected to have type
- forall {ι : Type.{u1}} {V : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u2, u3} V] [_inst_2 : CategoryTheory.Limits.HasZeroMorphisms.{u2, u3} V _inst_1] {c : ComplexShape.{u1} ι} [_inst_3 : CategoryTheory.Limits.HasKernels.{u2, u3} V _inst_1 _inst_2] {C₁ : HomologicalComplex.{u2, u3, u1} ι V _inst_1 _inst_2 c} {C₂ : HomologicalComplex.{u2, u3, u1} ι V _inst_1 _inst_2 c} {C₃ : HomologicalComplex.{u2, u3, u1} ι V _inst_1 _inst_2 c} (f : Quiver.Hom.{max (succ u2) (succ u1), max (max u3 u2) u1} (HomologicalComplex.{u2, u3, u1} ι V _inst_1 _inst_2 c) (CategoryTheory.CategoryStruct.toQuiver.{max u2 u1, max (max u3 u2) u1} (HomologicalComplex.{u2, u3, u1} ι V _inst_1 _inst_2 c) (CategoryTheory.Category.toCategoryStruct.{max u2 u1, max (max u3 u2) u1} (HomologicalComplex.{u2, u3, u1} ι V _inst_1 _inst_2 c) (HomologicalComplex.instCategoryHomologicalComplex.{u2, u3, u1} ι V _inst_1 _inst_2 c))) C₁ C₂) (g : Quiver.Hom.{max (succ u2) (succ u1), max (max u3 u2) u1} (HomologicalComplex.{u2, u3, u1} ι V _inst_1 _inst_2 c) (CategoryTheory.CategoryStruct.toQuiver.{max u2 u1, max (max u3 u2) u1} (HomologicalComplex.{u2, u3, u1} ι V _inst_1 _inst_2 c) (CategoryTheory.Category.toCategoryStruct.{max u2 u1, max (max u3 u2) u1} (HomologicalComplex.{u2, u3, u1} ι V _inst_1 _inst_2 c) (HomologicalComplex.instCategoryHomologicalComplex.{u2, u3, u1} ι V _inst_1 _inst_2 c))) C₂ C₃) (i : ι), Eq.{succ u2} (Quiver.Hom.{succ u2, u3} V (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} V (CategoryTheory.Category.toCategoryStruct.{u2, u3} V _inst_1)) (Prefunctor.obj.{max (succ u3) (succ u2), succ u2, max u3 u2, u3} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₁ i)) (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, max u3 u2} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₁ i)) (CategoryTheory.Category.toCategoryStruct.{max u3 u2, max u3 u2} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₁ i)) (Preorder.smallCategory.{max u3 u2} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₁ i)) (PartialOrder.toPreorder.{max u3 u2} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₁ i)) (CategoryTheory.instPartialOrderSubobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₁ i)))))) V (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} V (CategoryTheory.Category.toCategoryStruct.{u2, u3} V _inst_1)) (CategoryTheory.Functor.toPrefunctor.{max u3 u2, u2, max u3 u2, u3} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₁ i)) (Preorder.smallCategory.{max u3 u2} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₁ i)) (PartialOrder.toPreorder.{max u3 u2} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₁ i)) (CategoryTheory.instPartialOrderSubobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₁ i)))) V _inst_1 (CategoryTheory.Subobject.underlying.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₁ i))) (HomologicalComplex.cycles.{u2, u3, u1} ι V _inst_1 _inst_2 c C₁ _inst_3 i)) (Prefunctor.obj.{max (succ u3) (succ u2), succ u2, max u3 u2, u3} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₃ i)) (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, max u3 u2} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₃ i)) (CategoryTheory.Category.toCategoryStruct.{max u3 u2, max u3 u2} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₃ i)) (Preorder.smallCategory.{max u3 u2} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₃ i)) (PartialOrder.toPreorder.{max u3 u2} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₃ i)) (CategoryTheory.instPartialOrderSubobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₃ i)))))) V (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} V (CategoryTheory.Category.toCategoryStruct.{u2, u3} V _inst_1)) (CategoryTheory.Functor.toPrefunctor.{max u3 u2, u2, max u3 u2, u3} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₃ i)) (Preorder.smallCategory.{max u3 u2} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₃ i)) (PartialOrder.toPreorder.{max u3 u2} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₃ i)) (CategoryTheory.instPartialOrderSubobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₃ i)))) V _inst_1 (CategoryTheory.Subobject.underlying.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₃ i))) (HomologicalComplex.cycles.{u2, u3, u1} ι V _inst_1 _inst_2 c C₃ _inst_3 i))) (cyclesMap.{u2, u3, u1} ι V _inst_1 _inst_2 c _inst_3 C₁ C₃ (CategoryTheory.CategoryStruct.comp.{max u1 u2, max (max u1 u3) u2} (HomologicalComplex.{u2, u3, u1} ι V _inst_1 _inst_2 c) (CategoryTheory.Category.toCategoryStruct.{max u1 u2, max (max u1 u3) u2} (HomologicalComplex.{u2, u3, u1} ι V _inst_1 _inst_2 c) (HomologicalComplex.instCategoryHomologicalComplex.{u2, u3, u1} ι V _inst_1 _inst_2 c)) C₁ C₂ C₃ f g) i) (CategoryTheory.CategoryStruct.comp.{u2, u3} V (CategoryTheory.Category.toCategoryStruct.{u2, u3} V _inst_1) (Prefunctor.obj.{max (succ u3) (succ u2), succ u2, max u3 u2, u3} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₁ i)) (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, max u3 u2} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₁ i)) (CategoryTheory.Category.toCategoryStruct.{max u3 u2, max u3 u2} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₁ i)) (Preorder.smallCategory.{max u3 u2} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₁ i)) (PartialOrder.toPreorder.{max u3 u2} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₁ i)) (CategoryTheory.instPartialOrderSubobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₁ i)))))) V (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} V (CategoryTheory.Category.toCategoryStruct.{u2, u3} V _inst_1)) (CategoryTheory.Functor.toPrefunctor.{max u3 u2, u2, max u3 u2, u3} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₁ i)) (Preorder.smallCategory.{max u3 u2} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₁ i)) (PartialOrder.toPreorder.{max u3 u2} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₁ i)) (CategoryTheory.instPartialOrderSubobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₁ i)))) V _inst_1 (CategoryTheory.Subobject.underlying.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₁ i))) (HomologicalComplex.cycles.{u2, u3, u1} ι V _inst_1 _inst_2 c C₁ _inst_3 i)) (Prefunctor.obj.{max (succ u3) (succ u2), succ u2, max u3 u2, u3} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₂ i)) (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, max u3 u2} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₂ i)) (CategoryTheory.Category.toCategoryStruct.{max u3 u2, max u3 u2} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₂ i)) (Preorder.smallCategory.{max u3 u2} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₂ i)) (PartialOrder.toPreorder.{max u3 u2} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₂ i)) (CategoryTheory.instPartialOrderSubobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₂ i)))))) V (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} V (CategoryTheory.Category.toCategoryStruct.{u2, u3} V _inst_1)) (CategoryTheory.Functor.toPrefunctor.{max u3 u2, u2, max u3 u2, u3} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₂ i)) (Preorder.smallCategory.{max u3 u2} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₂ i)) (PartialOrder.toPreorder.{max u3 u2} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₂ i)) (CategoryTheory.instPartialOrderSubobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₂ i)))) V _inst_1 (CategoryTheory.Subobject.underlying.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₂ i))) (HomologicalComplex.cycles.{u2, u3, u1} ι V _inst_1 _inst_2 c C₂ _inst_3 i)) (Prefunctor.obj.{max (succ u3) (succ u2), succ u2, max u3 u2, u3} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₃ i)) (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, max u3 u2} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₃ i)) (CategoryTheory.Category.toCategoryStruct.{max u3 u2, max u3 u2} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₃ i)) (Preorder.smallCategory.{max u3 u2} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₃ i)) (PartialOrder.toPreorder.{max u3 u2} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₃ i)) (CategoryTheory.instPartialOrderSubobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₃ i)))))) V (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} V (CategoryTheory.Category.toCategoryStruct.{u2, u3} V _inst_1)) (CategoryTheory.Functor.toPrefunctor.{max u3 u2, u2, max u3 u2, u3} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₃ i)) (Preorder.smallCategory.{max u3 u2} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₃ i)) (PartialOrder.toPreorder.{max u3 u2} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₃ i)) (CategoryTheory.instPartialOrderSubobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₃ i)))) V _inst_1 (CategoryTheory.Subobject.underlying.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₃ i))) (HomologicalComplex.cycles.{u2, u3, u1} ι V _inst_1 _inst_2 c C₃ _inst_3 i)) (cyclesMap.{u2, u3, u1} ι V _inst_1 _inst_2 c _inst_3 C₁ C₂ f i) (cyclesMap.{u2, u3, u1} ι V _inst_1 _inst_2 c _inst_3 C₂ C₃ g i))
+<too large>
Case conversion may be inaccurate. Consider using '#align cycles_map_comp cyclesMap_compₓ'. -/
@[simp]
theorem cyclesMap_comp (f : C₁ ⟶ C₂) (g : C₂ ⟶ C₃) (i : ι) :
@@ -353,10 +338,7 @@ variable [HasImages V] [HasImageMaps V]
variable {C₁ C₂ C₃ : HomologicalComplex V c} (f : C₁ ⟶ C₂)
/- warning: boundaries_map -> boundariesMap is a dubious translation:
-lean 3 declaration is
- forall {ι : Type.{u3}} {V : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u1, u2} V] [_inst_2 : CategoryTheory.Limits.HasZeroMorphisms.{u1, u2} V _inst_1] {c : ComplexShape.{u3} ι} [_inst_3 : CategoryTheory.Limits.HasImages.{u1, u2} V _inst_1] [_inst_4 : CategoryTheory.Limits.HasImageMaps.{u1, u2} V _inst_1 _inst_3] {C₁ : HomologicalComplex.{u1, u2, u3} ι V _inst_1 _inst_2 c} {C₂ : HomologicalComplex.{u1, u2, u3} ι V _inst_1 _inst_2 c}, (Quiver.Hom.{succ (max u3 u1), max u2 u3 u1} (HomologicalComplex.{u1, u2, u3} ι V _inst_1 _inst_2 c) (CategoryTheory.CategoryStruct.toQuiver.{max u3 u1, max u2 u3 u1} (HomologicalComplex.{u1, u2, u3} ι V _inst_1 _inst_2 c) (CategoryTheory.Category.toCategoryStruct.{max u3 u1, max u2 u3 u1} (HomologicalComplex.{u1, u2, u3} ι V _inst_1 _inst_2 c) (HomologicalComplex.CategoryTheory.category.{u1, u2, u3} ι V _inst_1 _inst_2 c))) C₁ C₂) -> (forall (i : ι), Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) ((fun (a : Type.{max u2 u1}) (b : Type.{u2}) [self : HasLiftT.{succ (max u2 u1), succ u2} a b] => self.0) (CategoryTheory.Subobject.{u1, u2} V _inst_1 (HomologicalComplex.x.{u1, u2, u3} ι V _inst_1 _inst_2 c C₁ i)) V (HasLiftT.mk.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 (HomologicalComplex.x.{u1, u2, u3} ι V _inst_1 _inst_2 c C₁ i)) V (CoeTCₓ.coe.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 (HomologicalComplex.x.{u1, u2, u3} ι V _inst_1 _inst_2 c C₁ i)) V (coeBase.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 (HomologicalComplex.x.{u1, u2, u3} ι V _inst_1 _inst_2 c C₁ i)) V (CategoryTheory.Subobject.hasCoe.{u1, u2} V _inst_1 (HomologicalComplex.x.{u1, u2, u3} ι V _inst_1 _inst_2 c C₁ i))))) (HomologicalComplex.boundaries.{u1, u2, u3} ι V _inst_1 _inst_2 c _inst_3 C₁ i)) ((fun (a : Type.{max u2 u1}) (b : Type.{u2}) [self : HasLiftT.{succ (max u2 u1), succ u2} a b] => self.0) (CategoryTheory.Subobject.{u1, u2} V _inst_1 (HomologicalComplex.x.{u1, u2, u3} ι V _inst_1 _inst_2 c C₂ i)) V (HasLiftT.mk.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 (HomologicalComplex.x.{u1, u2, u3} ι V _inst_1 _inst_2 c C₂ i)) V (CoeTCₓ.coe.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 (HomologicalComplex.x.{u1, u2, u3} ι V _inst_1 _inst_2 c C₂ i)) V (coeBase.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 (HomologicalComplex.x.{u1, u2, u3} ι V _inst_1 _inst_2 c C₂ i)) V (CategoryTheory.Subobject.hasCoe.{u1, u2} V _inst_1 (HomologicalComplex.x.{u1, u2, u3} ι V _inst_1 _inst_2 c C₂ i))))) (HomologicalComplex.boundaries.{u1, u2, u3} ι V _inst_1 _inst_2 c _inst_3 C₂ i)))
-but is expected to have type
- forall {ι : Type.{u3}} {V : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u1, u2} V] [_inst_2 : CategoryTheory.Limits.HasZeroMorphisms.{u1, u2} V _inst_1] {c : ComplexShape.{u3} ι} [_inst_3 : CategoryTheory.Limits.HasImages.{u1, u2} V _inst_1] [_inst_4 : CategoryTheory.Limits.HasImageMaps.{u1, u2} V _inst_1 _inst_3] {C₁ : HomologicalComplex.{u1, u2, u3} ι V _inst_1 _inst_2 c} {C₂ : HomologicalComplex.{u1, u2, u3} ι V _inst_1 _inst_2 c}, (Quiver.Hom.{max (succ u1) (succ u3), max (max u2 u1) u3} (HomologicalComplex.{u1, u2, u3} ι V _inst_1 _inst_2 c) (CategoryTheory.CategoryStruct.toQuiver.{max u1 u3, max (max u2 u1) u3} (HomologicalComplex.{u1, u2, u3} ι V _inst_1 _inst_2 c) (CategoryTheory.Category.toCategoryStruct.{max u1 u3, max (max u2 u1) u3} (HomologicalComplex.{u1, u2, u3} ι V _inst_1 _inst_2 c) (HomologicalComplex.instCategoryHomologicalComplex.{u1, u2, u3} ι V _inst_1 _inst_2 c))) C₁ C₂) -> (forall (i : ι), Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) (Prefunctor.obj.{max (succ u2) (succ u1), succ u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 (HomologicalComplex.X.{u1, u2, u3} ι V _inst_1 _inst_2 c C₁ i)) (CategoryTheory.CategoryStruct.toQuiver.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 (HomologicalComplex.X.{u1, u2, u3} ι V _inst_1 _inst_2 c C₁ i)) (CategoryTheory.Category.toCategoryStruct.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 (HomologicalComplex.X.{u1, u2, u3} ι V _inst_1 _inst_2 c C₁ i)) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 (HomologicalComplex.X.{u1, u2, u3} ι V _inst_1 _inst_2 c C₁ i)) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 (HomologicalComplex.X.{u1, u2, u3} ι V _inst_1 _inst_2 c C₁ i)) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 (HomologicalComplex.X.{u1, u2, u3} ι V _inst_1 _inst_2 c C₁ i)))))) V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) (CategoryTheory.Functor.toPrefunctor.{max u2 u1, u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 (HomologicalComplex.X.{u1, u2, u3} ι V _inst_1 _inst_2 c C₁ i)) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 (HomologicalComplex.X.{u1, u2, u3} ι V _inst_1 _inst_2 c C₁ i)) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 (HomologicalComplex.X.{u1, u2, u3} ι V _inst_1 _inst_2 c C₁ i)) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 (HomologicalComplex.X.{u1, u2, u3} ι V _inst_1 _inst_2 c C₁ i)))) V _inst_1 (CategoryTheory.Subobject.underlying.{u1, u2} V _inst_1 (HomologicalComplex.X.{u1, u2, u3} ι V _inst_1 _inst_2 c C₁ i))) (HomologicalComplex.boundaries.{u1, u2, u3} ι V _inst_1 _inst_2 c _inst_3 C₁ i)) (Prefunctor.obj.{max (succ u2) (succ u1), succ u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 (HomologicalComplex.X.{u1, u2, u3} ι V _inst_1 _inst_2 c C₂ i)) (CategoryTheory.CategoryStruct.toQuiver.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 (HomologicalComplex.X.{u1, u2, u3} ι V _inst_1 _inst_2 c C₂ i)) (CategoryTheory.Category.toCategoryStruct.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 (HomologicalComplex.X.{u1, u2, u3} ι V _inst_1 _inst_2 c C₂ i)) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 (HomologicalComplex.X.{u1, u2, u3} ι V _inst_1 _inst_2 c C₂ i)) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 (HomologicalComplex.X.{u1, u2, u3} ι V _inst_1 _inst_2 c C₂ i)) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 (HomologicalComplex.X.{u1, u2, u3} ι V _inst_1 _inst_2 c C₂ i)))))) V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) (CategoryTheory.Functor.toPrefunctor.{max u2 u1, u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 (HomologicalComplex.X.{u1, u2, u3} ι V _inst_1 _inst_2 c C₂ i)) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 (HomologicalComplex.X.{u1, u2, u3} ι V _inst_1 _inst_2 c C₂ i)) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 (HomologicalComplex.X.{u1, u2, u3} ι V _inst_1 _inst_2 c C₂ i)) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 (HomologicalComplex.X.{u1, u2, u3} ι V _inst_1 _inst_2 c C₂ i)))) V _inst_1 (CategoryTheory.Subobject.underlying.{u1, u2} V _inst_1 (HomologicalComplex.X.{u1, u2, u3} ι V _inst_1 _inst_2 c C₂ i))) (HomologicalComplex.boundaries.{u1, u2, u3} ι V _inst_1 _inst_2 c _inst_3 C₂ i)))
+<too large>
Case conversion may be inaccurate. Consider using '#align boundaries_map boundariesMapₓ'. -/
/-- The morphism between boundaries induced by a chain map.
-/
@@ -388,10 +370,7 @@ variable [HasEqualizers V] [HasImages V] [HasImageMaps V]
variable {C₁ C₂ : HomologicalComplex V c} (f : C₁ ⟶ C₂)
/- warning: boundaries_to_cycles_naturality -> boundariesToCycles_naturality is a dubious translation:
-lean 3 declaration is
- forall {ι : Type.{u3}} {V : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u1, u2} V] [_inst_2 : CategoryTheory.Limits.HasZeroMorphisms.{u1, u2} V _inst_1] {c : ComplexShape.{u3} ι} [_inst_3 : CategoryTheory.Limits.HasEqualizers.{u1, u2} V _inst_1] [_inst_4 : CategoryTheory.Limits.HasImages.{u1, u2} V _inst_1] [_inst_5 : CategoryTheory.Limits.HasImageMaps.{u1, u2} V _inst_1 _inst_4] {C₁ : HomologicalComplex.{u1, u2, u3} ι V _inst_1 _inst_2 c} {C₂ : HomologicalComplex.{u1, u2, u3} ι V _inst_1 _inst_2 c} (f : Quiver.Hom.{succ (max u3 u1), max u2 u3 u1} (HomologicalComplex.{u1, u2, u3} ι V _inst_1 _inst_2 c) (CategoryTheory.CategoryStruct.toQuiver.{max u3 u1, max u2 u3 u1} (HomologicalComplex.{u1, u2, u3} ι V _inst_1 _inst_2 c) (CategoryTheory.Category.toCategoryStruct.{max u3 u1, max u2 u3 u1} (HomologicalComplex.{u1, u2, u3} ι V _inst_1 _inst_2 c) (HomologicalComplex.CategoryTheory.category.{u1, u2, u3} ι V _inst_1 _inst_2 c))) C₁ C₂) (i : ι), Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) ((fun (a : Type.{max u2 u1}) (b : Type.{u2}) [self : HasLiftT.{succ (max u2 u1), succ u2} a b] => self.0) (CategoryTheory.Subobject.{u1, u2} V _inst_1 (HomologicalComplex.x.{u1, u2, u3} ι V _inst_1 _inst_2 c C₁ i)) V (HasLiftT.mk.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 (HomologicalComplex.x.{u1, u2, u3} ι V _inst_1 _inst_2 c C₁ i)) V (CoeTCₓ.coe.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 (HomologicalComplex.x.{u1, u2, u3} ι V _inst_1 _inst_2 c C₁ i)) V (coeBase.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 (HomologicalComplex.x.{u1, u2, u3} ι V _inst_1 _inst_2 c C₁ i)) V (CategoryTheory.Subobject.hasCoe.{u1, u2} V _inst_1 (HomologicalComplex.x.{u1, u2, u3} ι V _inst_1 _inst_2 c C₁ i))))) (HomologicalComplex.boundaries.{u1, u2, u3} ι V _inst_1 _inst_2 c _inst_4 C₁ i)) ((fun (a : Type.{max u2 u1}) (b : Type.{u2}) [self : HasLiftT.{succ (max u2 u1), succ u2} a b] => self.0) (CategoryTheory.Subobject.{u1, u2} V _inst_1 (HomologicalComplex.x.{u1, u2, u3} ι V _inst_1 _inst_2 c C₂ i)) V (HasLiftT.mk.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 (HomologicalComplex.x.{u1, u2, u3} ι V _inst_1 _inst_2 c C₂ i)) V (CoeTCₓ.coe.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 (HomologicalComplex.x.{u1, u2, u3} ι V _inst_1 _inst_2 c C₂ i)) V (coeBase.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 (HomologicalComplex.x.{u1, u2, u3} ι V _inst_1 _inst_2 c C₂ i)) V (CategoryTheory.Subobject.hasCoe.{u1, u2} V _inst_1 (HomologicalComplex.x.{u1, u2, u3} ι V _inst_1 _inst_2 c C₂ i))))) (HomologicalComplex.cycles.{u1, u2, u3} ι V _inst_1 _inst_2 c C₂ (CategoryTheory.Limits.hasKernels_of_hasEqualizers.{u1, u2} V _inst_1 _inst_2 _inst_3) i))) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) ((fun (a : Type.{max u2 u1}) (b : Type.{u2}) [self : HasLiftT.{succ (max u2 u1), succ u2} a b] => self.0) (CategoryTheory.Subobject.{u1, u2} V _inst_1 (HomologicalComplex.x.{u1, u2, u3} ι V _inst_1 _inst_2 c C₁ i)) V (HasLiftT.mk.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 (HomologicalComplex.x.{u1, u2, u3} ι V _inst_1 _inst_2 c C₁ i)) V (CoeTCₓ.coe.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 (HomologicalComplex.x.{u1, u2, u3} ι V _inst_1 _inst_2 c C₁ i)) V (coeBase.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 (HomologicalComplex.x.{u1, u2, u3} ι V _inst_1 _inst_2 c C₁ i)) V (CategoryTheory.Subobject.hasCoe.{u1, u2} V _inst_1 (HomologicalComplex.x.{u1, u2, u3} ι V _inst_1 _inst_2 c C₁ i))))) (HomologicalComplex.boundaries.{u1, u2, u3} ι V _inst_1 _inst_2 c _inst_4 C₁ i)) ((fun (a : Type.{max u2 u1}) (b : Type.{u2}) [self : HasLiftT.{succ (max u2 u1), succ u2} a b] => self.0) (CategoryTheory.Subobject.{u1, u2} V _inst_1 (HomologicalComplex.x.{u1, u2, u3} ι V _inst_1 _inst_2 c C₂ i)) V (HasLiftT.mk.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 (HomologicalComplex.x.{u1, u2, u3} ι V _inst_1 _inst_2 c C₂ i)) V (CoeTCₓ.coe.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 (HomologicalComplex.x.{u1, u2, u3} ι V _inst_1 _inst_2 c C₂ i)) V (coeBase.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 (HomologicalComplex.x.{u1, u2, u3} ι V _inst_1 _inst_2 c C₂ i)) V (CategoryTheory.Subobject.hasCoe.{u1, u2} V _inst_1 (HomologicalComplex.x.{u1, u2, u3} ι V _inst_1 _inst_2 c C₂ i))))) (HomologicalComplex.boundaries.{u1, u2, u3} ι V _inst_1 _inst_2 c _inst_4 C₂ i)) ((fun (a : Type.{max u2 u1}) (b : Type.{u2}) [self : HasLiftT.{succ (max u2 u1), succ u2} a b] => self.0) (CategoryTheory.Subobject.{u1, u2} V _inst_1 (HomologicalComplex.x.{u1, u2, u3} ι V _inst_1 _inst_2 c C₂ i)) V (HasLiftT.mk.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 (HomologicalComplex.x.{u1, u2, u3} ι V _inst_1 _inst_2 c C₂ i)) V (CoeTCₓ.coe.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 (HomologicalComplex.x.{u1, u2, u3} ι V _inst_1 _inst_2 c C₂ i)) V (coeBase.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 (HomologicalComplex.x.{u1, u2, u3} ι V _inst_1 _inst_2 c C₂ i)) V (CategoryTheory.Subobject.hasCoe.{u1, u2} V _inst_1 (HomologicalComplex.x.{u1, u2, u3} ι V _inst_1 _inst_2 c C₂ i))))) (HomologicalComplex.cycles.{u1, u2, u3} ι V _inst_1 _inst_2 c C₂ (CategoryTheory.Limits.hasKernels_of_hasEqualizers.{u1, u2} V _inst_1 _inst_2 _inst_3) i)) (boundariesMap.{u1, u2, u3} ι V _inst_1 _inst_2 c _inst_4 _inst_5 C₁ C₂ f i) (HomologicalComplex.boundariesToCycles.{u1, u2, u3} ι V _inst_1 _inst_2 c (CategoryTheory.Limits.hasKernels_of_hasEqualizers.{u1, u2} V _inst_1 _inst_2 _inst_3) _inst_4 C₂ i)) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) ((fun (a : Type.{max u2 u1}) (b : Type.{u2}) [self : HasLiftT.{succ (max u2 u1), succ u2} a b] => self.0) (CategoryTheory.Subobject.{u1, u2} V _inst_1 (HomologicalComplex.x.{u1, u2, u3} ι V _inst_1 _inst_2 c C₁ i)) V (HasLiftT.mk.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 (HomologicalComplex.x.{u1, u2, u3} ι V _inst_1 _inst_2 c C₁ i)) V (CoeTCₓ.coe.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 (HomologicalComplex.x.{u1, u2, u3} ι V _inst_1 _inst_2 c C₁ i)) V (coeBase.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 (HomologicalComplex.x.{u1, u2, u3} ι V _inst_1 _inst_2 c C₁ i)) V (CategoryTheory.Subobject.hasCoe.{u1, u2} V _inst_1 (HomologicalComplex.x.{u1, u2, u3} ι V _inst_1 _inst_2 c C₁ i))))) (HomologicalComplex.boundaries.{u1, u2, u3} ι V _inst_1 _inst_2 c _inst_4 C₁ i)) ((fun (a : Type.{max u2 u1}) (b : Type.{u2}) [self : HasLiftT.{succ (max u2 u1), succ u2} a b] => self.0) (CategoryTheory.Subobject.{u1, u2} V _inst_1 (HomologicalComplex.x.{u1, u2, u3} ι V _inst_1 _inst_2 c C₁ i)) V (HasLiftT.mk.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 (HomologicalComplex.x.{u1, u2, u3} ι V _inst_1 _inst_2 c C₁ i)) V (CoeTCₓ.coe.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 (HomologicalComplex.x.{u1, u2, u3} ι V _inst_1 _inst_2 c C₁ i)) V (coeBase.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 (HomologicalComplex.x.{u1, u2, u3} ι V _inst_1 _inst_2 c C₁ i)) V (CategoryTheory.Subobject.hasCoe.{u1, u2} V _inst_1 (HomologicalComplex.x.{u1, u2, u3} ι V _inst_1 _inst_2 c C₁ i))))) (HomologicalComplex.cycles.{u1, u2, u3} ι V _inst_1 _inst_2 c C₁ (CategoryTheory.Limits.hasKernels_of_hasEqualizers.{u1, u2} V _inst_1 _inst_2 _inst_3) i)) ((fun (a : Type.{max u2 u1}) (b : Type.{u2}) [self : HasLiftT.{succ (max u2 u1), succ u2} a b] => self.0) (CategoryTheory.Subobject.{u1, u2} V _inst_1 (HomologicalComplex.x.{u1, u2, u3} ι V _inst_1 _inst_2 c C₂ i)) V (HasLiftT.mk.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 (HomologicalComplex.x.{u1, u2, u3} ι V _inst_1 _inst_2 c C₂ i)) V (CoeTCₓ.coe.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 (HomologicalComplex.x.{u1, u2, u3} ι V _inst_1 _inst_2 c C₂ i)) V (coeBase.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 (HomologicalComplex.x.{u1, u2, u3} ι V _inst_1 _inst_2 c C₂ i)) V (CategoryTheory.Subobject.hasCoe.{u1, u2} V _inst_1 (HomologicalComplex.x.{u1, u2, u3} ι V _inst_1 _inst_2 c C₂ i))))) (HomologicalComplex.cycles.{u1, u2, u3} ι V _inst_1 _inst_2 c C₂ (CategoryTheory.Limits.hasKernels_of_hasEqualizers.{u1, u2} V _inst_1 _inst_2 _inst_3) i)) (HomologicalComplex.boundariesToCycles.{u1, u2, u3} ι V _inst_1 _inst_2 c (CategoryTheory.Limits.hasKernels_of_hasEqualizers.{u1, u2} V _inst_1 _inst_2 _inst_3) _inst_4 C₁ i) (cyclesMap.{u1, u2, u3} ι V _inst_1 _inst_2 c (CategoryTheory.Limits.hasKernels_of_hasEqualizers.{u1, u2} V _inst_1 _inst_2 _inst_3) C₁ C₂ f i))
-but is expected to have type
- forall {ι : Type.{u1}} {V : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u2, u3} V] [_inst_2 : CategoryTheory.Limits.HasZeroMorphisms.{u2, u3} V _inst_1] {c : ComplexShape.{u1} ι} [_inst_3 : CategoryTheory.Limits.HasEqualizers.{u2, u3} V _inst_1] [_inst_4 : CategoryTheory.Limits.HasImages.{u2, u3} V _inst_1] [_inst_5 : CategoryTheory.Limits.HasImageMaps.{u2, u3} V _inst_1 _inst_4] {C₁ : HomologicalComplex.{u2, u3, u1} ι V _inst_1 _inst_2 c} {C₂ : HomologicalComplex.{u2, u3, u1} ι V _inst_1 _inst_2 c} (f : Quiver.Hom.{max (succ u2) (succ u1), max (max u3 u2) u1} (HomologicalComplex.{u2, u3, u1} ι V _inst_1 _inst_2 c) (CategoryTheory.CategoryStruct.toQuiver.{max u2 u1, max (max u3 u2) u1} (HomologicalComplex.{u2, u3, u1} ι V _inst_1 _inst_2 c) (CategoryTheory.Category.toCategoryStruct.{max u2 u1, max (max u3 u2) u1} (HomologicalComplex.{u2, u3, u1} ι V _inst_1 _inst_2 c) (HomologicalComplex.instCategoryHomologicalComplex.{u2, u3, u1} ι V _inst_1 _inst_2 c))) C₁ C₂) (i : ι), Eq.{succ u2} (Quiver.Hom.{succ u2, u3} V (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} V (CategoryTheory.Category.toCategoryStruct.{u2, u3} V _inst_1)) (Prefunctor.obj.{max (succ u3) (succ u2), succ u2, max u3 u2, u3} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₁ i)) (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, max u3 u2} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₁ i)) (CategoryTheory.Category.toCategoryStruct.{max u3 u2, max u3 u2} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₁ i)) (Preorder.smallCategory.{max u3 u2} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₁ i)) (PartialOrder.toPreorder.{max u3 u2} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₁ i)) (CategoryTheory.instPartialOrderSubobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₁ i)))))) V (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} V (CategoryTheory.Category.toCategoryStruct.{u2, u3} V _inst_1)) (CategoryTheory.Functor.toPrefunctor.{max u3 u2, u2, max u3 u2, u3} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₁ i)) (Preorder.smallCategory.{max u3 u2} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₁ i)) (PartialOrder.toPreorder.{max u3 u2} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₁ i)) (CategoryTheory.instPartialOrderSubobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₁ i)))) V _inst_1 (CategoryTheory.Subobject.underlying.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₁ i))) (HomologicalComplex.boundaries.{u2, u3, u1} ι V _inst_1 _inst_2 c _inst_4 C₁ i)) (Prefunctor.obj.{max (succ u3) (succ u2), succ u2, max u3 u2, u3} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₂ i)) (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, max u3 u2} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₂ i)) (CategoryTheory.Category.toCategoryStruct.{max u3 u2, max u3 u2} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₂ i)) (Preorder.smallCategory.{max u3 u2} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₂ i)) (PartialOrder.toPreorder.{max u3 u2} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₂ i)) (CategoryTheory.instPartialOrderSubobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₂ i)))))) V (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} V (CategoryTheory.Category.toCategoryStruct.{u2, u3} V _inst_1)) (CategoryTheory.Functor.toPrefunctor.{max u3 u2, u2, max u3 u2, u3} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₂ i)) (Preorder.smallCategory.{max u3 u2} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₂ i)) (PartialOrder.toPreorder.{max u3 u2} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₂ i)) (CategoryTheory.instPartialOrderSubobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₂ i)))) V _inst_1 (CategoryTheory.Subobject.underlying.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₂ i))) (HomologicalComplex.cycles.{u2, u3, u1} ι V _inst_1 _inst_2 c C₂ (CategoryTheory.Limits.hasKernels_of_hasEqualizers.{u2, u3} V _inst_1 _inst_2 _inst_3) i))) (CategoryTheory.CategoryStruct.comp.{u2, u3} V (CategoryTheory.Category.toCategoryStruct.{u2, u3} V _inst_1) (Prefunctor.obj.{max (succ u3) (succ u2), succ u2, max u3 u2, u3} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₁ i)) (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, max u3 u2} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₁ i)) (CategoryTheory.Category.toCategoryStruct.{max u3 u2, max u3 u2} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₁ i)) (Preorder.smallCategory.{max u3 u2} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₁ i)) (PartialOrder.toPreorder.{max u3 u2} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₁ i)) (CategoryTheory.instPartialOrderSubobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₁ i)))))) V (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} V (CategoryTheory.Category.toCategoryStruct.{u2, u3} V _inst_1)) (CategoryTheory.Functor.toPrefunctor.{max u3 u2, u2, max u3 u2, u3} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₁ i)) (Preorder.smallCategory.{max u3 u2} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₁ i)) (PartialOrder.toPreorder.{max u3 u2} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₁ i)) (CategoryTheory.instPartialOrderSubobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₁ i)))) V _inst_1 (CategoryTheory.Subobject.underlying.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₁ i))) (HomologicalComplex.boundaries.{u2, u3, u1} ι V _inst_1 _inst_2 c _inst_4 C₁ i)) (Prefunctor.obj.{max (succ u3) (succ u2), succ u2, max u3 u2, u3} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₂ i)) (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, max u3 u2} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₂ i)) (CategoryTheory.Category.toCategoryStruct.{max u3 u2, max u3 u2} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₂ i)) (Preorder.smallCategory.{max u3 u2} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₂ i)) (PartialOrder.toPreorder.{max u3 u2} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₂ i)) (CategoryTheory.instPartialOrderSubobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₂ i)))))) V (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} V (CategoryTheory.Category.toCategoryStruct.{u2, u3} V _inst_1)) (CategoryTheory.Functor.toPrefunctor.{max u3 u2, u2, max u3 u2, u3} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₂ i)) (Preorder.smallCategory.{max u3 u2} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₂ i)) (PartialOrder.toPreorder.{max u3 u2} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₂ i)) (CategoryTheory.instPartialOrderSubobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₂ i)))) V _inst_1 (CategoryTheory.Subobject.underlying.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₂ i))) (HomologicalComplex.boundaries.{u2, u3, u1} ι V _inst_1 _inst_2 c _inst_4 C₂ i)) (Prefunctor.obj.{max (succ u3) (succ u2), succ u2, max u3 u2, u3} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₂ i)) (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, max u3 u2} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₂ i)) (CategoryTheory.Category.toCategoryStruct.{max u3 u2, max u3 u2} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₂ i)) (Preorder.smallCategory.{max u3 u2} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₂ i)) (PartialOrder.toPreorder.{max u3 u2} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₂ i)) (CategoryTheory.instPartialOrderSubobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₂ i)))))) V (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} V (CategoryTheory.Category.toCategoryStruct.{u2, u3} V _inst_1)) (CategoryTheory.Functor.toPrefunctor.{max u3 u2, u2, max u3 u2, u3} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₂ i)) (Preorder.smallCategory.{max u3 u2} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₂ i)) (PartialOrder.toPreorder.{max u3 u2} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₂ i)) (CategoryTheory.instPartialOrderSubobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₂ i)))) V _inst_1 (CategoryTheory.Subobject.underlying.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₂ i))) (HomologicalComplex.cycles.{u2, u3, u1} ι V _inst_1 _inst_2 c C₂ (CategoryTheory.Limits.hasKernels_of_hasEqualizers.{u2, u3} V _inst_1 _inst_2 _inst_3) i)) (boundariesMap.{u2, u3, u1} ι V _inst_1 _inst_2 c _inst_4 _inst_5 C₁ C₂ f i) (HomologicalComplex.boundariesToCycles.{u2, u3, u1} ι V _inst_1 _inst_2 c (CategoryTheory.Limits.hasKernels_of_hasEqualizers.{u2, u3} V _inst_1 _inst_2 _inst_3) _inst_4 C₂ i)) (CategoryTheory.CategoryStruct.comp.{u2, u3} V (CategoryTheory.Category.toCategoryStruct.{u2, u3} V _inst_1) (Prefunctor.obj.{max (succ u3) (succ u2), succ u2, max u3 u2, u3} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₁ i)) (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, max u3 u2} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₁ i)) (CategoryTheory.Category.toCategoryStruct.{max u3 u2, max u3 u2} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₁ i)) (Preorder.smallCategory.{max u3 u2} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₁ i)) (PartialOrder.toPreorder.{max u3 u2} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₁ i)) (CategoryTheory.instPartialOrderSubobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₁ i)))))) V (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} V (CategoryTheory.Category.toCategoryStruct.{u2, u3} V _inst_1)) (CategoryTheory.Functor.toPrefunctor.{max u3 u2, u2, max u3 u2, u3} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₁ i)) (Preorder.smallCategory.{max u3 u2} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₁ i)) (PartialOrder.toPreorder.{max u3 u2} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₁ i)) (CategoryTheory.instPartialOrderSubobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₁ i)))) V _inst_1 (CategoryTheory.Subobject.underlying.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₁ i))) (HomologicalComplex.boundaries.{u2, u3, u1} ι V _inst_1 _inst_2 c _inst_4 C₁ i)) (Prefunctor.obj.{max (succ u3) (succ u2), succ u2, max u3 u2, u3} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₁ i)) (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, max u3 u2} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₁ i)) (CategoryTheory.Category.toCategoryStruct.{max u3 u2, max u3 u2} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₁ i)) (Preorder.smallCategory.{max u3 u2} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₁ i)) (PartialOrder.toPreorder.{max u3 u2} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₁ i)) (CategoryTheory.instPartialOrderSubobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₁ i)))))) V (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} V (CategoryTheory.Category.toCategoryStruct.{u2, u3} V _inst_1)) (CategoryTheory.Functor.toPrefunctor.{max u3 u2, u2, max u3 u2, u3} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₁ i)) (Preorder.smallCategory.{max u3 u2} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₁ i)) (PartialOrder.toPreorder.{max u3 u2} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₁ i)) (CategoryTheory.instPartialOrderSubobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₁ i)))) V _inst_1 (CategoryTheory.Subobject.underlying.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₁ i))) (HomologicalComplex.cycles.{u2, u3, u1} ι V _inst_1 _inst_2 c C₁ (CategoryTheory.Limits.hasKernels_of_hasEqualizers.{u2, u3} V _inst_1 _inst_2 _inst_3) i)) (Prefunctor.obj.{max (succ u3) (succ u2), succ u2, max u3 u2, u3} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₂ i)) (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, max u3 u2} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₂ i)) (CategoryTheory.Category.toCategoryStruct.{max u3 u2, max u3 u2} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₂ i)) (Preorder.smallCategory.{max u3 u2} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₂ i)) (PartialOrder.toPreorder.{max u3 u2} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₂ i)) (CategoryTheory.instPartialOrderSubobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₂ i)))))) V (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} V (CategoryTheory.Category.toCategoryStruct.{u2, u3} V _inst_1)) (CategoryTheory.Functor.toPrefunctor.{max u3 u2, u2, max u3 u2, u3} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₂ i)) (Preorder.smallCategory.{max u3 u2} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₂ i)) (PartialOrder.toPreorder.{max u3 u2} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₂ i)) (CategoryTheory.instPartialOrderSubobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₂ i)))) V _inst_1 (CategoryTheory.Subobject.underlying.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₂ i))) (HomologicalComplex.cycles.{u2, u3, u1} ι V _inst_1 _inst_2 c C₂ (CategoryTheory.Limits.hasKernels_of_hasEqualizers.{u2, u3} V _inst_1 _inst_2 _inst_3) i)) (HomologicalComplex.boundariesToCycles.{u2, u3, u1} ι V _inst_1 _inst_2 c (CategoryTheory.Limits.hasKernels_of_hasEqualizers.{u2, u3} V _inst_1 _inst_2 _inst_3) _inst_4 C₁ i) (cyclesMap.{u2, u3, u1} ι V _inst_1 _inst_2 c (CategoryTheory.Limits.hasKernels_of_hasEqualizers.{u2, u3} V _inst_1 _inst_2 _inst_3) C₁ C₂ f i))
+<too large>
Case conversion may be inaccurate. Consider using '#align boundaries_to_cycles_naturality boundariesToCycles_naturalityₓ'. -/
@[simp, reassoc]
theorem boundariesToCycles_naturality (i : ι) :
mathlib commit https://github.com/leanprover-community/mathlib/commit/75e7fca56381d056096ce5d05e938f63a6567828
@@ -297,7 +297,7 @@ lean 3 declaration is
but is expected to have type
forall {ι : Type.{u1}} {V : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u2, u3} V] [_inst_2 : CategoryTheory.Limits.HasZeroMorphisms.{u2, u3} V _inst_1] {c : ComplexShape.{u1} ι} [_inst_3 : CategoryTheory.Limits.HasKernels.{u2, u3} V _inst_1 _inst_2] {C₁ : HomologicalComplex.{u2, u3, u1} ι V _inst_1 _inst_2 c} {C₂ : HomologicalComplex.{u2, u3, u1} ι V _inst_1 _inst_2 c} (f : Quiver.Hom.{max (succ u2) (succ u1), max (max u3 u2) u1} (HomologicalComplex.{u2, u3, u1} ι V _inst_1 _inst_2 c) (CategoryTheory.CategoryStruct.toQuiver.{max u2 u1, max (max u3 u2) u1} (HomologicalComplex.{u2, u3, u1} ι V _inst_1 _inst_2 c) (CategoryTheory.Category.toCategoryStruct.{max u2 u1, max (max u3 u2) u1} (HomologicalComplex.{u2, u3, u1} ι V _inst_1 _inst_2 c) (HomologicalComplex.instCategoryHomologicalComplex.{u2, u3, u1} ι V _inst_1 _inst_2 c))) C₁ C₂) (i : ι), Eq.{succ u2} (Quiver.Hom.{succ u2, u3} V (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} V (CategoryTheory.Category.toCategoryStruct.{u2, u3} V _inst_1)) (Prefunctor.obj.{max (succ u3) (succ u2), succ u2, max u3 u2, u3} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₁ i)) (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, max u3 u2} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₁ i)) (CategoryTheory.Category.toCategoryStruct.{max u3 u2, max u3 u2} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₁ i)) (Preorder.smallCategory.{max u3 u2} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₁ i)) (PartialOrder.toPreorder.{max u3 u2} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₁ i)) (CategoryTheory.instPartialOrderSubobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₁ i)))))) V (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} V (CategoryTheory.Category.toCategoryStruct.{u2, u3} V _inst_1)) (CategoryTheory.Functor.toPrefunctor.{max u3 u2, u2, max u3 u2, u3} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₁ i)) (Preorder.smallCategory.{max u3 u2} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₁ i)) (PartialOrder.toPreorder.{max u3 u2} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₁ i)) (CategoryTheory.instPartialOrderSubobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₁ i)))) V _inst_1 (CategoryTheory.Subobject.underlying.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₁ i))) (HomologicalComplex.cycles.{u2, u3, u1} ι V _inst_1 _inst_2 c C₁ _inst_3 i)) (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₂ i)) (CategoryTheory.CategoryStruct.comp.{u2, u3} V (CategoryTheory.Category.toCategoryStruct.{u2, u3} V _inst_1) (Prefunctor.obj.{max (succ u3) (succ u2), succ u2, max u3 u2, u3} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₁ i)) (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, max u3 u2} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₁ i)) (CategoryTheory.Category.toCategoryStruct.{max u3 u2, max u3 u2} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₁ i)) (Preorder.smallCategory.{max u3 u2} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₁ i)) (PartialOrder.toPreorder.{max u3 u2} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₁ i)) (CategoryTheory.instPartialOrderSubobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₁ i)))))) V (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} V (CategoryTheory.Category.toCategoryStruct.{u2, u3} V _inst_1)) (CategoryTheory.Functor.toPrefunctor.{max u3 u2, u2, max u3 u2, u3} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₁ i)) (Preorder.smallCategory.{max u3 u2} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₁ i)) (PartialOrder.toPreorder.{max u3 u2} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₁ i)) (CategoryTheory.instPartialOrderSubobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₁ i)))) V _inst_1 (CategoryTheory.Subobject.underlying.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₁ i))) (HomologicalComplex.cycles.{u2, u3, u1} ι V _inst_1 _inst_2 c C₁ _inst_3 i)) (Prefunctor.obj.{max (succ u3) (succ u2), succ u2, max u3 u2, u3} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₂ i)) (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, max u3 u2} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₂ i)) (CategoryTheory.Category.toCategoryStruct.{max u3 u2, max u3 u2} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₂ i)) (Preorder.smallCategory.{max u3 u2} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₂ i)) (PartialOrder.toPreorder.{max u3 u2} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₂ i)) (CategoryTheory.instPartialOrderSubobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₂ i)))))) V (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} V (CategoryTheory.Category.toCategoryStruct.{u2, u3} V _inst_1)) (CategoryTheory.Functor.toPrefunctor.{max u3 u2, u2, max u3 u2, u3} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₂ i)) (Preorder.smallCategory.{max u3 u2} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₂ i)) (PartialOrder.toPreorder.{max u3 u2} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₂ i)) (CategoryTheory.instPartialOrderSubobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₂ i)))) V _inst_1 (CategoryTheory.Subobject.underlying.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₂ i))) (HomologicalComplex.cycles.{u2, u3, u1} ι V _inst_1 _inst_2 c C₂ _inst_3 i)) (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₂ i) (cyclesMap.{u2, u3, u1} ι V _inst_1 _inst_2 c _inst_3 C₁ C₂ f i) (CategoryTheory.Subobject.arrow.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₂ i) (HomologicalComplex.cycles.{u2, u3, u1} ι V _inst_1 _inst_2 c C₂ _inst_3 i))) (CategoryTheory.CategoryStruct.comp.{u2, u3} V (CategoryTheory.Category.toCategoryStruct.{u2, u3} V _inst_1) (Prefunctor.obj.{max (succ u3) (succ u2), succ u2, max u3 u2, u3} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₁ i)) (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, max u3 u2} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₁ i)) (CategoryTheory.Category.toCategoryStruct.{max u3 u2, max u3 u2} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₁ i)) (Preorder.smallCategory.{max u3 u2} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₁ i)) (PartialOrder.toPreorder.{max u3 u2} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₁ i)) (CategoryTheory.instPartialOrderSubobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₁ i)))))) V (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} V (CategoryTheory.Category.toCategoryStruct.{u2, u3} V _inst_1)) (CategoryTheory.Functor.toPrefunctor.{max u3 u2, u2, max u3 u2, u3} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₁ i)) (Preorder.smallCategory.{max u3 u2} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₁ i)) (PartialOrder.toPreorder.{max u3 u2} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₁ i)) (CategoryTheory.instPartialOrderSubobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₁ i)))) V _inst_1 (CategoryTheory.Subobject.underlying.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₁ i))) (HomologicalComplex.cycles.{u2, u3, u1} ι V _inst_1 _inst_2 c C₁ _inst_3 i)) (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₁ i) (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₂ i) (CategoryTheory.Subobject.arrow.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₁ i) (HomologicalComplex.cycles.{u2, u3, u1} ι V _inst_1 _inst_2 c C₁ _inst_3 i)) (HomologicalComplex.Hom.f.{u2, u3, u1} ι V _inst_1 _inst_2 c C₁ C₂ f i))
Case conversion may be inaccurate. Consider using '#align cycles_map_arrow cyclesMap_arrowₓ'. -/
-@[simp, reassoc.1, elementwise]
+@[simp, reassoc, elementwise]
theorem cyclesMap_arrow (f : C₁ ⟶ C₂) (i : ι) :
cyclesMap f i ≫ (C₂.cycles i).arrow = (C₁.cycles i).arrow ≫ f.f i := by simp
#align cycles_map_arrow cyclesMap_arrow
@@ -393,7 +393,7 @@ lean 3 declaration is
but is expected to have type
forall {ι : Type.{u1}} {V : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u2, u3} V] [_inst_2 : CategoryTheory.Limits.HasZeroMorphisms.{u2, u3} V _inst_1] {c : ComplexShape.{u1} ι} [_inst_3 : CategoryTheory.Limits.HasEqualizers.{u2, u3} V _inst_1] [_inst_4 : CategoryTheory.Limits.HasImages.{u2, u3} V _inst_1] [_inst_5 : CategoryTheory.Limits.HasImageMaps.{u2, u3} V _inst_1 _inst_4] {C₁ : HomologicalComplex.{u2, u3, u1} ι V _inst_1 _inst_2 c} {C₂ : HomologicalComplex.{u2, u3, u1} ι V _inst_1 _inst_2 c} (f : Quiver.Hom.{max (succ u2) (succ u1), max (max u3 u2) u1} (HomologicalComplex.{u2, u3, u1} ι V _inst_1 _inst_2 c) (CategoryTheory.CategoryStruct.toQuiver.{max u2 u1, max (max u3 u2) u1} (HomologicalComplex.{u2, u3, u1} ι V _inst_1 _inst_2 c) (CategoryTheory.Category.toCategoryStruct.{max u2 u1, max (max u3 u2) u1} (HomologicalComplex.{u2, u3, u1} ι V _inst_1 _inst_2 c) (HomologicalComplex.instCategoryHomologicalComplex.{u2, u3, u1} ι V _inst_1 _inst_2 c))) C₁ C₂) (i : ι), Eq.{succ u2} (Quiver.Hom.{succ u2, u3} V (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} V (CategoryTheory.Category.toCategoryStruct.{u2, u3} V _inst_1)) (Prefunctor.obj.{max (succ u3) (succ u2), succ u2, max u3 u2, u3} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₁ i)) (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, max u3 u2} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₁ i)) (CategoryTheory.Category.toCategoryStruct.{max u3 u2, max u3 u2} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₁ i)) (Preorder.smallCategory.{max u3 u2} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₁ i)) (PartialOrder.toPreorder.{max u3 u2} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₁ i)) (CategoryTheory.instPartialOrderSubobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₁ i)))))) V (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} V (CategoryTheory.Category.toCategoryStruct.{u2, u3} V _inst_1)) (CategoryTheory.Functor.toPrefunctor.{max u3 u2, u2, max u3 u2, u3} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₁ i)) (Preorder.smallCategory.{max u3 u2} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₁ i)) (PartialOrder.toPreorder.{max u3 u2} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₁ i)) (CategoryTheory.instPartialOrderSubobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₁ i)))) V _inst_1 (CategoryTheory.Subobject.underlying.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₁ i))) (HomologicalComplex.boundaries.{u2, u3, u1} ι V _inst_1 _inst_2 c _inst_4 C₁ i)) (Prefunctor.obj.{max (succ u3) (succ u2), succ u2, max u3 u2, u3} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₂ i)) (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, max u3 u2} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₂ i)) (CategoryTheory.Category.toCategoryStruct.{max u3 u2, max u3 u2} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₂ i)) (Preorder.smallCategory.{max u3 u2} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₂ i)) (PartialOrder.toPreorder.{max u3 u2} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₂ i)) (CategoryTheory.instPartialOrderSubobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₂ i)))))) V (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} V (CategoryTheory.Category.toCategoryStruct.{u2, u3} V _inst_1)) (CategoryTheory.Functor.toPrefunctor.{max u3 u2, u2, max u3 u2, u3} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₂ i)) (Preorder.smallCategory.{max u3 u2} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₂ i)) (PartialOrder.toPreorder.{max u3 u2} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₂ i)) (CategoryTheory.instPartialOrderSubobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₂ i)))) V _inst_1 (CategoryTheory.Subobject.underlying.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₂ i))) (HomologicalComplex.cycles.{u2, u3, u1} ι V _inst_1 _inst_2 c C₂ (CategoryTheory.Limits.hasKernels_of_hasEqualizers.{u2, u3} V _inst_1 _inst_2 _inst_3) i))) (CategoryTheory.CategoryStruct.comp.{u2, u3} V (CategoryTheory.Category.toCategoryStruct.{u2, u3} V _inst_1) (Prefunctor.obj.{max (succ u3) (succ u2), succ u2, max u3 u2, u3} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₁ i)) (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, max u3 u2} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₁ i)) (CategoryTheory.Category.toCategoryStruct.{max u3 u2, max u3 u2} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₁ i)) (Preorder.smallCategory.{max u3 u2} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₁ i)) (PartialOrder.toPreorder.{max u3 u2} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₁ i)) (CategoryTheory.instPartialOrderSubobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₁ i)))))) V (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} V (CategoryTheory.Category.toCategoryStruct.{u2, u3} V _inst_1)) (CategoryTheory.Functor.toPrefunctor.{max u3 u2, u2, max u3 u2, u3} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₁ i)) (Preorder.smallCategory.{max u3 u2} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₁ i)) (PartialOrder.toPreorder.{max u3 u2} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₁ i)) (CategoryTheory.instPartialOrderSubobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₁ i)))) V _inst_1 (CategoryTheory.Subobject.underlying.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₁ i))) (HomologicalComplex.boundaries.{u2, u3, u1} ι V _inst_1 _inst_2 c _inst_4 C₁ i)) (Prefunctor.obj.{max (succ u3) (succ u2), succ u2, max u3 u2, u3} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₂ i)) (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, max u3 u2} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₂ i)) (CategoryTheory.Category.toCategoryStruct.{max u3 u2, max u3 u2} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₂ i)) (Preorder.smallCategory.{max u3 u2} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₂ i)) (PartialOrder.toPreorder.{max u3 u2} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₂ i)) (CategoryTheory.instPartialOrderSubobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₂ i)))))) V (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} V (CategoryTheory.Category.toCategoryStruct.{u2, u3} V _inst_1)) (CategoryTheory.Functor.toPrefunctor.{max u3 u2, u2, max u3 u2, u3} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₂ i)) (Preorder.smallCategory.{max u3 u2} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₂ i)) (PartialOrder.toPreorder.{max u3 u2} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₂ i)) (CategoryTheory.instPartialOrderSubobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₂ i)))) V _inst_1 (CategoryTheory.Subobject.underlying.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₂ i))) (HomologicalComplex.boundaries.{u2, u3, u1} ι V _inst_1 _inst_2 c _inst_4 C₂ i)) (Prefunctor.obj.{max (succ u3) (succ u2), succ u2, max u3 u2, u3} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₂ i)) (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, max u3 u2} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₂ i)) (CategoryTheory.Category.toCategoryStruct.{max u3 u2, max u3 u2} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₂ i)) (Preorder.smallCategory.{max u3 u2} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₂ i)) (PartialOrder.toPreorder.{max u3 u2} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₂ i)) (CategoryTheory.instPartialOrderSubobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₂ i)))))) V (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} V (CategoryTheory.Category.toCategoryStruct.{u2, u3} V _inst_1)) (CategoryTheory.Functor.toPrefunctor.{max u3 u2, u2, max u3 u2, u3} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₂ i)) (Preorder.smallCategory.{max u3 u2} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₂ i)) (PartialOrder.toPreorder.{max u3 u2} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₂ i)) (CategoryTheory.instPartialOrderSubobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₂ i)))) V _inst_1 (CategoryTheory.Subobject.underlying.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₂ i))) (HomologicalComplex.cycles.{u2, u3, u1} ι V _inst_1 _inst_2 c C₂ (CategoryTheory.Limits.hasKernels_of_hasEqualizers.{u2, u3} V _inst_1 _inst_2 _inst_3) i)) (boundariesMap.{u2, u3, u1} ι V _inst_1 _inst_2 c _inst_4 _inst_5 C₁ C₂ f i) (HomologicalComplex.boundariesToCycles.{u2, u3, u1} ι V _inst_1 _inst_2 c (CategoryTheory.Limits.hasKernels_of_hasEqualizers.{u2, u3} V _inst_1 _inst_2 _inst_3) _inst_4 C₂ i)) (CategoryTheory.CategoryStruct.comp.{u2, u3} V (CategoryTheory.Category.toCategoryStruct.{u2, u3} V _inst_1) (Prefunctor.obj.{max (succ u3) (succ u2), succ u2, max u3 u2, u3} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₁ i)) (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, max u3 u2} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₁ i)) (CategoryTheory.Category.toCategoryStruct.{max u3 u2, max u3 u2} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₁ i)) (Preorder.smallCategory.{max u3 u2} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₁ i)) (PartialOrder.toPreorder.{max u3 u2} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₁ i)) (CategoryTheory.instPartialOrderSubobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₁ i)))))) V (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} V (CategoryTheory.Category.toCategoryStruct.{u2, u3} V _inst_1)) (CategoryTheory.Functor.toPrefunctor.{max u3 u2, u2, max u3 u2, u3} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₁ i)) (Preorder.smallCategory.{max u3 u2} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₁ i)) (PartialOrder.toPreorder.{max u3 u2} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₁ i)) (CategoryTheory.instPartialOrderSubobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₁ i)))) V _inst_1 (CategoryTheory.Subobject.underlying.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₁ i))) (HomologicalComplex.boundaries.{u2, u3, u1} ι V _inst_1 _inst_2 c _inst_4 C₁ i)) (Prefunctor.obj.{max (succ u3) (succ u2), succ u2, max u3 u2, u3} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₁ i)) (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, max u3 u2} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₁ i)) (CategoryTheory.Category.toCategoryStruct.{max u3 u2, max u3 u2} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₁ i)) (Preorder.smallCategory.{max u3 u2} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₁ i)) (PartialOrder.toPreorder.{max u3 u2} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₁ i)) (CategoryTheory.instPartialOrderSubobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₁ i)))))) V (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} V (CategoryTheory.Category.toCategoryStruct.{u2, u3} V _inst_1)) (CategoryTheory.Functor.toPrefunctor.{max u3 u2, u2, max u3 u2, u3} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₁ i)) (Preorder.smallCategory.{max u3 u2} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₁ i)) (PartialOrder.toPreorder.{max u3 u2} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₁ i)) (CategoryTheory.instPartialOrderSubobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₁ i)))) V _inst_1 (CategoryTheory.Subobject.underlying.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₁ i))) (HomologicalComplex.cycles.{u2, u3, u1} ι V _inst_1 _inst_2 c C₁ (CategoryTheory.Limits.hasKernels_of_hasEqualizers.{u2, u3} V _inst_1 _inst_2 _inst_3) i)) (Prefunctor.obj.{max (succ u3) (succ u2), succ u2, max u3 u2, u3} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₂ i)) (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, max u3 u2} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₂ i)) (CategoryTheory.Category.toCategoryStruct.{max u3 u2, max u3 u2} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₂ i)) (Preorder.smallCategory.{max u3 u2} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₂ i)) (PartialOrder.toPreorder.{max u3 u2} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₂ i)) (CategoryTheory.instPartialOrderSubobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₂ i)))))) V (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} V (CategoryTheory.Category.toCategoryStruct.{u2, u3} V _inst_1)) (CategoryTheory.Functor.toPrefunctor.{max u3 u2, u2, max u3 u2, u3} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₂ i)) (Preorder.smallCategory.{max u3 u2} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₂ i)) (PartialOrder.toPreorder.{max u3 u2} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₂ i)) (CategoryTheory.instPartialOrderSubobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₂ i)))) V _inst_1 (CategoryTheory.Subobject.underlying.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₂ i))) (HomologicalComplex.cycles.{u2, u3, u1} ι V _inst_1 _inst_2 c C₂ (CategoryTheory.Limits.hasKernels_of_hasEqualizers.{u2, u3} V _inst_1 _inst_2 _inst_3) i)) (HomologicalComplex.boundariesToCycles.{u2, u3, u1} ι V _inst_1 _inst_2 c (CategoryTheory.Limits.hasKernels_of_hasEqualizers.{u2, u3} V _inst_1 _inst_2 _inst_3) _inst_4 C₁ i) (cyclesMap.{u2, u3, u1} ι V _inst_1 _inst_2 c (CategoryTheory.Limits.hasKernels_of_hasEqualizers.{u2, u3} V _inst_1 _inst_2 _inst_3) C₁ C₂ f i))
Case conversion may be inaccurate. Consider using '#align boundaries_to_cycles_naturality boundariesToCycles_naturalityₓ'. -/
-@[simp, reassoc.1]
+@[simp, reassoc]
theorem boundariesToCycles_naturality (i : ι) :
boundariesMap f i ≫ C₂.boundariesToCycles i = C₁.boundariesToCycles i ≫ cyclesMap f i :=
by
mathlib commit https://github.com/leanprover-community/mathlib/commit/0b9eaaa7686280fad8cce467f5c3c57ee6ce77f8
@@ -82,7 +82,7 @@ def cyclesIsoKernel {i j : ι} (r : c.Rel i j) : (C.cycles i : V) ≅ kernel (C.
/- warning: homological_complex.cycles_eq_top -> HomologicalComplex.cycles_eq_top is a dubious translation:
lean 3 declaration is
- forall {ι : Type.{u3}} {V : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u1, u2} V] [_inst_2 : CategoryTheory.Limits.HasZeroMorphisms.{u1, u2} V _inst_1] {c : ComplexShape.{u3} ι} (C : HomologicalComplex.{u1, u2, u3} ι V _inst_1 _inst_2 c) [_inst_3 : CategoryTheory.Limits.HasKernels.{u1, u2} V _inst_1 _inst_2] {i : ι}, (Not (ComplexShape.Rel.{u3} ι c i (ComplexShape.next.{u3} ι c i))) -> (Eq.{succ (max u2 u1)} (CategoryTheory.Subobject.{u1, u2} V _inst_1 (HomologicalComplex.x.{u1, u2, u3} ι V _inst_1 _inst_2 c C i)) (HomologicalComplex.cycles.{u1, u2, u3} ι V _inst_1 _inst_2 c C _inst_3 i) (Top.top.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 (HomologicalComplex.x.{u1, u2, u3} ι V _inst_1 _inst_2 c C i)) (OrderTop.toHasTop.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 (HomologicalComplex.x.{u1, u2, u3} ι V _inst_1 _inst_2 c C i)) (Preorder.toLE.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 (HomologicalComplex.x.{u1, u2, u3} ι V _inst_1 _inst_2 c C i)) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 (HomologicalComplex.x.{u1, u2, u3} ι V _inst_1 _inst_2 c C i)) (CategoryTheory.Subobject.partialOrder.{u2, u1} V _inst_1 (HomologicalComplex.x.{u1, u2, u3} ι V _inst_1 _inst_2 c C i)))) (CategoryTheory.Subobject.orderTop.{u1, u2} V _inst_1 (HomologicalComplex.x.{u1, u2, u3} ι V _inst_1 _inst_2 c C i)))))
+ forall {ι : Type.{u3}} {V : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u1, u2} V] [_inst_2 : CategoryTheory.Limits.HasZeroMorphisms.{u1, u2} V _inst_1] {c : ComplexShape.{u3} ι} (C : HomologicalComplex.{u1, u2, u3} ι V _inst_1 _inst_2 c) [_inst_3 : CategoryTheory.Limits.HasKernels.{u1, u2} V _inst_1 _inst_2] {i : ι}, (Not (ComplexShape.Rel.{u3} ι c i (ComplexShape.next.{u3} ι c i))) -> (Eq.{succ (max u2 u1)} (CategoryTheory.Subobject.{u1, u2} V _inst_1 (HomologicalComplex.x.{u1, u2, u3} ι V _inst_1 _inst_2 c C i)) (HomologicalComplex.cycles.{u1, u2, u3} ι V _inst_1 _inst_2 c C _inst_3 i) (Top.top.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 (HomologicalComplex.x.{u1, u2, u3} ι V _inst_1 _inst_2 c C i)) (OrderTop.toHasTop.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 (HomologicalComplex.x.{u1, u2, u3} ι V _inst_1 _inst_2 c C i)) (Preorder.toHasLe.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 (HomologicalComplex.x.{u1, u2, u3} ι V _inst_1 _inst_2 c C i)) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 (HomologicalComplex.x.{u1, u2, u3} ι V _inst_1 _inst_2 c C i)) (CategoryTheory.Subobject.partialOrder.{u2, u1} V _inst_1 (HomologicalComplex.x.{u1, u2, u3} ι V _inst_1 _inst_2 c C i)))) (CategoryTheory.Subobject.orderTop.{u1, u2} V _inst_1 (HomologicalComplex.x.{u1, u2, u3} ι V _inst_1 _inst_2 c C i)))))
but is expected to have type
forall {ι : Type.{u1}} {V : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u2, u3} V] [_inst_2 : CategoryTheory.Limits.HasZeroMorphisms.{u2, u3} V _inst_1] {c : ComplexShape.{u1} ι} (C : HomologicalComplex.{u2, u3, u1} ι V _inst_1 _inst_2 c) [_inst_3 : CategoryTheory.Limits.HasKernels.{u2, u3} V _inst_1 _inst_2] {i : ι}, (Not (ComplexShape.Rel.{u1} ι c i (ComplexShape.next.{u1} ι c i))) -> (Eq.{max (succ u3) (succ u2)} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C i)) (HomologicalComplex.cycles.{u2, u3, u1} ι V _inst_1 _inst_2 c C _inst_3 i) (Top.top.{max u3 u2} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C i)) (OrderTop.toTop.{max u3 u2} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C i)) (Preorder.toLE.{max u3 u2} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C i)) (PartialOrder.toPreorder.{max u3 u2} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C i)) (CategoryTheory.instPartialOrderSubobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C i)))) (CategoryTheory.Subobject.orderTop.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C i)))))
Case conversion may be inaccurate. Consider using '#align homological_complex.cycles_eq_top HomologicalComplex.cycles_eq_topₓ'. -/
@@ -133,7 +133,7 @@ def boundariesIsoImage [HasEqualizers V] {i j : ι} (r : c.Rel i j) :
/- warning: homological_complex.boundaries_eq_bot -> HomologicalComplex.boundaries_eq_bot is a dubious translation:
lean 3 declaration is
- forall {ι : Type.{u3}} {V : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u1, u2} V] [_inst_2 : CategoryTheory.Limits.HasZeroMorphisms.{u1, u2} V _inst_1] {c : ComplexShape.{u3} ι} (C : HomologicalComplex.{u1, u2, u3} ι V _inst_1 _inst_2 c) [_inst_3 : CategoryTheory.Limits.HasImages.{u1, u2} V _inst_1] [_inst_4 : CategoryTheory.Limits.HasZeroObject.{u1, u2} V _inst_1] {j : ι}, (Not (ComplexShape.Rel.{u3} ι c (ComplexShape.prev.{u3} ι c j) j)) -> (Eq.{succ (max u2 u1)} (CategoryTheory.Subobject.{u1, u2} V _inst_1 (HomologicalComplex.x.{u1, u2, u3} ι V _inst_1 _inst_2 c C j)) (HomologicalComplex.boundaries.{u1, u2, u3} ι V _inst_1 _inst_2 c _inst_3 C j) (Bot.bot.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 (HomologicalComplex.x.{u1, u2, u3} ι V _inst_1 _inst_2 c C j)) (OrderBot.toHasBot.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 (HomologicalComplex.x.{u1, u2, u3} ι V _inst_1 _inst_2 c C j)) (Preorder.toLE.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 (HomologicalComplex.x.{u1, u2, u3} ι V _inst_1 _inst_2 c C j)) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 (HomologicalComplex.x.{u1, u2, u3} ι V _inst_1 _inst_2 c C j)) (CategoryTheory.Subobject.partialOrder.{u2, u1} V _inst_1 (HomologicalComplex.x.{u1, u2, u3} ι V _inst_1 _inst_2 c C j)))) (CategoryTheory.Subobject.orderBot.{u1, u2} V _inst_1 (CategoryTheory.Limits.HasZeroObject.hasInitial.{u1, u2} V _inst_1 _inst_4) (CategoryTheory.Limits.HasZeroObject.initialMonoClass.{u1, u2} V _inst_1 _inst_4) (HomologicalComplex.x.{u1, u2, u3} ι V _inst_1 _inst_2 c C j)))))
+ forall {ι : Type.{u3}} {V : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u1, u2} V] [_inst_2 : CategoryTheory.Limits.HasZeroMorphisms.{u1, u2} V _inst_1] {c : ComplexShape.{u3} ι} (C : HomologicalComplex.{u1, u2, u3} ι V _inst_1 _inst_2 c) [_inst_3 : CategoryTheory.Limits.HasImages.{u1, u2} V _inst_1] [_inst_4 : CategoryTheory.Limits.HasZeroObject.{u1, u2} V _inst_1] {j : ι}, (Not (ComplexShape.Rel.{u3} ι c (ComplexShape.prev.{u3} ι c j) j)) -> (Eq.{succ (max u2 u1)} (CategoryTheory.Subobject.{u1, u2} V _inst_1 (HomologicalComplex.x.{u1, u2, u3} ι V _inst_1 _inst_2 c C j)) (HomologicalComplex.boundaries.{u1, u2, u3} ι V _inst_1 _inst_2 c _inst_3 C j) (Bot.bot.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 (HomologicalComplex.x.{u1, u2, u3} ι V _inst_1 _inst_2 c C j)) (OrderBot.toHasBot.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 (HomologicalComplex.x.{u1, u2, u3} ι V _inst_1 _inst_2 c C j)) (Preorder.toHasLe.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 (HomologicalComplex.x.{u1, u2, u3} ι V _inst_1 _inst_2 c C j)) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 (HomologicalComplex.x.{u1, u2, u3} ι V _inst_1 _inst_2 c C j)) (CategoryTheory.Subobject.partialOrder.{u2, u1} V _inst_1 (HomologicalComplex.x.{u1, u2, u3} ι V _inst_1 _inst_2 c C j)))) (CategoryTheory.Subobject.orderBot.{u1, u2} V _inst_1 (CategoryTheory.Limits.HasZeroObject.hasInitial.{u1, u2} V _inst_1 _inst_4) (CategoryTheory.Limits.HasZeroObject.initialMonoClass.{u1, u2} V _inst_1 _inst_4) (HomologicalComplex.x.{u1, u2, u3} ι V _inst_1 _inst_2 c C j)))))
but is expected to have type
forall {ι : Type.{u1}} {V : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u2, u3} V] [_inst_2 : CategoryTheory.Limits.HasZeroMorphisms.{u2, u3} V _inst_1] {c : ComplexShape.{u1} ι} (C : HomologicalComplex.{u2, u3, u1} ι V _inst_1 _inst_2 c) [_inst_3 : CategoryTheory.Limits.HasImages.{u2, u3} V _inst_1] [_inst_4 : CategoryTheory.Limits.HasZeroObject.{u2, u3} V _inst_1] {j : ι}, (Not (ComplexShape.Rel.{u1} ι c (ComplexShape.prev.{u1} ι c j) j)) -> (Eq.{max (succ u3) (succ u2)} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C j)) (HomologicalComplex.boundaries.{u2, u3, u1} ι V _inst_1 _inst_2 c _inst_3 C j) (Bot.bot.{max u3 u2} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C j)) (OrderBot.toBot.{max u3 u2} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C j)) (Preorder.toLE.{max u3 u2} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C j)) (PartialOrder.toPreorder.{max u3 u2} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C j)) (CategoryTheory.instPartialOrderSubobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C j)))) (CategoryTheory.Subobject.orderBot.{u2, u3} V _inst_1 (CategoryTheory.Limits.HasZeroObject.hasInitial.{u2, u3} V _inst_1 _inst_4) (CategoryTheory.Limits.HasZeroObject.initialMonoClass.{u2, u3} V _inst_1 _inst_4) (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C j)))))
Case conversion may be inaccurate. Consider using '#align homological_complex.boundaries_eq_bot HomologicalComplex.boundaries_eq_botₓ'. -/
@@ -152,7 +152,7 @@ variable [HasKernels V] [HasImages V]
/- warning: homological_complex.boundaries_le_cycles -> HomologicalComplex.boundaries_le_cycles is a dubious translation:
lean 3 declaration is
- forall {ι : Type.{u3}} {V : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u1, u2} V] [_inst_2 : CategoryTheory.Limits.HasZeroMorphisms.{u1, u2} V _inst_1] {c : ComplexShape.{u3} ι} [_inst_3 : CategoryTheory.Limits.HasKernels.{u1, u2} V _inst_1 _inst_2] [_inst_4 : CategoryTheory.Limits.HasImages.{u1, u2} V _inst_1] (C : HomologicalComplex.{u1, u2, u3} ι V _inst_1 _inst_2 c) (i : ι), LE.le.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 (HomologicalComplex.x.{u1, u2, u3} ι V _inst_1 _inst_2 c C i)) (Preorder.toLE.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 (HomologicalComplex.x.{u1, u2, u3} ι V _inst_1 _inst_2 c C i)) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 (HomologicalComplex.x.{u1, u2, u3} ι V _inst_1 _inst_2 c C i)) (CategoryTheory.Subobject.partialOrder.{u2, u1} V _inst_1 (HomologicalComplex.x.{u1, u2, u3} ι V _inst_1 _inst_2 c C i)))) (HomologicalComplex.boundaries.{u1, u2, u3} ι V _inst_1 _inst_2 c _inst_4 C i) (HomologicalComplex.cycles.{u1, u2, u3} ι V _inst_1 _inst_2 c C _inst_3 i)
+ forall {ι : Type.{u3}} {V : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u1, u2} V] [_inst_2 : CategoryTheory.Limits.HasZeroMorphisms.{u1, u2} V _inst_1] {c : ComplexShape.{u3} ι} [_inst_3 : CategoryTheory.Limits.HasKernels.{u1, u2} V _inst_1 _inst_2] [_inst_4 : CategoryTheory.Limits.HasImages.{u1, u2} V _inst_1] (C : HomologicalComplex.{u1, u2, u3} ι V _inst_1 _inst_2 c) (i : ι), LE.le.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 (HomologicalComplex.x.{u1, u2, u3} ι V _inst_1 _inst_2 c C i)) (Preorder.toHasLe.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 (HomologicalComplex.x.{u1, u2, u3} ι V _inst_1 _inst_2 c C i)) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 (HomologicalComplex.x.{u1, u2, u3} ι V _inst_1 _inst_2 c C i)) (CategoryTheory.Subobject.partialOrder.{u2, u1} V _inst_1 (HomologicalComplex.x.{u1, u2, u3} ι V _inst_1 _inst_2 c C i)))) (HomologicalComplex.boundaries.{u1, u2, u3} ι V _inst_1 _inst_2 c _inst_4 C i) (HomologicalComplex.cycles.{u1, u2, u3} ι V _inst_1 _inst_2 c C _inst_3 i)
but is expected to have type
forall {ι : Type.{u1}} {V : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u2, u3} V] [_inst_2 : CategoryTheory.Limits.HasZeroMorphisms.{u2, u3} V _inst_1] {c : ComplexShape.{u1} ι} [_inst_3 : CategoryTheory.Limits.HasKernels.{u2, u3} V _inst_1 _inst_2] [_inst_4 : CategoryTheory.Limits.HasImages.{u2, u3} V _inst_1] (C : HomologicalComplex.{u2, u3, u1} ι V _inst_1 _inst_2 c) (i : ι), LE.le.{max u3 u2} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C i)) (Preorder.toLE.{max u3 u2} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C i)) (PartialOrder.toPreorder.{max u3 u2} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C i)) (CategoryTheory.instPartialOrderSubobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C i)))) (HomologicalComplex.boundaries.{u2, u3, u1} ι V _inst_1 _inst_2 c _inst_4 C i) (HomologicalComplex.cycles.{u2, u3, u1} ι V _inst_1 _inst_2 c C _inst_3 i)
Case conversion may be inaccurate. Consider using '#align homological_complex.boundaries_le_cycles HomologicalComplex.boundaries_le_cyclesₓ'. -/
@@ -175,7 +175,7 @@ abbrev boundariesToCycles (C : HomologicalComplex V c) (i : ι) :
/- warning: homological_complex.image_to_kernel_as_boundaries_to_cycles -> HomologicalComplex.imageToKernel_as_boundariesToCycles is a dubious translation:
lean 3 declaration is
- forall {ι : Type.{u3}} {V : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u1, u2} V] [_inst_2 : CategoryTheory.Limits.HasZeroMorphisms.{u1, u2} V _inst_1] {c : ComplexShape.{u3} ι} [_inst_3 : CategoryTheory.Limits.HasKernels.{u1, u2} V _inst_1 _inst_2] [_inst_4 : CategoryTheory.Limits.HasImages.{u1, u2} V _inst_1] (C : HomologicalComplex.{u1, u2, u3} ι V _inst_1 _inst_2 c) (i : ι) (h : LE.le.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 (HomologicalComplex.x.{u1, u2, u3} ι V _inst_1 _inst_2 c C i)) (Preorder.toLE.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 (HomologicalComplex.x.{u1, u2, u3} ι V _inst_1 _inst_2 c C i)) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 (HomologicalComplex.x.{u1, u2, u3} ι V _inst_1 _inst_2 c C i)) (CategoryTheory.Subobject.partialOrder.{u2, u1} V _inst_1 (HomologicalComplex.x.{u1, u2, u3} ι V _inst_1 _inst_2 c C i)))) (HomologicalComplex.boundaries.{u1, u2, u3} ι V _inst_1 _inst_2 c _inst_4 C i) (HomologicalComplex.cycles.{u1, u2, u3} ι V _inst_1 _inst_2 c C _inst_3 i)), Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) ((fun (a : Type.{max u2 u1}) (b : Type.{u2}) [self : HasLiftT.{succ (max u2 u1), succ u2} a b] => self.0) (CategoryTheory.Subobject.{u1, u2} V _inst_1 (HomologicalComplex.x.{u1, u2, u3} ι V _inst_1 _inst_2 c C i)) V (HasLiftT.mk.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 (HomologicalComplex.x.{u1, u2, u3} ι V _inst_1 _inst_2 c C i)) V (CoeTCₓ.coe.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 (HomologicalComplex.x.{u1, u2, u3} ι V _inst_1 _inst_2 c C i)) V (coeBase.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 (HomologicalComplex.x.{u1, u2, u3} ι V _inst_1 _inst_2 c C i)) V (CategoryTheory.Subobject.hasCoe.{u1, u2} V _inst_1 (HomologicalComplex.x.{u1, u2, u3} ι V _inst_1 _inst_2 c C i))))) (HomologicalComplex.boundaries.{u1, u2, u3} ι V _inst_1 _inst_2 c _inst_4 C i)) ((fun (a : Type.{max u2 u1}) (b : Type.{u2}) [self : HasLiftT.{succ (max u2 u1), succ u2} a b] => self.0) (CategoryTheory.Subobject.{u1, u2} V _inst_1 (HomologicalComplex.x.{u1, u2, u3} ι V _inst_1 _inst_2 c C i)) V (HasLiftT.mk.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 (HomologicalComplex.x.{u1, u2, u3} ι V _inst_1 _inst_2 c C i)) V (CoeTCₓ.coe.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 (HomologicalComplex.x.{u1, u2, u3} ι V _inst_1 _inst_2 c C i)) V (coeBase.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 (HomologicalComplex.x.{u1, u2, u3} ι V _inst_1 _inst_2 c C i)) V (CategoryTheory.Subobject.hasCoe.{u1, u2} V _inst_1 (HomologicalComplex.x.{u1, u2, u3} ι V _inst_1 _inst_2 c C i))))) (HomologicalComplex.cycles.{u1, u2, u3} ι V _inst_1 _inst_2 c C _inst_3 i))) (CategoryTheory.Subobject.ofLE.{u1, u2} V _inst_1 (HomologicalComplex.x.{u1, u2, u3} ι V _inst_1 _inst_2 c C i) (HomologicalComplex.boundaries.{u1, u2, u3} ι V _inst_1 _inst_2 c _inst_4 C i) (HomologicalComplex.cycles.{u1, u2, u3} ι V _inst_1 _inst_2 c C _inst_3 i) h) (HomologicalComplex.boundariesToCycles.{u1, u2, u3} ι V _inst_1 _inst_2 c _inst_3 _inst_4 C i)
+ forall {ι : Type.{u3}} {V : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u1, u2} V] [_inst_2 : CategoryTheory.Limits.HasZeroMorphisms.{u1, u2} V _inst_1] {c : ComplexShape.{u3} ι} [_inst_3 : CategoryTheory.Limits.HasKernels.{u1, u2} V _inst_1 _inst_2] [_inst_4 : CategoryTheory.Limits.HasImages.{u1, u2} V _inst_1] (C : HomologicalComplex.{u1, u2, u3} ι V _inst_1 _inst_2 c) (i : ι) (h : LE.le.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 (HomologicalComplex.x.{u1, u2, u3} ι V _inst_1 _inst_2 c C i)) (Preorder.toHasLe.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 (HomologicalComplex.x.{u1, u2, u3} ι V _inst_1 _inst_2 c C i)) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 (HomologicalComplex.x.{u1, u2, u3} ι V _inst_1 _inst_2 c C i)) (CategoryTheory.Subobject.partialOrder.{u2, u1} V _inst_1 (HomologicalComplex.x.{u1, u2, u3} ι V _inst_1 _inst_2 c C i)))) (HomologicalComplex.boundaries.{u1, u2, u3} ι V _inst_1 _inst_2 c _inst_4 C i) (HomologicalComplex.cycles.{u1, u2, u3} ι V _inst_1 _inst_2 c C _inst_3 i)), Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) ((fun (a : Type.{max u2 u1}) (b : Type.{u2}) [self : HasLiftT.{succ (max u2 u1), succ u2} a b] => self.0) (CategoryTheory.Subobject.{u1, u2} V _inst_1 (HomologicalComplex.x.{u1, u2, u3} ι V _inst_1 _inst_2 c C i)) V (HasLiftT.mk.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 (HomologicalComplex.x.{u1, u2, u3} ι V _inst_1 _inst_2 c C i)) V (CoeTCₓ.coe.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 (HomologicalComplex.x.{u1, u2, u3} ι V _inst_1 _inst_2 c C i)) V (coeBase.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 (HomologicalComplex.x.{u1, u2, u3} ι V _inst_1 _inst_2 c C i)) V (CategoryTheory.Subobject.hasCoe.{u1, u2} V _inst_1 (HomologicalComplex.x.{u1, u2, u3} ι V _inst_1 _inst_2 c C i))))) (HomologicalComplex.boundaries.{u1, u2, u3} ι V _inst_1 _inst_2 c _inst_4 C i)) ((fun (a : Type.{max u2 u1}) (b : Type.{u2}) [self : HasLiftT.{succ (max u2 u1), succ u2} a b] => self.0) (CategoryTheory.Subobject.{u1, u2} V _inst_1 (HomologicalComplex.x.{u1, u2, u3} ι V _inst_1 _inst_2 c C i)) V (HasLiftT.mk.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 (HomologicalComplex.x.{u1, u2, u3} ι V _inst_1 _inst_2 c C i)) V (CoeTCₓ.coe.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 (HomologicalComplex.x.{u1, u2, u3} ι V _inst_1 _inst_2 c C i)) V (coeBase.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 (HomologicalComplex.x.{u1, u2, u3} ι V _inst_1 _inst_2 c C i)) V (CategoryTheory.Subobject.hasCoe.{u1, u2} V _inst_1 (HomologicalComplex.x.{u1, u2, u3} ι V _inst_1 _inst_2 c C i))))) (HomologicalComplex.cycles.{u1, u2, u3} ι V _inst_1 _inst_2 c C _inst_3 i))) (CategoryTheory.Subobject.ofLE.{u1, u2} V _inst_1 (HomologicalComplex.x.{u1, u2, u3} ι V _inst_1 _inst_2 c C i) (HomologicalComplex.boundaries.{u1, u2, u3} ι V _inst_1 _inst_2 c _inst_4 C i) (HomologicalComplex.cycles.{u1, u2, u3} ι V _inst_1 _inst_2 c C _inst_3 i) h) (HomologicalComplex.boundariesToCycles.{u1, u2, u3} ι V _inst_1 _inst_2 c _inst_3 _inst_4 C i)
but is expected to have type
forall {ι : Type.{u1}} {V : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u2, u3} V] [_inst_2 : CategoryTheory.Limits.HasZeroMorphisms.{u2, u3} V _inst_1] {c : ComplexShape.{u1} ι} [_inst_3 : CategoryTheory.Limits.HasKernels.{u2, u3} V _inst_1 _inst_2] [_inst_4 : CategoryTheory.Limits.HasImages.{u2, u3} V _inst_1] (C : HomologicalComplex.{u2, u3, u1} ι V _inst_1 _inst_2 c) (i : ι) (h : LE.le.{max u3 u2} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C i)) (Preorder.toLE.{max u3 u2} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C i)) (PartialOrder.toPreorder.{max u3 u2} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C i)) (CategoryTheory.instPartialOrderSubobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C i)))) (HomologicalComplex.boundaries.{u2, u3, u1} ι V _inst_1 _inst_2 c _inst_4 C i) (HomologicalComplex.cycles.{u2, u3, u1} ι V _inst_1 _inst_2 c C _inst_3 i)), Eq.{succ u2} (Quiver.Hom.{succ u2, u3} V (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} V (CategoryTheory.Category.toCategoryStruct.{u2, u3} V _inst_1)) (Prefunctor.obj.{max (succ u3) (succ u2), succ u2, max u3 u2, u3} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C i)) (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, max u3 u2} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C i)) (CategoryTheory.Category.toCategoryStruct.{max u3 u2, max u3 u2} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C i)) (Preorder.smallCategory.{max u3 u2} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C i)) (PartialOrder.toPreorder.{max u3 u2} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C i)) (CategoryTheory.instPartialOrderSubobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C i)))))) V (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} V (CategoryTheory.Category.toCategoryStruct.{u2, u3} V _inst_1)) (CategoryTheory.Functor.toPrefunctor.{max u3 u2, u2, max u3 u2, u3} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C i)) (Preorder.smallCategory.{max u3 u2} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C i)) (PartialOrder.toPreorder.{max u3 u2} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C i)) (CategoryTheory.instPartialOrderSubobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C i)))) V _inst_1 (CategoryTheory.Subobject.underlying.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C i))) (HomologicalComplex.boundaries.{u2, u3, u1} ι V _inst_1 _inst_2 c _inst_4 C i)) (Prefunctor.obj.{max (succ u3) (succ u2), succ u2, max u3 u2, u3} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C i)) (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, max u3 u2} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C i)) (CategoryTheory.Category.toCategoryStruct.{max u3 u2, max u3 u2} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C i)) (Preorder.smallCategory.{max u3 u2} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C i)) (PartialOrder.toPreorder.{max u3 u2} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C i)) (CategoryTheory.instPartialOrderSubobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C i)))))) V (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} V (CategoryTheory.Category.toCategoryStruct.{u2, u3} V _inst_1)) (CategoryTheory.Functor.toPrefunctor.{max u3 u2, u2, max u3 u2, u3} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C i)) (Preorder.smallCategory.{max u3 u2} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C i)) (PartialOrder.toPreorder.{max u3 u2} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C i)) (CategoryTheory.instPartialOrderSubobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C i)))) V _inst_1 (CategoryTheory.Subobject.underlying.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C i))) (HomologicalComplex.cycles.{u2, u3, u1} ι V _inst_1 _inst_2 c C _inst_3 i))) (CategoryTheory.Subobject.ofLE.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C i) (HomologicalComplex.boundaries.{u2, u3, u1} ι V _inst_1 _inst_2 c _inst_4 C i) (HomologicalComplex.cycles.{u2, u3, u1} ι V _inst_1 _inst_2 c C _inst_3 i) h) (HomologicalComplex.boundariesToCycles.{u2, u3, u1} ι V _inst_1 _inst_2 c _inst_3 _inst_4 C i)
Case conversion may be inaccurate. Consider using '#align homological_complex.image_to_kernel_as_boundaries_to_cycles HomologicalComplex.imageToKernel_as_boundariesToCyclesₓ'. -/
mathlib commit https://github.com/leanprover-community/mathlib/commit/730c6d4cab72b9d84fcfb9e95e8796e9cd8f40ba
@@ -4,7 +4,7 @@ Released under Apache 2.0 license as described in the file LICENSE.
Authors: Scott Morrison
! This file was ported from Lean 3 source module algebra.homology.homology
-! leanprover-community/mathlib commit 618ea3d5c99240cd7000d8376924906a148bf9ff
+! leanprover-community/mathlib commit 8eb9c42d4d34c77f6ee84ea766ae4070233a973c
! Please do not edit these lines, except to modify the commit id
! if you have ported upstream changes.
-/
@@ -15,6 +15,9 @@ import Mathbin.CategoryTheory.GradedObject
/-!
# The homology of a complex
+> THIS FILE IS SYNCHRONIZED WITH MATHLIB4.
+> Any changes to this file require a corresponding PR to mathlib4.
+
Given `C : homological_complex V c`, we have `C.cycles i` and `C.boundaries i`,
both defined as subobjects of `C.X i`.
mathlib commit https://github.com/leanprover-community/mathlib/commit/cd8fafa2fac98e1a67097e8a91ad9901cfde48af
@@ -46,16 +46,30 @@ section Cycles
variable [HasKernels V]
+#print HomologicalComplex.cycles /-
/-- The cycles at index `i`, as a subobject. -/
abbrev cycles (i : ι) : Subobject (C.pt i) :=
kernelSubobject (C.dFrom i)
#align homological_complex.cycles HomologicalComplex.cycles
+-/
+/- warning: homological_complex.cycles_eq_kernel_subobject -> HomologicalComplex.cycles_eq_kernelSubobject is a dubious translation:
+lean 3 declaration is
+ forall {ι : Type.{u3}} {V : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u1, u2} V] [_inst_2 : CategoryTheory.Limits.HasZeroMorphisms.{u1, u2} V _inst_1] {c : ComplexShape.{u3} ι} (C : HomologicalComplex.{u1, u2, u3} ι V _inst_1 _inst_2 c) [_inst_3 : CategoryTheory.Limits.HasKernels.{u1, u2} V _inst_1 _inst_2] {i : ι} {j : ι}, (ComplexShape.Rel.{u3} ι c i j) -> (Eq.{succ (max u2 u1)} (CategoryTheory.Subobject.{u1, u2} V _inst_1 (HomologicalComplex.x.{u1, u2, u3} ι V _inst_1 _inst_2 c C i)) (HomologicalComplex.cycles.{u1, u2, u3} ι V _inst_1 _inst_2 c C _inst_3 i) (CategoryTheory.Limits.kernelSubobject.{u1, u2} V _inst_1 (HomologicalComplex.x.{u1, u2, u3} ι V _inst_1 _inst_2 c C i) (HomologicalComplex.x.{u1, u2, u3} ι V _inst_1 _inst_2 c C j) _inst_2 (HomologicalComplex.d.{u1, u2, u3} ι V _inst_1 _inst_2 c C i j) (CategoryTheory.Limits.HasKernels.has_limit.{u1, u2} V _inst_1 _inst_2 _inst_3 (HomologicalComplex.x.{u1, u2, u3} ι V _inst_1 _inst_2 c C i) (HomologicalComplex.x.{u1, u2, u3} ι V _inst_1 _inst_2 c C j) (HomologicalComplex.d.{u1, u2, u3} ι V _inst_1 _inst_2 c C i j))))
+but is expected to have type
+ forall {ι : Type.{u1}} {V : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u2, u3} V] [_inst_2 : CategoryTheory.Limits.HasZeroMorphisms.{u2, u3} V _inst_1] {c : ComplexShape.{u1} ι} (C : HomologicalComplex.{u2, u3, u1} ι V _inst_1 _inst_2 c) [_inst_3 : CategoryTheory.Limits.HasKernels.{u2, u3} V _inst_1 _inst_2] {i : ι} {j : ι}, (ComplexShape.Rel.{u1} ι c i j) -> (Eq.{max (succ u3) (succ u2)} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C i)) (HomologicalComplex.cycles.{u2, u3, u1} ι V _inst_1 _inst_2 c C _inst_3 i) (CategoryTheory.Limits.kernelSubobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C i) (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C j) _inst_2 (HomologicalComplex.d.{u2, u3, u1} ι V _inst_1 _inst_2 c C i j) (CategoryTheory.Limits.HasKernels.has_limit.{u2, u3} V _inst_1 _inst_2 _inst_3 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C i) (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C j) (HomologicalComplex.d.{u2, u3, u1} ι V _inst_1 _inst_2 c C i j))))
+Case conversion may be inaccurate. Consider using '#align homological_complex.cycles_eq_kernel_subobject HomologicalComplex.cycles_eq_kernelSubobjectₓ'. -/
theorem cycles_eq_kernelSubobject {i j : ι} (r : c.Rel i j) :
C.cycles i = kernelSubobject (C.d i j) :=
C.kernel_from_eq_kernel r
#align homological_complex.cycles_eq_kernel_subobject HomologicalComplex.cycles_eq_kernelSubobject
+/- warning: homological_complex.cycles_iso_kernel -> HomologicalComplex.cyclesIsoKernel is a dubious translation:
+lean 3 declaration is
+ forall {ι : Type.{u3}} {V : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u1, u2} V] [_inst_2 : CategoryTheory.Limits.HasZeroMorphisms.{u1, u2} V _inst_1] {c : ComplexShape.{u3} ι} (C : HomologicalComplex.{u1, u2, u3} ι V _inst_1 _inst_2 c) [_inst_3 : CategoryTheory.Limits.HasKernels.{u1, u2} V _inst_1 _inst_2] {i : ι} {j : ι}, (ComplexShape.Rel.{u3} ι c i j) -> (CategoryTheory.Iso.{u1, u2} V _inst_1 ((fun (a : Type.{max u2 u1}) (b : Type.{u2}) [self : HasLiftT.{succ (max u2 u1), succ u2} a b] => self.0) (CategoryTheory.Subobject.{u1, u2} V _inst_1 (HomologicalComplex.x.{u1, u2, u3} ι V _inst_1 _inst_2 c C i)) V (HasLiftT.mk.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 (HomologicalComplex.x.{u1, u2, u3} ι V _inst_1 _inst_2 c C i)) V (CoeTCₓ.coe.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 (HomologicalComplex.x.{u1, u2, u3} ι V _inst_1 _inst_2 c C i)) V (coeBase.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 (HomologicalComplex.x.{u1, u2, u3} ι V _inst_1 _inst_2 c C i)) V (CategoryTheory.Subobject.hasCoe.{u1, u2} V _inst_1 (HomologicalComplex.x.{u1, u2, u3} ι V _inst_1 _inst_2 c C i))))) (HomologicalComplex.cycles.{u1, u2, u3} ι V _inst_1 _inst_2 c C _inst_3 i)) (CategoryTheory.Limits.kernel.{u1, u2} V _inst_1 _inst_2 (HomologicalComplex.x.{u1, u2, u3} ι V _inst_1 _inst_2 c C i) (HomologicalComplex.x.{u1, u2, u3} ι V _inst_1 _inst_2 c C j) (HomologicalComplex.d.{u1, u2, u3} ι V _inst_1 _inst_2 c C i j) (HomologicalComplex.cyclesIsoKernel._proof_1.{u2, u3, u1} ι V _inst_1 _inst_2 c C _inst_3 i j)))
+but is expected to have type
+ forall {ι : Type.{u3}} {V : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u1, u2} V] [_inst_2 : CategoryTheory.Limits.HasZeroMorphisms.{u1, u2} V _inst_1] {c : ComplexShape.{u3} ι} (C : HomologicalComplex.{u1, u2, u3} ι V _inst_1 _inst_2 c) [_inst_3 : CategoryTheory.Limits.HasKernels.{u1, u2} V _inst_1 _inst_2] {i : ι} {j : ι}, (ComplexShape.Rel.{u3} ι c i j) -> (CategoryTheory.Iso.{u1, u2} V _inst_1 (Prefunctor.obj.{max (succ u2) (succ u1), succ u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 (HomologicalComplex.X.{u1, u2, u3} ι V _inst_1 _inst_2 c C i)) (CategoryTheory.CategoryStruct.toQuiver.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 (HomologicalComplex.X.{u1, u2, u3} ι V _inst_1 _inst_2 c C i)) (CategoryTheory.Category.toCategoryStruct.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 (HomologicalComplex.X.{u1, u2, u3} ι V _inst_1 _inst_2 c C i)) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 (HomologicalComplex.X.{u1, u2, u3} ι V _inst_1 _inst_2 c C i)) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 (HomologicalComplex.X.{u1, u2, u3} ι V _inst_1 _inst_2 c C i)) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 (HomologicalComplex.X.{u1, u2, u3} ι V _inst_1 _inst_2 c C i)))))) V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) (CategoryTheory.Functor.toPrefunctor.{max u2 u1, u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 (HomologicalComplex.X.{u1, u2, u3} ι V _inst_1 _inst_2 c C i)) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 (HomologicalComplex.X.{u1, u2, u3} ι V _inst_1 _inst_2 c C i)) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 (HomologicalComplex.X.{u1, u2, u3} ι V _inst_1 _inst_2 c C i)) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 (HomologicalComplex.X.{u1, u2, u3} ι V _inst_1 _inst_2 c C i)))) V _inst_1 (CategoryTheory.Subobject.underlying.{u1, u2} V _inst_1 (HomologicalComplex.X.{u1, u2, u3} ι V _inst_1 _inst_2 c C i))) (HomologicalComplex.cycles.{u1, u2, u3} ι V _inst_1 _inst_2 c C _inst_3 i)) (CategoryTheory.Limits.kernel.{u1, u2} V _inst_1 _inst_2 (HomologicalComplex.X.{u1, u2, u3} ι V _inst_1 _inst_2 c C i) (HomologicalComplex.X.{u1, u2, u3} ι V _inst_1 _inst_2 c C j) (HomologicalComplex.d.{u1, u2, u3} ι V _inst_1 _inst_2 c C i j) (CategoryTheory.Limits.HasKernels.has_limit.{u1, u2} V _inst_1 _inst_2 _inst_3 (HomologicalComplex.X.{u1, u2, u3} ι V _inst_1 _inst_2 c C i) (HomologicalComplex.X.{u1, u2, u3} ι V _inst_1 _inst_2 c C j) (HomologicalComplex.d.{u1, u2, u3} ι V _inst_1 _inst_2 c C i j))))
+Case conversion may be inaccurate. Consider using '#align homological_complex.cycles_iso_kernel HomologicalComplex.cyclesIsoKernelₓ'. -/
/-- The underlying object of `C.cycles i` is isomorphic to `kernel (C.d i j)`,
for any `j` such that `rel i j`.
-/
@@ -63,6 +77,12 @@ def cyclesIsoKernel {i j : ι} (r : c.Rel i j) : (C.cycles i : V) ≅ kernel (C.
Subobject.isoOfEq _ _ (C.cycles_eq_kernelSubobject r) ≪≫ kernelSubobjectIso (C.d i j)
#align homological_complex.cycles_iso_kernel HomologicalComplex.cyclesIsoKernel
+/- warning: homological_complex.cycles_eq_top -> HomologicalComplex.cycles_eq_top is a dubious translation:
+lean 3 declaration is
+ forall {ι : Type.{u3}} {V : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u1, u2} V] [_inst_2 : CategoryTheory.Limits.HasZeroMorphisms.{u1, u2} V _inst_1] {c : ComplexShape.{u3} ι} (C : HomologicalComplex.{u1, u2, u3} ι V _inst_1 _inst_2 c) [_inst_3 : CategoryTheory.Limits.HasKernels.{u1, u2} V _inst_1 _inst_2] {i : ι}, (Not (ComplexShape.Rel.{u3} ι c i (ComplexShape.next.{u3} ι c i))) -> (Eq.{succ (max u2 u1)} (CategoryTheory.Subobject.{u1, u2} V _inst_1 (HomologicalComplex.x.{u1, u2, u3} ι V _inst_1 _inst_2 c C i)) (HomologicalComplex.cycles.{u1, u2, u3} ι V _inst_1 _inst_2 c C _inst_3 i) (Top.top.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 (HomologicalComplex.x.{u1, u2, u3} ι V _inst_1 _inst_2 c C i)) (OrderTop.toHasTop.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 (HomologicalComplex.x.{u1, u2, u3} ι V _inst_1 _inst_2 c C i)) (Preorder.toLE.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 (HomologicalComplex.x.{u1, u2, u3} ι V _inst_1 _inst_2 c C i)) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 (HomologicalComplex.x.{u1, u2, u3} ι V _inst_1 _inst_2 c C i)) (CategoryTheory.Subobject.partialOrder.{u2, u1} V _inst_1 (HomologicalComplex.x.{u1, u2, u3} ι V _inst_1 _inst_2 c C i)))) (CategoryTheory.Subobject.orderTop.{u1, u2} V _inst_1 (HomologicalComplex.x.{u1, u2, u3} ι V _inst_1 _inst_2 c C i)))))
+but is expected to have type
+ forall {ι : Type.{u1}} {V : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u2, u3} V] [_inst_2 : CategoryTheory.Limits.HasZeroMorphisms.{u2, u3} V _inst_1] {c : ComplexShape.{u1} ι} (C : HomologicalComplex.{u2, u3, u1} ι V _inst_1 _inst_2 c) [_inst_3 : CategoryTheory.Limits.HasKernels.{u2, u3} V _inst_1 _inst_2] {i : ι}, (Not (ComplexShape.Rel.{u1} ι c i (ComplexShape.next.{u1} ι c i))) -> (Eq.{max (succ u3) (succ u2)} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C i)) (HomologicalComplex.cycles.{u2, u3, u1} ι V _inst_1 _inst_2 c C _inst_3 i) (Top.top.{max u3 u2} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C i)) (OrderTop.toTop.{max u3 u2} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C i)) (Preorder.toLE.{max u3 u2} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C i)) (PartialOrder.toPreorder.{max u3 u2} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C i)) (CategoryTheory.instPartialOrderSubobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C i)))) (CategoryTheory.Subobject.orderTop.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C i)))))
+Case conversion may be inaccurate. Consider using '#align homological_complex.cycles_eq_top HomologicalComplex.cycles_eq_topₓ'. -/
theorem cycles_eq_top {i} (h : ¬c.Rel i (c.next i)) : C.cycles i = ⊤ :=
by
rw [eq_top_iff]
@@ -76,16 +96,30 @@ section Boundaries
variable [HasImages V]
+#print HomologicalComplex.boundaries /-
/-- The boundaries at index `i`, as a subobject. -/
abbrev boundaries (C : HomologicalComplex V c) (j : ι) : Subobject (C.pt j) :=
imageSubobject (C.dTo j)
#align homological_complex.boundaries HomologicalComplex.boundaries
+-/
+/- warning: homological_complex.boundaries_eq_image_subobject -> HomologicalComplex.boundaries_eq_imageSubobject is a dubious translation:
+lean 3 declaration is
+ forall {ι : Type.{u3}} {V : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u1, u2} V] [_inst_2 : CategoryTheory.Limits.HasZeroMorphisms.{u1, u2} V _inst_1] {c : ComplexShape.{u3} ι} (C : HomologicalComplex.{u1, u2, u3} ι V _inst_1 _inst_2 c) [_inst_3 : CategoryTheory.Limits.HasImages.{u1, u2} V _inst_1] [_inst_4 : CategoryTheory.Limits.HasEqualizers.{u1, u2} V _inst_1] {i : ι} {j : ι}, (ComplexShape.Rel.{u3} ι c i j) -> (Eq.{succ (max u2 u1)} (CategoryTheory.Subobject.{u1, u2} V _inst_1 (HomologicalComplex.x.{u1, u2, u3} ι V _inst_1 _inst_2 c C j)) (HomologicalComplex.boundaries.{u1, u2, u3} ι V _inst_1 _inst_2 c _inst_3 C j) (CategoryTheory.Limits.imageSubobject.{u1, u2} V _inst_1 (HomologicalComplex.x.{u1, u2, u3} ι V _inst_1 _inst_2 c C i) (HomologicalComplex.x.{u1, u2, u3} ι V _inst_1 _inst_2 c C j) (HomologicalComplex.d.{u1, u2, u3} ι V _inst_1 _inst_2 c C i j) (CategoryTheory.Limits.HasImages.hasImage.{u1, u2} V _inst_1 _inst_3 (HomologicalComplex.x.{u1, u2, u3} ι V _inst_1 _inst_2 c C i) (HomologicalComplex.x.{u1, u2, u3} ι V _inst_1 _inst_2 c C j) (HomologicalComplex.d.{u1, u2, u3} ι V _inst_1 _inst_2 c C i j))))
+but is expected to have type
+ forall {ι : Type.{u1}} {V : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u2, u3} V] [_inst_2 : CategoryTheory.Limits.HasZeroMorphisms.{u2, u3} V _inst_1] {c : ComplexShape.{u1} ι} (C : HomologicalComplex.{u2, u3, u1} ι V _inst_1 _inst_2 c) [_inst_3 : CategoryTheory.Limits.HasImages.{u2, u3} V _inst_1] [_inst_4 : CategoryTheory.Limits.HasEqualizers.{u2, u3} V _inst_1] {i : ι} {j : ι}, (ComplexShape.Rel.{u1} ι c i j) -> (Eq.{max (succ u3) (succ u2)} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C j)) (HomologicalComplex.boundaries.{u2, u3, u1} ι V _inst_1 _inst_2 c _inst_3 C j) (CategoryTheory.Limits.imageSubobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C i) (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C j) (HomologicalComplex.d.{u2, u3, u1} ι V _inst_1 _inst_2 c C i j) (CategoryTheory.Limits.HasImages.has_image.{u2, u3} V _inst_1 _inst_3 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C i) (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C j) (HomologicalComplex.d.{u2, u3, u1} ι V _inst_1 _inst_2 c C i j))))
+Case conversion may be inaccurate. Consider using '#align homological_complex.boundaries_eq_image_subobject HomologicalComplex.boundaries_eq_imageSubobjectₓ'. -/
theorem boundaries_eq_imageSubobject [HasEqualizers V] {i j : ι} (r : c.Rel i j) :
C.boundaries j = imageSubobject (C.d i j) :=
C.image_to_eq_image r
#align homological_complex.boundaries_eq_image_subobject HomologicalComplex.boundaries_eq_imageSubobject
+/- warning: homological_complex.boundaries_iso_image -> HomologicalComplex.boundariesIsoImage is a dubious translation:
+lean 3 declaration is
+ forall {ι : Type.{u3}} {V : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u1, u2} V] [_inst_2 : CategoryTheory.Limits.HasZeroMorphisms.{u1, u2} V _inst_1] {c : ComplexShape.{u3} ι} (C : HomologicalComplex.{u1, u2, u3} ι V _inst_1 _inst_2 c) [_inst_3 : CategoryTheory.Limits.HasImages.{u1, u2} V _inst_1] [_inst_4 : CategoryTheory.Limits.HasEqualizers.{u1, u2} V _inst_1] {i : ι} {j : ι}, (ComplexShape.Rel.{u3} ι c i j) -> (CategoryTheory.Iso.{u1, u2} V _inst_1 ((fun (a : Type.{max u2 u1}) (b : Type.{u2}) [self : HasLiftT.{succ (max u2 u1), succ u2} a b] => self.0) (CategoryTheory.Subobject.{u1, u2} V _inst_1 (HomologicalComplex.x.{u1, u2, u3} ι V _inst_1 _inst_2 c C j)) V (HasLiftT.mk.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 (HomologicalComplex.x.{u1, u2, u3} ι V _inst_1 _inst_2 c C j)) V (CoeTCₓ.coe.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 (HomologicalComplex.x.{u1, u2, u3} ι V _inst_1 _inst_2 c C j)) V (coeBase.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 (HomologicalComplex.x.{u1, u2, u3} ι V _inst_1 _inst_2 c C j)) V (CategoryTheory.Subobject.hasCoe.{u1, u2} V _inst_1 (HomologicalComplex.x.{u1, u2, u3} ι V _inst_1 _inst_2 c C j))))) (HomologicalComplex.boundaries.{u1, u2, u3} ι V _inst_1 _inst_2 c _inst_3 C j)) (CategoryTheory.Limits.image.{u1, u2} V _inst_1 (HomologicalComplex.x.{u1, u2, u3} ι V _inst_1 _inst_2 c C i) (HomologicalComplex.x.{u1, u2, u3} ι V _inst_1 _inst_2 c C j) (HomologicalComplex.d.{u1, u2, u3} ι V _inst_1 _inst_2 c C i j) (HomologicalComplex.boundariesIsoImage._proof_1.{u2, u3, u1} ι V _inst_1 _inst_2 c C _inst_3 i j)))
+but is expected to have type
+ forall {ι : Type.{u3}} {V : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u1, u2} V] [_inst_2 : CategoryTheory.Limits.HasZeroMorphisms.{u1, u2} V _inst_1] {c : ComplexShape.{u3} ι} (C : HomologicalComplex.{u1, u2, u3} ι V _inst_1 _inst_2 c) [_inst_3 : CategoryTheory.Limits.HasImages.{u1, u2} V _inst_1] [_inst_4 : CategoryTheory.Limits.HasEqualizers.{u1, u2} V _inst_1] {i : ι} {j : ι}, (ComplexShape.Rel.{u3} ι c i j) -> (CategoryTheory.Iso.{u1, u2} V _inst_1 (Prefunctor.obj.{max (succ u2) (succ u1), succ u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 (HomologicalComplex.X.{u1, u2, u3} ι V _inst_1 _inst_2 c C j)) (CategoryTheory.CategoryStruct.toQuiver.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 (HomologicalComplex.X.{u1, u2, u3} ι V _inst_1 _inst_2 c C j)) (CategoryTheory.Category.toCategoryStruct.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 (HomologicalComplex.X.{u1, u2, u3} ι V _inst_1 _inst_2 c C j)) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 (HomologicalComplex.X.{u1, u2, u3} ι V _inst_1 _inst_2 c C j)) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 (HomologicalComplex.X.{u1, u2, u3} ι V _inst_1 _inst_2 c C j)) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 (HomologicalComplex.X.{u1, u2, u3} ι V _inst_1 _inst_2 c C j)))))) V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) (CategoryTheory.Functor.toPrefunctor.{max u2 u1, u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 (HomologicalComplex.X.{u1, u2, u3} ι V _inst_1 _inst_2 c C j)) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 (HomologicalComplex.X.{u1, u2, u3} ι V _inst_1 _inst_2 c C j)) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 (HomologicalComplex.X.{u1, u2, u3} ι V _inst_1 _inst_2 c C j)) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 (HomologicalComplex.X.{u1, u2, u3} ι V _inst_1 _inst_2 c C j)))) V _inst_1 (CategoryTheory.Subobject.underlying.{u1, u2} V _inst_1 (HomologicalComplex.X.{u1, u2, u3} ι V _inst_1 _inst_2 c C j))) (HomologicalComplex.boundaries.{u1, u2, u3} ι V _inst_1 _inst_2 c _inst_3 C j)) (CategoryTheory.Limits.image.{u1, u2} V _inst_1 (HomologicalComplex.X.{u1, u2, u3} ι V _inst_1 _inst_2 c C i) (HomologicalComplex.X.{u1, u2, u3} ι V _inst_1 _inst_2 c C j) (HomologicalComplex.d.{u1, u2, u3} ι V _inst_1 _inst_2 c C i j) (CategoryTheory.Limits.HasImages.has_image.{u1, u2} V _inst_1 _inst_3 (HomologicalComplex.X.{u1, u2, u3} ι V _inst_1 _inst_2 c C i) (HomologicalComplex.X.{u1, u2, u3} ι V _inst_1 _inst_2 c C j) (HomologicalComplex.d.{u1, u2, u3} ι V _inst_1 _inst_2 c C i j))))
+Case conversion may be inaccurate. Consider using '#align homological_complex.boundaries_iso_image HomologicalComplex.boundariesIsoImageₓ'. -/
/-- The underlying object of `C.boundaries j` is isomorphic to `image (C.d i j)`,
for any `i` such that `rel i j`.
-/
@@ -94,6 +128,12 @@ def boundariesIsoImage [HasEqualizers V] {i j : ι} (r : c.Rel i j) :
Subobject.isoOfEq _ _ (C.boundaries_eq_imageSubobject r) ≪≫ imageSubobjectIso (C.d i j)
#align homological_complex.boundaries_iso_image HomologicalComplex.boundariesIsoImage
+/- warning: homological_complex.boundaries_eq_bot -> HomologicalComplex.boundaries_eq_bot is a dubious translation:
+lean 3 declaration is
+ forall {ι : Type.{u3}} {V : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u1, u2} V] [_inst_2 : CategoryTheory.Limits.HasZeroMorphisms.{u1, u2} V _inst_1] {c : ComplexShape.{u3} ι} (C : HomologicalComplex.{u1, u2, u3} ι V _inst_1 _inst_2 c) [_inst_3 : CategoryTheory.Limits.HasImages.{u1, u2} V _inst_1] [_inst_4 : CategoryTheory.Limits.HasZeroObject.{u1, u2} V _inst_1] {j : ι}, (Not (ComplexShape.Rel.{u3} ι c (ComplexShape.prev.{u3} ι c j) j)) -> (Eq.{succ (max u2 u1)} (CategoryTheory.Subobject.{u1, u2} V _inst_1 (HomologicalComplex.x.{u1, u2, u3} ι V _inst_1 _inst_2 c C j)) (HomologicalComplex.boundaries.{u1, u2, u3} ι V _inst_1 _inst_2 c _inst_3 C j) (Bot.bot.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 (HomologicalComplex.x.{u1, u2, u3} ι V _inst_1 _inst_2 c C j)) (OrderBot.toHasBot.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 (HomologicalComplex.x.{u1, u2, u3} ι V _inst_1 _inst_2 c C j)) (Preorder.toLE.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 (HomologicalComplex.x.{u1, u2, u3} ι V _inst_1 _inst_2 c C j)) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 (HomologicalComplex.x.{u1, u2, u3} ι V _inst_1 _inst_2 c C j)) (CategoryTheory.Subobject.partialOrder.{u2, u1} V _inst_1 (HomologicalComplex.x.{u1, u2, u3} ι V _inst_1 _inst_2 c C j)))) (CategoryTheory.Subobject.orderBot.{u1, u2} V _inst_1 (CategoryTheory.Limits.HasZeroObject.hasInitial.{u1, u2} V _inst_1 _inst_4) (CategoryTheory.Limits.HasZeroObject.initialMonoClass.{u1, u2} V _inst_1 _inst_4) (HomologicalComplex.x.{u1, u2, u3} ι V _inst_1 _inst_2 c C j)))))
+but is expected to have type
+ forall {ι : Type.{u1}} {V : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u2, u3} V] [_inst_2 : CategoryTheory.Limits.HasZeroMorphisms.{u2, u3} V _inst_1] {c : ComplexShape.{u1} ι} (C : HomologicalComplex.{u2, u3, u1} ι V _inst_1 _inst_2 c) [_inst_3 : CategoryTheory.Limits.HasImages.{u2, u3} V _inst_1] [_inst_4 : CategoryTheory.Limits.HasZeroObject.{u2, u3} V _inst_1] {j : ι}, (Not (ComplexShape.Rel.{u1} ι c (ComplexShape.prev.{u1} ι c j) j)) -> (Eq.{max (succ u3) (succ u2)} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C j)) (HomologicalComplex.boundaries.{u2, u3, u1} ι V _inst_1 _inst_2 c _inst_3 C j) (Bot.bot.{max u3 u2} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C j)) (OrderBot.toBot.{max u3 u2} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C j)) (Preorder.toLE.{max u3 u2} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C j)) (PartialOrder.toPreorder.{max u3 u2} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C j)) (CategoryTheory.instPartialOrderSubobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C j)))) (CategoryTheory.Subobject.orderBot.{u2, u3} V _inst_1 (CategoryTheory.Limits.HasZeroObject.hasInitial.{u2, u3} V _inst_1 _inst_4) (CategoryTheory.Limits.HasZeroObject.initialMonoClass.{u2, u3} V _inst_1 _inst_4) (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C j)))))
+Case conversion may be inaccurate. Consider using '#align homological_complex.boundaries_eq_bot HomologicalComplex.boundaries_eq_botₓ'. -/
theorem boundaries_eq_bot [HasZeroObject V] {j} (h : ¬c.Rel (c.prev j) j) : C.boundaries j = ⊥ :=
by
rw [eq_bot_iff]
@@ -107,10 +147,22 @@ section
variable [HasKernels V] [HasImages V]
+/- warning: homological_complex.boundaries_le_cycles -> HomologicalComplex.boundaries_le_cycles is a dubious translation:
+lean 3 declaration is
+ forall {ι : Type.{u3}} {V : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u1, u2} V] [_inst_2 : CategoryTheory.Limits.HasZeroMorphisms.{u1, u2} V _inst_1] {c : ComplexShape.{u3} ι} [_inst_3 : CategoryTheory.Limits.HasKernels.{u1, u2} V _inst_1 _inst_2] [_inst_4 : CategoryTheory.Limits.HasImages.{u1, u2} V _inst_1] (C : HomologicalComplex.{u1, u2, u3} ι V _inst_1 _inst_2 c) (i : ι), LE.le.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 (HomologicalComplex.x.{u1, u2, u3} ι V _inst_1 _inst_2 c C i)) (Preorder.toLE.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 (HomologicalComplex.x.{u1, u2, u3} ι V _inst_1 _inst_2 c C i)) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 (HomologicalComplex.x.{u1, u2, u3} ι V _inst_1 _inst_2 c C i)) (CategoryTheory.Subobject.partialOrder.{u2, u1} V _inst_1 (HomologicalComplex.x.{u1, u2, u3} ι V _inst_1 _inst_2 c C i)))) (HomologicalComplex.boundaries.{u1, u2, u3} ι V _inst_1 _inst_2 c _inst_4 C i) (HomologicalComplex.cycles.{u1, u2, u3} ι V _inst_1 _inst_2 c C _inst_3 i)
+but is expected to have type
+ forall {ι : Type.{u1}} {V : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u2, u3} V] [_inst_2 : CategoryTheory.Limits.HasZeroMorphisms.{u2, u3} V _inst_1] {c : ComplexShape.{u1} ι} [_inst_3 : CategoryTheory.Limits.HasKernels.{u2, u3} V _inst_1 _inst_2] [_inst_4 : CategoryTheory.Limits.HasImages.{u2, u3} V _inst_1] (C : HomologicalComplex.{u2, u3, u1} ι V _inst_1 _inst_2 c) (i : ι), LE.le.{max u3 u2} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C i)) (Preorder.toLE.{max u3 u2} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C i)) (PartialOrder.toPreorder.{max u3 u2} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C i)) (CategoryTheory.instPartialOrderSubobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C i)))) (HomologicalComplex.boundaries.{u2, u3, u1} ι V _inst_1 _inst_2 c _inst_4 C i) (HomologicalComplex.cycles.{u2, u3, u1} ι V _inst_1 _inst_2 c C _inst_3 i)
+Case conversion may be inaccurate. Consider using '#align homological_complex.boundaries_le_cycles HomologicalComplex.boundaries_le_cyclesₓ'. -/
theorem boundaries_le_cycles (C : HomologicalComplex V c) (i : ι) : C.boundaries i ≤ C.cycles i :=
image_le_kernel _ _ (C.dTo_comp_dFrom i)
#align homological_complex.boundaries_le_cycles HomologicalComplex.boundaries_le_cycles
+/- warning: homological_complex.boundaries_to_cycles -> HomologicalComplex.boundariesToCycles is a dubious translation:
+lean 3 declaration is
+ forall {ι : Type.{u3}} {V : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u1, u2} V] [_inst_2 : CategoryTheory.Limits.HasZeroMorphisms.{u1, u2} V _inst_1] {c : ComplexShape.{u3} ι} [_inst_3 : CategoryTheory.Limits.HasKernels.{u1, u2} V _inst_1 _inst_2] [_inst_4 : CategoryTheory.Limits.HasImages.{u1, u2} V _inst_1] (C : HomologicalComplex.{u1, u2, u3} ι V _inst_1 _inst_2 c) (i : ι), Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) ((fun (a : Type.{max u2 u1}) (b : Type.{u2}) [self : HasLiftT.{succ (max u2 u1), succ u2} a b] => self.0) (CategoryTheory.Subobject.{u1, u2} V _inst_1 (HomologicalComplex.x.{u1, u2, u3} ι V _inst_1 _inst_2 c C i)) V (HasLiftT.mk.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 (HomologicalComplex.x.{u1, u2, u3} ι V _inst_1 _inst_2 c C i)) V (CoeTCₓ.coe.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 (HomologicalComplex.x.{u1, u2, u3} ι V _inst_1 _inst_2 c C i)) V (coeBase.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 (HomologicalComplex.x.{u1, u2, u3} ι V _inst_1 _inst_2 c C i)) V (CategoryTheory.Subobject.hasCoe.{u1, u2} V _inst_1 (HomologicalComplex.x.{u1, u2, u3} ι V _inst_1 _inst_2 c C i))))) (HomologicalComplex.boundaries.{u1, u2, u3} ι V _inst_1 _inst_2 c _inst_4 C i)) ((fun (a : Type.{max u2 u1}) (b : Type.{u2}) [self : HasLiftT.{succ (max u2 u1), succ u2} a b] => self.0) (CategoryTheory.Subobject.{u1, u2} V _inst_1 (HomologicalComplex.x.{u1, u2, u3} ι V _inst_1 _inst_2 c C i)) V (HasLiftT.mk.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 (HomologicalComplex.x.{u1, u2, u3} ι V _inst_1 _inst_2 c C i)) V (CoeTCₓ.coe.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 (HomologicalComplex.x.{u1, u2, u3} ι V _inst_1 _inst_2 c C i)) V (coeBase.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 (HomologicalComplex.x.{u1, u2, u3} ι V _inst_1 _inst_2 c C i)) V (CategoryTheory.Subobject.hasCoe.{u1, u2} V _inst_1 (HomologicalComplex.x.{u1, u2, u3} ι V _inst_1 _inst_2 c C i))))) (HomologicalComplex.cycles.{u1, u2, u3} ι V _inst_1 _inst_2 c C _inst_3 i))
+but is expected to have type
+ forall {ι : Type.{u3}} {V : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u1, u2} V] [_inst_2 : CategoryTheory.Limits.HasZeroMorphisms.{u1, u2} V _inst_1] {c : ComplexShape.{u3} ι} [_inst_3 : CategoryTheory.Limits.HasKernels.{u1, u2} V _inst_1 _inst_2] [_inst_4 : CategoryTheory.Limits.HasImages.{u1, u2} V _inst_1] (C : HomologicalComplex.{u1, u2, u3} ι V _inst_1 _inst_2 c) (i : ι), Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) (Prefunctor.obj.{max (succ u2) (succ u1), succ u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 (HomologicalComplex.X.{u1, u2, u3} ι V _inst_1 _inst_2 c C i)) (CategoryTheory.CategoryStruct.toQuiver.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 (HomologicalComplex.X.{u1, u2, u3} ι V _inst_1 _inst_2 c C i)) (CategoryTheory.Category.toCategoryStruct.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 (HomologicalComplex.X.{u1, u2, u3} ι V _inst_1 _inst_2 c C i)) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 (HomologicalComplex.X.{u1, u2, u3} ι V _inst_1 _inst_2 c C i)) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 (HomologicalComplex.X.{u1, u2, u3} ι V _inst_1 _inst_2 c C i)) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 (HomologicalComplex.X.{u1, u2, u3} ι V _inst_1 _inst_2 c C i)))))) V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) (CategoryTheory.Functor.toPrefunctor.{max u2 u1, u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 (HomologicalComplex.X.{u1, u2, u3} ι V _inst_1 _inst_2 c C i)) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 (HomologicalComplex.X.{u1, u2, u3} ι V _inst_1 _inst_2 c C i)) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 (HomologicalComplex.X.{u1, u2, u3} ι V _inst_1 _inst_2 c C i)) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 (HomologicalComplex.X.{u1, u2, u3} ι V _inst_1 _inst_2 c C i)))) V _inst_1 (CategoryTheory.Subobject.underlying.{u1, u2} V _inst_1 (HomologicalComplex.X.{u1, u2, u3} ι V _inst_1 _inst_2 c C i))) (HomologicalComplex.boundaries.{u1, u2, u3} ι V _inst_1 _inst_2 c _inst_4 C i)) (Prefunctor.obj.{max (succ u2) (succ u1), succ u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 (HomologicalComplex.X.{u1, u2, u3} ι V _inst_1 _inst_2 c C i)) (CategoryTheory.CategoryStruct.toQuiver.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 (HomologicalComplex.X.{u1, u2, u3} ι V _inst_1 _inst_2 c C i)) (CategoryTheory.Category.toCategoryStruct.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 (HomologicalComplex.X.{u1, u2, u3} ι V _inst_1 _inst_2 c C i)) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 (HomologicalComplex.X.{u1, u2, u3} ι V _inst_1 _inst_2 c C i)) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 (HomologicalComplex.X.{u1, u2, u3} ι V _inst_1 _inst_2 c C i)) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 (HomologicalComplex.X.{u1, u2, u3} ι V _inst_1 _inst_2 c C i)))))) V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) (CategoryTheory.Functor.toPrefunctor.{max u2 u1, u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 (HomologicalComplex.X.{u1, u2, u3} ι V _inst_1 _inst_2 c C i)) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 (HomologicalComplex.X.{u1, u2, u3} ι V _inst_1 _inst_2 c C i)) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 (HomologicalComplex.X.{u1, u2, u3} ι V _inst_1 _inst_2 c C i)) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 (HomologicalComplex.X.{u1, u2, u3} ι V _inst_1 _inst_2 c C i)))) V _inst_1 (CategoryTheory.Subobject.underlying.{u1, u2} V _inst_1 (HomologicalComplex.X.{u1, u2, u3} ι V _inst_1 _inst_2 c C i))) (HomologicalComplex.cycles.{u1, u2, u3} ι V _inst_1 _inst_2 c C _inst_3 i))
+Case conversion may be inaccurate. Consider using '#align homological_complex.boundaries_to_cycles HomologicalComplex.boundariesToCyclesₓ'. -/
/-- The canonical map from `boundaries i` to `cycles i`.
-/
abbrev boundariesToCycles (C : HomologicalComplex V c) (i : ι) :
@@ -118,21 +170,30 @@ abbrev boundariesToCycles (C : HomologicalComplex V c) (i : ι) :
imageToKernel _ _ (C.dTo_comp_dFrom i)
#align homological_complex.boundaries_to_cycles HomologicalComplex.boundariesToCycles
+/- warning: homological_complex.image_to_kernel_as_boundaries_to_cycles -> HomologicalComplex.imageToKernel_as_boundariesToCycles is a dubious translation:
+lean 3 declaration is
+ forall {ι : Type.{u3}} {V : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u1, u2} V] [_inst_2 : CategoryTheory.Limits.HasZeroMorphisms.{u1, u2} V _inst_1] {c : ComplexShape.{u3} ι} [_inst_3 : CategoryTheory.Limits.HasKernels.{u1, u2} V _inst_1 _inst_2] [_inst_4 : CategoryTheory.Limits.HasImages.{u1, u2} V _inst_1] (C : HomologicalComplex.{u1, u2, u3} ι V _inst_1 _inst_2 c) (i : ι) (h : LE.le.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 (HomologicalComplex.x.{u1, u2, u3} ι V _inst_1 _inst_2 c C i)) (Preorder.toLE.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 (HomologicalComplex.x.{u1, u2, u3} ι V _inst_1 _inst_2 c C i)) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 (HomologicalComplex.x.{u1, u2, u3} ι V _inst_1 _inst_2 c C i)) (CategoryTheory.Subobject.partialOrder.{u2, u1} V _inst_1 (HomologicalComplex.x.{u1, u2, u3} ι V _inst_1 _inst_2 c C i)))) (HomologicalComplex.boundaries.{u1, u2, u3} ι V _inst_1 _inst_2 c _inst_4 C i) (HomologicalComplex.cycles.{u1, u2, u3} ι V _inst_1 _inst_2 c C _inst_3 i)), Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) ((fun (a : Type.{max u2 u1}) (b : Type.{u2}) [self : HasLiftT.{succ (max u2 u1), succ u2} a b] => self.0) (CategoryTheory.Subobject.{u1, u2} V _inst_1 (HomologicalComplex.x.{u1, u2, u3} ι V _inst_1 _inst_2 c C i)) V (HasLiftT.mk.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 (HomologicalComplex.x.{u1, u2, u3} ι V _inst_1 _inst_2 c C i)) V (CoeTCₓ.coe.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 (HomologicalComplex.x.{u1, u2, u3} ι V _inst_1 _inst_2 c C i)) V (coeBase.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 (HomologicalComplex.x.{u1, u2, u3} ι V _inst_1 _inst_2 c C i)) V (CategoryTheory.Subobject.hasCoe.{u1, u2} V _inst_1 (HomologicalComplex.x.{u1, u2, u3} ι V _inst_1 _inst_2 c C i))))) (HomologicalComplex.boundaries.{u1, u2, u3} ι V _inst_1 _inst_2 c _inst_4 C i)) ((fun (a : Type.{max u2 u1}) (b : Type.{u2}) [self : HasLiftT.{succ (max u2 u1), succ u2} a b] => self.0) (CategoryTheory.Subobject.{u1, u2} V _inst_1 (HomologicalComplex.x.{u1, u2, u3} ι V _inst_1 _inst_2 c C i)) V (HasLiftT.mk.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 (HomologicalComplex.x.{u1, u2, u3} ι V _inst_1 _inst_2 c C i)) V (CoeTCₓ.coe.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 (HomologicalComplex.x.{u1, u2, u3} ι V _inst_1 _inst_2 c C i)) V (coeBase.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 (HomologicalComplex.x.{u1, u2, u3} ι V _inst_1 _inst_2 c C i)) V (CategoryTheory.Subobject.hasCoe.{u1, u2} V _inst_1 (HomologicalComplex.x.{u1, u2, u3} ι V _inst_1 _inst_2 c C i))))) (HomologicalComplex.cycles.{u1, u2, u3} ι V _inst_1 _inst_2 c C _inst_3 i))) (CategoryTheory.Subobject.ofLE.{u1, u2} V _inst_1 (HomologicalComplex.x.{u1, u2, u3} ι V _inst_1 _inst_2 c C i) (HomologicalComplex.boundaries.{u1, u2, u3} ι V _inst_1 _inst_2 c _inst_4 C i) (HomologicalComplex.cycles.{u1, u2, u3} ι V _inst_1 _inst_2 c C _inst_3 i) h) (HomologicalComplex.boundariesToCycles.{u1, u2, u3} ι V _inst_1 _inst_2 c _inst_3 _inst_4 C i)
+but is expected to have type
+ forall {ι : Type.{u1}} {V : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u2, u3} V] [_inst_2 : CategoryTheory.Limits.HasZeroMorphisms.{u2, u3} V _inst_1] {c : ComplexShape.{u1} ι} [_inst_3 : CategoryTheory.Limits.HasKernels.{u2, u3} V _inst_1 _inst_2] [_inst_4 : CategoryTheory.Limits.HasImages.{u2, u3} V _inst_1] (C : HomologicalComplex.{u2, u3, u1} ι V _inst_1 _inst_2 c) (i : ι) (h : LE.le.{max u3 u2} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C i)) (Preorder.toLE.{max u3 u2} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C i)) (PartialOrder.toPreorder.{max u3 u2} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C i)) (CategoryTheory.instPartialOrderSubobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C i)))) (HomologicalComplex.boundaries.{u2, u3, u1} ι V _inst_1 _inst_2 c _inst_4 C i) (HomologicalComplex.cycles.{u2, u3, u1} ι V _inst_1 _inst_2 c C _inst_3 i)), Eq.{succ u2} (Quiver.Hom.{succ u2, u3} V (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} V (CategoryTheory.Category.toCategoryStruct.{u2, u3} V _inst_1)) (Prefunctor.obj.{max (succ u3) (succ u2), succ u2, max u3 u2, u3} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C i)) (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, max u3 u2} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C i)) (CategoryTheory.Category.toCategoryStruct.{max u3 u2, max u3 u2} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C i)) (Preorder.smallCategory.{max u3 u2} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C i)) (PartialOrder.toPreorder.{max u3 u2} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C i)) (CategoryTheory.instPartialOrderSubobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C i)))))) V (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} V (CategoryTheory.Category.toCategoryStruct.{u2, u3} V _inst_1)) (CategoryTheory.Functor.toPrefunctor.{max u3 u2, u2, max u3 u2, u3} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C i)) (Preorder.smallCategory.{max u3 u2} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C i)) (PartialOrder.toPreorder.{max u3 u2} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C i)) (CategoryTheory.instPartialOrderSubobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C i)))) V _inst_1 (CategoryTheory.Subobject.underlying.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C i))) (HomologicalComplex.boundaries.{u2, u3, u1} ι V _inst_1 _inst_2 c _inst_4 C i)) (Prefunctor.obj.{max (succ u3) (succ u2), succ u2, max u3 u2, u3} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C i)) (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, max u3 u2} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C i)) (CategoryTheory.Category.toCategoryStruct.{max u3 u2, max u3 u2} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C i)) (Preorder.smallCategory.{max u3 u2} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C i)) (PartialOrder.toPreorder.{max u3 u2} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C i)) (CategoryTheory.instPartialOrderSubobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C i)))))) V (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} V (CategoryTheory.Category.toCategoryStruct.{u2, u3} V _inst_1)) (CategoryTheory.Functor.toPrefunctor.{max u3 u2, u2, max u3 u2, u3} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C i)) (Preorder.smallCategory.{max u3 u2} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C i)) (PartialOrder.toPreorder.{max u3 u2} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C i)) (CategoryTheory.instPartialOrderSubobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C i)))) V _inst_1 (CategoryTheory.Subobject.underlying.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C i))) (HomologicalComplex.cycles.{u2, u3, u1} ι V _inst_1 _inst_2 c C _inst_3 i))) (CategoryTheory.Subobject.ofLE.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C i) (HomologicalComplex.boundaries.{u2, u3, u1} ι V _inst_1 _inst_2 c _inst_4 C i) (HomologicalComplex.cycles.{u2, u3, u1} ι V _inst_1 _inst_2 c C _inst_3 i) h) (HomologicalComplex.boundariesToCycles.{u2, u3, u1} ι V _inst_1 _inst_2 c _inst_3 _inst_4 C i)
+Case conversion may be inaccurate. Consider using '#align homological_complex.image_to_kernel_as_boundaries_to_cycles HomologicalComplex.imageToKernel_as_boundariesToCyclesₓ'. -/
/-- Prefer `boundaries_to_cycles`. -/
@[simp]
-theorem image_to_kernel_as_boundariesToCycles (C : HomologicalComplex V c) (i : ι) (h) :
+theorem imageToKernel_as_boundariesToCycles (C : HomologicalComplex V c) (i : ι) (h) :
(C.boundaries i).of_le (C.cycles i) h = C.boundariesToCycles i :=
rfl
-#align homological_complex.image_to_kernel_as_boundaries_to_cycles HomologicalComplex.image_to_kernel_as_boundariesToCycles
+#align homological_complex.image_to_kernel_as_boundaries_to_cycles HomologicalComplex.imageToKernel_as_boundariesToCycles
variable [HasCokernels V]
+#print HomologicalComplex.homology /-
/-- The homology of a complex at index `i`.
-/
abbrev homology (C : HomologicalComplex V c) (i : ι) : V :=
homology (C.dTo i) (C.dFrom i) (C.dTo_comp_dFrom i)
#align homological_complex.homology HomologicalComplex.homology
+-/
+#print HomologicalComplex.homologyIso /-
/-- The `j`th homology of a homological complex (as kernel of 'the differential from `Cⱼ`' modulo
the image of 'the differential to `Cⱼ`') is isomorphic to the kernel of `d : Cⱼ → Cₖ` modulo
the image of `d : Cᵢ → Cⱼ` when `rel i j` and `rel j k`. -/
@@ -144,11 +205,13 @@ def homologyIso (C : HomologicalComplex V c) {i j k : ι} (hij : c.Rel i j) (hjk
dsimp <;> rw [C.d_from_comp_X_next_iso hjk, category.id_comp])
rfl
#align homological_complex.homology_iso HomologicalComplex.homologyIso
+-/
end
end HomologicalComplex
+#print ChainComplex.homologyZeroIso /-
/-- The 0th homology of a chain complex is isomorphic to the cokernel of `d : C₁ ⟶ C₀`. -/
def ChainComplex.homologyZeroIso [HasKernels V] [HasImages V] [HasCokernels V]
(C : ChainComplex V ℕ) [Epi (factorThruImage (C.d 1 0))] : C.homology 0 ≅ cokernel (C.d 1 0) :=
@@ -163,7 +226,9 @@ def ChainComplex.homologyZeroIso [HasKernels V] [HasImages V] [HasCokernels V]
rfl).trans <|
homologyOfZeroRight _
#align chain_complex.homology_zero_iso ChainComplex.homologyZeroIso
+-/
+#print CochainComplex.homologyZeroIso /-
/-- The 0th cohomology of a cochain complex is isomorphic to the kernel of `d : C₀ → C₁`. -/
def CochainComplex.homologyZeroIso [HasZeroObject V] [HasKernels V] [HasImages V] [HasCokernels V]
(C : CochainComplex V ℕ) : C.homology 0 ≅ kernel (C.d 0 1) :=
@@ -176,7 +241,9 @@ def CochainComplex.homologyZeroIso [HasZeroObject V] [HasKernels V] [HasImages V
by simpa).trans <|
homologyOfZeroLeft _
#align cochain_complex.homology_zero_iso CochainComplex.homologyZeroIso
+-/
+#print ChainComplex.homologySuccIso /-
/-- The `n + 1`th homology of a chain complex (as kernel of 'the differential from `Cₙ₊₁`' modulo
the image of 'the differential to `Cₙ₊₁`') is isomorphic to the kernel of `d : Cₙ₊₁ → Cₙ` modulo
the image of `d : Cₙ₊₂ → Cₙ₊₁`. -/
@@ -185,7 +252,9 @@ def ChainComplex.homologySuccIso [HasKernels V] [HasImages V] [HasCokernels V]
C.homology (n + 1) ≅ homology (C.d (n + 2) (n + 1)) (C.d (n + 1) n) (C.d_comp_d _ _ _) :=
C.homologyIso rfl rfl
#align chain_complex.homology_succ_iso ChainComplex.homologySuccIso
+-/
+#print CochainComplex.homologySuccIso /-
/-- The `n + 1`th cohomology of a cochain complex (as kernel of 'the differential from `Cₙ₊₁`'
modulo the image of 'the differential to `Cₙ₊₁`') is isomorphic to the kernel of `d : Cₙ₊₁ → Cₙ₊₂`
modulo the image of `d : Cₙ → Cₙ₊₁`. -/
@@ -194,6 +263,7 @@ def CochainComplex.homologySuccIso [HasKernels V] [HasImages V] [HasCokernels V]
C.homology (n + 1) ≅ homology (C.d n (n + 1)) (C.d (n + 1) (n + 2)) (C.d_comp_d _ _ _) :=
C.homologyIso rfl rfl
#align cochain_complex.homology_succ_iso CochainComplex.homologySuccIso
+-/
open HomologicalComplex
@@ -206,17 +276,35 @@ variable [HasKernels V]
variable {C₁ C₂ C₃ : HomologicalComplex V c} (f : C₁ ⟶ C₂)
+/- warning: cycles_map -> cyclesMap is a dubious translation:
+lean 3 declaration is
+ forall {ι : Type.{u3}} {V : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u1, u2} V] [_inst_2 : CategoryTheory.Limits.HasZeroMorphisms.{u1, u2} V _inst_1] {c : ComplexShape.{u3} ι} [_inst_3 : CategoryTheory.Limits.HasKernels.{u1, u2} V _inst_1 _inst_2] {C₁ : HomologicalComplex.{u1, u2, u3} ι V _inst_1 _inst_2 c} {C₂ : HomologicalComplex.{u1, u2, u3} ι V _inst_1 _inst_2 c}, (Quiver.Hom.{succ (max u3 u1), max u2 u3 u1} (HomologicalComplex.{u1, u2, u3} ι V _inst_1 _inst_2 c) (CategoryTheory.CategoryStruct.toQuiver.{max u3 u1, max u2 u3 u1} (HomologicalComplex.{u1, u2, u3} ι V _inst_1 _inst_2 c) (CategoryTheory.Category.toCategoryStruct.{max u3 u1, max u2 u3 u1} (HomologicalComplex.{u1, u2, u3} ι V _inst_1 _inst_2 c) (HomologicalComplex.CategoryTheory.category.{u1, u2, u3} ι V _inst_1 _inst_2 c))) C₁ C₂) -> (forall (i : ι), Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) ((fun (a : Type.{max u2 u1}) (b : Type.{u2}) [self : HasLiftT.{succ (max u2 u1), succ u2} a b] => self.0) (CategoryTheory.Subobject.{u1, u2} V _inst_1 (HomologicalComplex.x.{u1, u2, u3} ι V _inst_1 _inst_2 c C₁ i)) V (HasLiftT.mk.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 (HomologicalComplex.x.{u1, u2, u3} ι V _inst_1 _inst_2 c C₁ i)) V (CoeTCₓ.coe.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 (HomologicalComplex.x.{u1, u2, u3} ι V _inst_1 _inst_2 c C₁ i)) V (coeBase.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 (HomologicalComplex.x.{u1, u2, u3} ι V _inst_1 _inst_2 c C₁ i)) V (CategoryTheory.Subobject.hasCoe.{u1, u2} V _inst_1 (HomologicalComplex.x.{u1, u2, u3} ι V _inst_1 _inst_2 c C₁ i))))) (HomologicalComplex.cycles.{u1, u2, u3} ι V _inst_1 _inst_2 c C₁ _inst_3 i)) ((fun (a : Type.{max u2 u1}) (b : Type.{u2}) [self : HasLiftT.{succ (max u2 u1), succ u2} a b] => self.0) (CategoryTheory.Subobject.{u1, u2} V _inst_1 (HomologicalComplex.x.{u1, u2, u3} ι V _inst_1 _inst_2 c C₂ i)) V (HasLiftT.mk.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 (HomologicalComplex.x.{u1, u2, u3} ι V _inst_1 _inst_2 c C₂ i)) V (CoeTCₓ.coe.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 (HomologicalComplex.x.{u1, u2, u3} ι V _inst_1 _inst_2 c C₂ i)) V (coeBase.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 (HomologicalComplex.x.{u1, u2, u3} ι V _inst_1 _inst_2 c C₂ i)) V (CategoryTheory.Subobject.hasCoe.{u1, u2} V _inst_1 (HomologicalComplex.x.{u1, u2, u3} ι V _inst_1 _inst_2 c C₂ i))))) (HomologicalComplex.cycles.{u1, u2, u3} ι V _inst_1 _inst_2 c C₂ _inst_3 i)))
+but is expected to have type
+ forall {ι : Type.{u3}} {V : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u1, u2} V] [_inst_2 : CategoryTheory.Limits.HasZeroMorphisms.{u1, u2} V _inst_1] {c : ComplexShape.{u3} ι} [_inst_3 : CategoryTheory.Limits.HasKernels.{u1, u2} V _inst_1 _inst_2] {C₁ : HomologicalComplex.{u1, u2, u3} ι V _inst_1 _inst_2 c} {C₂ : HomologicalComplex.{u1, u2, u3} ι V _inst_1 _inst_2 c}, (Quiver.Hom.{max (succ u1) (succ u3), max (max u2 u1) u3} (HomologicalComplex.{u1, u2, u3} ι V _inst_1 _inst_2 c) (CategoryTheory.CategoryStruct.toQuiver.{max u1 u3, max (max u2 u1) u3} (HomologicalComplex.{u1, u2, u3} ι V _inst_1 _inst_2 c) (CategoryTheory.Category.toCategoryStruct.{max u1 u3, max (max u2 u1) u3} (HomologicalComplex.{u1, u2, u3} ι V _inst_1 _inst_2 c) (HomologicalComplex.instCategoryHomologicalComplex.{u1, u2, u3} ι V _inst_1 _inst_2 c))) C₁ C₂) -> (forall (i : ι), Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) (Prefunctor.obj.{max (succ u2) (succ u1), succ u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 (HomologicalComplex.X.{u1, u2, u3} ι V _inst_1 _inst_2 c C₁ i)) (CategoryTheory.CategoryStruct.toQuiver.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 (HomologicalComplex.X.{u1, u2, u3} ι V _inst_1 _inst_2 c C₁ i)) (CategoryTheory.Category.toCategoryStruct.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 (HomologicalComplex.X.{u1, u2, u3} ι V _inst_1 _inst_2 c C₁ i)) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 (HomologicalComplex.X.{u1, u2, u3} ι V _inst_1 _inst_2 c C₁ i)) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 (HomologicalComplex.X.{u1, u2, u3} ι V _inst_1 _inst_2 c C₁ i)) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 (HomologicalComplex.X.{u1, u2, u3} ι V _inst_1 _inst_2 c C₁ i)))))) V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) (CategoryTheory.Functor.toPrefunctor.{max u2 u1, u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 (HomologicalComplex.X.{u1, u2, u3} ι V _inst_1 _inst_2 c C₁ i)) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 (HomologicalComplex.X.{u1, u2, u3} ι V _inst_1 _inst_2 c C₁ i)) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 (HomologicalComplex.X.{u1, u2, u3} ι V _inst_1 _inst_2 c C₁ i)) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 (HomologicalComplex.X.{u1, u2, u3} ι V _inst_1 _inst_2 c C₁ i)))) V _inst_1 (CategoryTheory.Subobject.underlying.{u1, u2} V _inst_1 (HomologicalComplex.X.{u1, u2, u3} ι V _inst_1 _inst_2 c C₁ i))) (HomologicalComplex.cycles.{u1, u2, u3} ι V _inst_1 _inst_2 c C₁ _inst_3 i)) (Prefunctor.obj.{max (succ u2) (succ u1), succ u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 (HomologicalComplex.X.{u1, u2, u3} ι V _inst_1 _inst_2 c C₂ i)) (CategoryTheory.CategoryStruct.toQuiver.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 (HomologicalComplex.X.{u1, u2, u3} ι V _inst_1 _inst_2 c C₂ i)) (CategoryTheory.Category.toCategoryStruct.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 (HomologicalComplex.X.{u1, u2, u3} ι V _inst_1 _inst_2 c C₂ i)) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 (HomologicalComplex.X.{u1, u2, u3} ι V _inst_1 _inst_2 c C₂ i)) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 (HomologicalComplex.X.{u1, u2, u3} ι V _inst_1 _inst_2 c C₂ i)) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 (HomologicalComplex.X.{u1, u2, u3} ι V _inst_1 _inst_2 c C₂ i)))))) V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) (CategoryTheory.Functor.toPrefunctor.{max u2 u1, u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 (HomologicalComplex.X.{u1, u2, u3} ι V _inst_1 _inst_2 c C₂ i)) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 (HomologicalComplex.X.{u1, u2, u3} ι V _inst_1 _inst_2 c C₂ i)) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 (HomologicalComplex.X.{u1, u2, u3} ι V _inst_1 _inst_2 c C₂ i)) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 (HomologicalComplex.X.{u1, u2, u3} ι V _inst_1 _inst_2 c C₂ i)))) V _inst_1 (CategoryTheory.Subobject.underlying.{u1, u2} V _inst_1 (HomologicalComplex.X.{u1, u2, u3} ι V _inst_1 _inst_2 c C₂ i))) (HomologicalComplex.cycles.{u1, u2, u3} ι V _inst_1 _inst_2 c C₂ _inst_3 i)))
+Case conversion may be inaccurate. Consider using '#align cycles_map cyclesMapₓ'. -/
/-- The morphism between cycles induced by a chain map.
-/
abbrev cyclesMap (f : C₁ ⟶ C₂) (i : ι) : (C₁.cycles i : V) ⟶ (C₂.cycles i : V) :=
Subobject.factorThru _ ((C₁.cycles i).arrow ≫ f.f i) (kernelSubobject_factors _ _ (by simp))
#align cycles_map cyclesMap
+/- warning: cycles_map_arrow -> cyclesMap_arrow is a dubious translation:
+lean 3 declaration is
+ forall {ι : Type.{u3}} {V : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u1, u2} V] [_inst_2 : CategoryTheory.Limits.HasZeroMorphisms.{u1, u2} V _inst_1] {c : ComplexShape.{u3} ι} [_inst_3 : CategoryTheory.Limits.HasKernels.{u1, u2} V _inst_1 _inst_2] {C₁ : HomologicalComplex.{u1, u2, u3} ι V _inst_1 _inst_2 c} {C₂ : HomologicalComplex.{u1, u2, u3} ι V _inst_1 _inst_2 c} (f : Quiver.Hom.{succ (max u3 u1), max u2 u3 u1} (HomologicalComplex.{u1, u2, u3} ι V _inst_1 _inst_2 c) (CategoryTheory.CategoryStruct.toQuiver.{max u3 u1, max u2 u3 u1} (HomologicalComplex.{u1, u2, u3} ι V _inst_1 _inst_2 c) (CategoryTheory.Category.toCategoryStruct.{max u3 u1, max u2 u3 u1} (HomologicalComplex.{u1, u2, u3} ι V _inst_1 _inst_2 c) (HomologicalComplex.CategoryTheory.category.{u1, u2, u3} ι V _inst_1 _inst_2 c))) C₁ C₂) (i : ι), Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) ((fun (a : Type.{max u2 u1}) (b : Type.{u2}) [self : HasLiftT.{succ (max u2 u1), succ u2} a b] => self.0) (CategoryTheory.Subobject.{u1, u2} V _inst_1 (HomologicalComplex.x.{u1, u2, u3} ι V _inst_1 _inst_2 c C₁ i)) V (HasLiftT.mk.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 (HomologicalComplex.x.{u1, u2, u3} ι V _inst_1 _inst_2 c C₁ i)) V (CoeTCₓ.coe.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 (HomologicalComplex.x.{u1, u2, u3} ι V _inst_1 _inst_2 c C₁ i)) V (coeBase.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 (HomologicalComplex.x.{u1, u2, u3} ι V _inst_1 _inst_2 c C₁ i)) V (CategoryTheory.Subobject.hasCoe.{u1, u2} V _inst_1 (HomologicalComplex.x.{u1, u2, u3} ι V _inst_1 _inst_2 c C₁ i))))) (HomologicalComplex.cycles.{u1, u2, u3} ι V _inst_1 _inst_2 c C₁ _inst_3 i)) (HomologicalComplex.x.{u1, u2, u3} ι V _inst_1 _inst_2 c C₂ i)) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) ((fun (a : Type.{max u2 u1}) (b : Type.{u2}) [self : HasLiftT.{succ (max u2 u1), succ u2} a b] => self.0) (CategoryTheory.Subobject.{u1, u2} V _inst_1 (HomologicalComplex.x.{u1, u2, u3} ι V _inst_1 _inst_2 c C₁ i)) V (HasLiftT.mk.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 (HomologicalComplex.x.{u1, u2, u3} ι V _inst_1 _inst_2 c C₁ i)) V (CoeTCₓ.coe.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 (HomologicalComplex.x.{u1, u2, u3} ι V _inst_1 _inst_2 c C₁ i)) V (coeBase.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 (HomologicalComplex.x.{u1, u2, u3} ι V _inst_1 _inst_2 c C₁ i)) V (CategoryTheory.Subobject.hasCoe.{u1, u2} V _inst_1 (HomologicalComplex.x.{u1, u2, u3} ι V _inst_1 _inst_2 c C₁ i))))) (HomologicalComplex.cycles.{u1, u2, u3} ι V _inst_1 _inst_2 c C₁ _inst_3 i)) ((fun (a : Type.{max u2 u1}) (b : Type.{u2}) [self : HasLiftT.{succ (max u2 u1), succ u2} a b] => self.0) (CategoryTheory.Subobject.{u1, u2} V _inst_1 (HomologicalComplex.x.{u1, u2, u3} ι V _inst_1 _inst_2 c C₂ i)) V (HasLiftT.mk.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 (HomologicalComplex.x.{u1, u2, u3} ι V _inst_1 _inst_2 c C₂ i)) V (CoeTCₓ.coe.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 (HomologicalComplex.x.{u1, u2, u3} ι V _inst_1 _inst_2 c C₂ i)) V (coeBase.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 (HomologicalComplex.x.{u1, u2, u3} ι V _inst_1 _inst_2 c C₂ i)) V (CategoryTheory.Subobject.hasCoe.{u1, u2} V _inst_1 (HomologicalComplex.x.{u1, u2, u3} ι V _inst_1 _inst_2 c C₂ i))))) (HomologicalComplex.cycles.{u1, u2, u3} ι V _inst_1 _inst_2 c C₂ _inst_3 i)) (HomologicalComplex.x.{u1, u2, u3} ι V _inst_1 _inst_2 c C₂ i) (cyclesMap.{u1, u2, u3} ι V _inst_1 _inst_2 c _inst_3 C₁ C₂ f i) (CategoryTheory.Subobject.arrow.{u1, u2} V _inst_1 (HomologicalComplex.x.{u1, u2, u3} ι V _inst_1 _inst_2 c C₂ i) (HomologicalComplex.cycles.{u1, u2, u3} ι V _inst_1 _inst_2 c C₂ _inst_3 i))) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) ((fun (a : Type.{max u2 u1}) (b : Type.{u2}) [self : HasLiftT.{succ (max u2 u1), succ u2} a b] => self.0) (CategoryTheory.Subobject.{u1, u2} V _inst_1 (HomologicalComplex.x.{u1, u2, u3} ι V _inst_1 _inst_2 c C₁ i)) V (HasLiftT.mk.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 (HomologicalComplex.x.{u1, u2, u3} ι V _inst_1 _inst_2 c C₁ i)) V (CoeTCₓ.coe.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 (HomologicalComplex.x.{u1, u2, u3} ι V _inst_1 _inst_2 c C₁ i)) V (coeBase.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 (HomologicalComplex.x.{u1, u2, u3} ι V _inst_1 _inst_2 c C₁ i)) V (CategoryTheory.Subobject.hasCoe.{u1, u2} V _inst_1 (HomologicalComplex.x.{u1, u2, u3} ι V _inst_1 _inst_2 c C₁ i))))) (HomologicalComplex.cycles.{u1, u2, u3} ι V _inst_1 _inst_2 c C₁ _inst_3 i)) (HomologicalComplex.x.{u1, u2, u3} ι V _inst_1 _inst_2 c C₁ i) (HomologicalComplex.x.{u1, u2, u3} ι V _inst_1 _inst_2 c C₂ i) (CategoryTheory.Subobject.arrow.{u1, u2} V _inst_1 (HomologicalComplex.x.{u1, u2, u3} ι V _inst_1 _inst_2 c C₁ i) (HomologicalComplex.cycles.{u1, u2, u3} ι V _inst_1 _inst_2 c C₁ _inst_3 i)) (HomologicalComplex.Hom.f.{u1, u2, u3} ι V _inst_1 _inst_2 c C₁ C₂ f i))
+but is expected to have type
+ forall {ι : Type.{u1}} {V : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u2, u3} V] [_inst_2 : CategoryTheory.Limits.HasZeroMorphisms.{u2, u3} V _inst_1] {c : ComplexShape.{u1} ι} [_inst_3 : CategoryTheory.Limits.HasKernels.{u2, u3} V _inst_1 _inst_2] {C₁ : HomologicalComplex.{u2, u3, u1} ι V _inst_1 _inst_2 c} {C₂ : HomologicalComplex.{u2, u3, u1} ι V _inst_1 _inst_2 c} (f : Quiver.Hom.{max (succ u2) (succ u1), max (max u3 u2) u1} (HomologicalComplex.{u2, u3, u1} ι V _inst_1 _inst_2 c) (CategoryTheory.CategoryStruct.toQuiver.{max u2 u1, max (max u3 u2) u1} (HomologicalComplex.{u2, u3, u1} ι V _inst_1 _inst_2 c) (CategoryTheory.Category.toCategoryStruct.{max u2 u1, max (max u3 u2) u1} (HomologicalComplex.{u2, u3, u1} ι V _inst_1 _inst_2 c) (HomologicalComplex.instCategoryHomologicalComplex.{u2, u3, u1} ι V _inst_1 _inst_2 c))) C₁ C₂) (i : ι), Eq.{succ u2} (Quiver.Hom.{succ u2, u3} V (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} V (CategoryTheory.Category.toCategoryStruct.{u2, u3} V _inst_1)) (Prefunctor.obj.{max (succ u3) (succ u2), succ u2, max u3 u2, u3} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₁ i)) (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, max u3 u2} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₁ i)) (CategoryTheory.Category.toCategoryStruct.{max u3 u2, max u3 u2} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₁ i)) (Preorder.smallCategory.{max u3 u2} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₁ i)) (PartialOrder.toPreorder.{max u3 u2} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₁ i)) (CategoryTheory.instPartialOrderSubobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₁ i)))))) V (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} V (CategoryTheory.Category.toCategoryStruct.{u2, u3} V _inst_1)) (CategoryTheory.Functor.toPrefunctor.{max u3 u2, u2, max u3 u2, u3} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₁ i)) (Preorder.smallCategory.{max u3 u2} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₁ i)) (PartialOrder.toPreorder.{max u3 u2} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₁ i)) (CategoryTheory.instPartialOrderSubobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₁ i)))) V _inst_1 (CategoryTheory.Subobject.underlying.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₁ i))) (HomologicalComplex.cycles.{u2, u3, u1} ι V _inst_1 _inst_2 c C₁ _inst_3 i)) (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₂ i)) (CategoryTheory.CategoryStruct.comp.{u2, u3} V (CategoryTheory.Category.toCategoryStruct.{u2, u3} V _inst_1) (Prefunctor.obj.{max (succ u3) (succ u2), succ u2, max u3 u2, u3} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₁ i)) (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, max u3 u2} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₁ i)) (CategoryTheory.Category.toCategoryStruct.{max u3 u2, max u3 u2} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₁ i)) (Preorder.smallCategory.{max u3 u2} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₁ i)) (PartialOrder.toPreorder.{max u3 u2} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₁ i)) (CategoryTheory.instPartialOrderSubobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₁ i)))))) V (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} V (CategoryTheory.Category.toCategoryStruct.{u2, u3} V _inst_1)) (CategoryTheory.Functor.toPrefunctor.{max u3 u2, u2, max u3 u2, u3} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₁ i)) (Preorder.smallCategory.{max u3 u2} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₁ i)) (PartialOrder.toPreorder.{max u3 u2} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₁ i)) (CategoryTheory.instPartialOrderSubobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₁ i)))) V _inst_1 (CategoryTheory.Subobject.underlying.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₁ i))) (HomologicalComplex.cycles.{u2, u3, u1} ι V _inst_1 _inst_2 c C₁ _inst_3 i)) (Prefunctor.obj.{max (succ u3) (succ u2), succ u2, max u3 u2, u3} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₂ i)) (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, max u3 u2} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₂ i)) (CategoryTheory.Category.toCategoryStruct.{max u3 u2, max u3 u2} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₂ i)) (Preorder.smallCategory.{max u3 u2} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₂ i)) (PartialOrder.toPreorder.{max u3 u2} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₂ i)) (CategoryTheory.instPartialOrderSubobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₂ i)))))) V (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} V (CategoryTheory.Category.toCategoryStruct.{u2, u3} V _inst_1)) (CategoryTheory.Functor.toPrefunctor.{max u3 u2, u2, max u3 u2, u3} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₂ i)) (Preorder.smallCategory.{max u3 u2} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₂ i)) (PartialOrder.toPreorder.{max u3 u2} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₂ i)) (CategoryTheory.instPartialOrderSubobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₂ i)))) V _inst_1 (CategoryTheory.Subobject.underlying.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₂ i))) (HomologicalComplex.cycles.{u2, u3, u1} ι V _inst_1 _inst_2 c C₂ _inst_3 i)) (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₂ i) (cyclesMap.{u2, u3, u1} ι V _inst_1 _inst_2 c _inst_3 C₁ C₂ f i) (CategoryTheory.Subobject.arrow.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₂ i) (HomologicalComplex.cycles.{u2, u3, u1} ι V _inst_1 _inst_2 c C₂ _inst_3 i))) (CategoryTheory.CategoryStruct.comp.{u2, u3} V (CategoryTheory.Category.toCategoryStruct.{u2, u3} V _inst_1) (Prefunctor.obj.{max (succ u3) (succ u2), succ u2, max u3 u2, u3} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₁ i)) (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, max u3 u2} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₁ i)) (CategoryTheory.Category.toCategoryStruct.{max u3 u2, max u3 u2} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₁ i)) (Preorder.smallCategory.{max u3 u2} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₁ i)) (PartialOrder.toPreorder.{max u3 u2} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₁ i)) (CategoryTheory.instPartialOrderSubobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₁ i)))))) V (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} V (CategoryTheory.Category.toCategoryStruct.{u2, u3} V _inst_1)) (CategoryTheory.Functor.toPrefunctor.{max u3 u2, u2, max u3 u2, u3} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₁ i)) (Preorder.smallCategory.{max u3 u2} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₁ i)) (PartialOrder.toPreorder.{max u3 u2} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₁ i)) (CategoryTheory.instPartialOrderSubobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₁ i)))) V _inst_1 (CategoryTheory.Subobject.underlying.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₁ i))) (HomologicalComplex.cycles.{u2, u3, u1} ι V _inst_1 _inst_2 c C₁ _inst_3 i)) (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₁ i) (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₂ i) (CategoryTheory.Subobject.arrow.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₁ i) (HomologicalComplex.cycles.{u2, u3, u1} ι V _inst_1 _inst_2 c C₁ _inst_3 i)) (HomologicalComplex.Hom.f.{u2, u3, u1} ι V _inst_1 _inst_2 c C₁ C₂ f i))
+Case conversion may be inaccurate. Consider using '#align cycles_map_arrow cyclesMap_arrowₓ'. -/
@[simp, reassoc.1, elementwise]
theorem cyclesMap_arrow (f : C₁ ⟶ C₂) (i : ι) :
cyclesMap f i ≫ (C₂.cycles i).arrow = (C₁.cycles i).arrow ≫ f.f i := by simp
#align cycles_map_arrow cyclesMap_arrow
+/- warning: cycles_map_id -> cyclesMap_id is a dubious translation:
+lean 3 declaration is
+ forall {ι : Type.{u3}} {V : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u1, u2} V] [_inst_2 : CategoryTheory.Limits.HasZeroMorphisms.{u1, u2} V _inst_1] {c : ComplexShape.{u3} ι} [_inst_3 : CategoryTheory.Limits.HasKernels.{u1, u2} V _inst_1 _inst_2] {C₁ : HomologicalComplex.{u1, u2, u3} ι V _inst_1 _inst_2 c} (i : ι), Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) ((fun (a : Type.{max u2 u1}) (b : Type.{u2}) [self : HasLiftT.{succ (max u2 u1), succ u2} a b] => self.0) (CategoryTheory.Subobject.{u1, u2} V _inst_1 (HomologicalComplex.x.{u1, u2, u3} ι V _inst_1 _inst_2 c C₁ i)) V (HasLiftT.mk.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 (HomologicalComplex.x.{u1, u2, u3} ι V _inst_1 _inst_2 c C₁ i)) V (CoeTCₓ.coe.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 (HomologicalComplex.x.{u1, u2, u3} ι V _inst_1 _inst_2 c C₁ i)) V (coeBase.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 (HomologicalComplex.x.{u1, u2, u3} ι V _inst_1 _inst_2 c C₁ i)) V (CategoryTheory.Subobject.hasCoe.{u1, u2} V _inst_1 (HomologicalComplex.x.{u1, u2, u3} ι V _inst_1 _inst_2 c C₁ i))))) (HomologicalComplex.cycles.{u1, u2, u3} ι V _inst_1 _inst_2 c C₁ _inst_3 i)) ((fun (a : Type.{max u2 u1}) (b : Type.{u2}) [self : HasLiftT.{succ (max u2 u1), succ u2} a b] => self.0) (CategoryTheory.Subobject.{u1, u2} V _inst_1 (HomologicalComplex.x.{u1, u2, u3} ι V _inst_1 _inst_2 c C₁ i)) V (HasLiftT.mk.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 (HomologicalComplex.x.{u1, u2, u3} ι V _inst_1 _inst_2 c C₁ i)) V (CoeTCₓ.coe.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 (HomologicalComplex.x.{u1, u2, u3} ι V _inst_1 _inst_2 c C₁ i)) V (coeBase.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 (HomologicalComplex.x.{u1, u2, u3} ι V _inst_1 _inst_2 c C₁ i)) V (CategoryTheory.Subobject.hasCoe.{u1, u2} V _inst_1 (HomologicalComplex.x.{u1, u2, u3} ι V _inst_1 _inst_2 c C₁ i))))) (HomologicalComplex.cycles.{u1, u2, u3} ι V _inst_1 _inst_2 c C₁ _inst_3 i))) (cyclesMap.{u1, u2, u3} ι V _inst_1 _inst_2 c _inst_3 C₁ C₁ (CategoryTheory.CategoryStruct.id.{max u3 u1, max u2 u3 u1} (HomologicalComplex.{u1, u2, u3} ι V _inst_1 _inst_2 c) (CategoryTheory.Category.toCategoryStruct.{max u3 u1, max u2 u3 u1} (HomologicalComplex.{u1, u2, u3} ι V _inst_1 _inst_2 c) (HomologicalComplex.CategoryTheory.category.{u1, u2, u3} ι V _inst_1 _inst_2 c)) C₁) i) (CategoryTheory.CategoryStruct.id.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) ((fun (a : Type.{max u2 u1}) (b : Type.{u2}) [self : HasLiftT.{succ (max u2 u1), succ u2} a b] => self.0) (CategoryTheory.Subobject.{u1, u2} V _inst_1 (HomologicalComplex.x.{u1, u2, u3} ι V _inst_1 _inst_2 c C₁ i)) V (HasLiftT.mk.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 (HomologicalComplex.x.{u1, u2, u3} ι V _inst_1 _inst_2 c C₁ i)) V (CoeTCₓ.coe.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 (HomologicalComplex.x.{u1, u2, u3} ι V _inst_1 _inst_2 c C₁ i)) V (coeBase.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 (HomologicalComplex.x.{u1, u2, u3} ι V _inst_1 _inst_2 c C₁ i)) V (CategoryTheory.Subobject.hasCoe.{u1, u2} V _inst_1 (HomologicalComplex.x.{u1, u2, u3} ι V _inst_1 _inst_2 c C₁ i))))) (HomologicalComplex.cycles.{u1, u2, u3} ι V _inst_1 _inst_2 c C₁ _inst_3 i)))
+but is expected to have type
+ forall {ι : Type.{u1}} {V : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u2, u3} V] [_inst_2 : CategoryTheory.Limits.HasZeroMorphisms.{u2, u3} V _inst_1] {c : ComplexShape.{u1} ι} [_inst_3 : CategoryTheory.Limits.HasKernels.{u2, u3} V _inst_1 _inst_2] {C₁ : HomologicalComplex.{u2, u3, u1} ι V _inst_1 _inst_2 c} (i : ι), Eq.{succ u2} (Quiver.Hom.{succ u2, u3} V (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} V (CategoryTheory.Category.toCategoryStruct.{u2, u3} V _inst_1)) (Prefunctor.obj.{max (succ u3) (succ u2), succ u2, max u3 u2, u3} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₁ i)) (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, max u3 u2} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₁ i)) (CategoryTheory.Category.toCategoryStruct.{max u3 u2, max u3 u2} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₁ i)) (Preorder.smallCategory.{max u3 u2} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₁ i)) (PartialOrder.toPreorder.{max u3 u2} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₁ i)) (CategoryTheory.instPartialOrderSubobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₁ i)))))) V (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} V (CategoryTheory.Category.toCategoryStruct.{u2, u3} V _inst_1)) (CategoryTheory.Functor.toPrefunctor.{max u3 u2, u2, max u3 u2, u3} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₁ i)) (Preorder.smallCategory.{max u3 u2} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₁ i)) (PartialOrder.toPreorder.{max u3 u2} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₁ i)) (CategoryTheory.instPartialOrderSubobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₁ i)))) V _inst_1 (CategoryTheory.Subobject.underlying.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₁ i))) (HomologicalComplex.cycles.{u2, u3, u1} ι V _inst_1 _inst_2 c C₁ _inst_3 i)) (Prefunctor.obj.{max (succ u3) (succ u2), succ u2, max u3 u2, u3} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₁ i)) (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, max u3 u2} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₁ i)) (CategoryTheory.Category.toCategoryStruct.{max u3 u2, max u3 u2} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₁ i)) (Preorder.smallCategory.{max u3 u2} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₁ i)) (PartialOrder.toPreorder.{max u3 u2} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₁ i)) (CategoryTheory.instPartialOrderSubobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₁ i)))))) V (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} V (CategoryTheory.Category.toCategoryStruct.{u2, u3} V _inst_1)) (CategoryTheory.Functor.toPrefunctor.{max u3 u2, u2, max u3 u2, u3} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₁ i)) (Preorder.smallCategory.{max u3 u2} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₁ i)) (PartialOrder.toPreorder.{max u3 u2} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₁ i)) (CategoryTheory.instPartialOrderSubobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₁ i)))) V _inst_1 (CategoryTheory.Subobject.underlying.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₁ i))) (HomologicalComplex.cycles.{u2, u3, u1} ι V _inst_1 _inst_2 c C₁ _inst_3 i))) (cyclesMap.{u2, u3, u1} ι V _inst_1 _inst_2 c _inst_3 C₁ C₁ (CategoryTheory.CategoryStruct.id.{max u2 u1, max (max u3 u2) u1} (HomologicalComplex.{u2, u3, u1} ι V _inst_1 _inst_2 c) (CategoryTheory.Category.toCategoryStruct.{max u2 u1, max (max u3 u2) u1} (HomologicalComplex.{u2, u3, u1} ι V _inst_1 _inst_2 c) (HomologicalComplex.instCategoryHomologicalComplex.{u2, u3, u1} ι V _inst_1 _inst_2 c)) C₁) i) (CategoryTheory.CategoryStruct.id.{u2, u3} V (CategoryTheory.Category.toCategoryStruct.{u2, u3} V _inst_1) (Prefunctor.obj.{max (succ u3) (succ u2), succ u2, max u3 u2, u3} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₁ i)) (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, max u3 u2} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₁ i)) (CategoryTheory.Category.toCategoryStruct.{max u3 u2, max u3 u2} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₁ i)) (Preorder.smallCategory.{max u3 u2} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₁ i)) (PartialOrder.toPreorder.{max u3 u2} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₁ i)) (CategoryTheory.instPartialOrderSubobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₁ i)))))) V (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} V (CategoryTheory.Category.toCategoryStruct.{u2, u3} V _inst_1)) (CategoryTheory.Functor.toPrefunctor.{max u3 u2, u2, max u3 u2, u3} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₁ i)) (Preorder.smallCategory.{max u3 u2} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₁ i)) (PartialOrder.toPreorder.{max u3 u2} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₁ i)) (CategoryTheory.instPartialOrderSubobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₁ i)))) V _inst_1 (CategoryTheory.Subobject.underlying.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₁ i))) (HomologicalComplex.cycles.{u2, u3, u1} ι V _inst_1 _inst_2 c C₁ _inst_3 i)))
+Case conversion may be inaccurate. Consider using '#align cycles_map_id cyclesMap_idₓ'. -/
@[simp]
theorem cyclesMap_id (i : ι) : cyclesMap (𝟙 C₁) i = 𝟙 _ :=
by
@@ -224,6 +312,12 @@ theorem cyclesMap_id (i : ι) : cyclesMap (𝟙 C₁) i = 𝟙 _ :=
simp
#align cycles_map_id cyclesMap_id
+/- warning: cycles_map_comp -> cyclesMap_comp is a dubious translation:
+lean 3 declaration is
+ forall {ι : Type.{u3}} {V : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u1, u2} V] [_inst_2 : CategoryTheory.Limits.HasZeroMorphisms.{u1, u2} V _inst_1] {c : ComplexShape.{u3} ι} [_inst_3 : CategoryTheory.Limits.HasKernels.{u1, u2} V _inst_1 _inst_2] {C₁ : HomologicalComplex.{u1, u2, u3} ι V _inst_1 _inst_2 c} {C₂ : HomologicalComplex.{u1, u2, u3} ι V _inst_1 _inst_2 c} {C₃ : HomologicalComplex.{u1, u2, u3} ι V _inst_1 _inst_2 c} (f : Quiver.Hom.{succ (max u3 u1), max u2 u3 u1} (HomologicalComplex.{u1, u2, u3} ι V _inst_1 _inst_2 c) (CategoryTheory.CategoryStruct.toQuiver.{max u3 u1, max u2 u3 u1} (HomologicalComplex.{u1, u2, u3} ι V _inst_1 _inst_2 c) (CategoryTheory.Category.toCategoryStruct.{max u3 u1, max u2 u3 u1} (HomologicalComplex.{u1, u2, u3} ι V _inst_1 _inst_2 c) (HomologicalComplex.CategoryTheory.category.{u1, u2, u3} ι V _inst_1 _inst_2 c))) C₁ C₂) (g : Quiver.Hom.{succ (max u3 u1), max u2 u3 u1} (HomologicalComplex.{u1, u2, u3} ι V _inst_1 _inst_2 c) (CategoryTheory.CategoryStruct.toQuiver.{max u3 u1, max u2 u3 u1} (HomologicalComplex.{u1, u2, u3} ι V _inst_1 _inst_2 c) (CategoryTheory.Category.toCategoryStruct.{max u3 u1, max u2 u3 u1} (HomologicalComplex.{u1, u2, u3} ι V _inst_1 _inst_2 c) (HomologicalComplex.CategoryTheory.category.{u1, u2, u3} ι V _inst_1 _inst_2 c))) C₂ C₃) (i : ι), Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) ((fun (a : Type.{max u2 u1}) (b : Type.{u2}) [self : HasLiftT.{succ (max u2 u1), succ u2} a b] => self.0) (CategoryTheory.Subobject.{u1, u2} V _inst_1 (HomologicalComplex.x.{u1, u2, u3} ι V _inst_1 _inst_2 c C₁ i)) V (HasLiftT.mk.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 (HomologicalComplex.x.{u1, u2, u3} ι V _inst_1 _inst_2 c C₁ i)) V (CoeTCₓ.coe.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 (HomologicalComplex.x.{u1, u2, u3} ι V _inst_1 _inst_2 c C₁ i)) V (coeBase.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 (HomologicalComplex.x.{u1, u2, u3} ι V _inst_1 _inst_2 c C₁ i)) V (CategoryTheory.Subobject.hasCoe.{u1, u2} V _inst_1 (HomologicalComplex.x.{u1, u2, u3} ι V _inst_1 _inst_2 c C₁ i))))) (HomologicalComplex.cycles.{u1, u2, u3} ι V _inst_1 _inst_2 c C₁ _inst_3 i)) ((fun (a : Type.{max u2 u1}) (b : Type.{u2}) [self : HasLiftT.{succ (max u2 u1), succ u2} a b] => self.0) (CategoryTheory.Subobject.{u1, u2} V _inst_1 (HomologicalComplex.x.{u1, u2, u3} ι V _inst_1 _inst_2 c C₃ i)) V (HasLiftT.mk.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 (HomologicalComplex.x.{u1, u2, u3} ι V _inst_1 _inst_2 c C₃ i)) V (CoeTCₓ.coe.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 (HomologicalComplex.x.{u1, u2, u3} ι V _inst_1 _inst_2 c C₃ i)) V (coeBase.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 (HomologicalComplex.x.{u1, u2, u3} ι V _inst_1 _inst_2 c C₃ i)) V (CategoryTheory.Subobject.hasCoe.{u1, u2} V _inst_1 (HomologicalComplex.x.{u1, u2, u3} ι V _inst_1 _inst_2 c C₃ i))))) (HomologicalComplex.cycles.{u1, u2, u3} ι V _inst_1 _inst_2 c C₃ _inst_3 i))) (cyclesMap.{u1, u2, u3} ι V _inst_1 _inst_2 c _inst_3 C₁ C₃ (CategoryTheory.CategoryStruct.comp.{max u3 u1, max u2 u3 u1} (HomologicalComplex.{u1, u2, u3} ι V _inst_1 _inst_2 c) (CategoryTheory.Category.toCategoryStruct.{max u3 u1, max u2 u3 u1} (HomologicalComplex.{u1, u2, u3} ι V _inst_1 _inst_2 c) (HomologicalComplex.CategoryTheory.category.{u1, u2, u3} ι V _inst_1 _inst_2 c)) C₁ C₂ C₃ f g) i) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) ((fun (a : Type.{max u2 u1}) (b : Type.{u2}) [self : HasLiftT.{succ (max u2 u1), succ u2} a b] => self.0) (CategoryTheory.Subobject.{u1, u2} V _inst_1 (HomologicalComplex.x.{u1, u2, u3} ι V _inst_1 _inst_2 c C₁ i)) V (HasLiftT.mk.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 (HomologicalComplex.x.{u1, u2, u3} ι V _inst_1 _inst_2 c C₁ i)) V (CoeTCₓ.coe.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 (HomologicalComplex.x.{u1, u2, u3} ι V _inst_1 _inst_2 c C₁ i)) V (coeBase.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 (HomologicalComplex.x.{u1, u2, u3} ι V _inst_1 _inst_2 c C₁ i)) V (CategoryTheory.Subobject.hasCoe.{u1, u2} V _inst_1 (HomologicalComplex.x.{u1, u2, u3} ι V _inst_1 _inst_2 c C₁ i))))) (HomologicalComplex.cycles.{u1, u2, u3} ι V _inst_1 _inst_2 c C₁ _inst_3 i)) ((fun (a : Type.{max u2 u1}) (b : Type.{u2}) [self : HasLiftT.{succ (max u2 u1), succ u2} a b] => self.0) (CategoryTheory.Subobject.{u1, u2} V _inst_1 (HomologicalComplex.x.{u1, u2, u3} ι V _inst_1 _inst_2 c C₂ i)) V (HasLiftT.mk.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 (HomologicalComplex.x.{u1, u2, u3} ι V _inst_1 _inst_2 c C₂ i)) V (CoeTCₓ.coe.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 (HomologicalComplex.x.{u1, u2, u3} ι V _inst_1 _inst_2 c C₂ i)) V (coeBase.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 (HomologicalComplex.x.{u1, u2, u3} ι V _inst_1 _inst_2 c C₂ i)) V (CategoryTheory.Subobject.hasCoe.{u1, u2} V _inst_1 (HomologicalComplex.x.{u1, u2, u3} ι V _inst_1 _inst_2 c C₂ i))))) (HomologicalComplex.cycles.{u1, u2, u3} ι V _inst_1 _inst_2 c C₂ _inst_3 i)) ((fun (a : Type.{max u2 u1}) (b : Type.{u2}) [self : HasLiftT.{succ (max u2 u1), succ u2} a b] => self.0) (CategoryTheory.Subobject.{u1, u2} V _inst_1 (HomologicalComplex.x.{u1, u2, u3} ι V _inst_1 _inst_2 c C₃ i)) V (HasLiftT.mk.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 (HomologicalComplex.x.{u1, u2, u3} ι V _inst_1 _inst_2 c C₃ i)) V (CoeTCₓ.coe.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 (HomologicalComplex.x.{u1, u2, u3} ι V _inst_1 _inst_2 c C₃ i)) V (coeBase.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 (HomologicalComplex.x.{u1, u2, u3} ι V _inst_1 _inst_2 c C₃ i)) V (CategoryTheory.Subobject.hasCoe.{u1, u2} V _inst_1 (HomologicalComplex.x.{u1, u2, u3} ι V _inst_1 _inst_2 c C₃ i))))) (HomologicalComplex.cycles.{u1, u2, u3} ι V _inst_1 _inst_2 c C₃ _inst_3 i)) (cyclesMap.{u1, u2, u3} ι V _inst_1 _inst_2 c _inst_3 C₁ C₂ f i) (cyclesMap.{u1, u2, u3} ι V _inst_1 _inst_2 c _inst_3 C₂ C₃ g i))
+but is expected to have type
+ forall {ι : Type.{u1}} {V : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u2, u3} V] [_inst_2 : CategoryTheory.Limits.HasZeroMorphisms.{u2, u3} V _inst_1] {c : ComplexShape.{u1} ι} [_inst_3 : CategoryTheory.Limits.HasKernels.{u2, u3} V _inst_1 _inst_2] {C₁ : HomologicalComplex.{u2, u3, u1} ι V _inst_1 _inst_2 c} {C₂ : HomologicalComplex.{u2, u3, u1} ι V _inst_1 _inst_2 c} {C₃ : HomologicalComplex.{u2, u3, u1} ι V _inst_1 _inst_2 c} (f : Quiver.Hom.{max (succ u2) (succ u1), max (max u3 u2) u1} (HomologicalComplex.{u2, u3, u1} ι V _inst_1 _inst_2 c) (CategoryTheory.CategoryStruct.toQuiver.{max u2 u1, max (max u3 u2) u1} (HomologicalComplex.{u2, u3, u1} ι V _inst_1 _inst_2 c) (CategoryTheory.Category.toCategoryStruct.{max u2 u1, max (max u3 u2) u1} (HomologicalComplex.{u2, u3, u1} ι V _inst_1 _inst_2 c) (HomologicalComplex.instCategoryHomologicalComplex.{u2, u3, u1} ι V _inst_1 _inst_2 c))) C₁ C₂) (g : Quiver.Hom.{max (succ u2) (succ u1), max (max u3 u2) u1} (HomologicalComplex.{u2, u3, u1} ι V _inst_1 _inst_2 c) (CategoryTheory.CategoryStruct.toQuiver.{max u2 u1, max (max u3 u2) u1} (HomologicalComplex.{u2, u3, u1} ι V _inst_1 _inst_2 c) (CategoryTheory.Category.toCategoryStruct.{max u2 u1, max (max u3 u2) u1} (HomologicalComplex.{u2, u3, u1} ι V _inst_1 _inst_2 c) (HomologicalComplex.instCategoryHomologicalComplex.{u2, u3, u1} ι V _inst_1 _inst_2 c))) C₂ C₃) (i : ι), Eq.{succ u2} (Quiver.Hom.{succ u2, u3} V (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} V (CategoryTheory.Category.toCategoryStruct.{u2, u3} V _inst_1)) (Prefunctor.obj.{max (succ u3) (succ u2), succ u2, max u3 u2, u3} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₁ i)) (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, max u3 u2} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₁ i)) (CategoryTheory.Category.toCategoryStruct.{max u3 u2, max u3 u2} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₁ i)) (Preorder.smallCategory.{max u3 u2} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₁ i)) (PartialOrder.toPreorder.{max u3 u2} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₁ i)) (CategoryTheory.instPartialOrderSubobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₁ i)))))) V (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} V (CategoryTheory.Category.toCategoryStruct.{u2, u3} V _inst_1)) (CategoryTheory.Functor.toPrefunctor.{max u3 u2, u2, max u3 u2, u3} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₁ i)) (Preorder.smallCategory.{max u3 u2} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₁ i)) (PartialOrder.toPreorder.{max u3 u2} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₁ i)) (CategoryTheory.instPartialOrderSubobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₁ i)))) V _inst_1 (CategoryTheory.Subobject.underlying.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₁ i))) (HomologicalComplex.cycles.{u2, u3, u1} ι V _inst_1 _inst_2 c C₁ _inst_3 i)) (Prefunctor.obj.{max (succ u3) (succ u2), succ u2, max u3 u2, u3} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₃ i)) (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, max u3 u2} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₃ i)) (CategoryTheory.Category.toCategoryStruct.{max u3 u2, max u3 u2} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₃ i)) (Preorder.smallCategory.{max u3 u2} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₃ i)) (PartialOrder.toPreorder.{max u3 u2} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₃ i)) (CategoryTheory.instPartialOrderSubobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₃ i)))))) V (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} V (CategoryTheory.Category.toCategoryStruct.{u2, u3} V _inst_1)) (CategoryTheory.Functor.toPrefunctor.{max u3 u2, u2, max u3 u2, u3} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₃ i)) (Preorder.smallCategory.{max u3 u2} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₃ i)) (PartialOrder.toPreorder.{max u3 u2} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₃ i)) (CategoryTheory.instPartialOrderSubobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₃ i)))) V _inst_1 (CategoryTheory.Subobject.underlying.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₃ i))) (HomologicalComplex.cycles.{u2, u3, u1} ι V _inst_1 _inst_2 c C₃ _inst_3 i))) (cyclesMap.{u2, u3, u1} ι V _inst_1 _inst_2 c _inst_3 C₁ C₃ (CategoryTheory.CategoryStruct.comp.{max u1 u2, max (max u1 u3) u2} (HomologicalComplex.{u2, u3, u1} ι V _inst_1 _inst_2 c) (CategoryTheory.Category.toCategoryStruct.{max u1 u2, max (max u1 u3) u2} (HomologicalComplex.{u2, u3, u1} ι V _inst_1 _inst_2 c) (HomologicalComplex.instCategoryHomologicalComplex.{u2, u3, u1} ι V _inst_1 _inst_2 c)) C₁ C₂ C₃ f g) i) (CategoryTheory.CategoryStruct.comp.{u2, u3} V (CategoryTheory.Category.toCategoryStruct.{u2, u3} V _inst_1) (Prefunctor.obj.{max (succ u3) (succ u2), succ u2, max u3 u2, u3} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₁ i)) (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, max u3 u2} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₁ i)) (CategoryTheory.Category.toCategoryStruct.{max u3 u2, max u3 u2} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₁ i)) (Preorder.smallCategory.{max u3 u2} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₁ i)) (PartialOrder.toPreorder.{max u3 u2} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₁ i)) (CategoryTheory.instPartialOrderSubobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₁ i)))))) V (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} V (CategoryTheory.Category.toCategoryStruct.{u2, u3} V _inst_1)) (CategoryTheory.Functor.toPrefunctor.{max u3 u2, u2, max u3 u2, u3} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₁ i)) (Preorder.smallCategory.{max u3 u2} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₁ i)) (PartialOrder.toPreorder.{max u3 u2} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₁ i)) (CategoryTheory.instPartialOrderSubobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₁ i)))) V _inst_1 (CategoryTheory.Subobject.underlying.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₁ i))) (HomologicalComplex.cycles.{u2, u3, u1} ι V _inst_1 _inst_2 c C₁ _inst_3 i)) (Prefunctor.obj.{max (succ u3) (succ u2), succ u2, max u3 u2, u3} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₂ i)) (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, max u3 u2} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₂ i)) (CategoryTheory.Category.toCategoryStruct.{max u3 u2, max u3 u2} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₂ i)) (Preorder.smallCategory.{max u3 u2} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₂ i)) (PartialOrder.toPreorder.{max u3 u2} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₂ i)) (CategoryTheory.instPartialOrderSubobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₂ i)))))) V (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} V (CategoryTheory.Category.toCategoryStruct.{u2, u3} V _inst_1)) (CategoryTheory.Functor.toPrefunctor.{max u3 u2, u2, max u3 u2, u3} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₂ i)) (Preorder.smallCategory.{max u3 u2} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₂ i)) (PartialOrder.toPreorder.{max u3 u2} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₂ i)) (CategoryTheory.instPartialOrderSubobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₂ i)))) V _inst_1 (CategoryTheory.Subobject.underlying.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₂ i))) (HomologicalComplex.cycles.{u2, u3, u1} ι V _inst_1 _inst_2 c C₂ _inst_3 i)) (Prefunctor.obj.{max (succ u3) (succ u2), succ u2, max u3 u2, u3} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₃ i)) (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, max u3 u2} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₃ i)) (CategoryTheory.Category.toCategoryStruct.{max u3 u2, max u3 u2} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₃ i)) (Preorder.smallCategory.{max u3 u2} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₃ i)) (PartialOrder.toPreorder.{max u3 u2} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₃ i)) (CategoryTheory.instPartialOrderSubobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₃ i)))))) V (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} V (CategoryTheory.Category.toCategoryStruct.{u2, u3} V _inst_1)) (CategoryTheory.Functor.toPrefunctor.{max u3 u2, u2, max u3 u2, u3} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₃ i)) (Preorder.smallCategory.{max u3 u2} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₃ i)) (PartialOrder.toPreorder.{max u3 u2} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₃ i)) (CategoryTheory.instPartialOrderSubobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₃ i)))) V _inst_1 (CategoryTheory.Subobject.underlying.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₃ i))) (HomologicalComplex.cycles.{u2, u3, u1} ι V _inst_1 _inst_2 c C₃ _inst_3 i)) (cyclesMap.{u2, u3, u1} ι V _inst_1 _inst_2 c _inst_3 C₁ C₂ f i) (cyclesMap.{u2, u3, u1} ι V _inst_1 _inst_2 c _inst_3 C₂ C₃ g i))
+Case conversion may be inaccurate. Consider using '#align cycles_map_comp cyclesMap_compₓ'. -/
@[simp]
theorem cyclesMap_comp (f : C₁ ⟶ C₂) (g : C₂ ⟶ C₃) (i : ι) :
cyclesMap (f ≫ g) i = cyclesMap f i ≫ cyclesMap g i :=
@@ -234,6 +328,7 @@ theorem cyclesMap_comp (f : C₁ ⟶ C₂) (g : C₂ ⟶ C₃) (i : ι) :
variable (V c)
+#print cyclesFunctor /-
/-- Cycles as a functor. -/
@[simps]
def cyclesFunctor (i : ι) : HomologicalComplex V c ⥤ V
@@ -241,6 +336,7 @@ def cyclesFunctor (i : ι) : HomologicalComplex V c ⥤ V
obj C := C.cycles i
map C₁ C₂ f := cyclesMap f i
#align cycles_functor cyclesFunctor
+-/
end
@@ -253,6 +349,12 @@ variable [HasImages V] [HasImageMaps V]
variable {C₁ C₂ C₃ : HomologicalComplex V c} (f : C₁ ⟶ C₂)
+/- warning: boundaries_map -> boundariesMap is a dubious translation:
+lean 3 declaration is
+ forall {ι : Type.{u3}} {V : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u1, u2} V] [_inst_2 : CategoryTheory.Limits.HasZeroMorphisms.{u1, u2} V _inst_1] {c : ComplexShape.{u3} ι} [_inst_3 : CategoryTheory.Limits.HasImages.{u1, u2} V _inst_1] [_inst_4 : CategoryTheory.Limits.HasImageMaps.{u1, u2} V _inst_1 _inst_3] {C₁ : HomologicalComplex.{u1, u2, u3} ι V _inst_1 _inst_2 c} {C₂ : HomologicalComplex.{u1, u2, u3} ι V _inst_1 _inst_2 c}, (Quiver.Hom.{succ (max u3 u1), max u2 u3 u1} (HomologicalComplex.{u1, u2, u3} ι V _inst_1 _inst_2 c) (CategoryTheory.CategoryStruct.toQuiver.{max u3 u1, max u2 u3 u1} (HomologicalComplex.{u1, u2, u3} ι V _inst_1 _inst_2 c) (CategoryTheory.Category.toCategoryStruct.{max u3 u1, max u2 u3 u1} (HomologicalComplex.{u1, u2, u3} ι V _inst_1 _inst_2 c) (HomologicalComplex.CategoryTheory.category.{u1, u2, u3} ι V _inst_1 _inst_2 c))) C₁ C₂) -> (forall (i : ι), Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) ((fun (a : Type.{max u2 u1}) (b : Type.{u2}) [self : HasLiftT.{succ (max u2 u1), succ u2} a b] => self.0) (CategoryTheory.Subobject.{u1, u2} V _inst_1 (HomologicalComplex.x.{u1, u2, u3} ι V _inst_1 _inst_2 c C₁ i)) V (HasLiftT.mk.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 (HomologicalComplex.x.{u1, u2, u3} ι V _inst_1 _inst_2 c C₁ i)) V (CoeTCₓ.coe.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 (HomologicalComplex.x.{u1, u2, u3} ι V _inst_1 _inst_2 c C₁ i)) V (coeBase.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 (HomologicalComplex.x.{u1, u2, u3} ι V _inst_1 _inst_2 c C₁ i)) V (CategoryTheory.Subobject.hasCoe.{u1, u2} V _inst_1 (HomologicalComplex.x.{u1, u2, u3} ι V _inst_1 _inst_2 c C₁ i))))) (HomologicalComplex.boundaries.{u1, u2, u3} ι V _inst_1 _inst_2 c _inst_3 C₁ i)) ((fun (a : Type.{max u2 u1}) (b : Type.{u2}) [self : HasLiftT.{succ (max u2 u1), succ u2} a b] => self.0) (CategoryTheory.Subobject.{u1, u2} V _inst_1 (HomologicalComplex.x.{u1, u2, u3} ι V _inst_1 _inst_2 c C₂ i)) V (HasLiftT.mk.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 (HomologicalComplex.x.{u1, u2, u3} ι V _inst_1 _inst_2 c C₂ i)) V (CoeTCₓ.coe.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 (HomologicalComplex.x.{u1, u2, u3} ι V _inst_1 _inst_2 c C₂ i)) V (coeBase.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 (HomologicalComplex.x.{u1, u2, u3} ι V _inst_1 _inst_2 c C₂ i)) V (CategoryTheory.Subobject.hasCoe.{u1, u2} V _inst_1 (HomologicalComplex.x.{u1, u2, u3} ι V _inst_1 _inst_2 c C₂ i))))) (HomologicalComplex.boundaries.{u1, u2, u3} ι V _inst_1 _inst_2 c _inst_3 C₂ i)))
+but is expected to have type
+ forall {ι : Type.{u3}} {V : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u1, u2} V] [_inst_2 : CategoryTheory.Limits.HasZeroMorphisms.{u1, u2} V _inst_1] {c : ComplexShape.{u3} ι} [_inst_3 : CategoryTheory.Limits.HasImages.{u1, u2} V _inst_1] [_inst_4 : CategoryTheory.Limits.HasImageMaps.{u1, u2} V _inst_1 _inst_3] {C₁ : HomologicalComplex.{u1, u2, u3} ι V _inst_1 _inst_2 c} {C₂ : HomologicalComplex.{u1, u2, u3} ι V _inst_1 _inst_2 c}, (Quiver.Hom.{max (succ u1) (succ u3), max (max u2 u1) u3} (HomologicalComplex.{u1, u2, u3} ι V _inst_1 _inst_2 c) (CategoryTheory.CategoryStruct.toQuiver.{max u1 u3, max (max u2 u1) u3} (HomologicalComplex.{u1, u2, u3} ι V _inst_1 _inst_2 c) (CategoryTheory.Category.toCategoryStruct.{max u1 u3, max (max u2 u1) u3} (HomologicalComplex.{u1, u2, u3} ι V _inst_1 _inst_2 c) (HomologicalComplex.instCategoryHomologicalComplex.{u1, u2, u3} ι V _inst_1 _inst_2 c))) C₁ C₂) -> (forall (i : ι), Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) (Prefunctor.obj.{max (succ u2) (succ u1), succ u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 (HomologicalComplex.X.{u1, u2, u3} ι V _inst_1 _inst_2 c C₁ i)) (CategoryTheory.CategoryStruct.toQuiver.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 (HomologicalComplex.X.{u1, u2, u3} ι V _inst_1 _inst_2 c C₁ i)) (CategoryTheory.Category.toCategoryStruct.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 (HomologicalComplex.X.{u1, u2, u3} ι V _inst_1 _inst_2 c C₁ i)) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 (HomologicalComplex.X.{u1, u2, u3} ι V _inst_1 _inst_2 c C₁ i)) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 (HomologicalComplex.X.{u1, u2, u3} ι V _inst_1 _inst_2 c C₁ i)) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 (HomologicalComplex.X.{u1, u2, u3} ι V _inst_1 _inst_2 c C₁ i)))))) V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) (CategoryTheory.Functor.toPrefunctor.{max u2 u1, u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 (HomologicalComplex.X.{u1, u2, u3} ι V _inst_1 _inst_2 c C₁ i)) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 (HomologicalComplex.X.{u1, u2, u3} ι V _inst_1 _inst_2 c C₁ i)) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 (HomologicalComplex.X.{u1, u2, u3} ι V _inst_1 _inst_2 c C₁ i)) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 (HomologicalComplex.X.{u1, u2, u3} ι V _inst_1 _inst_2 c C₁ i)))) V _inst_1 (CategoryTheory.Subobject.underlying.{u1, u2} V _inst_1 (HomologicalComplex.X.{u1, u2, u3} ι V _inst_1 _inst_2 c C₁ i))) (HomologicalComplex.boundaries.{u1, u2, u3} ι V _inst_1 _inst_2 c _inst_3 C₁ i)) (Prefunctor.obj.{max (succ u2) (succ u1), succ u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 (HomologicalComplex.X.{u1, u2, u3} ι V _inst_1 _inst_2 c C₂ i)) (CategoryTheory.CategoryStruct.toQuiver.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 (HomologicalComplex.X.{u1, u2, u3} ι V _inst_1 _inst_2 c C₂ i)) (CategoryTheory.Category.toCategoryStruct.{max u2 u1, max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 (HomologicalComplex.X.{u1, u2, u3} ι V _inst_1 _inst_2 c C₂ i)) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 (HomologicalComplex.X.{u1, u2, u3} ι V _inst_1 _inst_2 c C₂ i)) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 (HomologicalComplex.X.{u1, u2, u3} ι V _inst_1 _inst_2 c C₂ i)) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 (HomologicalComplex.X.{u1, u2, u3} ι V _inst_1 _inst_2 c C₂ i)))))) V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) (CategoryTheory.Functor.toPrefunctor.{max u2 u1, u1, max u2 u1, u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 (HomologicalComplex.X.{u1, u2, u3} ι V _inst_1 _inst_2 c C₂ i)) (Preorder.smallCategory.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 (HomologicalComplex.X.{u1, u2, u3} ι V _inst_1 _inst_2 c C₂ i)) (PartialOrder.toPreorder.{max u2 u1} (CategoryTheory.Subobject.{u1, u2} V _inst_1 (HomologicalComplex.X.{u1, u2, u3} ι V _inst_1 _inst_2 c C₂ i)) (CategoryTheory.instPartialOrderSubobject.{u1, u2} V _inst_1 (HomologicalComplex.X.{u1, u2, u3} ι V _inst_1 _inst_2 c C₂ i)))) V _inst_1 (CategoryTheory.Subobject.underlying.{u1, u2} V _inst_1 (HomologicalComplex.X.{u1, u2, u3} ι V _inst_1 _inst_2 c C₂ i))) (HomologicalComplex.boundaries.{u1, u2, u3} ι V _inst_1 _inst_2 c _inst_3 C₂ i)))
+Case conversion may be inaccurate. Consider using '#align boundaries_map boundariesMapₓ'. -/
/-- The morphism between boundaries induced by a chain map.
-/
abbrev boundariesMap (f : C₁ ⟶ C₂) (i : ι) : (C₁.boundaries i : V) ⟶ (C₂.boundaries i : V) :=
@@ -261,6 +363,7 @@ abbrev boundariesMap (f : C₁ ⟶ C₂) (i : ι) : (C₁.boundaries i : V) ⟶
variable (V c)
+#print boundariesFunctor /-
/-- Boundaries as a functor. -/
@[simps]
def boundariesFunctor (i : ι) : HomologicalComplex V c ⥤ V
@@ -268,6 +371,7 @@ def boundariesFunctor (i : ι) : HomologicalComplex V c ⥤ V
obj C := C.boundaries i
map C₁ C₂ f := imageSubobjectMap (f.sqTo i)
#align boundaries_functor boundariesFunctor
+-/
end
@@ -280,6 +384,12 @@ variable [HasEqualizers V] [HasImages V] [HasImageMaps V]
variable {C₁ C₂ : HomologicalComplex V c} (f : C₁ ⟶ C₂)
+/- warning: boundaries_to_cycles_naturality -> boundariesToCycles_naturality is a dubious translation:
+lean 3 declaration is
+ forall {ι : Type.{u3}} {V : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u1, u2} V] [_inst_2 : CategoryTheory.Limits.HasZeroMorphisms.{u1, u2} V _inst_1] {c : ComplexShape.{u3} ι} [_inst_3 : CategoryTheory.Limits.HasEqualizers.{u1, u2} V _inst_1] [_inst_4 : CategoryTheory.Limits.HasImages.{u1, u2} V _inst_1] [_inst_5 : CategoryTheory.Limits.HasImageMaps.{u1, u2} V _inst_1 _inst_4] {C₁ : HomologicalComplex.{u1, u2, u3} ι V _inst_1 _inst_2 c} {C₂ : HomologicalComplex.{u1, u2, u3} ι V _inst_1 _inst_2 c} (f : Quiver.Hom.{succ (max u3 u1), max u2 u3 u1} (HomologicalComplex.{u1, u2, u3} ι V _inst_1 _inst_2 c) (CategoryTheory.CategoryStruct.toQuiver.{max u3 u1, max u2 u3 u1} (HomologicalComplex.{u1, u2, u3} ι V _inst_1 _inst_2 c) (CategoryTheory.Category.toCategoryStruct.{max u3 u1, max u2 u3 u1} (HomologicalComplex.{u1, u2, u3} ι V _inst_1 _inst_2 c) (HomologicalComplex.CategoryTheory.category.{u1, u2, u3} ι V _inst_1 _inst_2 c))) C₁ C₂) (i : ι), Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1)) ((fun (a : Type.{max u2 u1}) (b : Type.{u2}) [self : HasLiftT.{succ (max u2 u1), succ u2} a b] => self.0) (CategoryTheory.Subobject.{u1, u2} V _inst_1 (HomologicalComplex.x.{u1, u2, u3} ι V _inst_1 _inst_2 c C₁ i)) V (HasLiftT.mk.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 (HomologicalComplex.x.{u1, u2, u3} ι V _inst_1 _inst_2 c C₁ i)) V (CoeTCₓ.coe.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 (HomologicalComplex.x.{u1, u2, u3} ι V _inst_1 _inst_2 c C₁ i)) V (coeBase.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 (HomologicalComplex.x.{u1, u2, u3} ι V _inst_1 _inst_2 c C₁ i)) V (CategoryTheory.Subobject.hasCoe.{u1, u2} V _inst_1 (HomologicalComplex.x.{u1, u2, u3} ι V _inst_1 _inst_2 c C₁ i))))) (HomologicalComplex.boundaries.{u1, u2, u3} ι V _inst_1 _inst_2 c _inst_4 C₁ i)) ((fun (a : Type.{max u2 u1}) (b : Type.{u2}) [self : HasLiftT.{succ (max u2 u1), succ u2} a b] => self.0) (CategoryTheory.Subobject.{u1, u2} V _inst_1 (HomologicalComplex.x.{u1, u2, u3} ι V _inst_1 _inst_2 c C₂ i)) V (HasLiftT.mk.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 (HomologicalComplex.x.{u1, u2, u3} ι V _inst_1 _inst_2 c C₂ i)) V (CoeTCₓ.coe.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 (HomologicalComplex.x.{u1, u2, u3} ι V _inst_1 _inst_2 c C₂ i)) V (coeBase.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 (HomologicalComplex.x.{u1, u2, u3} ι V _inst_1 _inst_2 c C₂ i)) V (CategoryTheory.Subobject.hasCoe.{u1, u2} V _inst_1 (HomologicalComplex.x.{u1, u2, u3} ι V _inst_1 _inst_2 c C₂ i))))) (HomologicalComplex.cycles.{u1, u2, u3} ι V _inst_1 _inst_2 c C₂ (CategoryTheory.Limits.hasKernels_of_hasEqualizers.{u1, u2} V _inst_1 _inst_2 _inst_3) i))) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) ((fun (a : Type.{max u2 u1}) (b : Type.{u2}) [self : HasLiftT.{succ (max u2 u1), succ u2} a b] => self.0) (CategoryTheory.Subobject.{u1, u2} V _inst_1 (HomologicalComplex.x.{u1, u2, u3} ι V _inst_1 _inst_2 c C₁ i)) V (HasLiftT.mk.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 (HomologicalComplex.x.{u1, u2, u3} ι V _inst_1 _inst_2 c C₁ i)) V (CoeTCₓ.coe.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 (HomologicalComplex.x.{u1, u2, u3} ι V _inst_1 _inst_2 c C₁ i)) V (coeBase.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 (HomologicalComplex.x.{u1, u2, u3} ι V _inst_1 _inst_2 c C₁ i)) V (CategoryTheory.Subobject.hasCoe.{u1, u2} V _inst_1 (HomologicalComplex.x.{u1, u2, u3} ι V _inst_1 _inst_2 c C₁ i))))) (HomologicalComplex.boundaries.{u1, u2, u3} ι V _inst_1 _inst_2 c _inst_4 C₁ i)) ((fun (a : Type.{max u2 u1}) (b : Type.{u2}) [self : HasLiftT.{succ (max u2 u1), succ u2} a b] => self.0) (CategoryTheory.Subobject.{u1, u2} V _inst_1 (HomologicalComplex.x.{u1, u2, u3} ι V _inst_1 _inst_2 c C₂ i)) V (HasLiftT.mk.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 (HomologicalComplex.x.{u1, u2, u3} ι V _inst_1 _inst_2 c C₂ i)) V (CoeTCₓ.coe.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 (HomologicalComplex.x.{u1, u2, u3} ι V _inst_1 _inst_2 c C₂ i)) V (coeBase.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 (HomologicalComplex.x.{u1, u2, u3} ι V _inst_1 _inst_2 c C₂ i)) V (CategoryTheory.Subobject.hasCoe.{u1, u2} V _inst_1 (HomologicalComplex.x.{u1, u2, u3} ι V _inst_1 _inst_2 c C₂ i))))) (HomologicalComplex.boundaries.{u1, u2, u3} ι V _inst_1 _inst_2 c _inst_4 C₂ i)) ((fun (a : Type.{max u2 u1}) (b : Type.{u2}) [self : HasLiftT.{succ (max u2 u1), succ u2} a b] => self.0) (CategoryTheory.Subobject.{u1, u2} V _inst_1 (HomologicalComplex.x.{u1, u2, u3} ι V _inst_1 _inst_2 c C₂ i)) V (HasLiftT.mk.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 (HomologicalComplex.x.{u1, u2, u3} ι V _inst_1 _inst_2 c C₂ i)) V (CoeTCₓ.coe.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 (HomologicalComplex.x.{u1, u2, u3} ι V _inst_1 _inst_2 c C₂ i)) V (coeBase.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 (HomologicalComplex.x.{u1, u2, u3} ι V _inst_1 _inst_2 c C₂ i)) V (CategoryTheory.Subobject.hasCoe.{u1, u2} V _inst_1 (HomologicalComplex.x.{u1, u2, u3} ι V _inst_1 _inst_2 c C₂ i))))) (HomologicalComplex.cycles.{u1, u2, u3} ι V _inst_1 _inst_2 c C₂ (CategoryTheory.Limits.hasKernels_of_hasEqualizers.{u1, u2} V _inst_1 _inst_2 _inst_3) i)) (boundariesMap.{u1, u2, u3} ι V _inst_1 _inst_2 c _inst_4 _inst_5 C₁ C₂ f i) (HomologicalComplex.boundariesToCycles.{u1, u2, u3} ι V _inst_1 _inst_2 c (CategoryTheory.Limits.hasKernels_of_hasEqualizers.{u1, u2} V _inst_1 _inst_2 _inst_3) _inst_4 C₂ i)) (CategoryTheory.CategoryStruct.comp.{u1, u2} V (CategoryTheory.Category.toCategoryStruct.{u1, u2} V _inst_1) ((fun (a : Type.{max u2 u1}) (b : Type.{u2}) [self : HasLiftT.{succ (max u2 u1), succ u2} a b] => self.0) (CategoryTheory.Subobject.{u1, u2} V _inst_1 (HomologicalComplex.x.{u1, u2, u3} ι V _inst_1 _inst_2 c C₁ i)) V (HasLiftT.mk.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 (HomologicalComplex.x.{u1, u2, u3} ι V _inst_1 _inst_2 c C₁ i)) V (CoeTCₓ.coe.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 (HomologicalComplex.x.{u1, u2, u3} ι V _inst_1 _inst_2 c C₁ i)) V (coeBase.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 (HomologicalComplex.x.{u1, u2, u3} ι V _inst_1 _inst_2 c C₁ i)) V (CategoryTheory.Subobject.hasCoe.{u1, u2} V _inst_1 (HomologicalComplex.x.{u1, u2, u3} ι V _inst_1 _inst_2 c C₁ i))))) (HomologicalComplex.boundaries.{u1, u2, u3} ι V _inst_1 _inst_2 c _inst_4 C₁ i)) ((fun (a : Type.{max u2 u1}) (b : Type.{u2}) [self : HasLiftT.{succ (max u2 u1), succ u2} a b] => self.0) (CategoryTheory.Subobject.{u1, u2} V _inst_1 (HomologicalComplex.x.{u1, u2, u3} ι V _inst_1 _inst_2 c C₁ i)) V (HasLiftT.mk.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 (HomologicalComplex.x.{u1, u2, u3} ι V _inst_1 _inst_2 c C₁ i)) V (CoeTCₓ.coe.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 (HomologicalComplex.x.{u1, u2, u3} ι V _inst_1 _inst_2 c C₁ i)) V (coeBase.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 (HomologicalComplex.x.{u1, u2, u3} ι V _inst_1 _inst_2 c C₁ i)) V (CategoryTheory.Subobject.hasCoe.{u1, u2} V _inst_1 (HomologicalComplex.x.{u1, u2, u3} ι V _inst_1 _inst_2 c C₁ i))))) (HomologicalComplex.cycles.{u1, u2, u3} ι V _inst_1 _inst_2 c C₁ (CategoryTheory.Limits.hasKernels_of_hasEqualizers.{u1, u2} V _inst_1 _inst_2 _inst_3) i)) ((fun (a : Type.{max u2 u1}) (b : Type.{u2}) [self : HasLiftT.{succ (max u2 u1), succ u2} a b] => self.0) (CategoryTheory.Subobject.{u1, u2} V _inst_1 (HomologicalComplex.x.{u1, u2, u3} ι V _inst_1 _inst_2 c C₂ i)) V (HasLiftT.mk.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 (HomologicalComplex.x.{u1, u2, u3} ι V _inst_1 _inst_2 c C₂ i)) V (CoeTCₓ.coe.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 (HomologicalComplex.x.{u1, u2, u3} ι V _inst_1 _inst_2 c C₂ i)) V (coeBase.{succ (max u2 u1), succ u2} (CategoryTheory.Subobject.{u1, u2} V _inst_1 (HomologicalComplex.x.{u1, u2, u3} ι V _inst_1 _inst_2 c C₂ i)) V (CategoryTheory.Subobject.hasCoe.{u1, u2} V _inst_1 (HomologicalComplex.x.{u1, u2, u3} ι V _inst_1 _inst_2 c C₂ i))))) (HomologicalComplex.cycles.{u1, u2, u3} ι V _inst_1 _inst_2 c C₂ (CategoryTheory.Limits.hasKernels_of_hasEqualizers.{u1, u2} V _inst_1 _inst_2 _inst_3) i)) (HomologicalComplex.boundariesToCycles.{u1, u2, u3} ι V _inst_1 _inst_2 c (CategoryTheory.Limits.hasKernels_of_hasEqualizers.{u1, u2} V _inst_1 _inst_2 _inst_3) _inst_4 C₁ i) (cyclesMap.{u1, u2, u3} ι V _inst_1 _inst_2 c (CategoryTheory.Limits.hasKernels_of_hasEqualizers.{u1, u2} V _inst_1 _inst_2 _inst_3) C₁ C₂ f i))
+but is expected to have type
+ forall {ι : Type.{u1}} {V : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u2, u3} V] [_inst_2 : CategoryTheory.Limits.HasZeroMorphisms.{u2, u3} V _inst_1] {c : ComplexShape.{u1} ι} [_inst_3 : CategoryTheory.Limits.HasEqualizers.{u2, u3} V _inst_1] [_inst_4 : CategoryTheory.Limits.HasImages.{u2, u3} V _inst_1] [_inst_5 : CategoryTheory.Limits.HasImageMaps.{u2, u3} V _inst_1 _inst_4] {C₁ : HomologicalComplex.{u2, u3, u1} ι V _inst_1 _inst_2 c} {C₂ : HomologicalComplex.{u2, u3, u1} ι V _inst_1 _inst_2 c} (f : Quiver.Hom.{max (succ u2) (succ u1), max (max u3 u2) u1} (HomologicalComplex.{u2, u3, u1} ι V _inst_1 _inst_2 c) (CategoryTheory.CategoryStruct.toQuiver.{max u2 u1, max (max u3 u2) u1} (HomologicalComplex.{u2, u3, u1} ι V _inst_1 _inst_2 c) (CategoryTheory.Category.toCategoryStruct.{max u2 u1, max (max u3 u2) u1} (HomologicalComplex.{u2, u3, u1} ι V _inst_1 _inst_2 c) (HomologicalComplex.instCategoryHomologicalComplex.{u2, u3, u1} ι V _inst_1 _inst_2 c))) C₁ C₂) (i : ι), Eq.{succ u2} (Quiver.Hom.{succ u2, u3} V (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} V (CategoryTheory.Category.toCategoryStruct.{u2, u3} V _inst_1)) (Prefunctor.obj.{max (succ u3) (succ u2), succ u2, max u3 u2, u3} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₁ i)) (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, max u3 u2} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₁ i)) (CategoryTheory.Category.toCategoryStruct.{max u3 u2, max u3 u2} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₁ i)) (Preorder.smallCategory.{max u3 u2} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₁ i)) (PartialOrder.toPreorder.{max u3 u2} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₁ i)) (CategoryTheory.instPartialOrderSubobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₁ i)))))) V (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} V (CategoryTheory.Category.toCategoryStruct.{u2, u3} V _inst_1)) (CategoryTheory.Functor.toPrefunctor.{max u3 u2, u2, max u3 u2, u3} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₁ i)) (Preorder.smallCategory.{max u3 u2} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₁ i)) (PartialOrder.toPreorder.{max u3 u2} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₁ i)) (CategoryTheory.instPartialOrderSubobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₁ i)))) V _inst_1 (CategoryTheory.Subobject.underlying.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₁ i))) (HomologicalComplex.boundaries.{u2, u3, u1} ι V _inst_1 _inst_2 c _inst_4 C₁ i)) (Prefunctor.obj.{max (succ u3) (succ u2), succ u2, max u3 u2, u3} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₂ i)) (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, max u3 u2} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₂ i)) (CategoryTheory.Category.toCategoryStruct.{max u3 u2, max u3 u2} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₂ i)) (Preorder.smallCategory.{max u3 u2} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₂ i)) (PartialOrder.toPreorder.{max u3 u2} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₂ i)) (CategoryTheory.instPartialOrderSubobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₂ i)))))) V (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} V (CategoryTheory.Category.toCategoryStruct.{u2, u3} V _inst_1)) (CategoryTheory.Functor.toPrefunctor.{max u3 u2, u2, max u3 u2, u3} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₂ i)) (Preorder.smallCategory.{max u3 u2} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₂ i)) (PartialOrder.toPreorder.{max u3 u2} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₂ i)) (CategoryTheory.instPartialOrderSubobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₂ i)))) V _inst_1 (CategoryTheory.Subobject.underlying.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₂ i))) (HomologicalComplex.cycles.{u2, u3, u1} ι V _inst_1 _inst_2 c C₂ (CategoryTheory.Limits.hasKernels_of_hasEqualizers.{u2, u3} V _inst_1 _inst_2 _inst_3) i))) (CategoryTheory.CategoryStruct.comp.{u2, u3} V (CategoryTheory.Category.toCategoryStruct.{u2, u3} V _inst_1) (Prefunctor.obj.{max (succ u3) (succ u2), succ u2, max u3 u2, u3} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₁ i)) (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, max u3 u2} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₁ i)) (CategoryTheory.Category.toCategoryStruct.{max u3 u2, max u3 u2} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₁ i)) (Preorder.smallCategory.{max u3 u2} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₁ i)) (PartialOrder.toPreorder.{max u3 u2} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₁ i)) (CategoryTheory.instPartialOrderSubobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₁ i)))))) V (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} V (CategoryTheory.Category.toCategoryStruct.{u2, u3} V _inst_1)) (CategoryTheory.Functor.toPrefunctor.{max u3 u2, u2, max u3 u2, u3} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₁ i)) (Preorder.smallCategory.{max u3 u2} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₁ i)) (PartialOrder.toPreorder.{max u3 u2} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₁ i)) (CategoryTheory.instPartialOrderSubobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₁ i)))) V _inst_1 (CategoryTheory.Subobject.underlying.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₁ i))) (HomologicalComplex.boundaries.{u2, u3, u1} ι V _inst_1 _inst_2 c _inst_4 C₁ i)) (Prefunctor.obj.{max (succ u3) (succ u2), succ u2, max u3 u2, u3} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₂ i)) (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, max u3 u2} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₂ i)) (CategoryTheory.Category.toCategoryStruct.{max u3 u2, max u3 u2} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₂ i)) (Preorder.smallCategory.{max u3 u2} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₂ i)) (PartialOrder.toPreorder.{max u3 u2} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₂ i)) (CategoryTheory.instPartialOrderSubobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₂ i)))))) V (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} V (CategoryTheory.Category.toCategoryStruct.{u2, u3} V _inst_1)) (CategoryTheory.Functor.toPrefunctor.{max u3 u2, u2, max u3 u2, u3} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₂ i)) (Preorder.smallCategory.{max u3 u2} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₂ i)) (PartialOrder.toPreorder.{max u3 u2} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₂ i)) (CategoryTheory.instPartialOrderSubobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₂ i)))) V _inst_1 (CategoryTheory.Subobject.underlying.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₂ i))) (HomologicalComplex.boundaries.{u2, u3, u1} ι V _inst_1 _inst_2 c _inst_4 C₂ i)) (Prefunctor.obj.{max (succ u3) (succ u2), succ u2, max u3 u2, u3} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₂ i)) (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, max u3 u2} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₂ i)) (CategoryTheory.Category.toCategoryStruct.{max u3 u2, max u3 u2} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₂ i)) (Preorder.smallCategory.{max u3 u2} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₂ i)) (PartialOrder.toPreorder.{max u3 u2} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₂ i)) (CategoryTheory.instPartialOrderSubobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₂ i)))))) V (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} V (CategoryTheory.Category.toCategoryStruct.{u2, u3} V _inst_1)) (CategoryTheory.Functor.toPrefunctor.{max u3 u2, u2, max u3 u2, u3} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₂ i)) (Preorder.smallCategory.{max u3 u2} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₂ i)) (PartialOrder.toPreorder.{max u3 u2} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₂ i)) (CategoryTheory.instPartialOrderSubobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₂ i)))) V _inst_1 (CategoryTheory.Subobject.underlying.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₂ i))) (HomologicalComplex.cycles.{u2, u3, u1} ι V _inst_1 _inst_2 c C₂ (CategoryTheory.Limits.hasKernels_of_hasEqualizers.{u2, u3} V _inst_1 _inst_2 _inst_3) i)) (boundariesMap.{u2, u3, u1} ι V _inst_1 _inst_2 c _inst_4 _inst_5 C₁ C₂ f i) (HomologicalComplex.boundariesToCycles.{u2, u3, u1} ι V _inst_1 _inst_2 c (CategoryTheory.Limits.hasKernels_of_hasEqualizers.{u2, u3} V _inst_1 _inst_2 _inst_3) _inst_4 C₂ i)) (CategoryTheory.CategoryStruct.comp.{u2, u3} V (CategoryTheory.Category.toCategoryStruct.{u2, u3} V _inst_1) (Prefunctor.obj.{max (succ u3) (succ u2), succ u2, max u3 u2, u3} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₁ i)) (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, max u3 u2} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₁ i)) (CategoryTheory.Category.toCategoryStruct.{max u3 u2, max u3 u2} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₁ i)) (Preorder.smallCategory.{max u3 u2} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₁ i)) (PartialOrder.toPreorder.{max u3 u2} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₁ i)) (CategoryTheory.instPartialOrderSubobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₁ i)))))) V (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} V (CategoryTheory.Category.toCategoryStruct.{u2, u3} V _inst_1)) (CategoryTheory.Functor.toPrefunctor.{max u3 u2, u2, max u3 u2, u3} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₁ i)) (Preorder.smallCategory.{max u3 u2} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₁ i)) (PartialOrder.toPreorder.{max u3 u2} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₁ i)) (CategoryTheory.instPartialOrderSubobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₁ i)))) V _inst_1 (CategoryTheory.Subobject.underlying.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₁ i))) (HomologicalComplex.boundaries.{u2, u3, u1} ι V _inst_1 _inst_2 c _inst_4 C₁ i)) (Prefunctor.obj.{max (succ u3) (succ u2), succ u2, max u3 u2, u3} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₁ i)) (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, max u3 u2} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₁ i)) (CategoryTheory.Category.toCategoryStruct.{max u3 u2, max u3 u2} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₁ i)) (Preorder.smallCategory.{max u3 u2} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₁ i)) (PartialOrder.toPreorder.{max u3 u2} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₁ i)) (CategoryTheory.instPartialOrderSubobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₁ i)))))) V (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} V (CategoryTheory.Category.toCategoryStruct.{u2, u3} V _inst_1)) (CategoryTheory.Functor.toPrefunctor.{max u3 u2, u2, max u3 u2, u3} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₁ i)) (Preorder.smallCategory.{max u3 u2} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₁ i)) (PartialOrder.toPreorder.{max u3 u2} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₁ i)) (CategoryTheory.instPartialOrderSubobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₁ i)))) V _inst_1 (CategoryTheory.Subobject.underlying.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₁ i))) (HomologicalComplex.cycles.{u2, u3, u1} ι V _inst_1 _inst_2 c C₁ (CategoryTheory.Limits.hasKernels_of_hasEqualizers.{u2, u3} V _inst_1 _inst_2 _inst_3) i)) (Prefunctor.obj.{max (succ u3) (succ u2), succ u2, max u3 u2, u3} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₂ i)) (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, max u3 u2} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₂ i)) (CategoryTheory.Category.toCategoryStruct.{max u3 u2, max u3 u2} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₂ i)) (Preorder.smallCategory.{max u3 u2} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₂ i)) (PartialOrder.toPreorder.{max u3 u2} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₂ i)) (CategoryTheory.instPartialOrderSubobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₂ i)))))) V (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} V (CategoryTheory.Category.toCategoryStruct.{u2, u3} V _inst_1)) (CategoryTheory.Functor.toPrefunctor.{max u3 u2, u2, max u3 u2, u3} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₂ i)) (Preorder.smallCategory.{max u3 u2} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₂ i)) (PartialOrder.toPreorder.{max u3 u2} (CategoryTheory.Subobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₂ i)) (CategoryTheory.instPartialOrderSubobject.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₂ i)))) V _inst_1 (CategoryTheory.Subobject.underlying.{u2, u3} V _inst_1 (HomologicalComplex.X.{u2, u3, u1} ι V _inst_1 _inst_2 c C₂ i))) (HomologicalComplex.cycles.{u2, u3, u1} ι V _inst_1 _inst_2 c C₂ (CategoryTheory.Limits.hasKernels_of_hasEqualizers.{u2, u3} V _inst_1 _inst_2 _inst_3) i)) (HomologicalComplex.boundariesToCycles.{u2, u3, u1} ι V _inst_1 _inst_2 c (CategoryTheory.Limits.hasKernels_of_hasEqualizers.{u2, u3} V _inst_1 _inst_2 _inst_3) _inst_4 C₁ i) (cyclesMap.{u2, u3, u1} ι V _inst_1 _inst_2 c (CategoryTheory.Limits.hasKernels_of_hasEqualizers.{u2, u3} V _inst_1 _inst_2 _inst_3) C₁ C₂ f i))
+Case conversion may be inaccurate. Consider using '#align boundaries_to_cycles_naturality boundariesToCycles_naturalityₓ'. -/
@[simp, reassoc.1]
theorem boundariesToCycles_naturality (i : ι) :
boundariesMap f i ≫ C₂.boundariesToCycles i = C₁.boundariesToCycles i ≫ cyclesMap f i :=
@@ -290,6 +400,7 @@ theorem boundariesToCycles_naturality (i : ι) :
variable (V c)
+#print boundariesToCyclesNatTrans /-
/-- The natural transformation from the boundaries functor to the cycles functor. -/
@[simps]
def boundariesToCyclesNatTrans (i : ι) : boundariesFunctor V c i ⟶ cyclesFunctor V c i
@@ -297,7 +408,9 @@ def boundariesToCyclesNatTrans (i : ι) : boundariesFunctor V c i ⟶ cyclesFunc
app C := C.boundariesToCycles i
naturality' C₁ C₂ f := boundariesToCycles_naturality f i
#align boundaries_to_cycles_nat_trans boundariesToCyclesNatTrans
+-/
+#print homologyFunctor /-
/-- The `i`-th homology, as a functor to `V`. -/
@[simps]
def homologyFunctor [HasCokernels V] (i : ι) : HomologicalComplex V c ⥤ V
@@ -316,7 +429,9 @@ def homologyFunctor [HasCokernels V] (i : ι) : HomologicalComplex V c ⥤ V
simp only [hom.sq_from_comp, kernel_subobject_map_comp, homology.π_map_assoc, homology.π_map,
category.assoc]
#align homology_functor homologyFunctor
+-/
+#print gradedHomologyFunctor /-
/-- The homology functor from `ι`-indexed complexes to `ι`-graded objects in `V`. -/
@[simps]
def gradedHomologyFunctor [HasCokernels V] : HomologicalComplex V c ⥤ GradedObject ι V
@@ -332,6 +447,7 @@ def gradedHomologyFunctor [HasCokernels V] : HomologicalComplex V c ⥤ GradedOb
simp only [hom.sq_from_comp, kernel_subobject_map_comp, homology.π_map_assoc, pi.comp_apply,
homology.π_map, homologyFunctor_map, category.assoc]
#align graded_homology_functor gradedHomologyFunctor
+-/
end
mathlib commit https://github.com/leanprover-community/mathlib/commit/9da1b3534b65d9661eb8f42443598a92bbb49211
@@ -47,7 +47,7 @@ section Cycles
variable [HasKernels V]
/-- The cycles at index `i`, as a subobject. -/
-abbrev cycles (i : ι) : Subobject (C.x i) :=
+abbrev cycles (i : ι) : Subobject (C.pt i) :=
kernelSubobject (C.dFrom i)
#align homological_complex.cycles HomologicalComplex.cycles
@@ -77,7 +77,7 @@ section Boundaries
variable [HasImages V]
/-- The boundaries at index `i`, as a subobject. -/
-abbrev boundaries (C : HomologicalComplex V c) (j : ι) : Subobject (C.x j) :=
+abbrev boundaries (C : HomologicalComplex V c) (j : ι) : Subobject (C.pt j) :=
imageSubobject (C.dTo j)
#align homological_complex.boundaries HomologicalComplex.boundaries
mathlib commit https://github.com/leanprover-community/mathlib/commit/bd9851ca476957ea4549eb19b40e7b5ade9428cc
Empty lines were removed by executing the following Python script twice
import os
import re
# Loop through each file in the repository
for dir_path, dirs, files in os.walk('.'):
for filename in files:
if filename.endswith('.lean'):
file_path = os.path.join(dir_path, filename)
# Open the file and read its contents
with open(file_path, 'r') as file:
content = file.read()
# Use a regular expression to replace sequences of "variable" lines separated by empty lines
# with sequences without empty lines
modified_content = re.sub(r'(variable.*\n)\n(variable(?! .* in))', r'\1\2', content)
# Write the modified content back to the file
with open(file_path, 'w') as file:
file.write(modified_content)
@@ -35,9 +35,7 @@ universe v u
open CategoryTheory CategoryTheory.Limits
variable {ι : Type*}
-
variable {V : Type u} [Category.{v} V] [HasZeroMorphisms V]
-
variable {c : ComplexShape ι} (C : HomologicalComplex V c)
open scoped Classical
@@ -203,7 +201,6 @@ open HomologicalComplex
section
variable [HasKernels V]
-
variable {C₁ C₂ C₃ : HomologicalComplex V c} (f : C₁ ⟶ C₂)
/-- The morphism between cycles induced by a chain map. -/
@@ -250,7 +247,6 @@ end
section
variable [HasImages V] [HasImageMaps V]
-
variable {C₁ C₂ C₃ : HomologicalComplex V c} (f : C₁ ⟶ C₂)
/-- The morphism between boundaries induced by a chain map. -/
@@ -275,7 +271,6 @@ section
variable [HasEqualizers V] [HasImages V] [HasImageMaps V]
-
variable {C₁ C₂ : HomologicalComplex V c} (f : C₁ ⟶ C₂)
-- Porting note: Originally `@[simp, reassoc.1]`
open Classical
(#11199)
We remove all but one open Classical
s, instead preferring to use open scoped Classical
. The only real side-effect this led to is moving a couple declarations to use Exists.choose
instead of Classical.choose
.
The first few commits are explicitly labelled regex replaces for ease of review.
@@ -40,7 +40,8 @@ variable {V : Type u} [Category.{v} V] [HasZeroMorphisms V]
variable {c : ComplexShape ι} (C : HomologicalComplex V c)
-open Classical ZeroObject
+open scoped Classical
+open ZeroObject
noncomputable section
@@ -211,7 +211,7 @@ abbrev cycles'Map (f : C₁ ⟶ C₂) (i : ι) : (C₁.cycles' i : V) ⟶ (C₂.
#align cycles_map cycles'Map
-- Porting note: Originally `@[simp, reassoc.1, elementwise]`
-@[reassoc, elementwise] -- @[simp] -- Porting note: simp can prove this
+@[reassoc, elementwise] -- @[simp] -- Porting note (#10618): simp can prove this
theorem cycles'Map_arrow (f : C₁ ⟶ C₂) (i : ι) :
cycles'Map f i ≫ (C₂.cycles' i).arrow = (C₁.cycles' i).arrow ≫ f.f i := by simp
#align cycles_map_arrow cycles'Map_arrow
This incorporates changes from
nightly-testing
are unexciting: we need to fully qualify a few names)They can all be closed when this is merged.
Co-authored-by: Scott Morrison <scott.morrison@gmail.com> Co-authored-by: Eric Wieser <wieser.eric@gmail.com>
@@ -303,16 +303,6 @@ def homology'Functor [HasCokernels V] (i : ι) : HomologicalComplex V c ⥤ V wh
-- here, but universe implementation details get in the way...
obj C := C.homology' i
map {C₁ C₂} f := homology'.map _ _ (f.sqTo i) (f.sqFrom i) rfl
- map_id _ := by
- simp only
- ext1
- simp only [homology'.π_map, kernelSubobjectMap_id, Hom.sqFrom_id, Category.id_comp,
- Category.comp_id]
- map_comp _ _ := by
- simp only
- ext1
- simp only [Hom.sqFrom_comp, kernelSubobjectMap_comp, homology'.π_map_assoc, homology'.π_map,
- Category.assoc]
#align homology_functor homology'Functor
/-- The homology functor from `ι`-indexed complexes to `ι`-graded objects in `V`. -/
@@ -320,18 +310,6 @@ def homology'Functor [HasCokernels V] (i : ι) : HomologicalComplex V c ⥤ V wh
def gradedHomology'Functor [HasCokernels V] : HomologicalComplex V c ⥤ GradedObject ι V where
obj C i := C.homology' i
map {C C'} f i := (homology'Functor V c i).map f
- map_id _ := by
- ext
- simp only [GradedObject.categoryOfGradedObjects_id]
- ext
- simp only [homology'.π_map, homology'Functor_map, kernelSubobjectMap_id, Hom.sqFrom_id,
- Category.id_comp, Category.comp_id]
- map_comp _ _ := by
- ext
- simp only [GradedObject.categoryOfGradedObjects_comp]
- ext
- simp only [Hom.sqFrom_comp, kernelSubobjectMap_comp, homology'.π_map_assoc, homology'.π_map,
- homology'Functor_map, Category.assoc]
#align graded_homology_functor gradedHomology'Functor
end
This PR renames definitions of the current homology API (adding a '
to homology
, cycles
, QuasiIso
) so as to create space for the development of the new homology API of homological complexes: this PR also contains the new definition of HomologicalComplex.homology
which involves the homology theory of short complexes.
Co-authored-by: Joël Riou <37772949+joelriou@users.noreply.github.com>
@@ -12,14 +12,21 @@ import Mathlib.CategoryTheory.GradedObject
/-!
# The homology of a complex
-Given `C : HomologicalComplex V c`, we have `C.cycles i` and `C.boundaries i`,
+Given `C : HomologicalComplex V c`, we have `C.cycles' i` and `C.boundaries i`,
both defined as subobjects of `C.X i`.
We show these are functorial with respect to chain maps,
-as `C.cyclesMap f i` and `C.boundariesMap f i`.
+as `cyclesMap' f i` and `boundariesMap f i`.
-As a consequence we construct `homologyFunctor i : HomologicalComplex V c ⥤ V`,
+As a consequence we construct `homologyFunctor' i : HomologicalComplex V c ⥤ V`,
computing the `i`-th homology.
+
+Note: Some definitions (specifically, names containing components `homology`, `cycles`)
+in this file have the suffix `'` so as to allow the development of the
+new homology API of homological complex (starting from
+`Algebra.Homology.ShortComplex.HomologicalComplex`). It is planned that these definitions
+shall be removed and replaced by the new API.
+
-/
@@ -44,22 +51,22 @@ section Cycles
variable [HasKernels V]
/-- The cycles at index `i`, as a subobject. -/
-abbrev cycles (i : ι) : Subobject (C.X i) :=
+abbrev cycles' (i : ι) : Subobject (C.X i) :=
kernelSubobject (C.dFrom i)
-#align homological_complex.cycles HomologicalComplex.cycles
+#align homological_complex.cycles HomologicalComplex.cycles'
-theorem cycles_eq_kernelSubobject {i j : ι} (r : c.Rel i j) :
- C.cycles i = kernelSubobject (C.d i j) :=
+theorem cycles'_eq_kernelSubobject {i j : ι} (r : c.Rel i j) :
+ C.cycles' i = kernelSubobject (C.d i j) :=
C.kernel_from_eq_kernel r
-#align homological_complex.cycles_eq_kernel_subobject HomologicalComplex.cycles_eq_kernelSubobject
+#align homological_complex.cycles_eq_kernel_subobject HomologicalComplex.cycles'_eq_kernelSubobject
-/-- The underlying object of `C.cycles i` is isomorphic to `kernel (C.d i j)`,
+/-- The underlying object of `C.cycles' i` is isomorphic to `kernel (C.d i j)`,
for any `j` such that `Rel i j`. -/
-def cyclesIsoKernel {i j : ι} (r : c.Rel i j) : (C.cycles i : V) ≅ kernel (C.d i j) :=
- Subobject.isoOfEq _ _ (C.cycles_eq_kernelSubobject r) ≪≫ kernelSubobjectIso (C.d i j)
-#align homological_complex.cycles_iso_kernel HomologicalComplex.cyclesIsoKernel
+def cycles'IsoKernel {i j : ι} (r : c.Rel i j) : (C.cycles' i : V) ≅ kernel (C.d i j) :=
+ Subobject.isoOfEq _ _ (C.cycles'_eq_kernelSubobject r) ≪≫ kernelSubobjectIso (C.d i j)
+#align homological_complex.cycles_iso_kernel HomologicalComplex.cycles'IsoKernel
-theorem cycles_eq_top {i} (h : ¬c.Rel i (c.next i)) : C.cycles i = ⊤ := by
+theorem cycles_eq_top {i} (h : ¬c.Rel i (c.next i)) : C.cycles' i = ⊤ := by
rw [eq_top_iff]
apply le_kernelSubobject
rw [C.dFrom_eq_zero h, comp_zero]
@@ -100,50 +107,52 @@ section
variable [HasKernels V] [HasImages V]
-theorem boundaries_le_cycles (C : HomologicalComplex V c) (i : ι) : C.boundaries i ≤ C.cycles i :=
+theorem boundaries_le_cycles' (C : HomologicalComplex V c) (i : ι) :
+ C.boundaries i ≤ C.cycles' i :=
image_le_kernel _ _ (C.dTo_comp_dFrom i)
-#align homological_complex.boundaries_le_cycles HomologicalComplex.boundaries_le_cycles
+#align homological_complex.boundaries_le_cycles HomologicalComplex.boundaries_le_cycles'
-/-- The canonical map from `boundaries i` to `cycles i`. -/
-abbrev boundariesToCycles (C : HomologicalComplex V c) (i : ι) :
- (C.boundaries i : V) ⟶ (C.cycles i : V) :=
+/-- The canonical map from `boundaries i` to `cycles' i`. -/
+abbrev boundariesToCycles' (C : HomologicalComplex V c) (i : ι) :
+ (C.boundaries i : V) ⟶ (C.cycles' i : V) :=
imageToKernel _ _ (C.dTo_comp_dFrom i)
-#align homological_complex.boundaries_to_cycles HomologicalComplex.boundariesToCycles
+#align homological_complex.boundaries_to_cycles HomologicalComplex.boundariesToCycles'
-/-- Prefer `boundariesToCycles`. -/
+/-- Prefer `boundariesToCycles'`. -/
@[simp 1100]
-theorem imageToKernel_as_boundariesToCycles (C : HomologicalComplex V c) (i : ι) (h) :
- (C.boundaries i).ofLE (C.cycles i) h = C.boundariesToCycles i := rfl
-#align homological_complex.image_to_kernel_as_boundaries_to_cycles HomologicalComplex.imageToKernel_as_boundariesToCycles
+theorem imageToKernel_as_boundariesToCycles' (C : HomologicalComplex V c) (i : ι) (h) :
+ (C.boundaries i).ofLE (C.cycles' i) h = C.boundariesToCycles' i := rfl
+#align homological_complex.image_to_kernel_as_boundaries_to_cycles HomologicalComplex.imageToKernel_as_boundariesToCycles'
variable [HasCokernels V]
/-- The homology of a complex at index `i`. -/
-abbrev homology (C : HomologicalComplex V c) (i : ι) : V :=
- _root_.homology (C.dTo i) (C.dFrom i) (C.dTo_comp_dFrom i)
-#align homological_complex.homology HomologicalComplex.homology
+abbrev homology' (C : HomologicalComplex V c) (i : ι) : V :=
+ _root_.homology' (C.dTo i) (C.dFrom i) (C.dTo_comp_dFrom i)
+#align homological_complex.homology HomologicalComplex.homology'
/-- The `j`th homology of a homological complex (as kernel of 'the differential from `Cⱼ`' modulo
the image of 'the differential to `Cⱼ`') is isomorphic to the kernel of `d : Cⱼ → Cₖ` modulo
the image of `d : Cᵢ → Cⱼ` when `Rel i j` and `Rel j k`. -/
-def homologyIso (C : HomologicalComplex V c) {i j k : ι} (hij : c.Rel i j) (hjk : c.Rel j k) :
- C.homology j ≅ _root_.homology (C.d i j) (C.d j k) (C.d_comp_d i j k) :=
- homology.mapIso _ _
+def homology'Iso (C : HomologicalComplex V c) {i j k : ι} (hij : c.Rel i j) (hjk : c.Rel j k) :
+ C.homology' j ≅ _root_.homology' (C.d i j) (C.d j k) (C.d_comp_d i j k) :=
+ homology'.mapIso _ _
(Arrow.isoMk (C.xPrevIso hij) (Iso.refl _) <| by dsimp; rw [C.dTo_eq hij, Category.comp_id])
(Arrow.isoMk (Iso.refl _) (C.xNextIso hjk) <| by
dsimp
rw [C.dFrom_comp_xNextIso hjk, Category.id_comp])
rfl
-#align homological_complex.homology_iso HomologicalComplex.homologyIso
+#align homological_complex.homology_iso HomologicalComplex.homology'Iso
end
end HomologicalComplex
/-- The 0th homology of a chain complex is isomorphic to the cokernel of `d : C₁ ⟶ C₀`. -/
-def ChainComplex.homologyZeroIso [HasKernels V] [HasImages V] [HasCokernels V]
- (C : ChainComplex V ℕ) [Epi (factorThruImage (C.d 1 0))] : C.homology 0 ≅ cokernel (C.d 1 0) :=
- (homology.mapIso _ _
+def ChainComplex.homology'ZeroIso [HasKernels V] [HasImages V] [HasCokernels V]
+ (C : ChainComplex V ℕ) [Epi (factorThruImage (C.d 1 0))] :
+ C.homology' 0 ≅ cokernel (C.d 1 0) :=
+ (homology'.mapIso _ _
(Arrow.isoMk (C.xPrevIso rfl) (Iso.refl _) <| by
rw [C.dTo_eq rfl]
exact (Category.comp_id _).symm : Arrow.mk (C.dTo 0) ≅ Arrow.mk (C.d 1 0))
@@ -152,38 +161,38 @@ def ChainComplex.homologyZeroIso [HasKernels V] [HasImages V] [HasCokernels V]
one_ne_zero <| by rwa [ChainComplex.next_nat_zero, Nat.zero_add] at h] :
Arrow.mk (C.dFrom 0) ≅ Arrow.mk 0)
rfl).trans <|
- homologyOfZeroRight _
-#align chain_complex.homology_zero_iso ChainComplex.homologyZeroIso
+ homology'OfZeroRight _
+#align chain_complex.homology_zero_iso ChainComplex.homology'ZeroIso
/-- The 0th cohomology of a cochain complex is isomorphic to the kernel of `d : C₀ → C₁`. -/
-def CochainComplex.homologyZeroIso [HasZeroObject V] [HasKernels V] [HasImages V] [HasCokernels V]
- (C : CochainComplex V ℕ) : C.homology 0 ≅ kernel (C.d 0 1) :=
- (homology.mapIso _ _
+def CochainComplex.homology'ZeroIso [HasZeroObject V] [HasKernels V] [HasImages V] [HasCokernels V]
+ (C : CochainComplex V ℕ) : C.homology' 0 ≅ kernel (C.d 0 1) :=
+ (homology'.mapIso _ _
(Arrow.isoMk (C.xPrevIsoSelf (by rw [CochainComplex.prev_nat_zero]; exact one_ne_zero))
(Iso.refl _) (by simp) : Arrow.mk (C.dTo 0) ≅ Arrow.mk 0)
(Arrow.isoMk (Iso.refl _) (C.xNextIso rfl) (by simp) :
Arrow.mk (C.dFrom 0) ≅ Arrow.mk (C.d 0 1)) <|
by simp).trans <|
- homologyOfZeroLeft _
-#align cochain_complex.homology_zero_iso CochainComplex.homologyZeroIso
+ homology'OfZeroLeft _
+#align cochain_complex.homology_zero_iso CochainComplex.homology'ZeroIso
/-- The `n + 1`th homology of a chain complex (as kernel of 'the differential from `Cₙ₊₁`' modulo
the image of 'the differential to `Cₙ₊₁`') is isomorphic to the kernel of `d : Cₙ₊₁ → Cₙ` modulo
the image of `d : Cₙ₊₂ → Cₙ₊₁`. -/
-def ChainComplex.homologySuccIso [HasKernels V] [HasImages V] [HasCokernels V]
+def ChainComplex.homology'SuccIso [HasKernels V] [HasImages V] [HasCokernels V]
(C : ChainComplex V ℕ) (n : ℕ) :
- C.homology (n + 1) ≅ homology (C.d (n + 2) (n + 1)) (C.d (n + 1) n) (C.d_comp_d _ _ _) :=
- C.homologyIso rfl rfl
-#align chain_complex.homology_succ_iso ChainComplex.homologySuccIso
+ C.homology' (n + 1) ≅ homology' (C.d (n + 2) (n + 1)) (C.d (n + 1) n) (C.d_comp_d _ _ _) :=
+ C.homology'Iso rfl rfl
+#align chain_complex.homology_succ_iso ChainComplex.homology'SuccIso
/-- The `n + 1`th cohomology of a cochain complex (as kernel of 'the differential from `Cₙ₊₁`'
modulo the image of 'the differential to `Cₙ₊₁`') is isomorphic to the kernel of `d : Cₙ₊₁ → Cₙ₊₂`
modulo the image of `d : Cₙ → Cₙ₊₁`. -/
-def CochainComplex.homologySuccIso [HasKernels V] [HasImages V] [HasCokernels V]
+def CochainComplex.homology'SuccIso [HasKernels V] [HasImages V] [HasCokernels V]
(C : CochainComplex V ℕ) (n : ℕ) :
- C.homology (n + 1) ≅ homology (C.d n (n + 1)) (C.d (n + 1) (n + 2)) (C.d_comp_d _ _ _) :=
- C.homologyIso rfl rfl
-#align cochain_complex.homology_succ_iso CochainComplex.homologySuccIso
+ C.homology' (n + 1) ≅ homology' (C.d n (n + 1)) (C.d (n + 1) (n + 2)) (C.d_comp_d _ _ _) :=
+ C.homology'Iso rfl rfl
+#align cochain_complex.homology_succ_iso CochainComplex.homology'SuccIso
open HomologicalComplex
@@ -197,40 +206,40 @@ variable [HasKernels V]
variable {C₁ C₂ C₃ : HomologicalComplex V c} (f : C₁ ⟶ C₂)
/-- The morphism between cycles induced by a chain map. -/
-abbrev cyclesMap (f : C₁ ⟶ C₂) (i : ι) : (C₁.cycles i : V) ⟶ (C₂.cycles i : V) :=
- Subobject.factorThru _ ((C₁.cycles i).arrow ≫ f.f i) (kernelSubobject_factors _ _ (by simp))
-#align cycles_map cyclesMap
+abbrev cycles'Map (f : C₁ ⟶ C₂) (i : ι) : (C₁.cycles' i : V) ⟶ (C₂.cycles' i : V) :=
+ Subobject.factorThru _ ((C₁.cycles' i).arrow ≫ f.f i) (kernelSubobject_factors _ _ (by simp))
+#align cycles_map cycles'Map
-- Porting note: Originally `@[simp, reassoc.1, elementwise]`
@[reassoc, elementwise] -- @[simp] -- Porting note: simp can prove this
-theorem cyclesMap_arrow (f : C₁ ⟶ C₂) (i : ι) :
- cyclesMap f i ≫ (C₂.cycles i).arrow = (C₁.cycles i).arrow ≫ f.f i := by simp
-#align cycles_map_arrow cyclesMap_arrow
+theorem cycles'Map_arrow (f : C₁ ⟶ C₂) (i : ι) :
+ cycles'Map f i ≫ (C₂.cycles' i).arrow = (C₁.cycles' i).arrow ≫ f.f i := by simp
+#align cycles_map_arrow cycles'Map_arrow
-attribute [simp 1100] cyclesMap_arrow_assoc
-attribute [simp] cyclesMap_arrow_apply
+attribute [simp 1100] cycles'Map_arrow_assoc
+attribute [simp] cycles'Map_arrow_apply
@[simp]
-theorem cyclesMap_id (i : ι) : cyclesMap (𝟙 C₁) i = 𝟙 _ := by
- dsimp only [cyclesMap]
+theorem cycles'Map_id (i : ι) : cycles'Map (𝟙 C₁) i = 𝟙 _ := by
+ dsimp only [cycles'Map]
simp
-#align cycles_map_id cyclesMap_id
+#align cycles_map_id cycles'Map_id
@[simp]
-theorem cyclesMap_comp (f : C₁ ⟶ C₂) (g : C₂ ⟶ C₃) (i : ι) :
- cyclesMap (f ≫ g) i = cyclesMap f i ≫ cyclesMap g i := by
- dsimp only [cyclesMap]
+theorem cycles'Map_comp (f : C₁ ⟶ C₂) (g : C₂ ⟶ C₃) (i : ι) :
+ cycles'Map (f ≫ g) i = cycles'Map f i ≫ cycles'Map g i := by
+ dsimp only [cycles'Map]
simp [Subobject.factorThru_right]
-#align cycles_map_comp cyclesMap_comp
+#align cycles_map_comp cycles'Map_comp
variable (V c)
/-- Cycles as a functor. -/
@[simps]
-def cyclesFunctor (i : ι) : HomologicalComplex V c ⥤ V where
- obj C := C.cycles i
- map {C₁ C₂} f := cyclesMap f i
-#align cycles_functor cyclesFunctor
+def cycles'Functor (i : ι) : HomologicalComplex V c ⥤ V where
+ obj C := C.cycles' i
+ map {C₁ C₂} f := cycles'Map f i
+#align cycles_functor cycles'Functor
end
@@ -270,58 +279,59 @@ variable {C₁ C₂ : HomologicalComplex V c} (f : C₁ ⟶ C₂)
-- Porting note: Originally `@[simp, reassoc.1]`
@[reassoc (attr := simp)]
-theorem boundariesToCycles_naturality (i : ι) :
- boundariesMap f i ≫ C₂.boundariesToCycles i = C₁.boundariesToCycles i ≫ cyclesMap f i := by
+theorem boundariesToCycles'_naturality (i : ι) :
+ boundariesMap f i ≫ C₂.boundariesToCycles' i =
+ C₁.boundariesToCycles' i ≫ cycles'Map f i := by
ext
simp
-#align boundaries_to_cycles_naturality boundariesToCycles_naturality
+#align boundaries_to_cycles_naturality boundariesToCycles'_naturality
variable (V c)
/-- The natural transformation from the boundaries functor to the cycles functor. -/
@[simps]
-def boundariesToCyclesNatTrans (i : ι) : boundariesFunctor V c i ⟶ cyclesFunctor V c i where
- app C := C.boundariesToCycles i
- naturality _ _ f := boundariesToCycles_naturality f i
-#align boundaries_to_cycles_nat_trans boundariesToCyclesNatTrans
+def boundariesToCycles'NatTrans (i : ι) : boundariesFunctor V c i ⟶ cycles'Functor V c i where
+ app C := C.boundariesToCycles' i
+ naturality _ _ f := boundariesToCycles'_naturality f i
+#align boundaries_to_cycles_nat_trans boundariesToCycles'NatTrans
/-- The `i`-th homology, as a functor to `V`. -/
@[simps]
-def homologyFunctor [HasCokernels V] (i : ι) : HomologicalComplex V c ⥤ V where
+def homology'Functor [HasCokernels V] (i : ι) : HomologicalComplex V c ⥤ V where
-- It would be nice if we could just write
-- `cokernel (boundariesToCyclesNatTrans V c i)`
-- here, but universe implementation details get in the way...
- obj C := C.homology i
- map {C₁ C₂} f := homology.map _ _ (f.sqTo i) (f.sqFrom i) rfl
+ obj C := C.homology' i
+ map {C₁ C₂} f := homology'.map _ _ (f.sqTo i) (f.sqFrom i) rfl
map_id _ := by
simp only
ext1
- simp only [homology.π_map, kernelSubobjectMap_id, Hom.sqFrom_id, Category.id_comp,
+ simp only [homology'.π_map, kernelSubobjectMap_id, Hom.sqFrom_id, Category.id_comp,
Category.comp_id]
map_comp _ _ := by
simp only
ext1
- simp only [Hom.sqFrom_comp, kernelSubobjectMap_comp, homology.π_map_assoc, homology.π_map,
+ simp only [Hom.sqFrom_comp, kernelSubobjectMap_comp, homology'.π_map_assoc, homology'.π_map,
Category.assoc]
-#align homology_functor homologyFunctor
+#align homology_functor homology'Functor
/-- The homology functor from `ι`-indexed complexes to `ι`-graded objects in `V`. -/
@[simps]
-def gradedHomologyFunctor [HasCokernels V] : HomologicalComplex V c ⥤ GradedObject ι V where
- obj C i := C.homology i
- map {C C'} f i := (homologyFunctor V c i).map f
+def gradedHomology'Functor [HasCokernels V] : HomologicalComplex V c ⥤ GradedObject ι V where
+ obj C i := C.homology' i
+ map {C C'} f i := (homology'Functor V c i).map f
map_id _ := by
ext
simp only [GradedObject.categoryOfGradedObjects_id]
ext
- simp only [homology.π_map, homologyFunctor_map, kernelSubobjectMap_id, Hom.sqFrom_id,
+ simp only [homology'.π_map, homology'Functor_map, kernelSubobjectMap_id, Hom.sqFrom_id,
Category.id_comp, Category.comp_id]
map_comp _ _ := by
ext
simp only [GradedObject.categoryOfGradedObjects_comp]
ext
- simp only [Hom.sqFrom_comp, kernelSubobjectMap_comp, homology.π_map_assoc, homology.π_map,
- homologyFunctor_map, Category.assoc]
-#align graded_homology_functor gradedHomologyFunctor
+ simp only [Hom.sqFrom_comp, kernelSubobjectMap_comp, homology'.π_map_assoc, homology'.π_map,
+ homology'Functor_map, Category.assoc]
+#align graded_homology_functor gradedHomology'Functor
end
Type _
and Sort _
(#6499)
We remove all possible occurences of Type _
and Sort _
in favor of Type*
and Sort*
.
This has nice performance benefits.
@@ -27,7 +27,7 @@ universe v u
open CategoryTheory CategoryTheory.Limits
-variable {ι : Type _}
+variable {ι : Type*}
variable {V : Type u} [Category.{v} V] [HasZeroMorphisms V]
@@ -2,16 +2,13 @@
Copyright (c) 2021 Scott Morrison. All rights reserved.
Released under Apache 2.0 license as described in the file LICENSE.
Authors: Scott Morrison
-
-! This file was ported from Lean 3 source module algebra.homology.homology
-! leanprover-community/mathlib commit 618ea3d5c99240cd7000d8376924906a148bf9ff
-! Please do not edit these lines, except to modify the commit id
-! if you have ported upstream changes.
-/
import Mathlib.Algebra.Homology.ImageToKernel
import Mathlib.Algebra.Homology.HomologicalComplex
import Mathlib.CategoryTheory.GradedObject
+#align_import algebra.homology.homology from "leanprover-community/mathlib"@"618ea3d5c99240cd7000d8376924906a148bf9ff"
+
/-!
# The homology of a complex
Co-authored-by: Komyyy <pol_tta@outlook.jp> Co-authored-by: Scott Morrison <scott.morrison@gmail.com> Co-authored-by: Scott Morrison <scott.morrison@anu.edu.au> Co-authored-by: Ruben Van de Velde <65514131+Ruben-VandeVelde@users.noreply.github.com> Co-authored-by: Mario Carneiro <di.gama@gmail.com>
@@ -205,11 +205,14 @@ abbrev cyclesMap (f : C₁ ⟶ C₂) (i : ι) : (C₁.cycles i : V) ⟶ (C₂.cy
#align cycles_map cyclesMap
-- Porting note: Originally `@[simp, reassoc.1, elementwise]`
-@[reassoc (attr := simp 1100), elementwise (attr := simp)]
+@[reassoc, elementwise] -- @[simp] -- Porting note: simp can prove this
theorem cyclesMap_arrow (f : C₁ ⟶ C₂) (i : ι) :
cyclesMap f i ≫ (C₂.cycles i).arrow = (C₁.cycles i).arrow ≫ f.f i := by simp
#align cycles_map_arrow cyclesMap_arrow
+attribute [simp 1100] cyclesMap_arrow_assoc
+attribute [simp] cyclesMap_arrow_apply
+
@[simp]
theorem cyclesMap_id (i : ι) : cyclesMap (𝟙 C₁) i = 𝟙 _ := by
dsimp only [cyclesMap]
Co-authored-by: Joël Riou <joel.riou@universite-paris-saclay.fr>
The unported dependencies are