category_theory.monoidal.torMathlib.CategoryTheory.Monoidal.Tor

This file has been ported!

Changes since the initial port

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.

Changes in mathlib3

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(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)

Changes in mathlib3port

mathlib3
mathlib3port
Diff
@@ -68,14 +68,11 @@ def Tor' (n : ℕ) : C ⥤ C ⥤ C :=
 
 open scoped ZeroObject
 
-#print CategoryTheory.torSuccOfProjective /-
 /-- The higher `Tor` groups for `X` and `Y` are zero if `Y` is projective. -/
 def torSuccOfProjective (X Y : C) [Projective Y] (n : ℕ) : ((Tor C (n + 1)).obj X).obj Y ≅ 0 :=
   ((tensoringLeft C).obj X).leftDerivedObjProjectiveSucc n Y
 #align category_theory.Tor_succ_of_projective CategoryTheory.torSuccOfProjective
--/
 
-#print CategoryTheory.tor'SuccOfProjective /-
 /-- The higher `Tor'` groups for `X` and `Y` are zero if `X` is projective. -/
 def tor'SuccOfProjective (X Y : C) [Projective X] (n : ℕ) : ((Tor' C (n + 1)).obj X).obj Y ≅ 0 :=
   by
@@ -83,7 +80,6 @@ def tor'SuccOfProjective (X Y : C) [Projective X] (n : ℕ) : ((Tor' C (n + 1)).
   dsimp only [Tor', functor.flip]
   exact ((tensoring_right C).obj Y).leftDerivedObjProjectiveSucc n X
 #align category_theory.Tor'_succ_of_projective CategoryTheory.tor'SuccOfProjective
--/
 
 end CategoryTheory
 
Diff
@@ -3,8 +3,8 @@ 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.CategoryTheory.Functor.LeftDerived
-import Mathbin.CategoryTheory.Monoidal.Preadditive
+import CategoryTheory.Functor.LeftDerived
+import CategoryTheory.Monoidal.Preadditive
 
 #align_import category_theory.monoidal.tor from "leanprover-community/mathlib"@"fe8d0ff42c3c24d789f491dc2622b6cac3d61564"
 
Diff
@@ -2,15 +2,12 @@
 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 category_theory.monoidal.tor
-! leanprover-community/mathlib commit fe8d0ff42c3c24d789f491dc2622b6cac3d61564
-! Please do not edit these lines, except to modify the commit id
-! if you have ported upstream changes.
 -/
 import Mathbin.CategoryTheory.Functor.LeftDerived
 import Mathbin.CategoryTheory.Monoidal.Preadditive
 
+#align_import category_theory.monoidal.tor from "leanprover-community/mathlib"@"fe8d0ff42c3c24d789f491dc2622b6cac3d61564"
+
 /-!
 # Tor, the left-derived functor of tensor product
 
Diff
@@ -71,11 +71,14 @@ def Tor' (n : ℕ) : C ⥤ C ⥤ C :=
 
 open scoped ZeroObject
 
+#print CategoryTheory.torSuccOfProjective /-
 /-- The higher `Tor` groups for `X` and `Y` are zero if `Y` is projective. -/
 def torSuccOfProjective (X Y : C) [Projective Y] (n : ℕ) : ((Tor C (n + 1)).obj X).obj Y ≅ 0 :=
   ((tensoringLeft C).obj X).leftDerivedObjProjectiveSucc n Y
 #align category_theory.Tor_succ_of_projective CategoryTheory.torSuccOfProjective
+-/
 
+#print CategoryTheory.tor'SuccOfProjective /-
 /-- The higher `Tor'` groups for `X` and `Y` are zero if `X` is projective. -/
 def tor'SuccOfProjective (X Y : C) [Projective X] (n : ℕ) : ((Tor' C (n + 1)).obj X).obj Y ≅ 0 :=
   by
@@ -83,6 +86,7 @@ def tor'SuccOfProjective (X Y : C) [Projective X] (n : ℕ) : ((Tor' C (n + 1)).
   dsimp only [Tor', functor.flip]
   exact ((tensoring_right C).obj Y).leftDerivedObjProjectiveSucc n X
 #align category_theory.Tor'_succ_of_projective CategoryTheory.tor'SuccOfProjective
+-/
 
 end CategoryTheory
 
Diff
@@ -69,7 +69,7 @@ def Tor' (n : ℕ) : C ⥤ C ⥤ C :=
 #align category_theory.Tor' CategoryTheory.Tor'
 -/
 
-open ZeroObject
+open scoped ZeroObject
 
 /-- The higher `Tor` groups for `X` and `Y` are zero if `Y` is projective. -/
 def torSuccOfProjective (X Y : C) [Projective Y] (n : ℕ) : ((Tor C (n + 1)).obj X).obj Y ≅ 0 :=
Diff
@@ -71,17 +71,11 @@ def Tor' (n : ℕ) : C ⥤ C ⥤ C :=
 
 open ZeroObject
 
-/- warning: category_theory.Tor_succ_of_projective -> CategoryTheory.torSuccOfProjective is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align category_theory.Tor_succ_of_projective CategoryTheory.torSuccOfProjectiveₓ'. -/
 /-- The higher `Tor` groups for `X` and `Y` are zero if `Y` is projective. -/
 def torSuccOfProjective (X Y : C) [Projective Y] (n : ℕ) : ((Tor C (n + 1)).obj X).obj Y ≅ 0 :=
   ((tensoringLeft C).obj X).leftDerivedObjProjectiveSucc n Y
 #align category_theory.Tor_succ_of_projective CategoryTheory.torSuccOfProjective
 
-/- warning: category_theory.Tor'_succ_of_projective -> CategoryTheory.tor'SuccOfProjective is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align category_theory.Tor'_succ_of_projective CategoryTheory.tor'SuccOfProjectiveₓ'. -/
 /-- The higher `Tor'` groups for `X` and `Y` are zero if `X` is projective. -/
 def tor'SuccOfProjective (X Y : C) [Projective X] (n : ℕ) : ((Tor' C (n + 1)).obj X).obj Y ≅ 0 :=
   by
