algebra.homology.Module
⟷
Mathlib.Algebra.Homology.ModuleCat
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)
(last sync)
mathlib commit https://github.com/leanprover-community/mathlib/commit/65a1391a0106c9204fe45bc73a039f056558cb83
@@ -4,8 +4,8 @@ Released under Apache 2.0 license as described in the file LICENSE.
Authors: Scott Morrison
-/
import Algebra.Homology.Homotopy
-import Algebra.Category.Module.Abelian
-import Algebra.Category.Module.Subobject
+import Algebra.Category.ModuleCat.Abelian
+import Algebra.Category.ModuleCat.Subobject
import CategoryTheory.Limits.ConcreteCategory
#align_import algebra.homology.Module from "leanprover-community/mathlib"@"8af7091a43227e179939ba132e54e54e9f3b089a"
mathlib commit https://github.com/leanprover-community/mathlib/commit/65a1391a0106c9204fe45bc73a039f056558cb83
@@ -47,7 +47,7 @@ theorem homology'_ext {L M N K : ModuleCat R} {f : L ⟶ M} {g : M ⟶ N} (w : f
h = k := by
refine' cokernel_funext fun n => _
-- Gosh it would be nice if `equiv_rw` could directly use an isomorphism, or an enriched `≃`.
- equiv_rw (kernel_subobject_iso g ≪≫ ModuleCat.kernelIsoKer g).toLinearEquiv.toEquiv at n
+ equiv_rw (kernel_subobject_iso g ≪≫ ModuleCat.kernelIsoKer g).toLinearEquiv.toEquiv at n
convert w n <;> simp [to_kernel_subobject]
#align Module.homology_ext ModuleCat.homology'_ext
-/
mathlib commit https://github.com/leanprover-community/mathlib/commit/3365b20c2ffa7c35e47e5209b89ba9abdddf3ffe
@@ -34,12 +34,12 @@ variable {ι : Type _} {c : ComplexShape ι} {C D : HomologicalComplex (ModuleCa
namespace ModuleCat
-#print ModuleCat.homology_ext /-
+#print ModuleCat.homology'_ext /-
/-- To prove that two maps out of a homology group are equal,
it suffices to check they are equal on the images of cycles.
-/
-theorem homology_ext {L M N K : ModuleCat R} {f : L ⟶ M} {g : M ⟶ N} (w : f ≫ g = 0)
- {h k : homology f g w ⟶ K}
+theorem homology'_ext {L M N K : ModuleCat R} {f : L ⟶ M} {g : M ⟶ N} (w : f ≫ g = 0)
+ {h k : homology' f g w ⟶ K}
(w :
∀ x : LinearMap.ker g,
h (cokernel.π (imageToKernel _ _ w) (toKernelSubobject x)) =
@@ -49,61 +49,62 @@ theorem homology_ext {L M N K : ModuleCat R} {f : L ⟶ M} {g : M ⟶ N} (w : f
-- Gosh it would be nice if `equiv_rw` could directly use an isomorphism, or an enriched `≃`.
equiv_rw (kernel_subobject_iso g ≪≫ ModuleCat.kernelIsoKer g).toLinearEquiv.toEquiv at n
convert w n <;> simp [to_kernel_subobject]
-#align Module.homology_ext ModuleCat.homology_ext
+#align Module.homology_ext ModuleCat.homology'_ext
-/
-#print ModuleCat.toCycles /-
+#print ModuleCat.toCycles' /-
/-- Bundle an element `C.X i` such that `C.d_from i x = 0` as a term of `C.cycles i`. -/
-abbrev toCycles {C : HomologicalComplex (ModuleCat.{u} R) c} {i : ι}
- (x : LinearMap.ker (C.dFrom i)) : C.cycles i :=
+abbrev toCycles' {C : HomologicalComplex (ModuleCat.{u} R) c} {i : ι}
+ (x : LinearMap.ker (C.dFrom i)) : C.cycles' i :=
toKernelSubobject x
-#align Module.to_cycles ModuleCat.toCycles
+#align Module.to_cycles ModuleCat.toCycles'
-/
-#print ModuleCat.cycles_ext /-
+#print ModuleCat.cycles'_ext /-
@[ext]
-theorem cycles_ext {C : HomologicalComplex (ModuleCat.{u} R) c} {i : ι} {x y : C.cycles i}
- (w : (C.cycles i).arrow x = (C.cycles i).arrow y) : x = y :=
+theorem cycles'_ext {C : HomologicalComplex (ModuleCat.{u} R) c} {i : ι} {x y : C.cycles' i}
+ (w : (C.cycles' i).arrow x = (C.cycles' i).arrow y) : x = y :=
by
apply_fun (C.cycles i).arrow using (ModuleCat.mono_iff_injective _).mp (cycles C i).arrow_mono
exact w
-#align Module.cycles_ext ModuleCat.cycles_ext
+#align Module.cycles_ext ModuleCat.cycles'_ext
-/
attribute [local instance] concrete_category.has_coe_to_sort
-#print ModuleCat.cyclesMap_toCycles /-
+#print ModuleCat.cycles'Map_toCycles' /-
@[simp]
-theorem cyclesMap_toCycles (f : C ⟶ D) {i : ι} (x : LinearMap.ker (C.dFrom i)) :
- (cyclesMap f i) (toCycles x) = toCycles ⟨f.f i x.1, by simp [x.2]⟩ := by ext; simp
-#align Module.cycles_map_to_cycles ModuleCat.cyclesMap_toCycles
+theorem cycles'Map_toCycles' (f : C ⟶ D) {i : ι} (x : LinearMap.ker (C.dFrom i)) :
+ (cycles'Map f i) (toCycles' x) = toCycles' ⟨f.f i x.1, by simp [x.2]⟩ := by ext; simp
+#align Module.cycles_map_to_cycles ModuleCat.cycles'Map_toCycles'
-/
-#print ModuleCat.toHomology /-
+#print ModuleCat.toHomology' /-
/-- Build a term of `C.homology i` from an element `C.X i` such that `C.d_from i x = 0`. -/
-abbrev toHomology {C : HomologicalComplex (ModuleCat.{u} R) c} {i : ι}
- (x : LinearMap.ker (C.dFrom i)) : C.homology i :=
- homology.π (C.dTo i) (C.dFrom i) _ (toCycles x)
-#align Module.to_homology ModuleCat.toHomology
+abbrev toHomology' {C : HomologicalComplex (ModuleCat.{u} R) c} {i : ι}
+ (x : LinearMap.ker (C.dFrom i)) : C.homology' i :=
+ homology'.π (C.dTo i) (C.dFrom i) _ (toCycles' x)
+#align Module.to_homology ModuleCat.toHomology'
-/
-#print ModuleCat.homology_ext' /-
+#print ModuleCat.homology'_ext' /-
@[ext]
-theorem homology_ext' {M : ModuleCat R} (i : ι) {h k : C.homology i ⟶ M}
- (w : ∀ x : LinearMap.ker (C.dFrom i), h (toHomology x) = k (toHomology x)) : h = k :=
- homology_ext _ w
-#align Module.homology_ext' ModuleCat.homology_ext'
+theorem homology'_ext' {M : ModuleCat R} (i : ι) {h k : C.homology' i ⟶ M}
+ (w : ∀ x : LinearMap.ker (C.dFrom i), h (toHomology' x) = k (toHomology' x)) : h = k :=
+ homology'_ext _ w
+#align Module.homology_ext' ModuleCat.homology'_ext'
-/
/-- We give an alternative proof of `homology_map_eq_of_homotopy`,
specialized to the setting of `V = Module R`,
to demonstrate the use of extensionality lemmas for homology in `Module R`. -/
example (f g : C ⟶ D) (h : Homotopy f g) (i : ι) :
- (homologyFunctor (ModuleCat.{u} R) c i).map f = (homologyFunctor (ModuleCat.{u} R) c i).map g :=
+ (homology'Functor (ModuleCat.{u} R) c i).map f =
+ (homology'Functor (ModuleCat.{u} R) c i).map g :=
by
-- To check that two morphisms out of a homology group agree, it suffices to check on cycles:
ext
- simp only [homologyFunctor_map, homology.π_map_apply]
+ simp only [homology'Functor_map, homology'.π_map_apply]
-- To check that two elements are equal mod boundaries, it suffices to exhibit a boundary:
ext1
swap; exact (toPrev i h.hom) x.1
mathlib commit https://github.com/leanprover-community/mathlib/commit/ce64cd319bb6b3e82f31c2d38e79080d377be451
@@ -3,10 +3,10 @@ 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.Homotopy
-import Mathbin.Algebra.Category.Module.Abelian
-import Mathbin.Algebra.Category.Module.Subobject
-import Mathbin.CategoryTheory.Limits.ConcreteCategory
+import Algebra.Homology.Homotopy
+import Algebra.Category.Module.Abelian
+import Algebra.Category.Module.Subobject
+import CategoryTheory.Limits.ConcreteCategory
#align_import algebra.homology.Module from "leanprover-community/mathlib"@"8af7091a43227e179939ba132e54e54e9f3b089a"
mathlib commit https://github.com/leanprover-community/mathlib/commit/8ea5598db6caeddde6cb734aa179cc2408dbd345
@@ -2,17 +2,14 @@
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.Module
-! leanprover-community/mathlib commit 8af7091a43227e179939ba132e54e54e9f3b089a
-! Please do not edit these lines, except to modify the commit id
-! if you have ported upstream changes.
-/
import Mathbin.Algebra.Homology.Homotopy
import Mathbin.Algebra.Category.Module.Abelian
import Mathbin.Algebra.Category.Module.Subobject
import Mathbin.CategoryTheory.Limits.ConcreteCategory
+#align_import algebra.homology.Module from "leanprover-community/mathlib"@"8af7091a43227e179939ba132e54e54e9f3b089a"
+
/-!
# Complexes of modules
mathlib commit https://github.com/leanprover-community/mathlib/commit/2a0ce625dbb0ffbc7d1316597de0b25c1ec75303
@@ -37,6 +37,7 @@ variable {ι : Type _} {c : ComplexShape ι} {C D : HomologicalComplex (ModuleCa
namespace ModuleCat
+#print ModuleCat.homology_ext /-
/-- To prove that two maps out of a homology group are equal,
it suffices to check they are equal on the images of cycles.
-/
@@ -52,13 +53,17 @@ theorem homology_ext {L M N K : ModuleCat R} {f : L ⟶ M} {g : M ⟶ N} (w : f
equiv_rw (kernel_subobject_iso g ≪≫ ModuleCat.kernelIsoKer g).toLinearEquiv.toEquiv at n
convert w n <;> simp [to_kernel_subobject]
#align Module.homology_ext ModuleCat.homology_ext
+-/
+#print ModuleCat.toCycles /-
/-- Bundle an element `C.X i` such that `C.d_from i x = 0` as a term of `C.cycles i`. -/
abbrev toCycles {C : HomologicalComplex (ModuleCat.{u} R) c} {i : ι}
(x : LinearMap.ker (C.dFrom i)) : C.cycles i :=
toKernelSubobject x
#align Module.to_cycles ModuleCat.toCycles
+-/
+#print ModuleCat.cycles_ext /-
@[ext]
theorem cycles_ext {C : HomologicalComplex (ModuleCat.{u} R) c} {i : ι} {x y : C.cycles i}
(w : (C.cycles i).arrow x = (C.cycles i).arrow y) : x = y :=
@@ -66,25 +71,32 @@ theorem cycles_ext {C : HomologicalComplex (ModuleCat.{u} R) c} {i : ι} {x y :
apply_fun (C.cycles i).arrow using (ModuleCat.mono_iff_injective _).mp (cycles C i).arrow_mono
exact w
#align Module.cycles_ext ModuleCat.cycles_ext
+-/
attribute [local instance] concrete_category.has_coe_to_sort
+#print ModuleCat.cyclesMap_toCycles /-
@[simp]
theorem cyclesMap_toCycles (f : C ⟶ D) {i : ι} (x : LinearMap.ker (C.dFrom i)) :
(cyclesMap f i) (toCycles x) = toCycles ⟨f.f i x.1, by simp [x.2]⟩ := by ext; simp
#align Module.cycles_map_to_cycles ModuleCat.cyclesMap_toCycles
+-/
+#print ModuleCat.toHomology /-
/-- Build a term of `C.homology i` from an element `C.X i` such that `C.d_from i x = 0`. -/
abbrev toHomology {C : HomologicalComplex (ModuleCat.{u} R) c} {i : ι}
(x : LinearMap.ker (C.dFrom i)) : C.homology i :=
homology.π (C.dTo i) (C.dFrom i) _ (toCycles x)
#align Module.to_homology ModuleCat.toHomology
+-/
+#print ModuleCat.homology_ext' /-
@[ext]
theorem homology_ext' {M : ModuleCat R} (i : ι) {h k : C.homology i ⟶ M}
(w : ∀ x : LinearMap.ker (C.dFrom i), h (toHomology x) = k (toHomology x)) : h = k :=
homology_ext _ w
#align Module.homology_ext' ModuleCat.homology_ext'
+-/
/-- We give an alternative proof of `homology_map_eq_of_homotopy`,
specialized to the setting of `V = Module R`,
mathlib commit https://github.com/leanprover-community/mathlib/commit/bf9bbbcf0c1c1ead18280b0d010e417b10abb1b6
@@ -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.Module
-! leanprover-community/mathlib commit 70fd9563a21e7b963887c9360bd29b2393e6225a
+! leanprover-community/mathlib commit 8af7091a43227e179939ba132e54e54e9f3b089a
! Please do not edit these lines, except to modify the commit id
! if you have ported upstream changes.
-/
@@ -16,6 +16,9 @@ import Mathbin.CategoryTheory.Limits.ConcreteCategory
/-!
# Complexes of modules
+> THIS FILE IS SYNCHRONIZED WITH MATHLIB4.
+> Any changes to this file require a corresponding PR to mathlib4.
+
We provide some additional API to work with homological complexes in `Module R`.
-/
mathlib commit https://github.com/leanprover-community/mathlib/commit/5f25c089cb34db4db112556f23c50d12da81b297
@@ -46,7 +46,7 @@ theorem homology_ext {L M N K : ModuleCat R} {f : L ⟶ M} {g : M ⟶ N} (w : f
h = k := by
refine' cokernel_funext fun n => _
-- Gosh it would be nice if `equiv_rw` could directly use an isomorphism, or an enriched `≃`.
- equiv_rw(kernel_subobject_iso g ≪≫ ModuleCat.kernelIsoKer g).toLinearEquiv.toEquiv at n
+ equiv_rw (kernel_subobject_iso g ≪≫ ModuleCat.kernelIsoKer g).toLinearEquiv.toEquiv at n
convert w n <;> simp [to_kernel_subobject]
#align Module.homology_ext ModuleCat.homology_ext
mathlib commit https://github.com/leanprover-community/mathlib/commit/cca40788df1b8755d5baf17ab2f27dacc2e17acb
@@ -46,7 +46,7 @@ theorem homology_ext {L M N K : ModuleCat R} {f : L ⟶ M} {g : M ⟶ N} (w : f
h = k := by
refine' cokernel_funext fun n => _
-- Gosh it would be nice if `equiv_rw` could directly use an isomorphism, or an enriched `≃`.
- equiv_rw(kernel_subobject_iso g ≪≫ ModuleCat.kernelIsoKer g).toLinearEquiv.toEquiv at n
+ equiv_rw(kernel_subobject_iso g ≪≫ ModuleCat.kernelIsoKer g).toLinearEquiv.toEquiv at n
convert w n <;> simp [to_kernel_subobject]
#align Module.homology_ext ModuleCat.homology_ext
mathlib commit https://github.com/leanprover-community/mathlib/commit/917c3c072e487b3cccdbfeff17e75b40e45f66cb
@@ -22,7 +22,7 @@ We provide some additional API to work with homological complexes in `Module R`.
universe v u
-open Classical
+open scoped Classical
noncomputable section
mathlib commit https://github.com/leanprover-community/mathlib/commit/917c3c072e487b3cccdbfeff17e75b40e45f66cb
@@ -68,10 +68,7 @@ attribute [local instance] concrete_category.has_coe_to_sort
@[simp]
theorem cyclesMap_toCycles (f : C ⟶ D) {i : ι} (x : LinearMap.ker (C.dFrom i)) :
- (cyclesMap f i) (toCycles x) = toCycles ⟨f.f i x.1, by simp [x.2]⟩ :=
- by
- ext
- simp
+ (cyclesMap f i) (toCycles x) = toCycles ⟨f.f i x.1, by simp [x.2]⟩ := by ext; simp
#align Module.cycles_map_to_cycles ModuleCat.cyclesMap_toCycles
/-- Build a term of `C.homology i` from an element `C.X i` such that `C.d_from i x = 0`. -/
mathlib commit https://github.com/leanprover-community/mathlib/commit/bd9851ca476957ea4549eb19b40e7b5ade9428cc
@@ -34,7 +34,7 @@ namespace ModuleCat
/-- To prove that two maps out of a homology group are equal,
it suffices to check they are equal on the images of cycles.
-/
-theorem homology'_ext {L M N K : ModuleCat R} {f : L ⟶ M} {g : M ⟶ N} (w : f ≫ g = 0)
+theorem homology'_ext {L M N K : ModuleCat.{u} R} {f : L ⟶ M} {g : M ⟶ N} (w : f ≫ g = 0)
{h k : homology' f g w ⟶ K}
(w :
∀ x : LinearMap.ker g,
@@ -89,8 +89,8 @@ set_option linter.uppercaseLean3 false in
@[ext]
theorem homology'_ext' {M : ModuleCat R} (i : ι) {h k : C.homology' i ⟶ M}
- (w : ∀ x : LinearMap.ker (C.dFrom i), h (toHomology' x) = k (toHomology' x)) : h = k :=
- homology'_ext _ w
+ (w : ∀ x : LinearMap.ker (C.dFrom i), h (toHomology' x) = k (toHomology' x)) : h = k := by
+ apply homology'_ext _ w
set_option linter.uppercaseLean3 false in
#align Module.homology_ext' ModuleCat.homology'_ext'
Mostly automatic, with a few manual corrections.
@@ -96,7 +96,7 @@ set_option linter.uppercaseLean3 false in
-- Porting note: `erw` had to be used instead of `simp`
-- see https://github.com/leanprover-community/mathlib4/issues/5026
-/-- We give an alternative proof of `homology_map_eq_of_homotopy`,
+/-- We give an alternative proof of `homology'_map_eq_of_homotopy`,
specialized to the setting of `V = Module R`,
to demonstrate the use of extensionality lemmas for homology in `Module R`. -/
example (f g : C ⟶ D) (h : Homotopy f g) (i : ι) :
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)
@@ -27,7 +27,6 @@ noncomputable section
open CategoryTheory Limits HomologicalComplex
variable {R : Type v} [Ring R]
-
variable {ι : Type*} {c : ComplexShape ι} {C D : HomologicalComplex (ModuleCat.{u} R) c}
namespace ModuleCat
Homogenises porting notes via capitalisation and addition of whitespace.
It makes the following changes:
@@ -43,7 +43,7 @@ theorem homology'_ext {L M N K : ModuleCat R} {f : L ⟶ M} {g : M ⟶ N} (w : f
k (cokernel.π (imageToKernel _ _ w) (toKernelSubobject x))) :
h = k := by
refine' Concrete.cokernel_funext fun n => _
- -- porting note: as `equiv_rw` was not ported, it was replaced by `Equiv.surjective`
+ -- Porting note: as `equiv_rw` was not ported, it was replaced by `Equiv.surjective`
-- Gosh it would be nice if `equiv_rw` could directly use an isomorphism, or an enriched `≃`.
obtain ⟨n, rfl⟩ := (kernelSubobjectIso g ≪≫
ModuleCat.kernelIsoKer g).toLinearEquiv.toEquiv.symm.surjective n
@@ -67,7 +67,7 @@ theorem cycles'_ext {C : HomologicalComplex (ModuleCat.{u} R) c} {i : ι}
set_option linter.uppercaseLean3 false in
#align Module.cycles_ext ModuleCat.cycles'_ext
--- porting note: both proofs by `rw` were proofs by `simp` which no longer worked
+-- Porting note: both proofs by `rw` were proofs by `simp` which no longer worked
-- see https://github.com/leanprover-community/mathlib4/issues/5026
@[simp]
theorem cycles'Map_toCycles' (f : C ⟶ D) {i : ι} (x : LinearMap.ker (C.dFrom i)) :
@@ -95,7 +95,7 @@ theorem homology'_ext' {M : ModuleCat R} (i : ι) {h k : C.homology' i ⟶ M}
set_option linter.uppercaseLean3 false in
#align Module.homology_ext' ModuleCat.homology'_ext'
--- porting note: `erw` had to be used instead of `simp`
+-- Porting note: `erw` had to be used instead of `simp`
-- see https://github.com/leanprover-community/mathlib4/issues/5026
/-- We give an alternative proof of `homology_map_eq_of_homotopy`,
specialized to the setting of `V = Module R`,
@@ -6,7 +6,7 @@ Authors: Scott Morrison
import Mathlib.Algebra.Homology.Homotopy
import Mathlib.Algebra.Category.ModuleCat.Abelian
import Mathlib.Algebra.Category.ModuleCat.Subobject
-import Mathlib.CategoryTheory.Limits.ConcreteCategory
+import Mathlib.CategoryTheory.Limits.Shapes.ConcreteCategory
#align_import algebra.homology.Module from "leanprover-community/mathlib"@"70fd9563a21e7b963887c9360bd29b2393e6225a"
@@ -42,7 +42,7 @@ theorem homology'_ext {L M N K : ModuleCat R} {f : L ⟶ M} {g : M ⟶ N} (w : f
h (cokernel.π (imageToKernel _ _ w) (toKernelSubobject x)) =
k (cokernel.π (imageToKernel _ _ w) (toKernelSubobject x))) :
h = k := by
- refine' cokernel_funext fun n => _
+ refine' Concrete.cokernel_funext fun n => _
-- porting note: as `equiv_rw` was not ported, it was replaced by `Equiv.surjective`
-- Gosh it would be nice if `equiv_rw` could directly use an isomorphism, or an enriched `≃`.
obtain ⟨n, rfl⟩ := (kernelSubobjectIso g ≪≫
@@ -120,9 +120,8 @@ example (f g : C ⟶ D) (h : Homotopy f g) (i : ι) :
erw [LinearMap.add_apply]
rw [LinearMap.add_apply, prevD_eq_toPrev_dTo, dNext_eq_dFrom_fromNext]
-- This used to be `rw`, but we need `erw` after leanprover/lean4#2644
- erw [comp_apply, comp_apply, comp_apply]
+ erw [comp_apply, comp_apply]
erw [x.2, map_zero]
- dsimp
abel
end ModuleCat
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>
@@ -35,8 +35,8 @@ namespace ModuleCat
/-- To prove that two maps out of a homology group are equal,
it suffices to check they are equal on the images of cycles.
-/
-theorem homology_ext {L M N K : ModuleCat R} {f : L ⟶ M} {g : M ⟶ N} (w : f ≫ g = 0)
- {h k : homology f g w ⟶ K}
+theorem homology'_ext {L M N K : ModuleCat R} {f : L ⟶ M} {g : M ⟶ N} (w : f ≫ g = 0)
+ {h k : homology' f g w ⟶ K}
(w :
∀ x : LinearMap.ker g,
h (cokernel.π (imageToKernel _ _ w) (toKernelSubobject x)) =
@@ -49,51 +49,51 @@ theorem homology_ext {L M N K : ModuleCat R} {f : L ⟶ M} {g : M ⟶ N} (w : f
ModuleCat.kernelIsoKer g).toLinearEquiv.toEquiv.symm.surjective n
exact w n
set_option linter.uppercaseLean3 false in
-#align Module.homology_ext ModuleCat.homology_ext
+#align Module.homology_ext ModuleCat.homology'_ext
/-- Bundle an element `C.X i` such that `C.dFrom i x = 0` as a term of `C.cycles i`. -/
-abbrev toCycles {C : HomologicalComplex (ModuleCat.{u} R) c} {i : ι}
- (x : LinearMap.ker (C.dFrom i)) : (C.cycles i : Type u) :=
+abbrev toCycles' {C : HomologicalComplex (ModuleCat.{u} R) c} {i : ι}
+ (x : LinearMap.ker (C.dFrom i)) : (C.cycles' i : Type u) :=
toKernelSubobject x
set_option linter.uppercaseLean3 false in
-#align Module.to_cycles ModuleCat.toCycles
+#align Module.to_cycles ModuleCat.toCycles'
@[ext]
-theorem cycles_ext {C : HomologicalComplex (ModuleCat.{u} R) c} {i : ι}
- {x y : (C.cycles i : Type u)}
- (w : (C.cycles i).arrow x = (C.cycles i).arrow y) : x = y := by
- apply_fun (C.cycles i).arrow using (ModuleCat.mono_iff_injective _).mp (cycles C i).arrow_mono
+theorem cycles'_ext {C : HomologicalComplex (ModuleCat.{u} R) c} {i : ι}
+ {x y : (C.cycles' i : Type u)}
+ (w : (C.cycles' i).arrow x = (C.cycles' i).arrow y) : x = y := by
+ apply_fun (C.cycles' i).arrow using (ModuleCat.mono_iff_injective _).mp (cycles' C i).arrow_mono
exact w
set_option linter.uppercaseLean3 false in
-#align Module.cycles_ext ModuleCat.cycles_ext
+#align Module.cycles_ext ModuleCat.cycles'_ext
-- porting note: both proofs by `rw` were proofs by `simp` which no longer worked
-- see https://github.com/leanprover-community/mathlib4/issues/5026
@[simp]
-theorem cyclesMap_toCycles (f : C ⟶ D) {i : ι} (x : LinearMap.ker (C.dFrom i)) :
- (cyclesMap f i) (toCycles x) = toCycles ⟨f.f i x.1, by
+theorem cycles'Map_toCycles' (f : C ⟶ D) {i : ι} (x : LinearMap.ker (C.dFrom i)) :
+ (cycles'Map f i) (toCycles' x) = toCycles' ⟨f.f i x.1, by
-- This used to be `rw`, but we need `erw` after leanprover/lean4#2644
rw [LinearMap.mem_ker]; erw [Hom.comm_from_apply, x.2, map_zero]⟩ := by
ext
-- This used to be `rw`, but we need `erw` after leanprover/lean4#2644
- erw [cyclesMap_arrow_apply, toKernelSubobject_arrow, toKernelSubobject_arrow]
+ erw [cycles'Map_arrow_apply, toKernelSubobject_arrow, toKernelSubobject_arrow]
rfl
set_option linter.uppercaseLean3 false in
-#align Module.cycles_map_to_cycles ModuleCat.cyclesMap_toCycles
+#align Module.cycles_map_to_cycles ModuleCat.cycles'Map_toCycles'
/-- Build a term of `C.homology i` from an element `C.X i` such that `C.d_from i x = 0`. -/
-abbrev toHomology {C : HomologicalComplex (ModuleCat.{u} R) c} {i : ι}
- (x : LinearMap.ker (C.dFrom i)) : C.homology i :=
- homology.π (C.dTo i) (C.dFrom i) _ (toCycles x)
+abbrev toHomology' {C : HomologicalComplex (ModuleCat.{u} R) c} {i : ι}
+ (x : LinearMap.ker (C.dFrom i)) : C.homology' i :=
+ homology'.π (C.dTo i) (C.dFrom i) _ (toCycles' x)
set_option linter.uppercaseLean3 false in
-#align Module.to_homology ModuleCat.toHomology
+#align Module.to_homology ModuleCat.toHomology'
@[ext]
-theorem homology_ext' {M : ModuleCat R} (i : ι) {h k : C.homology i ⟶ M}
- (w : ∀ x : LinearMap.ker (C.dFrom i), h (toHomology x) = k (toHomology x)) : h = k :=
- homology_ext _ w
+theorem homology'_ext' {M : ModuleCat R} (i : ι) {h k : C.homology' i ⟶ M}
+ (w : ∀ x : LinearMap.ker (C.dFrom i), h (toHomology' x) = k (toHomology' x)) : h = k :=
+ homology'_ext _ w
set_option linter.uppercaseLean3 false in
-#align Module.homology_ext' ModuleCat.homology_ext'
+#align Module.homology_ext' ModuleCat.homology'_ext'
-- porting note: `erw` had to be used instead of `simp`
-- see https://github.com/leanprover-community/mathlib4/issues/5026
@@ -101,13 +101,13 @@ set_option linter.uppercaseLean3 false in
specialized to the setting of `V = Module R`,
to demonstrate the use of extensionality lemmas for homology in `Module R`. -/
example (f g : C ⟶ D) (h : Homotopy f g) (i : ι) :
- (homologyFunctor (ModuleCat.{u} R) c i).map f =
- (homologyFunctor (ModuleCat.{u} R) c i).map g := by
+ (homology'Functor (ModuleCat.{u} R) c i).map f =
+ (homology'Functor (ModuleCat.{u} R) c i).map g := by
-- To check that two morphisms out of a homology group agree, it suffices to check on cycles:
- apply homology_ext
+ apply homology'_ext
intro x
- simp only [homologyFunctor_map]
- erw [homology.π_map_apply, homology.π_map_apply]
+ simp only [homology'Functor_map]
+ erw [homology'.π_map_apply, homology'.π_map_apply]
-- To check that two elements are equal mod boundaries, it suffices to exhibit a boundary:
refine' cokernel_π_imageSubobject_ext _ _ ((toPrev i h.hom) x.1) _
-- Moreover, to check that two cycles are equal, it suffices to check their underlying elements:
@@ -72,9 +72,12 @@ set_option linter.uppercaseLean3 false in
@[simp]
theorem cyclesMap_toCycles (f : C ⟶ D) {i : ι} (x : LinearMap.ker (C.dFrom i)) :
(cyclesMap f i) (toCycles x) = toCycles ⟨f.f i x.1, by
- rw [LinearMap.mem_ker, Hom.comm_from_apply, x.2, map_zero]⟩ := by
+ -- This used to be `rw`, but we need `erw` after leanprover/lean4#2644
+ rw [LinearMap.mem_ker]; erw [Hom.comm_from_apply, x.2, map_zero]⟩ := by
ext
- rw [cyclesMap_arrow_apply, toKernelSubobject_arrow, toKernelSubobject_arrow]
+ -- This used to be `rw`, but we need `erw` after leanprover/lean4#2644
+ erw [cyclesMap_arrow_apply, toKernelSubobject_arrow, toKernelSubobject_arrow]
+ rfl
set_option linter.uppercaseLean3 false in
#align Module.cycles_map_to_cycles ModuleCat.cyclesMap_toCycles
@@ -112,9 +115,13 @@ example (f g : C ⟶ D) (h : Homotopy f g) (i : ι) :
erw [map_add, CategoryTheory.Limits.kernelSubobjectMap_arrow_apply,
CategoryTheory.Limits.kernelSubobjectMap_arrow_apply,
ModuleCat.toKernelSubobject_arrow, imageToKernel_arrow_apply, imageSubobject_arrow_comp_apply]
- rw [Hom.sqFrom_left, Hom.sqFrom_left, h.comm i, LinearMap.add_apply,
- LinearMap.add_apply, prevD_eq_toPrev_dTo, dNext_eq_dFrom_fromNext, comp_apply, comp_apply,
- x.2, map_zero]
+ rw [Hom.sqFrom_left, Hom.sqFrom_left, h.comm i]
+ -- This used to be `rw`, but we need `erw` after leanprover/lean4#2644
+ erw [LinearMap.add_apply]
+ rw [LinearMap.add_apply, prevD_eq_toPrev_dTo, dNext_eq_dFrom_fromNext]
+ -- This used to be `rw`, but we need `erw` after leanprover/lean4#2644
+ erw [comp_apply, comp_apply, comp_apply]
+ erw [x.2, map_zero]
dsimp
abel
@@ -72,12 +72,9 @@ set_option linter.uppercaseLean3 false in
@[simp]
theorem cyclesMap_toCycles (f : C ⟶ D) {i : ι} (x : LinearMap.ker (C.dFrom i)) :
(cyclesMap f i) (toCycles x) = toCycles ⟨f.f i x.1, by
- -- This used to be `rw`, but we need `erw` after leanprover/lean4#2644
- rw [LinearMap.mem_ker]; erw [Hom.comm_from_apply, x.2, map_zero]⟩ := by
+ rw [LinearMap.mem_ker, Hom.comm_from_apply, x.2, map_zero]⟩ := by
ext
- -- This used to be `rw`, but we need `erw` after leanprover/lean4#2644
- erw [cyclesMap_arrow_apply, toKernelSubobject_arrow, toKernelSubobject_arrow]
- rfl
+ rw [cyclesMap_arrow_apply, toKernelSubobject_arrow, toKernelSubobject_arrow]
set_option linter.uppercaseLean3 false in
#align Module.cycles_map_to_cycles ModuleCat.cyclesMap_toCycles
@@ -115,13 +112,9 @@ example (f g : C ⟶ D) (h : Homotopy f g) (i : ι) :
erw [map_add, CategoryTheory.Limits.kernelSubobjectMap_arrow_apply,
CategoryTheory.Limits.kernelSubobjectMap_arrow_apply,
ModuleCat.toKernelSubobject_arrow, imageToKernel_arrow_apply, imageSubobject_arrow_comp_apply]
- rw [Hom.sqFrom_left, Hom.sqFrom_left, h.comm i]
- -- This used to be `rw`, but we need `erw` after leanprover/lean4#2644
- erw [LinearMap.add_apply]
- rw [LinearMap.add_apply, prevD_eq_toPrev_dTo, dNext_eq_dFrom_fromNext]
- -- This used to be `rw`, but we need `erw` after leanprover/lean4#2644
- erw [comp_apply, comp_apply, comp_apply]
- erw [x.2, map_zero]
+ rw [Hom.sqFrom_left, Hom.sqFrom_left, h.comm i, LinearMap.add_apply,
+ LinearMap.add_apply, prevD_eq_toPrev_dTo, dNext_eq_dFrom_fromNext, comp_apply, comp_apply,
+ x.2, map_zero]
dsimp
abel
@@ -72,9 +72,12 @@ set_option linter.uppercaseLean3 false in
@[simp]
theorem cyclesMap_toCycles (f : C ⟶ D) {i : ι} (x : LinearMap.ker (C.dFrom i)) :
(cyclesMap f i) (toCycles x) = toCycles ⟨f.f i x.1, by
- rw [LinearMap.mem_ker, Hom.comm_from_apply, x.2, map_zero]⟩ := by
+ -- This used to be `rw`, but we need `erw` after leanprover/lean4#2644
+ rw [LinearMap.mem_ker]; erw [Hom.comm_from_apply, x.2, map_zero]⟩ := by
ext
- rw [cyclesMap_arrow_apply, toKernelSubobject_arrow, toKernelSubobject_arrow]
+ -- This used to be `rw`, but we need `erw` after leanprover/lean4#2644
+ erw [cyclesMap_arrow_apply, toKernelSubobject_arrow, toKernelSubobject_arrow]
+ rfl
set_option linter.uppercaseLean3 false in
#align Module.cycles_map_to_cycles ModuleCat.cyclesMap_toCycles
@@ -112,9 +115,13 @@ example (f g : C ⟶ D) (h : Homotopy f g) (i : ι) :
erw [map_add, CategoryTheory.Limits.kernelSubobjectMap_arrow_apply,
CategoryTheory.Limits.kernelSubobjectMap_arrow_apply,
ModuleCat.toKernelSubobject_arrow, imageToKernel_arrow_apply, imageSubobject_arrow_comp_apply]
- rw [Hom.sqFrom_left, Hom.sqFrom_left, h.comm i, LinearMap.add_apply,
- LinearMap.add_apply, prevD_eq_toPrev_dTo, dNext_eq_dFrom_fromNext, comp_apply, comp_apply,
- x.2, map_zero]
+ rw [Hom.sqFrom_left, Hom.sqFrom_left, h.comm i]
+ -- This used to be `rw`, but we need `erw` after leanprover/lean4#2644
+ erw [LinearMap.add_apply]
+ rw [LinearMap.add_apply, prevD_eq_toPrev_dTo, dNext_eq_dFrom_fromNext]
+ -- This used to be `rw`, but we need `erw` after leanprover/lean4#2644
+ erw [comp_apply, comp_apply, comp_apply]
+ erw [x.2, map_zero]
dsimp
abel
@@ -92,7 +92,6 @@ theorem homology_ext' {M : ModuleCat R} (i : ι) {h k : C.homology i ⟶ M}
set_option linter.uppercaseLean3 false in
#align Module.homology_ext' ModuleCat.homology_ext'
-set_option maxHeartbeats 400000 in
-- porting note: `erw` had to be used instead of `simp`
-- see https://github.com/leanprover-community/mathlib4/issues/5026
/-- We give an alternative proof of `homology_map_eq_of_homotopy`,
Type _
and Sort _
(#6499)
We remove all possible occurences of Type _
and Sort _
in favor of Type*
and Sort*
.
This has nice performance benefits.
@@ -28,7 +28,7 @@ open CategoryTheory Limits HomologicalComplex
variable {R : Type v} [Ring R]
-variable {ι : Type _} {c : ComplexShape ι} {C D : HomologicalComplex (ModuleCat.{u} R) c}
+variable {ι : Type*} {c : ComplexShape ι} {C D : HomologicalComplex (ModuleCat.{u} R) c}
namespace ModuleCat
@@ -2,17 +2,14 @@
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.Module
-! leanprover-community/mathlib commit 70fd9563a21e7b963887c9360bd29b2393e6225a
-! Please do not edit these lines, except to modify the commit id
-! if you have ported upstream changes.
-/
import Mathlib.Algebra.Homology.Homotopy
import Mathlib.Algebra.Category.ModuleCat.Abelian
import Mathlib.Algebra.Category.ModuleCat.Subobject
import Mathlib.CategoryTheory.Limits.ConcreteCategory
+#align_import algebra.homology.Module from "leanprover-community/mathlib"@"70fd9563a21e7b963887c9360bd29b2393e6225a"
+
/-!
# Complexes of modules
Adds new CompletelyDistribLattice
/CompleteAtomicBooleanAlgebra
classes for complete lattices / complete atomic Boolean algebras that are also completely distributive, and removes the misleading claim that CompleteDistribLattice
/CompleteBooleanAlgebra
are completely distributive.
CompleteDistribLattice
instances are upgraded to CompletelyDistribLattice
.CompleteBooleanAlgebra
instances are upgraded to CompleteAtomicBooleanAlgebra
.@@ -95,6 +95,7 @@ theorem homology_ext' {M : ModuleCat R} (i : ι) {h k : C.homology i ⟶ M}
set_option linter.uppercaseLean3 false in
#align Module.homology_ext' ModuleCat.homology_ext'
+set_option maxHeartbeats 400000 in
-- porting note: `erw` had to be used instead of `simp`
-- see https://github.com/leanprover-community/mathlib4/issues/5026
/-- We give an alternative proof of `homology_map_eq_of_homotopy`,
Sets new records for set_option maxHeartbeats
. :-( I spent too long struggling with this one; if anyone would like to take another look please do.
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: Scott Morrison <scott.morrison@gmail.com>
@@ -117,7 +117,8 @@ example (f g : C ⟶ D) (h : Homotopy f g) (i : ι) :
ModuleCat.toKernelSubobject_arrow, imageToKernel_arrow_apply, imageSubobject_arrow_comp_apply]
rw [Hom.sqFrom_left, Hom.sqFrom_left, h.comm i, LinearMap.add_apply,
LinearMap.add_apply, prevD_eq_toPrev_dTo, dNext_eq_dFrom_fromNext, comp_apply, comp_apply,
- x.2, map_zero, zero_add]
+ x.2, map_zero]
+ dsimp
abel
end ModuleCat
The unported dependencies are