Diff
@@ -72,10 +72,7 @@ def Tor' (n : ℕ) : C ⥤ C ⥤ C :=
 open ZeroObject
 
 /- warning: category_theory.Tor_succ_of_projective -> CategoryTheory.torSuccOfProjective is a dubious translation:
-lean 3 declaration is
-  forall (C : Type.{u1}) [_inst_1 : CategoryTheory.Category.{u2, u1} C] [_inst_2 : CategoryTheory.MonoidalCategory.{u2, u1} C _inst_1] [_inst_3 : CategoryTheory.Preadditive.{u2, u1} C _inst_1] [_inst_4 : CategoryTheory.MonoidalPreadditive.{u1, u2} C _inst_1 _inst_3 _inst_2] [_inst_5 : CategoryTheory.Limits.HasZeroObject.{u2, u1} C _inst_1] [_inst_6 : CategoryTheory.Limits.HasEqualizers.{u2, u1} C _inst_1] [_inst_7 : CategoryTheory.Limits.HasCokernels.{u2, u1} C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u1} C _inst_1 _inst_3)] [_inst_8 : CategoryTheory.Limits.HasImages.{u2, u1} C _inst_1] [_inst_9 : CategoryTheory.Limits.HasImageMaps.{u2, u1} C _inst_1 _inst_8] [_inst_10 : CategoryTheory.HasProjectiveResolutions.{u2, u1} C _inst_1 _inst_5 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u1} C _inst_1 _inst_3) _inst_6 _inst_8] (X : C) (Y : C) [_inst_11 : CategoryTheory.Projective.{u2, u1} C _inst_1 Y] (n : Nat), CategoryTheory.Iso.{u2, u1} C _inst_1 (CategoryTheory.Functor.obj.{u2, u2, u1, u1} C _inst_1 C _inst_1 (CategoryTheory.Functor.obj.{u2, max u1 u2, u1, max u2 u1} C _inst_1 (CategoryTheory.Functor.{u2, u2, u1, u1} C _inst_1 C _inst_1) (CategoryTheory.Functor.category.{u2, u2, u1, u1} C _inst_1 C _inst_1) (CategoryTheory.Tor.{u1, u2} C _inst_1 _inst_2 _inst_3 _inst_4 _inst_5 _inst_6 _inst_7 _inst_8 _inst_9 _inst_10 (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat Nat.hasAdd) n (OfNat.ofNat.{0} Nat 1 (OfNat.mk.{0} Nat 1 (One.one.{0} Nat Nat.hasOne))))) X) Y) (OfNat.ofNat.{u1} C 0 (OfNat.mk.{u1} C 0 (Zero.zero.{u1} C (CategoryTheory.Limits.HasZeroObject.zero'.{u2, u1} C _inst_1 _inst_5))))
-but is expected to have type
-  forall (C : Type.{u1}) [_inst_1 : CategoryTheory.Category.{u2, u1} C] [_inst_2 : CategoryTheory.MonoidalCategory.{u2, u1} C _inst_1] [_inst_3 : CategoryTheory.Preadditive.{u2, u1} C _inst_1] [_inst_4 : CategoryTheory.MonoidalPreadditive.{u1, u2} C _inst_1 _inst_3 _inst_2] [_inst_5 : CategoryTheory.Limits.HasZeroObject.{u2, u1} C _inst_1] [_inst_6 : CategoryTheory.Limits.HasEqualizers.{u2, u1} C _inst_1] [_inst_7 : CategoryTheory.Limits.HasCokernels.{u2, u1} C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u1} C _inst_1 _inst_3)] [_inst_8 : CategoryTheory.Limits.HasImages.{u2, u1} C _inst_1] [_inst_9 : CategoryTheory.Limits.HasImageMaps.{u2, u1} C _inst_1 _inst_8] [_inst_10 : CategoryTheory.HasProjectiveResolutions.{u2, u1} C _inst_1 _inst_5 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u1} C _inst_1 _inst_3) _inst_6 _inst_8] (X : C) (Y : C) [_inst_11 : CategoryTheory.Projective.{u2, u1} C _inst_1 Y] (n : Nat), CategoryTheory.Iso.{u2, u1} C _inst_1 (Prefunctor.obj.{succ u2, succ u2, u1, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1)) C (CategoryTheory.CategoryStruct.toQuiver.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1)) (CategoryTheory.Functor.toPrefunctor.{u2, u2, u1, u1} C _inst_1 C _inst_1 (Prefunctor.obj.{succ u2, max (succ u1) (succ u2), u1, max u1 u2} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1)) (CategoryTheory.Functor.{u2, u2, u1, u1} C _inst_1 C _inst_1) (CategoryTheory.CategoryStruct.toQuiver.{max u1 u2, max u1 u2} (CategoryTheory.Functor.{u2, u2, u1, u1} C _inst_1 C _inst_1) (CategoryTheory.Category.toCategoryStruct.{max u1 u2, max u1 u2} (CategoryTheory.Functor.{u2, u2, u1, u1} C _inst_1 C _inst_1) (CategoryTheory.Functor.category.{u2, u2, u1, u1} C _inst_1 C _inst_1))) (CategoryTheory.Functor.toPrefunctor.{u2, max u1 u2, u1, max u1 u2} C _inst_1 (CategoryTheory.Functor.{u2, u2, u1, u1} C _inst_1 C _inst_1) (CategoryTheory.Functor.category.{u2, u2, u1, u1} C _inst_1 C _inst_1) (CategoryTheory.Tor.{u1, u2} C _inst_1 _inst_2 _inst_3 _inst_4 _inst_5 _inst_6 _inst_7 _inst_8 _inst_9 _inst_10 (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1))))) X)) Y) (OfNat.ofNat.{u1} C 0 (Zero.toOfNat0.{u1} C (CategoryTheory.Limits.HasZeroObject.zero'.{u2, u1} C _inst_1 _inst_5)))
+<too large>
 Case conversion may be inaccurate. Consider using '#align category_theory.Tor_succ_of_projective CategoryTheory.torSuccOfProjectiveₓ'. -/
 /-- The higher `Tor` groups for `X` and `Y` are zero if `Y` is projective. -/
 def torSuccOfProjective (X Y : C) [Projective Y] (n : ℕ) : ((Tor C (n + 1)).obj X).obj Y ≅ 0 :=
@@ -83,10 +80,7 @@ def torSuccOfProjective (X Y : C) [Projective Y] (n : ℕ) : ((Tor C (n + 1)).ob
 #align category_theory.Tor_succ_of_projective CategoryTheory.torSuccOfProjective
 
 /- warning: category_theory.Tor'_succ_of_projective -> CategoryTheory.tor'SuccOfProjective is a dubious translation:
-lean 3 declaration is
-  forall (C : Type.{u1}) [_inst_1 : CategoryTheory.Category.{u2, u1} C] [_inst_2 : CategoryTheory.MonoidalCategory.{u2, u1} C _inst_1] [_inst_3 : CategoryTheory.Preadditive.{u2, u1} C _inst_1] [_inst_4 : CategoryTheory.MonoidalPreadditive.{u1, u2} C _inst_1 _inst_3 _inst_2] [_inst_5 : CategoryTheory.Limits.HasZeroObject.{u2, u1} C _inst_1] [_inst_6 : CategoryTheory.Limits.HasEqualizers.{u2, u1} C _inst_1] [_inst_7 : CategoryTheory.Limits.HasCokernels.{u2, u1} C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u1} C _inst_1 _inst_3)] [_inst_8 : CategoryTheory.Limits.HasImages.{u2, u1} C _inst_1] [_inst_9 : CategoryTheory.Limits.HasImageMaps.{u2, u1} C _inst_1 _inst_8] [_inst_10 : CategoryTheory.HasProjectiveResolutions.{u2, u1} C _inst_1 _inst_5 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u1} C _inst_1 _inst_3) _inst_6 _inst_8] (X : C) (Y : C) [_inst_11 : CategoryTheory.Projective.{u2, u1} C _inst_1 X] (n : Nat), CategoryTheory.Iso.{u2, u1} C _inst_1 (CategoryTheory.Functor.obj.{u2, u2, u1, u1} C _inst_1 C _inst_1 (CategoryTheory.Functor.obj.{u2, max u1 u2, u1, max u2 u1} C _inst_1 (CategoryTheory.Functor.{u2, u2, u1, u1} C _inst_1 C _inst_1) (CategoryTheory.Functor.category.{u2, u2, u1, u1} C _inst_1 C _inst_1) (CategoryTheory.Tor'.{u1, u2} C _inst_1 _inst_2 _inst_3 _inst_4 _inst_5 _inst_6 _inst_7 _inst_8 _inst_9 _inst_10 (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat Nat.hasAdd) n (OfNat.ofNat.{0} Nat 1 (OfNat.mk.{0} Nat 1 (One.one.{0} Nat Nat.hasOne))))) X) Y) (OfNat.ofNat.{u1} C 0 (OfNat.mk.{u1} C 0 (Zero.zero.{u1} C (CategoryTheory.Limits.HasZeroObject.zero'.{u2, u1} C _inst_1 _inst_5))))
-but is expected to have type
-  forall (C : Type.{u1}) [_inst_1 : CategoryTheory.Category.{u2, u1} C] [_inst_2 : CategoryTheory.MonoidalCategory.{u2, u1} C _inst_1] [_inst_3 : CategoryTheory.Preadditive.{u2, u1} C _inst_1] [_inst_4 : CategoryTheory.MonoidalPreadditive.{u1, u2} C _inst_1 _inst_3 _inst_2] [_inst_5 : CategoryTheory.Limits.HasZeroObject.{u2, u1} C _inst_1] [_inst_6 : CategoryTheory.Limits.HasEqualizers.{u2, u1} C _inst_1] [_inst_7 : CategoryTheory.Limits.HasCokernels.{u2, u1} C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u1} C _inst_1 _inst_3)] [_inst_8 : CategoryTheory.Limits.HasImages.{u2, u1} C _inst_1] [_inst_9 : CategoryTheory.Limits.HasImageMaps.{u2, u1} C _inst_1 _inst_8] [_inst_10 : CategoryTheory.HasProjectiveResolutions.{u2, u1} C _inst_1 _inst_5 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u1} C _inst_1 _inst_3) _inst_6 _inst_8] (X : C) (Y : C) [_inst_11 : CategoryTheory.Projective.{u2, u1} C _inst_1 X] (n : Nat), CategoryTheory.Iso.{u2, u1} C _inst_1 (Prefunctor.obj.{succ u2, succ u2, u1, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1)) C (CategoryTheory.CategoryStruct.toQuiver.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1)) (CategoryTheory.Functor.toPrefunctor.{u2, u2, u1, u1} C _inst_1 C _inst_1 (Prefunctor.obj.{succ u2, max (succ u1) (succ u2), u1, max u1 u2} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1)) (CategoryTheory.Functor.{u2, u2, u1, u1} C _inst_1 C _inst_1) (CategoryTheory.CategoryStruct.toQuiver.{max u1 u2, max u1 u2} (CategoryTheory.Functor.{u2, u2, u1, u1} C _inst_1 C _inst_1) (CategoryTheory.Category.toCategoryStruct.{max u1 u2, max u1 u2} (CategoryTheory.Functor.{u2, u2, u1, u1} C _inst_1 C _inst_1) (CategoryTheory.Functor.category.{u2, u2, u1, u1} C _inst_1 C _inst_1))) (CategoryTheory.Functor.toPrefunctor.{u2, max u1 u2, u1, max u1 u2} C _inst_1 (CategoryTheory.Functor.{u2, u2, u1, u1} C _inst_1 C _inst_1) (CategoryTheory.Functor.category.{u2, u2, u1, u1} C _inst_1 C _inst_1) (CategoryTheory.Tor'.{u1, u2} C _inst_1 _inst_2 _inst_3 _inst_4 _inst_5 _inst_6 _inst_7 _inst_8 _inst_9 _inst_10 (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1))))) X)) Y) (OfNat.ofNat.{u1} C 0 (Zero.toOfNat0.{u1} C (CategoryTheory.Limits.HasZeroObject.zero'.{u2, u1} C _inst_1 _inst_5)))
+<too large>
 Case conversion may be inaccurate. Consider using '#align category_theory.Tor'_succ_of_projective CategoryTheory.tor'SuccOfProjectiveₓ'. -/
 /-- The higher `Tor'` groups for `X` and `Y` are zero if `X` is projective. -/
 def tor'SuccOfProjective (X Y : C) [Projective X] (n : ℕ) : ((Tor' C (n + 1)).obj X).obj Y ≅ 0 :=
Diff
@@ -98,5 +98,5 @@ def tor'SuccOfProjective (X Y : C) [Projective X] (n : ℕ) : ((Tor' C (n + 1)).
 
 end CategoryTheory
 
-assert_not_exists Module.abelian
+assert_not_exists ModuleCat.abelian
 
Diff
@@ -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 category_theory.monoidal.tor
-! leanprover-community/mathlib commit 09f981f72d43749f1fa072deade828d9c1e185bb
+! leanprover-community/mathlib commit fe8d0ff42c3c24d789f491dc2622b6cac3d61564
 ! Please do not edit these lines, except to modify the commit id
 ! if you have ported upstream changes.
 -/
@@ -14,6 +14,9 @@ import Mathbin.CategoryTheory.Monoidal.Preadditive
 /-!
 # Tor, the left-derived functor of tensor product
 
+> THIS FILE IS SYNCHRONIZED WITH MATHLIB4.
+> Any changes to this file require a corresponding PR to mathlib4.
+
 We define `Tor C n : C ⥤ C ⥤ C`, by left-deriving in the second factor of `(X, Y) ↦ X ⊗ Y`.
 
 For now we have almost nothing to say about it!
Diff
@@ -41,36 +41,52 @@ variable {C : Type _} [Category C] [MonoidalCategory C] [Preadditive C] [Monoida
 
 variable (C)
 
+#print CategoryTheory.Tor /-
 /-- We define `Tor C n : C ⥤ C ⥤ C` by left-deriving in the second factor of `(X, Y) ↦ X ⊗ Y`. -/
 @[simps]
-def tor (n : ℕ) : C ⥤ C ⥤ C
+def Tor (n : ℕ) : C ⥤ C ⥤ C
     where
   obj X := Functor.leftDerived ((tensoringLeft C).obj X) n
   map X Y f := NatTrans.leftDerived ((tensoringLeft C).map f) n
   map_id' X := by rw [(tensoring_left C).map_id, nat_trans.left_derived_id]
   map_comp' X Y Z f g := by rw [(tensoring_left C).map_comp, nat_trans.left_derived_comp]
-#align category_theory.Tor CategoryTheory.tor
+#align category_theory.Tor CategoryTheory.Tor
+-/
 
+#print CategoryTheory.Tor' /-
 /-- An alternative definition of `Tor`, where we left-derive in the first factor instead. -/
 @[simps]
-def tor' (n : ℕ) : C ⥤ C ⥤ C :=
+def Tor' (n : ℕ) : C ⥤ C ⥤ C :=
   Functor.flip
     { obj := fun X => Functor.leftDerived ((tensoringRight C).obj X) n
       map := fun X Y f => NatTrans.leftDerived ((tensoringRight C).map f) n
       map_id' := fun X => by rw [(tensoring_right C).map_id, nat_trans.left_derived_id]
       map_comp' := fun X Y Z f g => by
         rw [(tensoring_right C).map_comp, nat_trans.left_derived_comp] }
-#align category_theory.Tor' CategoryTheory.tor'
+#align category_theory.Tor' CategoryTheory.Tor'
+-/
 
 open ZeroObject
 
+/- warning: category_theory.Tor_succ_of_projective -> CategoryTheory.torSuccOfProjective is a dubious translation:
+lean 3 declaration is
+  forall (C : Type.{u1}) [_inst_1 : CategoryTheory.Category.{u2, u1} C] [_inst_2 : CategoryTheory.MonoidalCategory.{u2, u1} C _inst_1] [_inst_3 : CategoryTheory.Preadditive.{u2, u1} C _inst_1] [_inst_4 : CategoryTheory.MonoidalPreadditive.{u1, u2} C _inst_1 _inst_3 _inst_2] [_inst_5 : CategoryTheory.Limits.HasZeroObject.{u2, u1} C _inst_1] [_inst_6 : CategoryTheory.Limits.HasEqualizers.{u2, u1} C _inst_1] [_inst_7 : CategoryTheory.Limits.HasCokernels.{u2, u1} C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u1} C _inst_1 _inst_3)] [_inst_8 : CategoryTheory.Limits.HasImages.{u2, u1} C _inst_1] [_inst_9 : CategoryTheory.Limits.HasImageMaps.{u2, u1} C _inst_1 _inst_8] [_inst_10 : CategoryTheory.HasProjectiveResolutions.{u2, u1} C _inst_1 _inst_5 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u1} C _inst_1 _inst_3) _inst_6 _inst_8] (X : C) (Y : C) [_inst_11 : CategoryTheory.Projective.{u2, u1} C _inst_1 Y] (n : Nat), CategoryTheory.Iso.{u2, u1} C _inst_1 (CategoryTheory.Functor.obj.{u2, u2, u1, u1} C _inst_1 C _inst_1 (CategoryTheory.Functor.obj.{u2, max u1 u2, u1, max u2 u1} C _inst_1 (CategoryTheory.Functor.{u2, u2, u1, u1} C _inst_1 C _inst_1) (CategoryTheory.Functor.category.{u2, u2, u1, u1} C _inst_1 C _inst_1) (CategoryTheory.Tor.{u1, u2} C _inst_1 _inst_2 _inst_3 _inst_4 _inst_5 _inst_6 _inst_7 _inst_8 _inst_9 _inst_10 (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat Nat.hasAdd) n (OfNat.ofNat.{0} Nat 1 (OfNat.mk.{0} Nat 1 (One.one.{0} Nat Nat.hasOne))))) X) Y) (OfNat.ofNat.{u1} C 0 (OfNat.mk.{u1} C 0 (Zero.zero.{u1} C (CategoryTheory.Limits.HasZeroObject.zero'.{u2, u1} C _inst_1 _inst_5))))
+but is expected to have type
+  forall (C : Type.{u1}) [_inst_1 : CategoryTheory.Category.{u2, u1} C] [_inst_2 : CategoryTheory.MonoidalCategory.{u2, u1} C _inst_1] [_inst_3 : CategoryTheory.Preadditive.{u2, u1} C _inst_1] [_inst_4 : CategoryTheory.MonoidalPreadditive.{u1, u2} C _inst_1 _inst_3 _inst_2] [_inst_5 : CategoryTheory.Limits.HasZeroObject.{u2, u1} C _inst_1] [_inst_6 : CategoryTheory.Limits.HasEqualizers.{u2, u1} C _inst_1] [_inst_7 : CategoryTheory.Limits.HasCokernels.{u2, u1} C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u1} C _inst_1 _inst_3)] [_inst_8 : CategoryTheory.Limits.HasImages.{u2, u1} C _inst_1] [_inst_9 : CategoryTheory.Limits.HasImageMaps.{u2, u1} C _inst_1 _inst_8] [_inst_10 : CategoryTheory.HasProjectiveResolutions.{u2, u1} C _inst_1 _inst_5 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u1} C _inst_1 _inst_3) _inst_6 _inst_8] (X : C) (Y : C) [_inst_11 : CategoryTheory.Projective.{u2, u1} C _inst_1 Y] (n : Nat), CategoryTheory.Iso.{u2, u1} C _inst_1 (Prefunctor.obj.{succ u2, succ u2, u1, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1)) C (CategoryTheory.CategoryStruct.toQuiver.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1)) (CategoryTheory.Functor.toPrefunctor.{u2, u2, u1, u1} C _inst_1 C _inst_1 (Prefunctor.obj.{succ u2, max (succ u1) (succ u2), u1, max u1 u2} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1)) (CategoryTheory.Functor.{u2, u2, u1, u1} C _inst_1 C _inst_1) (CategoryTheory.CategoryStruct.toQuiver.{max u1 u2, max u1 u2} (CategoryTheory.Functor.{u2, u2, u1, u1} C _inst_1 C _inst_1) (CategoryTheory.Category.toCategoryStruct.{max u1 u2, max u1 u2} (CategoryTheory.Functor.{u2, u2, u1, u1} C _inst_1 C _inst_1) (CategoryTheory.Functor.category.{u2, u2, u1, u1} C _inst_1 C _inst_1))) (CategoryTheory.Functor.toPrefunctor.{u2, max u1 u2, u1, max u1 u2} C _inst_1 (CategoryTheory.Functor.{u2, u2, u1, u1} C _inst_1 C _inst_1) (CategoryTheory.Functor.category.{u2, u2, u1, u1} C _inst_1 C _inst_1) (CategoryTheory.Tor.{u1, u2} C _inst_1 _inst_2 _inst_3 _inst_4 _inst_5 _inst_6 _inst_7 _inst_8 _inst_9 _inst_10 (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1))))) X)) Y) (OfNat.ofNat.{u1} C 0 (Zero.toOfNat0.{u1} C (CategoryTheory.Limits.HasZeroObject.zero'.{u2, u1} C _inst_1 _inst_5)))
+Case conversion may be inaccurate. Consider using '#align category_theory.Tor_succ_of_projective CategoryTheory.torSuccOfProjectiveₓ'. -/
 /-- The higher `Tor` groups for `X` and `Y` are zero if `Y` is projective. -/
-def torSuccOfProjective (X Y : C) [Projective Y] (n : ℕ) : ((tor C (n + 1)).obj X).obj Y ≅ 0 :=
+def torSuccOfProjective (X Y : C) [Projective Y] (n : ℕ) : ((Tor C (n + 1)).obj X).obj Y ≅ 0 :=
   ((tensoringLeft C).obj X).leftDerivedObjProjectiveSucc n Y
 #align category_theory.Tor_succ_of_projective CategoryTheory.torSuccOfProjective
 
+/- warning: category_theory.Tor'_succ_of_projective -> CategoryTheory.tor'SuccOfProjective is a dubious translation:
+lean 3 declaration is
+  forall (C : Type.{u1}) [_inst_1 : CategoryTheory.Category.{u2, u1} C] [_inst_2 : CategoryTheory.MonoidalCategory.{u2, u1} C _inst_1] [_inst_3 : CategoryTheory.Preadditive.{u2, u1} C _inst_1] [_inst_4 : CategoryTheory.MonoidalPreadditive.{u1, u2} C _inst_1 _inst_3 _inst_2] [_inst_5 : CategoryTheory.Limits.HasZeroObject.{u2, u1} C _inst_1] [_inst_6 : CategoryTheory.Limits.HasEqualizers.{u2, u1} C _inst_1] [_inst_7 : CategoryTheory.Limits.HasCokernels.{u2, u1} C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u1} C _inst_1 _inst_3)] [_inst_8 : CategoryTheory.Limits.HasImages.{u2, u1} C _inst_1] [_inst_9 : CategoryTheory.Limits.HasImageMaps.{u2, u1} C _inst_1 _inst_8] [_inst_10 : CategoryTheory.HasProjectiveResolutions.{u2, u1} C _inst_1 _inst_5 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u1} C _inst_1 _inst_3) _inst_6 _inst_8] (X : C) (Y : C) [_inst_11 : CategoryTheory.Projective.{u2, u1} C _inst_1 X] (n : Nat), CategoryTheory.Iso.{u2, u1} C _inst_1 (CategoryTheory.Functor.obj.{u2, u2, u1, u1} C _inst_1 C _inst_1 (CategoryTheory.Functor.obj.{u2, max u1 u2, u1, max u2 u1} C _inst_1 (CategoryTheory.Functor.{u2, u2, u1, u1} C _inst_1 C _inst_1) (CategoryTheory.Functor.category.{u2, u2, u1, u1} C _inst_1 C _inst_1) (CategoryTheory.Tor'.{u1, u2} C _inst_1 _inst_2 _inst_3 _inst_4 _inst_5 _inst_6 _inst_7 _inst_8 _inst_9 _inst_10 (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat Nat.hasAdd) n (OfNat.ofNat.{0} Nat 1 (OfNat.mk.{0} Nat 1 (One.one.{0} Nat Nat.hasOne))))) X) Y) (OfNat.ofNat.{u1} C 0 (OfNat.mk.{u1} C 0 (Zero.zero.{u1} C (CategoryTheory.Limits.HasZeroObject.zero'.{u2, u1} C _inst_1 _inst_5))))
+but is expected to have type
+  forall (C : Type.{u1}) [_inst_1 : CategoryTheory.Category.{u2, u1} C] [_inst_2 : CategoryTheory.MonoidalCategory.{u2, u1} C _inst_1] [_inst_3 : CategoryTheory.Preadditive.{u2, u1} C _inst_1] [_inst_4 : CategoryTheory.MonoidalPreadditive.{u1, u2} C _inst_1 _inst_3 _inst_2] [_inst_5 : CategoryTheory.Limits.HasZeroObject.{u2, u1} C _inst_1] [_inst_6 : CategoryTheory.Limits.HasEqualizers.{u2, u1} C _inst_1] [_inst_7 : CategoryTheory.Limits.HasCokernels.{u2, u1} C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u1} C _inst_1 _inst_3)] [_inst_8 : CategoryTheory.Limits.HasImages.{u2, u1} C _inst_1] [_inst_9 : CategoryTheory.Limits.HasImageMaps.{u2, u1} C _inst_1 _inst_8] [_inst_10 : CategoryTheory.HasProjectiveResolutions.{u2, u1} C _inst_1 _inst_5 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u1} C _inst_1 _inst_3) _inst_6 _inst_8] (X : C) (Y : C) [_inst_11 : CategoryTheory.Projective.{u2, u1} C _inst_1 X] (n : Nat), CategoryTheory.Iso.{u2, u1} C _inst_1 (Prefunctor.obj.{succ u2, succ u2, u1, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1)) C (CategoryTheory.CategoryStruct.toQuiver.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1)) (CategoryTheory.Functor.toPrefunctor.{u2, u2, u1, u1} C _inst_1 C _inst_1 (Prefunctor.obj.{succ u2, max (succ u1) (succ u2), u1, max u1 u2} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1)) (CategoryTheory.Functor.{u2, u2, u1, u1} C _inst_1 C _inst_1) (CategoryTheory.CategoryStruct.toQuiver.{max u1 u2, max u1 u2} (CategoryTheory.Functor.{u2, u2, u1, u1} C _inst_1 C _inst_1) (CategoryTheory.Category.toCategoryStruct.{max u1 u2, max u1 u2} (CategoryTheory.Functor.{u2, u2, u1, u1} C _inst_1 C _inst_1) (CategoryTheory.Functor.category.{u2, u2, u1, u1} C _inst_1 C _inst_1))) (CategoryTheory.Functor.toPrefunctor.{u2, max u1 u2, u1, max u1 u2} C _inst_1 (CategoryTheory.Functor.{u2, u2, u1, u1} C _inst_1 C _inst_1) (CategoryTheory.Functor.category.{u2, u2, u1, u1} C _inst_1 C _inst_1) (CategoryTheory.Tor'.{u1, u2} C _inst_1 _inst_2 _inst_3 _inst_4 _inst_5 _inst_6 _inst_7 _inst_8 _inst_9 _inst_10 (HAdd.hAdd.{0, 0, 0} Nat Nat Nat (instHAdd.{0} Nat instAddNat) n (OfNat.ofNat.{0} Nat 1 (instOfNatNat 1))))) X)) Y) (OfNat.ofNat.{u1} C 0 (Zero.toOfNat0.{u1} C (CategoryTheory.Limits.HasZeroObject.zero'.{u2, u1} C _inst_1 _inst_5)))
+Case conversion may be inaccurate. Consider using '#align category_theory.Tor'_succ_of_projective CategoryTheory.tor'SuccOfProjectiveₓ'. -/
 /-- The higher `Tor'` groups for `X` and `Y` are zero if `X` is projective. -/
-def tor'SuccOfProjective (X Y : C) [Projective X] (n : ℕ) : ((tor' C (n + 1)).obj X).obj Y ≅ 0 :=
+def tor'SuccOfProjective (X Y : C) [Projective X] (n : ℕ) : ((Tor' C (n + 1)).obj X).obj Y ≅ 0 :=
   by
   -- This unfortunately needs a manual `dsimp`, to avoid a slow unification problem.
   dsimp only [Tor', functor.flip]
Diff
@@ -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 category_theory.monoidal.tor
-! leanprover-community/mathlib commit 8001ea54ece3bd5c0d0932f1e4f6d0f142ea20d9
+! leanprover-community/mathlib commit 09f981f72d43749f1fa072deade828d9c1e185bb
 ! Please do not edit these lines, except to modify the commit id
 ! if you have ported upstream changes.
 -/
@@ -79,3 +79,5 @@ def tor'SuccOfProjective (X Y : C) [Projective X] (n : ℕ) : ((tor' C (n + 1)).
 
 end CategoryTheory
 
+assert_not_exists Module.abelian
+

Changes in mathlib4

mathlib3
mathlib4
style: homogenise porting notes (#11145)

Homogenises porting notes via capitalisation and addition of whitespace.

It makes the following changes:

  • converts "--porting note" into "-- Porting note";
  • converts "porting note" into "Porting note".
Diff
@@ -52,14 +52,14 @@ def Tor' (n : ℕ) : C ⥤ C ⥤ C :=
 set_option linter.uppercaseLean3 false in
 #align category_theory.Tor' CategoryTheory.Tor'
 
--- porting note: the `checkType` linter complains about the automatically generated
+-- Porting note: the `checkType` linter complains about the automatically generated
 -- lemma `Tor'_map_app`, but not about this one
 @[simp]
 lemma Tor'_map_app' (n : ℕ) {X Y : C} (f : X ⟶ Y) (Z : C) :
     ((Tor' C n).map f).app Z = (Functor.leftDerived ((tensoringRight C).obj Z) n).map f := by
   rfl
 
--- porting note: this specific lemma was added because otherwise the internals of
+-- Porting note: this specific lemma was added because otherwise the internals of
 -- `NatTrans.leftDerived` leaks into the RHS (it was already so in mathlib)
 @[simp]
 lemma Tor'_obj_map (n : ℕ) {X Y : C} (Z : C) (f : X ⟶ Y) :
refactor(Algebra/Homology): use the new homology API (#8706)

This PR refactors the construction of left derived functors using the new homology API: this also affects the dependencies (Ext functors, group cohomology, local cohomology). As a result, the old homology API is no longer used in any significant way in mathlib. Then, with this PR, the homology refactor is essentially complete.

The organization of the files was made more coherent: the definition of a projective resolution is in Preadditive.ProjectiveResolution, the existence of resolutions when there are enough projectives is shown in Abelian.ProjectiveResolution, and the left derived functor is constructed in Abelian.LeftDerived; the dual results are in Preadditive.InjectiveResolution, Abelian.InjectiveResolution and Abelian.RightDerived.

Co-authored-by: Joël Riou <37772949+joelriou@users.noreply.github.com>

Diff
@@ -3,7 +3,7 @@ Copyright (c) 2021 Scott Morrison. All rights reserved.
 Released under Apache 2.0 license as described in the file LICENSE.
 Authors: Scott Morrison
 -/
-import Mathlib.CategoryTheory.Functor.LeftDerived
+import Mathlib.CategoryTheory.Abelian.LeftDerived
 import Mathlib.CategoryTheory.Monoidal.Preadditive
 
 #align_import category_theory.monoidal.tor from "leanprover-community/mathlib"@"09f981f72d43749f1fa072deade828d9c1e185bb"
@@ -32,11 +32,8 @@ open CategoryTheory.MonoidalCategory
 
 namespace CategoryTheory
 
-variable {C : Type*} [Category C] [MonoidalCategory C] [Preadditive C] [MonoidalPreadditive C]
-  [HasZeroObject C] [HasEqualizers C] [HasCokernels C] [HasImages C] [HasImageMaps C]
-  [HasProjectiveResolutions C]
-
-variable (C)
+variable (C : Type*) [Category C] [MonoidalCategory C]
+  [Abelian C] [MonoidalPreadditive C] [HasProjectiveResolutions C]
 
 /-- We define `Tor C n : C ⥤ C ⥤ C` by left-deriving in the second factor of `(X, Y) ↦ X ⊗ Y`. -/
 @[simps]
@@ -68,21 +65,15 @@ lemma Tor'_map_app' (n : ℕ) {X Y : C} (f : X ⟶ Y) (Z : C) :
 lemma Tor'_obj_map (n : ℕ) {X Y : C} (Z : C) (f : X ⟶ Y) :
     ((Tor' C n).obj Z).map f = (NatTrans.leftDerived ((tensoringRight C).map f) n).app Z := rfl
 
-open ZeroObject
-
 /-- The higher `Tor` groups for `X` and `Y` are zero if `Y` is projective. -/
-def torSuccOfProjective (X Y : C) [Projective Y] (n : ℕ) : ((Tor C (n + 1)).obj X).obj Y ≅ 0 :=
-  ((tensoringLeft C).obj X).leftDerivedObjProjectiveSucc n Y
-set_option linter.uppercaseLean3 false in
-#align category_theory.Tor_succ_of_projective CategoryTheory.torSuccOfProjective
+lemma isZero_Tor_succ_of_projective (X Y : C) [Projective Y] (n : ℕ) :
+    IsZero (((Tor C (n + 1)).obj X).obj Y) := by
+  apply Functor.isZero_leftDerived_obj_projective_succ
 
 /-- The higher `Tor'` groups for `X` and `Y` are zero if `X` is projective. -/
-def tor'SuccOfProjective (X Y : C) [Projective X] (n : ℕ) : ((Tor' C (n + 1)).obj X).obj Y ≅ 0 := by
-  -- This unfortunately needs a manual `dsimp`, to avoid a slow unification problem.
-  dsimp only [Tor', Functor.flip]
-  exact ((tensoringRight C).obj Y).leftDerivedObjProjectiveSucc n X
-set_option linter.uppercaseLean3 false in
-#align category_theory.Tor'_succ_of_projective CategoryTheory.tor'SuccOfProjective
+lemma isZero_Tor'_succ_of_projective (X Y : C) [Projective X] (n : ℕ) :
+    IsZero (((Tor' C (n + 1)).obj X).obj Y) := by
+  apply Functor.isZero_leftDerived_obj_projective_succ
 
 end CategoryTheory
 
chore: banish Type _ and Sort _ (#6499)

We remove all possible occurences of Type _ and Sort _ in favor of Type* and Sort*.

This has nice performance benefits.

Diff
@@ -32,7 +32,7 @@ open CategoryTheory.MonoidalCategory
 
 namespace CategoryTheory
 
-variable {C : Type _} [Category C] [MonoidalCategory C] [Preadditive C] [MonoidalPreadditive C]
+variable {C : Type*} [Category C] [MonoidalCategory C] [Preadditive C] [MonoidalPreadditive C]
   [HasZeroObject C] [HasEqualizers C] [HasCokernels C] [HasImages C] [HasImageMaps C]
   [HasProjectiveResolutions C]
 
chore: script to replace headers with #align_import statements (#5979)

Open in Gitpod

Co-authored-by: Eric Wieser <wieser.eric@gmail.com> Co-authored-by: Scott Morrison <scott.morrison@gmail.com>

Diff
@@ -2,15 +2,12 @@
 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 category_theory.monoidal.tor
-! leanprover-community/mathlib commit 09f981f72d43749f1fa072deade828d9c1e185bb
-! Please do not edit these lines, except to modify the commit id
-! if you have ported upstream changes.
 -/
 import Mathlib.CategoryTheory.Functor.LeftDerived
 import Mathlib.CategoryTheory.Monoidal.Preadditive
 
+#align_import category_theory.monoidal.tor from "leanprover-community/mathlib"@"09f981f72d43749f1fa072deade828d9c1e185bb"
+
 /-!
 # Tor, the left-derived functor of tensor product
 
feat: assert_not_exists (#4245)
Diff
@@ -89,5 +89,4 @@ set_option linter.uppercaseLean3 false in
 
 end CategoryTheory
 
--- porting note: commented the following line
---assert_not_exists Module.abelian
+assert_not_exists Module.abelian
feat: port CategoryTheory.Monoidal.Tor (#3754)

Co-authored-by: Joël Riou <37772949+joelriou@users.noreply.github.com>

Dependencies 4 + 333

334 files ported (98.8%)
132617 lines ported (99.1%)
Show graph

The unported dependencies are