category_theory.differential_objectMathlib.CategoryTheory.DifferentialObject

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)

(last sync)

Changes in mathlib3port

mathlib3
mathlib3port
Diff
@@ -123,7 +123,7 @@ def forget : DifferentialObject C ⥤ C where
 -/
 
 #print CategoryTheory.DifferentialObject.forget_faithful /-
-instance forget_faithful : Faithful (forget C) where
+instance forget_faithful : CategoryTheory.Functor.Faithful (forget C) where
 #align category_theory.differential_object.forget_faithful CategoryTheory.DifferentialObject.forget_faithful
 -/
 
Diff
@@ -3,7 +3,7 @@ Copyright (c) 2020 Scott Morrison. All rights reserved.
 Released under Apache 2.0 license as described in the file LICENSE.
 Authors: Scott Morrison
 -/
-import Data.Int.Basic
+import Algebra.Group.Int
 import CategoryTheory.Shift.Basic
 import CategoryTheory.ConcreteCategory.Basic
 
Diff
@@ -3,9 +3,9 @@ Copyright (c) 2020 Scott Morrison. All rights reserved.
 Released under Apache 2.0 license as described in the file LICENSE.
 Authors: Scott Morrison
 -/
-import Mathbin.Data.Int.Basic
-import Mathbin.CategoryTheory.Shift.Basic
-import Mathbin.CategoryTheory.ConcreteCategory.Basic
+import Data.Int.Basic
+import CategoryTheory.Shift.Basic
+import CategoryTheory.ConcreteCategory.Basic
 
 #align_import category_theory.differential_object from "leanprover-community/mathlib"@"d07a9c875ed7139abfde6a333b2be205c5bd404e"
 
Diff
@@ -47,8 +47,6 @@ structure DifferentialObject where
   d_squared' : d ≫ d⟦(1 : ℤ)⟧' = 0 := by obviously
 #align category_theory.differential_object CategoryTheory.DifferentialObjectₓ
 
-restate_axiom differential_object.d_squared'
-
 attribute [simp] differential_object.d_squared
 
 variable {C}
@@ -63,8 +61,6 @@ structure Hom (X Y : DifferentialObject C) where
   comm' : X.d ≫ f⟦1⟧' = f ≫ Y.d := by obviously
 #align category_theory.differential_object.hom CategoryTheory.DifferentialObject.Homₓ
 
-restate_axiom hom.comm'
-
 attribute [simp, reassoc] hom.comm
 
 namespace Hom
Diff
@@ -36,7 +36,6 @@ variable (C : Type u) [Category.{v} C]
 -- TODO: generalize to `has_shift C A` for an arbitrary `[add_monoid A]` `[has_one A]`.
 variable [HasZeroMorphisms C] [HasShift C ℤ]
 
-#print CategoryTheory.DifferentialObject /-
 /-- A differential object in a category with zero morphisms and a shift is
 an object `X` equipped with
 a morphism `d : X ⟶ X⟦1⟧`, such that `d^2 = 0`.
@@ -46,8 +45,7 @@ structure DifferentialObject where
   pt : C
   d : X ⟶ X⟦1⟧
   d_squared' : d ≫ d⟦(1 : ℤ)⟧' = 0 := by obviously
-#align category_theory.differential_object CategoryTheory.DifferentialObject
--/
+#align category_theory.differential_object CategoryTheory.DifferentialObjectₓ
 
 restate_axiom differential_object.d_squared'
 
@@ -57,15 +55,13 @@ variable {C}
 
 namespace DifferentialObject
 
-#print CategoryTheory.DifferentialObject.Hom /-
 /-- A morphism of differential objects is a morphism commuting with the differentials.
 -/
 @[ext, nolint has_nonempty_instance]
 structure Hom (X Y : DifferentialObject C) where
   f : X.pt ⟶ Y.pt
   comm' : X.d ≫ f⟦1⟧' = f ≫ Y.d := by obviously
-#align category_theory.differential_object.hom CategoryTheory.DifferentialObject.Hom
--/
+#align category_theory.differential_object.hom CategoryTheory.DifferentialObject.Homₓ
 
 restate_axiom hom.comm'
 
Diff
@@ -2,16 +2,13 @@
 Copyright (c) 2020 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.differential_object
-! leanprover-community/mathlib commit d07a9c875ed7139abfde6a333b2be205c5bd404e
-! Please do not edit these lines, except to modify the commit id
-! if you have ported upstream changes.
 -/
 import Mathbin.Data.Int.Basic
 import Mathbin.CategoryTheory.Shift.Basic
 import Mathbin.CategoryTheory.ConcreteCategory.Basic
 
+#align_import category_theory.differential_object from "leanprover-community/mathlib"@"d07a9c875ed7139abfde6a333b2be205c5bd404e"
+
 /-!
 # Differential objects in a category.
 
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.differential_object
-! leanprover-community/mathlib commit 6876fa15e3158ff3e4a4e2af1fb6e1945c6e8803
+! leanprover-community/mathlib commit d07a9c875ed7139abfde6a333b2be205c5bd404e
 ! Please do not edit these lines, except to modify the commit id
 ! if you have ported upstream changes.
 -/
@@ -15,6 +15,9 @@ import Mathbin.CategoryTheory.ConcreteCategory.Basic
 /-!
 # Differential objects in a category.
 
+> THIS FILE IS SYNCHRONIZED WITH MATHLIB4.
+> Any changes to this file require a corresponding PR to mathlib4.
+
 A differential object in a category with zero morphisms and a shift is
 an object `X` equipped with
 a morphism `d : X ⟶ X⟦1⟧`, such that `d^2 = 0`.
Diff
@@ -36,6 +36,7 @@ variable (C : Type u) [Category.{v} C]
 -- TODO: generalize to `has_shift C A` for an arbitrary `[add_monoid A]` `[has_one A]`.
 variable [HasZeroMorphisms C] [HasShift C ℤ]
 
+#print CategoryTheory.DifferentialObject /-
 /-- A differential object in a category with zero morphisms and a shift is
 an object `X` equipped with
 a morphism `d : X ⟶ X⟦1⟧`, such that `d^2 = 0`.
@@ -46,6 +47,7 @@ structure DifferentialObject where
   d : X ⟶ X⟦1⟧
   d_squared' : d ≫ d⟦(1 : ℤ)⟧' = 0 := by obviously
 #align category_theory.differential_object CategoryTheory.DifferentialObject
+-/
 
 restate_axiom differential_object.d_squared'
 
@@ -55,6 +57,7 @@ variable {C}
 
 namespace DifferentialObject
 
+#print CategoryTheory.DifferentialObject.Hom /-
 /-- A morphism of differential objects is a morphism commuting with the differentials.
 -/
 @[ext, nolint has_nonempty_instance]
@@ -62,6 +65,7 @@ structure Hom (X Y : DifferentialObject C) where
   f : X.pt ⟶ Y.pt
   comm' : X.d ≫ f⟦1⟧' = f ≫ Y.d := by obviously
 #align category_theory.differential_object.hom CategoryTheory.DifferentialObject.Hom
+-/
 
 restate_axiom hom.comm'
 
@@ -69,62 +73,83 @@ attribute [simp, reassoc] hom.comm
 
 namespace Hom
 
+#print CategoryTheory.DifferentialObject.Hom.id /-
 /-- The identity morphism of a differential object. -/
 @[simps]
 def id (X : DifferentialObject C) : Hom X X where f := 𝟙 X.pt
 #align category_theory.differential_object.hom.id CategoryTheory.DifferentialObject.Hom.id
+-/
 
+#print CategoryTheory.DifferentialObject.Hom.comp /-
 /-- The composition of morphisms of differential objects. -/
 @[simps]
 def comp {X Y Z : DifferentialObject C} (f : Hom X Y) (g : Hom Y Z) : Hom X Z where f := f.f ≫ g.f
 #align category_theory.differential_object.hom.comp CategoryTheory.DifferentialObject.Hom.comp
+-/
 
 end Hom
 
+#print CategoryTheory.DifferentialObject.categoryOfDifferentialObjects /-
 instance categoryOfDifferentialObjects : Category (DifferentialObject C)
     where
   Hom := Hom
   id := Hom.id
   comp X Y Z f g := Hom.comp f g
 #align category_theory.differential_object.category_of_differential_objects CategoryTheory.DifferentialObject.categoryOfDifferentialObjects
+-/
 
+#print CategoryTheory.DifferentialObject.id_f /-
 @[simp]
 theorem id_f (X : DifferentialObject C) : (𝟙 X : X ⟶ X).f = 𝟙 X.pt :=
   rfl
 #align category_theory.differential_object.id_f CategoryTheory.DifferentialObject.id_f
+-/
 
+#print CategoryTheory.DifferentialObject.comp_f /-
 @[simp]
 theorem comp_f {X Y Z : DifferentialObject C} (f : X ⟶ Y) (g : Y ⟶ Z) : (f ≫ g).f = f.f ≫ g.f :=
   rfl
 #align category_theory.differential_object.comp_f CategoryTheory.DifferentialObject.comp_f
+-/
 
+#print CategoryTheory.DifferentialObject.eqToHom_f /-
 @[simp]
 theorem eqToHom_f {X Y : DifferentialObject C} (h : X = Y) :
     Hom.f (eqToHom h) = eqToHom (congr_arg _ h) := by subst h; rw [eq_to_hom_refl, eq_to_hom_refl];
   rfl
 #align category_theory.differential_object.eq_to_hom_f CategoryTheory.DifferentialObject.eqToHom_f
+-/
 
 variable (C)
 
+#print CategoryTheory.DifferentialObject.forget /-
 /-- The forgetful functor taking a differential object to its underlying object. -/
 def forget : DifferentialObject C ⥤ C where
   obj X := X.pt
   map X Y f := f.f
 #align category_theory.differential_object.forget CategoryTheory.DifferentialObject.forget
+-/
 
+#print CategoryTheory.DifferentialObject.forget_faithful /-
 instance forget_faithful : Faithful (forget C) where
 #align category_theory.differential_object.forget_faithful CategoryTheory.DifferentialObject.forget_faithful
+-/
 
+#print CategoryTheory.DifferentialObject.hasZeroMorphisms /-
 instance hasZeroMorphisms : HasZeroMorphisms (DifferentialObject C) where Zero X Y := ⟨{ f := 0 }⟩
 #align category_theory.differential_object.has_zero_morphisms CategoryTheory.DifferentialObject.hasZeroMorphisms
+-/
 
 variable {C}
 
+#print CategoryTheory.DifferentialObject.zero_f /-
 @[simp]
 theorem zero_f (P Q : DifferentialObject C) : (0 : P ⟶ Q).f = 0 :=
   rfl
 #align category_theory.differential_object.zero_f CategoryTheory.DifferentialObject.zero_f
+-/
 
+#print CategoryTheory.DifferentialObject.isoApp /-
 /-- An isomorphism of differential objects gives an isomorphism of the underlying objects.
 -/
 @[simps]
@@ -132,23 +157,31 @@ def isoApp {X Y : DifferentialObject C} (f : X ≅ Y) : X.pt ≅ Y.pt :=
   ⟨f.Hom.f, f.inv.f, by dsimp; rw [← comp_f, iso.hom_inv_id, id_f], by dsimp;
     rw [← comp_f, iso.inv_hom_id, id_f]⟩
 #align category_theory.differential_object.iso_app CategoryTheory.DifferentialObject.isoApp
+-/
 
+#print CategoryTheory.DifferentialObject.isoApp_refl /-
 @[simp]
 theorem isoApp_refl (X : DifferentialObject C) : isoApp (Iso.refl X) = Iso.refl X.pt :=
   rfl
 #align category_theory.differential_object.iso_app_refl CategoryTheory.DifferentialObject.isoApp_refl
+-/
 
+#print CategoryTheory.DifferentialObject.isoApp_symm /-
 @[simp]
 theorem isoApp_symm {X Y : DifferentialObject C} (f : X ≅ Y) : isoApp f.symm = (isoApp f).symm :=
   rfl
 #align category_theory.differential_object.iso_app_symm CategoryTheory.DifferentialObject.isoApp_symm
+-/
 
+#print CategoryTheory.DifferentialObject.isoApp_trans /-
 @[simp]
 theorem isoApp_trans {X Y Z : DifferentialObject C} (f : X ≅ Y) (g : Y ≅ Z) :
     isoApp (f ≪≫ g) = isoApp f ≪≫ isoApp g :=
   rfl
 #align category_theory.differential_object.iso_app_trans CategoryTheory.DifferentialObject.isoApp_trans
+-/
 
+#print CategoryTheory.DifferentialObject.mkIso /-
 /-- An isomorphism of differential objects can be constructed
 from an isomorphism of the underlying objects that commutes with the differentials. -/
 @[simps]
@@ -162,6 +195,7 @@ def mkIso {X Y : DifferentialObject C} (f : X.pt ≅ Y.pt) (hf : X.d ≫ f.Hom
   hom_inv_id' := by ext1; dsimp; exact f.hom_inv_id
   inv_hom_id' := by ext1; dsimp; exact f.inv_hom_id
 #align category_theory.differential_object.mk_iso CategoryTheory.DifferentialObject.mkIso
+-/
 
 end DifferentialObject
 
@@ -173,6 +207,7 @@ variable (D : Type u') [Category.{v'} D]
 
 variable [HasZeroMorphisms D] [HasShift D ℤ]
 
+#print CategoryTheory.Functor.mapDifferentialObject /-
 /--
 A functor `F : C ⥤ D` which commutes with shift functors on `C` and `D` and preserves zero morphisms
 can be lifted to a functor `differential_object C ⥤ differential_object D`.
@@ -202,6 +237,7 @@ def mapDifferentialObject (F : C ⥤ D)
   map_id' := by intros; ext; simp
   map_comp' := by intros; ext; simp
 #align category_theory.functor.map_differential_object CategoryTheory.Functor.mapDifferentialObject
+-/
 
 end Functor
 
@@ -217,9 +253,11 @@ variable [HasZeroObject C] [HasZeroMorphisms C] [HasShift C ℤ]
 
 open scoped ZeroObject
 
+#print CategoryTheory.DifferentialObject.hasZeroObject /-
 instance hasZeroObject : HasZeroObject (DifferentialObject C) := by
   refine' ⟨⟨⟨0, 0⟩, fun X => ⟨⟨⟨⟨0⟩⟩, fun f => _⟩⟩, fun X => ⟨⟨⟨⟨0⟩⟩, fun f => _⟩⟩⟩⟩ <;> ext
 #align category_theory.differential_object.has_zero_object CategoryTheory.DifferentialObject.hasZeroObject
+-/
 
 end DifferentialObject
 
@@ -228,9 +266,11 @@ namespace DifferentialObject
 variable (C : Type (u + 1)) [LargeCategory C] [ConcreteCategory C] [HasZeroMorphisms C]
   [HasShift C ℤ]
 
+#print CategoryTheory.DifferentialObject.concreteCategoryOfDifferentialObjects /-
 instance concreteCategoryOfDifferentialObjects : ConcreteCategory (DifferentialObject C)
     where forget := forget C ⋙ CategoryTheory.forget C
 #align category_theory.differential_object.concrete_category_of_differential_objects CategoryTheory.DifferentialObject.concreteCategoryOfDifferentialObjects
+-/
 
 instance : HasForget₂ (DifferentialObject C) C where forget₂ := forget C
 
@@ -247,6 +287,7 @@ variable [HasZeroMorphisms C] [HasShift C ℤ]
 
 noncomputable section
 
+#print CategoryTheory.DifferentialObject.shiftFunctor /-
 /-- The shift functor on `differential_object C`. -/
 @[simps]
 def shiftFunctor (n : ℤ) : DifferentialObject C ⥤ DifferentialObject C
@@ -267,7 +308,9 @@ def shiftFunctor (n : ℤ) : DifferentialObject C ⥤ DifferentialObject C
   map_id' := by intro X; ext1; dsimp; rw [Functor.map_id]
   map_comp' := by intro X Y Z f g; ext1; dsimp; rw [functor.map_comp]
 #align category_theory.differential_object.shift_functor CategoryTheory.DifferentialObject.shiftFunctor
+-/
 
+#print CategoryTheory.DifferentialObject.shiftFunctorAdd /-
 /-- The shift functor on `differential_object C` is additive. -/
 @[simps]
 def shiftFunctorAdd (m n : ℤ) : shiftFunctor C (m + n) ≅ shiftFunctor C m ⋙ shiftFunctor C n :=
@@ -283,9 +326,11 @@ def shiftFunctorAdd (m n : ℤ) : shiftFunctor C (m + n) ≅ shiftFunctor C m 
       iso.inv_hom_id_app_assoc]
   · intro X Y f; ext; dsimp; exact nat_trans.naturality _ _
 #align category_theory.differential_object.shift_functor_add CategoryTheory.DifferentialObject.shiftFunctorAdd
+-/
 
 section
 
+#print CategoryTheory.DifferentialObject.shiftZero /-
 /-- The shift by zero is naturally isomorphic to the identity. -/
 @[simps]
 def shiftZero : shiftFunctor C 0 ≅ 𝟭 (DifferentialObject C) :=
@@ -296,6 +341,7 @@ def shiftZero : shiftFunctor C 0 ≅ 𝟭 (DifferentialObject C) :=
     simp only [shift_functor_zero_hom_app_shift, category.assoc]
   · tidy
 #align category_theory.differential_object.shift_zero CategoryTheory.DifferentialObject.shiftZero
+-/
 
 end
 
Diff
@@ -199,8 +199,8 @@ def mapDifferentialObject (F : C ⥤ D)
         slice_lhs 2 3 => rw [← functor.comp_map F (shift_functor D (1 : ℤ)), ← η.naturality f.f]
         slice_lhs 1 2 => rw [functor.comp_map, ← F.map_comp, f.comm, F.map_comp]
         rw [category.assoc] }
-  map_id' := by intros ; ext; simp
-  map_comp' := by intros ; ext; simp
+  map_id' := by intros; ext; simp
+  map_comp' := by intros; ext; simp
 #align category_theory.functor.map_differential_object CategoryTheory.Functor.mapDifferentialObject
 
 end Functor
Diff
@@ -215,7 +215,7 @@ variable (C : Type u) [Category.{v} C]
 
 variable [HasZeroObject C] [HasZeroMorphisms C] [HasShift C ℤ]
 
-open ZeroObject
+open scoped ZeroObject
 
 instance hasZeroObject : HasZeroObject (DifferentialObject C) := by
   refine' ⟨⟨⟨0, 0⟩, fun X => ⟨⟨⟨⟨0⟩⟩, fun f => _⟩⟩, fun X => ⟨⟨⟨⟨0⟩⟩, fun f => _⟩⟩⟩⟩ <;> ext
Diff
@@ -100,10 +100,7 @@ theorem comp_f {X Y Z : DifferentialObject C} (f : X ⟶ Y) (g : Y ⟶ Z) : (f 
 
 @[simp]
 theorem eqToHom_f {X Y : DifferentialObject C} (h : X = Y) :
-    Hom.f (eqToHom h) = eqToHom (congr_arg _ h) :=
-  by
-  subst h
-  rw [eq_to_hom_refl, eq_to_hom_refl]
+    Hom.f (eqToHom h) = eqToHom (congr_arg _ h) := by subst h; rw [eq_to_hom_refl, eq_to_hom_refl];
   rfl
 #align category_theory.differential_object.eq_to_hom_f CategoryTheory.DifferentialObject.eqToHom_f
 
@@ -132,10 +129,7 @@ theorem zero_f (P Q : DifferentialObject C) : (0 : P ⟶ Q).f = 0 :=
 -/
 @[simps]
 def isoApp {X Y : DifferentialObject C} (f : X ≅ Y) : X.pt ≅ Y.pt :=
-  ⟨f.Hom.f, f.inv.f, by
-    dsimp
-    rw [← comp_f, iso.hom_inv_id, id_f], by
-    dsimp
+  ⟨f.Hom.f, f.inv.f, by dsimp; rw [← comp_f, iso.hom_inv_id, id_f], by dsimp;
     rw [← comp_f, iso.inv_hom_id, id_f]⟩
 #align category_theory.differential_object.iso_app CategoryTheory.DifferentialObject.isoApp
 
@@ -162,18 +156,11 @@ def mkIso {X Y : DifferentialObject C} (f : X.pt ≅ Y.pt) (hf : X.d ≫ f.Hom
     X ≅ Y where
   Hom := ⟨f.Hom, hf⟩
   inv :=
-    ⟨f.inv, by
-      dsimp
+    ⟨f.inv, by dsimp;
       rw [← functor.map_iso_inv, iso.comp_inv_eq, category.assoc, iso.eq_inv_comp,
         functor.map_iso_hom, hf]⟩
-  hom_inv_id' := by
-    ext1
-    dsimp
-    exact f.hom_inv_id
-  inv_hom_id' := by
-    ext1
-    dsimp
-    exact f.inv_hom_id
+  hom_inv_id' := by ext1; dsimp; exact f.hom_inv_id
+  inv_hom_id' := by ext1; dsimp; exact f.inv_hom_id
 #align category_theory.differential_object.mk_iso CategoryTheory.DifferentialObject.mkIso
 
 end DifferentialObject
@@ -212,14 +199,8 @@ def mapDifferentialObject (F : C ⥤ D)
         slice_lhs 2 3 => rw [← functor.comp_map F (shift_functor D (1 : ℤ)), ← η.naturality f.f]
         slice_lhs 1 2 => rw [functor.comp_map, ← F.map_comp, f.comm, F.map_comp]
         rw [category.assoc] }
-  map_id' := by
-    intros
-    ext
-    simp
-  map_comp' := by
-    intros
-    ext
-    simp
+  map_id' := by intros ; ext; simp
+  map_comp' := by intros ; ext; simp
 #align category_theory.functor.map_differential_object CategoryTheory.Functor.mapDifferentialObject
 
 end Functor
@@ -283,16 +264,8 @@ def shiftFunctor (n : ℤ) : DifferentialObject C ⥤ DifferentialObject C
         erw [category.assoc, shift_comm_hom_comp, ← functor.map_comp_assoc, f.comm,
           functor.map_comp_assoc]
         rfl }
-  map_id' := by
-    intro X
-    ext1
-    dsimp
-    rw [Functor.map_id]
-  map_comp' := by
-    intro X Y Z f g
-    ext1
-    dsimp
-    rw [functor.map_comp]
+  map_id' := by intro X; ext1; dsimp; rw [Functor.map_id]
+  map_comp' := by intro X Y Z f g; ext1; dsimp; rw [functor.map_comp]
 #align category_theory.differential_object.shift_functor CategoryTheory.DifferentialObject.shiftFunctor
 
 /-- The shift functor on `differential_object C` is additive. -/
@@ -308,10 +281,7 @@ def shiftFunctorAdd (m n : ℤ) : shiftFunctor C (m + n) ≅ shiftFunctor C m 
     simp only [functor.map_comp, category.assoc,
       shift_functor_comm_hom_app_comp_shift_shift_functor_add_hom_app 1 m n X.X,
       iso.inv_hom_id_app_assoc]
-  · intro X Y f
-    ext
-    dsimp
-    exact nat_trans.naturality _ _
+  · intro X Y f; ext; dsimp; exact nat_trans.naturality _ _
 #align category_theory.differential_object.shift_functor_add CategoryTheory.DifferentialObject.shiftFunctorAdd
 
 section
Diff
@@ -65,7 +65,7 @@ structure Hom (X Y : DifferentialObject C) where
 
 restate_axiom hom.comm'
 
-attribute [simp, reassoc.1] hom.comm
+attribute [simp, reassoc] hom.comm
 
 namespace Hom
 
Diff
@@ -4,12 +4,12 @@ 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.differential_object
-! leanprover-community/mathlib commit f7707875544ef1f81b32cb68c79e0e24e45a0e76
+! leanprover-community/mathlib commit 6876fa15e3158ff3e4a4e2af1fb6e1945c6e8803
 ! Please do not edit these lines, except to modify the commit id
 ! if you have ported upstream changes.
 -/
 import Mathbin.Data.Int.Basic
-import Mathbin.CategoryTheory.Shift
+import Mathbin.CategoryTheory.Shift.Basic
 import Mathbin.CategoryTheory.ConcreteCategory.Basic
 
 /-!
@@ -280,8 +280,9 @@ def shiftFunctor (n : ℤ) : DifferentialObject C ⥤ DifferentialObject C
     { f := f.f⟦n⟧'
       comm' := by
         dsimp
-        rw [category.assoc, shift_comm_hom_comp, ← functor.map_comp_assoc, f.comm,
-          functor.map_comp_assoc] }
+        erw [category.assoc, shift_comm_hom_comp, ← functor.map_comp_assoc, f.comm,
+          functor.map_comp_assoc]
+        rfl }
   map_id' := by
     intro X
     ext1
@@ -294,57 +295,58 @@ def shiftFunctor (n : ℤ) : DifferentialObject C ⥤ DifferentialObject C
     rw [functor.map_comp]
 #align category_theory.differential_object.shift_functor CategoryTheory.DifferentialObject.shiftFunctor
 
-attribute [local simp] eq_to_hom_map
-
-attribute [local reducible] Discrete.addMonoidal shift_comm
-
 /-- The shift functor on `differential_object C` is additive. -/
 @[simps]
 def shiftFunctorAdd (m n : ℤ) : shiftFunctor C (m + n) ≅ shiftFunctor C m ⋙ shiftFunctor C n :=
   by
   refine' nat_iso.of_components (fun X => mk_iso (shift_add X.pt _ _) _) _
   · dsimp
-    -- This is just `simp, simp [eq_to_hom_map]`.
-    simp_rw [category.assoc, obj_μ_inv_app, μ_inv_hom_app_assoc, functor.map_comp, obj_μ_app,
-      category.assoc, μ_naturality_assoc, μ_inv_hom_app_assoc, obj_μ_inv_app, category.assoc,
-      μ_naturalityₗ_assoc, μ_inv_hom_app_assoc, μ_inv_naturalityᵣ_assoc]
-    simp only [eq_to_hom_map, eq_to_hom_app, eq_to_iso.hom, eq_to_hom_trans_assoc, eq_to_iso.inv]
+    rw [← cancel_epi ((shift_functor_add C m n).inv.app X.X)]
+    simp only [category.assoc, iso.inv_hom_id_app_assoc]
+    erw [← nat_trans.naturality_assoc]
+    dsimp
+    simp only [functor.map_comp, category.assoc,
+      shift_functor_comm_hom_app_comp_shift_shift_functor_add_hom_app 1 m n X.X,
+      iso.inv_hom_id_app_assoc]
   · intro X Y f
     ext
     dsimp
     exact nat_trans.naturality _ _
 #align category_theory.differential_object.shift_functor_add CategoryTheory.DifferentialObject.shiftFunctorAdd
 
-attribute [local reducible] endofunctor_monoidal_category
-
 section
 
-attribute [local instance] endofunctor_monoidal_category
-
 /-- The shift by zero is naturally isomorphic to the identity. -/
 @[simps]
-def shiftε : 𝟭 (DifferentialObject C) ≅ shiftFunctor C 0 :=
+def shiftZero : shiftFunctor C 0 ≅ 𝟭 (DifferentialObject C) :=
   by
-  refine' nat_iso.of_components (fun X => mk_iso ((shift_monoidal_functor C ℤ).εIso.app X.pt) _) _
-  · dsimp
-    simp
-    dsimp
-    simp
-  · introv
-    ext
+  refine' nat_iso.of_components (fun X => mk_iso ((shift_functor_zero C ℤ).app X.pt) _) _
+  · erw [← nat_trans.naturality]
     dsimp
-    simp
-#align category_theory.differential_object.shift_ε CategoryTheory.DifferentialObject.shiftε
+    simp only [shift_functor_zero_hom_app_shift, category.assoc]
+  · tidy
+#align category_theory.differential_object.shift_zero CategoryTheory.DifferentialObject.shiftZero
 
 end
 
-attribute [local simp] eq_to_hom_map
-
 instance : HasShift (DifferentialObject C) ℤ :=
   hasShiftMk _ _
     { f := shiftFunctor C
-      ε := shiftε C
-      μ := fun m n => (shiftFunctorAdd C m n).symm }
+      zero := shiftZero C
+      add := shiftFunctorAdd C
+      assoc_hom_app := fun m₁ m₂ m₃ X => by
+        ext1
+        convert shift_functor_add_assoc_hom_app m₁ m₂ m₃ X.X
+        dsimp [shift_functor_add']
+        simpa
+      zero_add_hom_app := fun n X => by
+        ext1
+        convert shift_functor_add_zero_add_hom_app n X.X
+        simpa
+      add_zero_hom_app := fun n X => by
+        ext1
+        convert shift_functor_add_add_zero_hom_app n X.X
+        simpa }
 
 end DifferentialObject
 
Diff
@@ -42,7 +42,7 @@ a morphism `d : X ⟶ X⟦1⟧`, such that `d^2 = 0`.
 -/
 @[nolint has_nonempty_instance]
 structure DifferentialObject where
-  x : C
+  pt : C
   d : X ⟶ X⟦1⟧
   d_squared' : d ≫ d⟦(1 : ℤ)⟧' = 0 := by obviously
 #align category_theory.differential_object CategoryTheory.DifferentialObject
@@ -59,7 +59,7 @@ namespace DifferentialObject
 -/
 @[ext, nolint has_nonempty_instance]
 structure Hom (X Y : DifferentialObject C) where
-  f : X.x ⟶ Y.x
+  f : X.pt ⟶ Y.pt
   comm' : X.d ≫ f⟦1⟧' = f ≫ Y.d := by obviously
 #align category_theory.differential_object.hom CategoryTheory.DifferentialObject.Hom
 
@@ -71,7 +71,7 @@ namespace Hom
 
 /-- The identity morphism of a differential object. -/
 @[simps]
-def id (X : DifferentialObject C) : Hom X X where f := 𝟙 X.x
+def id (X : DifferentialObject C) : Hom X X where f := 𝟙 X.pt
 #align category_theory.differential_object.hom.id CategoryTheory.DifferentialObject.Hom.id
 
 /-- The composition of morphisms of differential objects. -/
@@ -89,7 +89,7 @@ instance categoryOfDifferentialObjects : Category (DifferentialObject C)
 #align category_theory.differential_object.category_of_differential_objects CategoryTheory.DifferentialObject.categoryOfDifferentialObjects
 
 @[simp]
-theorem id_f (X : DifferentialObject C) : (𝟙 X : X ⟶ X).f = 𝟙 X.x :=
+theorem id_f (X : DifferentialObject C) : (𝟙 X : X ⟶ X).f = 𝟙 X.pt :=
   rfl
 #align category_theory.differential_object.id_f CategoryTheory.DifferentialObject.id_f
 
@@ -111,7 +111,7 @@ variable (C)
 
 /-- The forgetful functor taking a differential object to its underlying object. -/
 def forget : DifferentialObject C ⥤ C where
-  obj X := X.x
+  obj X := X.pt
   map X Y f := f.f
 #align category_theory.differential_object.forget CategoryTheory.DifferentialObject.forget
 
@@ -131,7 +131,7 @@ theorem zero_f (P Q : DifferentialObject C) : (0 : P ⟶ Q).f = 0 :=
 /-- An isomorphism of differential objects gives an isomorphism of the underlying objects.
 -/
 @[simps]
-def isoApp {X Y : DifferentialObject C} (f : X ≅ Y) : X.x ≅ Y.x :=
+def isoApp {X Y : DifferentialObject C} (f : X ≅ Y) : X.pt ≅ Y.pt :=
   ⟨f.Hom.f, f.inv.f, by
     dsimp
     rw [← comp_f, iso.hom_inv_id, id_f], by
@@ -140,7 +140,7 @@ def isoApp {X Y : DifferentialObject C} (f : X ≅ Y) : X.x ≅ Y.x :=
 #align category_theory.differential_object.iso_app CategoryTheory.DifferentialObject.isoApp
 
 @[simp]
-theorem isoApp_refl (X : DifferentialObject C) : isoApp (Iso.refl X) = Iso.refl X.x :=
+theorem isoApp_refl (X : DifferentialObject C) : isoApp (Iso.refl X) = Iso.refl X.pt :=
   rfl
 #align category_theory.differential_object.iso_app_refl CategoryTheory.DifferentialObject.isoApp_refl
 
@@ -158,8 +158,8 @@ theorem isoApp_trans {X Y Z : DifferentialObject C} (f : X ≅ Y) (g : Y ≅ Z)
 /-- An isomorphism of differential objects can be constructed
 from an isomorphism of the underlying objects that commutes with the differentials. -/
 @[simps]
-def mkIso {X Y : DifferentialObject C} (f : X.x ≅ Y.x) (hf : X.d ≫ f.Hom⟦1⟧' = f.Hom ≫ Y.d) : X ≅ Y
-    where
+def mkIso {X Y : DifferentialObject C} (f : X.pt ≅ Y.pt) (hf : X.d ≫ f.Hom⟦1⟧' = f.Hom ≫ Y.d) :
+    X ≅ Y where
   Hom := ⟨f.Hom, hf⟩
   inv :=
     ⟨f.inv, by
@@ -196,8 +196,8 @@ def mapDifferentialObject (F : C ⥤ D)
     (hF : ∀ c c', F.map (0 : c ⟶ c') = 0) : DifferentialObject C ⥤ DifferentialObject D
     where
   obj X :=
-    { x := F.obj X.x
-      d := F.map X.d ≫ η.app X.x
+    { pt := F.obj X.pt
+      d := F.map X.d ≫ η.app X.pt
       d_squared' :=
         by
         rw [functor.map_comp, ← functor.comp_map F (shift_functor D (1 : ℤ))]
@@ -271,7 +271,7 @@ noncomputable section
 def shiftFunctor (n : ℤ) : DifferentialObject C ⥤ DifferentialObject C
     where
   obj X :=
-    { x := X.x⟦n⟧
+    { pt := X.pt⟦n⟧
       d := X.d⟦n⟧' ≫ (shiftComm _ _ _).Hom
       d_squared' := by
         rw [functor.map_comp, category.assoc, shift_comm_hom_comp_assoc, ← functor.map_comp_assoc,
@@ -302,7 +302,7 @@ attribute [local reducible] Discrete.addMonoidal shift_comm
 @[simps]
 def shiftFunctorAdd (m n : ℤ) : shiftFunctor C (m + n) ≅ shiftFunctor C m ⋙ shiftFunctor C n :=
   by
-  refine' nat_iso.of_components (fun X => mk_iso (shift_add X.x _ _) _) _
+  refine' nat_iso.of_components (fun X => mk_iso (shift_add X.pt _ _) _) _
   · dsimp
     -- This is just `simp, simp [eq_to_hom_map]`.
     simp_rw [category.assoc, obj_μ_inv_app, μ_inv_hom_app_assoc, functor.map_comp, obj_μ_app,
@@ -325,7 +325,7 @@ attribute [local instance] endofunctor_monoidal_category
 @[simps]
 def shiftε : 𝟭 (DifferentialObject C) ≅ shiftFunctor C 0 :=
   by
-  refine' nat_iso.of_components (fun X => mk_iso ((shift_monoidal_functor C ℤ).εIso.app X.x) _) _
+  refine' nat_iso.of_components (fun X => mk_iso ((shift_monoidal_functor C ℤ).εIso.app X.pt) _) _
   · dsimp
     simp
     dsimp

Changes in mathlib4

mathlib3
mathlib4
chore: classify porting notes referring to missing linters (#12098)

Reference the newly created issues #12094 and #12096, as well as the pre-existing #5171. Change all references to #10927 to #5171. Some of these changes were not labelled as "porting note"; change this for good measure.

Diff
@@ -35,7 +35,7 @@ variable [HasZeroMorphisms C] [HasShift C S]
 /-- A differential object in a category with zero morphisms and a shift is
 an object `obj` equipped with
 a morphism `d : obj ⟶ obj⟦1⟧`, such that `d^2 = 0`. -/
--- Porting note: Removed `@[nolint has_nonempty_instance]`
+-- Porting note(#5171): removed `@[nolint has_nonempty_instance]`
 structure DifferentialObject where
   /-- The underlying object of a differential object. -/
   obj : C
@@ -54,7 +54,7 @@ variable {S C}
 namespace DifferentialObject
 
 /-- A morphism of differential objects is a morphism commuting with the differentials. -/
-@[ext] -- Porting note: Removed `nolint has_nonempty_instance`
+@[ext] -- Porting note(#5171): removed `nolint has_nonempty_instance`
 structure Hom (X Y : DifferentialObject S C) where
   /-- The morphism between underlying objects of the two differentiable objects. -/
   f : X.obj ⟶ Y.obj
chore(CategoryTheory): move Full, Faithful, EssSurj, IsEquivalence and ReflectsIsomorphisms to the Functor namespace (#11985)

These notions on functors are now Functor.Full, Functor.Faithful, Functor.EssSurj, Functor.IsEquivalence, Functor.ReflectsIsomorphisms. Deprecated aliases are introduced for the previous names.

Diff
@@ -116,7 +116,7 @@ def forget : DifferentialObject S C ⥤ C where
   map f := f.f
 #align category_theory.differential_object.forget CategoryTheory.DifferentialObject.forget
 
-instance forget_faithful : Faithful (forget S C) where
+instance forget_faithful : (forget S C).Faithful where
 #align category_theory.differential_object.forget_faithful CategoryTheory.DifferentialObject.forget_faithful
 
 variable [(shiftFunctor C (1 : S)).PreservesZeroMorphisms]
chore(*): remove empty lines between variable statements (#11418)

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)
Diff
@@ -30,7 +30,6 @@ universe v u
 namespace CategoryTheory
 
 variable (S : Type*) [AddMonoidWithOne S] (C : Type u) [Category.{v} C]
-
 variable [HasZeroMorphisms C] [HasShift C S]
 
 /-- A differential object in a category with zero morphisms and a shift is
@@ -176,7 +175,6 @@ namespace Functor
 universe v' u'
 
 variable (D : Type u') [Category.{v'} D]
-
 variable [HasZeroMorphisms D] [HasShift D S]
 
 /-- A functor `F : C ⥤ D` which commutes with shift functors on `C` and `D` and preserves zero
@@ -214,7 +212,6 @@ namespace CategoryTheory
 namespace DifferentialObject
 
 variable (S : Type*) [AddMonoidWithOne S] (C : Type u) [Category.{v} C]
-
 variable [HasZeroObject C] [HasZeroMorphisms C] [HasShift C S]
 variable [(shiftFunctor C (1 : S)).PreservesZeroMorphisms]
 
@@ -249,7 +246,6 @@ end DifferentialObject
 namespace DifferentialObject
 
 variable {S : Type*} [AddCommGroupWithOne S] (C : Type u) [Category.{v} C]
-
 variable [HasZeroMorphisms C] [HasShift C S]
 
 noncomputable section
chore: reduce imports (#9830)

This uses the improved shake script from #9772 to reduce imports across mathlib. The corresponding noshake.json file has been added to #9772.

Co-authored-by: Mario Carneiro <di.gama@gmail.com>

Diff
@@ -3,7 +3,8 @@ Copyright (c) 2020 Scott Morrison. All rights reserved.
 Released under Apache 2.0 license as described in the file LICENSE.
 Authors: Scott Morrison
 -/
-import Mathlib.Data.Int.Basic
+import Mathlib.Algebra.Group.Basic
+import Mathlib.Data.Int.Cast.Defs
 import Mathlib.CategoryTheory.Shift.Basic
 import Mathlib.CategoryTheory.ConcreteCategory.Basic
 
chore: bump to v4.3.0-rc2 (#8366)

PR contents

This is the supremum of

along with some minor fixes from failures on nightly-testing as Mathlib master is merged into it.

Note that some PRs for changes that are already compatible with the current toolchain and will be necessary have already been split out: #8380.

I am hopeful that in future we will be able to progressively merge adaptation PRs into a bump/v4.X.0 branch, so we never end up with a "big merge" like this. However one of these adaptation PRs (#8056) predates my new scheme for combined CI, and it wasn't possible to keep that PR viable in the meantime.

Lean PRs involved in this bump

In particular this includes adjustments for the Lean PRs

leanprover/lean4#2778

We can get rid of all the

local macro_rules | `($x ^ $y) => `(HPow.hPow $x $y) -- Porting note: See issue [lean4#2220](https://github.com/leanprover/lean4/pull/2220)

macros across Mathlib (and in any projects that want to write natural number powers of reals).

leanprover/lean4#2722

Changes the default behaviour of simp to (config := {decide := false}). This makes simp (and consequentially norm_num) less powerful, but also more consistent, and less likely to blow up in long failures. This requires a variety of changes: changing some previously by simp or norm_num to decide or rfl, or adding (config := {decide := true}).

leanprover/lean4#2783

This changed the behaviour of simp so that simp [f] will only unfold "fully applied" occurrences of f. The old behaviour can be recovered with simp (config := { unfoldPartialApp := true }). We may in future add a syntax for this, e.g. simp [!f]; please provide feedback! In the meantime, we have made the following changes:

  • switching to using explicit lemmas that have the intended level of application
  • (config := { unfoldPartialApp := true }) in some places, to recover the old behaviour
  • Using @[eqns] to manually adjust the equation lemmas for a particular definition, recovering the old behaviour just for that definition. See #8371, where we do this for Function.comp and Function.flip.

This change in Lean may require further changes down the line (e.g. adding the !f syntax, and/or upstreaming the special treatment for Function.comp and Function.flip, and/or removing this special treatment). Please keep an open and skeptical mind about these changes!

Co-authored-by: leanprover-community-mathlib4-bot <leanprover-community-mathlib4-bot@users.noreply.github.com> Co-authored-by: Scott Morrison <scott.morrison@gmail.com> Co-authored-by: Eric Wieser <wieser.eric@gmail.com> Co-authored-by: Mauricio Collares <mauricio@collares.org>

Diff
@@ -200,8 +200,8 @@ def mapDifferentialObject (F : C ⥤ D)
         slice_lhs 2 3 => rw [← Functor.comp_map F (shiftFunctor D (1 : S)), ← η.naturality f.f]
         slice_lhs 1 2 => rw [Functor.comp_map, ← F.map_comp, f.comm, F.map_comp]
         rw [Category.assoc] }
-  map_id := by intros; ext; simp
-  map_comp := by intros; ext; simp
+  map_id := by intros; ext; simp [autoParam]
+  map_comp := by intros; ext; simp [autoParam]
 #align category_theory.functor.map_differential_object CategoryTheory.Functor.mapDifferentialObject
 
 end Functor
chore: bump toolchain to v4.3.0-rc1 (#8051)

This incorporates changes from

  • #7845
  • #7847
  • #7853
  • #7872 (was never actually made to work, but the diffs in nightly-testing are unexciting: we need to fully qualify a few names)

They can all be closed when this is merged.

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

Diff
@@ -219,12 +219,10 @@ variable [(shiftFunctor C (1 : S)).PreservesZeroMorphisms]
 
 open scoped ZeroObject
 
-instance hasZeroObject : HasZeroObject (DifferentialObject S C) := by
-  -- Porting note(https://github.com/leanprover-community/mathlib4/issues/4998): added `aesop_cat`
-  -- Porting note: added `simp only [eq_iff_true_of_subsingleton]`
-  refine' ⟨⟨⟨0, 0, by aesop_cat⟩, fun X => ⟨⟨⟨⟨0, by aesop_cat⟩⟩, fun f => _⟩⟩,
-    fun X => ⟨⟨⟨⟨0, by aesop_cat⟩⟩, fun f => _⟩⟩⟩⟩ <;> ext <;>
-    simp only [eq_iff_true_of_subsingleton]
+instance hasZeroObject : HasZeroObject (DifferentialObject S C) where
+  zero := ⟨{ obj := 0, d := 0 },
+    { unique_to := fun X => ⟨⟨⟨{ f := 0 }⟩, fun f => by ext⟩⟩,
+      unique_from := fun X => ⟨⟨⟨{ f := 0 }⟩, fun f => by ext⟩⟩ }⟩
 #align category_theory.differential_object.has_zero_object CategoryTheory.DifferentialObject.hasZeroObject
 
 end DifferentialObject
chore: remove unused simps (#6632)

Co-authored-by: Eric Wieser <wieser.eric@gmail.com>

Diff
@@ -137,8 +137,8 @@ instance hasZeroMorphisms : HasZeroMorphisms (DifferentialObject S C) where
 def isoApp {X Y : DifferentialObject S C} (f : X ≅ Y) : X.obj ≅ Y.obj where
   hom := f.hom.f
   inv := f.inv.f
-  hom_inv_id := by dsimp; rw [← comp_f, Iso.hom_inv_id, id_f]
-  inv_hom_id := by dsimp; rw [← comp_f, Iso.inv_hom_id, id_f]
+  hom_inv_id := by rw [← comp_f, Iso.hom_inv_id, id_f]
+  inv_hom_id := by rw [← comp_f, Iso.inv_hom_id, id_f]
 #align category_theory.differential_object.iso_app CategoryTheory.DifferentialObject.isoApp
 
 @[simp]
@@ -162,7 +162,6 @@ def mkIso {X Y : DifferentialObject S C} (f : X.obj ≅ Y.obj) (hf : X.d ≫ f.h
     X ≅ Y where
   hom := ⟨f.hom, hf⟩
   inv := ⟨f.inv, by
-    dsimp
     rw [← Functor.mapIso_inv, Iso.comp_inv_eq, Category.assoc, Iso.eq_inv_comp, Functor.mapIso_hom,
       hf]⟩
   hom_inv_id := by ext1; dsimp; exact f.hom_inv_id
style: remove trailing whitespace and modify the linter to detect it (#6519)
Diff
@@ -95,8 +95,8 @@ theorem id_f (X : DifferentialObject S C) : (𝟙 X : X ⟶ X).f = 𝟙 X.obj :=
 #align category_theory.differential_object.id_f CategoryTheory.DifferentialObject.id_f
 
 @[simp]
-theorem comp_f {X Y Z : DifferentialObject S C} (f : X ⟶ Y) (g : Y ⟶ Z) : 
-    (f ≫ g).f = f.f ≫ g.f := 
+theorem comp_f {X Y Z : DifferentialObject S C} (f : X ⟶ Y) (g : Y ⟶ Z) :
+    (f ≫ g).f = f.f ≫ g.f :=
   rfl
 #align category_theory.differential_object.comp_f CategoryTheory.DifferentialObject.comp_f
 
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
@@ -28,7 +28,7 @@ universe v u
 
 namespace CategoryTheory
 
-variable (S : Type _) [AddMonoidWithOne S] (C : Type u) [Category.{v} C]
+variable (S : Type*) [AddMonoidWithOne S] (C : Type u) [Category.{v} C]
 
 variable [HasZeroMorphisms C] [HasShift C S]
 
@@ -213,7 +213,7 @@ namespace CategoryTheory
 
 namespace DifferentialObject
 
-variable (S : Type _) [AddMonoidWithOne S] (C : Type u) [Category.{v} C]
+variable (S : Type*) [AddMonoidWithOne S] (C : Type u) [Category.{v} C]
 
 variable [HasZeroObject C] [HasZeroMorphisms C] [HasShift C S]
 variable [(shiftFunctor C (1 : S)).PreservesZeroMorphisms]
@@ -232,7 +232,7 @@ end DifferentialObject
 
 namespace DifferentialObject
 
-variable (S : Type _) [AddMonoidWithOne S]
+variable (S : Type*) [AddMonoidWithOne S]
 variable (C : Type (u + 1)) [LargeCategory C] [ConcreteCategory C] [HasZeroMorphisms C]
 variable [HasShift C S]
 
@@ -250,7 +250,7 @@ end DifferentialObject
 
 namespace DifferentialObject
 
-variable {S : Type _} [AddCommGroupWithOne S] (C : Type u) [Category.{v} C]
+variable {S : Type*} [AddCommGroupWithOne S] (C : Type u) [Category.{v} C]
 
 variable [HasZeroMorphisms C] [HasShift C S]
 
feat: allow differential objects with shifts in an AddMonoidWithOne (#6246)

What I was really hoping to do was show that ℕ-graded DGOs were the same as ℕ-graded chain complexes (we have the ℤ version), but this still seems awkward. If anyone would like to help with that, please let me know. I think this might be helpful in constructor tensor products of chain complexes with less suffering.

Co-authored-by: Scott Morrison <scott.morrison@gmail.com>

Diff
@@ -28,10 +28,9 @@ universe v u
 
 namespace CategoryTheory
 
-variable (C : Type u) [Category.{v} C]
+variable (S : Type _) [AddMonoidWithOne S] (C : Type u) [Category.{v} C]
 
--- TODO: generalize to `HasShift C A` for an arbitrary `[AddMonoid A]` `[One A]`.
-variable [HasZeroMorphisms C] [HasShift C ℤ]
+variable [HasZeroMorphisms C] [HasShift C S]
 
 /-- A differential object in a category with zero morphisms and a shift is
 an object `obj` equipped with
@@ -41,22 +40,22 @@ structure DifferentialObject where
   /-- The underlying object of a differential object. -/
   obj : C
   /-- The differential of a differential object. -/
-  d : obj ⟶ obj⟦(1 : ℤ)⟧
+  d : obj ⟶ obj⟦(1 : S)⟧
   /-- The differential `d` satisfies that `d² = 0`. -/
-  d_squared : d ≫ d⟦(1 : ℤ)⟧' = 0 := by aesop_cat
+  d_squared : d ≫ d⟦(1 : S)⟧' = 0 := by aesop_cat
 #align category_theory.differential_object CategoryTheory.DifferentialObject
 set_option linter.uppercaseLean3 false in
 #align category_theory.differential_object.X CategoryTheory.DifferentialObject.obj
 
 attribute [reassoc (attr := simp)] DifferentialObject.d_squared
 
-variable {C}
+variable {S C}
 
 namespace DifferentialObject
 
 /-- A morphism of differential objects is a morphism commuting with the differentials. -/
 @[ext] -- Porting note: Removed `nolint has_nonempty_instance`
-structure Hom (X Y : DifferentialObject C) where
+structure Hom (X Y : DifferentialObject S C) where
   /-- The morphism between underlying objects of the two differentiable objects. -/
   f : X.obj ⟶ Y.obj
   comm : X.d ≫ f⟦1⟧' = f ≫ Y.d := by aesop_cat
@@ -68,19 +67,19 @@ namespace Hom
 
 /-- The identity morphism of a differential object. -/
 @[simps]
-def id (X : DifferentialObject C) : Hom X X where
+def id (X : DifferentialObject S C) : Hom X X where
   f := 𝟙 X.obj
 #align category_theory.differential_object.hom.id CategoryTheory.DifferentialObject.Hom.id
 
 /-- The composition of morphisms of differential objects. -/
 @[simps]
-def comp {X Y Z : DifferentialObject C} (f : Hom X Y) (g : Hom Y Z) : Hom X Z where
+def comp {X Y Z : DifferentialObject S C} (f : Hom X Y) (g : Hom Y Z) : Hom X Z where
   f := f.f ≫ g.f
 #align category_theory.differential_object.hom.comp CategoryTheory.DifferentialObject.Hom.comp
 
 end Hom
 
-instance categoryOfDifferentialObjects : Category (DifferentialObject C) where
+instance categoryOfDifferentialObjects : Category (DifferentialObject S C) where
   Hom := Hom
   id := Hom.id
   comp f g := Hom.comp f g
@@ -88,50 +87,54 @@ instance categoryOfDifferentialObjects : Category (DifferentialObject C) where
 
 -- Porting note: added
 @[ext]
-theorem ext {A B : DifferentialObject C} {f g : A ⟶ B} (w : f.f = g.f := by aesop_cat) : f = g :=
+theorem ext {A B : DifferentialObject S C} {f g : A ⟶ B} (w : f.f = g.f := by aesop_cat) : f = g :=
   Hom.ext _ _ w
 
 @[simp]
-theorem id_f (X : DifferentialObject C) : (𝟙 X : X ⟶ X).f = 𝟙 X.obj := rfl
+theorem id_f (X : DifferentialObject S C) : (𝟙 X : X ⟶ X).f = 𝟙 X.obj := rfl
 #align category_theory.differential_object.id_f CategoryTheory.DifferentialObject.id_f
 
 @[simp]
-theorem comp_f {X Y Z : DifferentialObject C} (f : X ⟶ Y) (g : Y ⟶ Z) : (f ≫ g).f = f.f ≫ g.f := rfl
+theorem comp_f {X Y Z : DifferentialObject S C} (f : X ⟶ Y) (g : Y ⟶ Z) : 
+    (f ≫ g).f = f.f ≫ g.f := 
+  rfl
 #align category_theory.differential_object.comp_f CategoryTheory.DifferentialObject.comp_f
 
 @[simp]
-theorem eqToHom_f {X Y : DifferentialObject C} (h : X = Y) :
+theorem eqToHom_f {X Y : DifferentialObject S C} (h : X = Y) :
     Hom.f (eqToHom h) = eqToHom (congr_arg _ h) := by
   subst h
   rw [eqToHom_refl, eqToHom_refl]
   rfl
 #align category_theory.differential_object.eq_to_hom_f CategoryTheory.DifferentialObject.eqToHom_f
 
-variable (C)
+variable (S C)
 
 /-- The forgetful functor taking a differential object to its underlying object. -/
-def forget : DifferentialObject C ⥤ C where
+def forget : DifferentialObject S C ⥤ C where
   obj X := X.obj
   map f := f.f
 #align category_theory.differential_object.forget CategoryTheory.DifferentialObject.forget
 
-instance forget_faithful : Faithful (forget C) where
+instance forget_faithful : Faithful (forget S C) where
 #align category_theory.differential_object.forget_faithful CategoryTheory.DifferentialObject.forget_faithful
 
-instance {X Y : DifferentialObject C} : Zero (X ⟶ Y) := ⟨{f := 0}⟩
+variable [(shiftFunctor C (1 : S)).PreservesZeroMorphisms]
+
+instance {X Y : DifferentialObject S C} : Zero (X ⟶ Y) := ⟨{f := 0}⟩
 
-variable {C}
+variable {S C}
 
 @[simp]
-theorem zero_f (P Q : DifferentialObject C) : (0 : P ⟶ Q).f = 0 := rfl
+theorem zero_f (P Q : DifferentialObject S C) : (0 : P ⟶ Q).f = 0 := rfl
 #align category_theory.differential_object.zero_f CategoryTheory.DifferentialObject.zero_f
 
-instance hasZeroMorphisms : HasZeroMorphisms (DifferentialObject C) where
+instance hasZeroMorphisms : HasZeroMorphisms (DifferentialObject S C) where
 #align category_theory.differential_object.has_zero_morphisms CategoryTheory.DifferentialObject.hasZeroMorphisms
 
 /-- An isomorphism of differential objects gives an isomorphism of the underlying objects. -/
 @[simps]
-def isoApp {X Y : DifferentialObject C} (f : X ≅ Y) : X.obj ≅ Y.obj where
+def isoApp {X Y : DifferentialObject S C} (f : X ≅ Y) : X.obj ≅ Y.obj where
   hom := f.hom.f
   inv := f.inv.f
   hom_inv_id := by dsimp; rw [← comp_f, Iso.hom_inv_id, id_f]
@@ -139,23 +142,23 @@ def isoApp {X Y : DifferentialObject C} (f : X ≅ Y) : X.obj ≅ Y.obj where
 #align category_theory.differential_object.iso_app CategoryTheory.DifferentialObject.isoApp
 
 @[simp]
-theorem isoApp_refl (X : DifferentialObject C) : isoApp (Iso.refl X) = Iso.refl X.obj := rfl
+theorem isoApp_refl (X : DifferentialObject S C) : isoApp (Iso.refl X) = Iso.refl X.obj := rfl
 #align category_theory.differential_object.iso_app_refl CategoryTheory.DifferentialObject.isoApp_refl
 
 @[simp]
-theorem isoApp_symm {X Y : DifferentialObject C} (f : X ≅ Y) : isoApp f.symm = (isoApp f).symm :=
+theorem isoApp_symm {X Y : DifferentialObject S C} (f : X ≅ Y) : isoApp f.symm = (isoApp f).symm :=
   rfl
 #align category_theory.differential_object.iso_app_symm CategoryTheory.DifferentialObject.isoApp_symm
 
 @[simp]
-theorem isoApp_trans {X Y Z : DifferentialObject C} (f : X ≅ Y) (g : Y ≅ Z) :
+theorem isoApp_trans {X Y Z : DifferentialObject S C} (f : X ≅ Y) (g : Y ≅ Z) :
     isoApp (f ≪≫ g) = isoApp f ≪≫ isoApp g := rfl
 #align category_theory.differential_object.iso_app_trans CategoryTheory.DifferentialObject.isoApp_trans
 
 /-- An isomorphism of differential objects can be constructed
 from an isomorphism of the underlying objects that commutes with the differentials. -/
 @[simps]
-def mkIso {X Y : DifferentialObject C} (f : X.obj ≅ Y.obj) (hf : X.d ≫ f.hom⟦1⟧' = f.hom ≫ Y.d) :
+def mkIso {X Y : DifferentialObject S C} (f : X.obj ≅ Y.obj) (hf : X.d ≫ f.hom⟦1⟧' = f.hom ≫ Y.d) :
     X ≅ Y where
   hom := ⟨f.hom, hf⟩
   inv := ⟨f.inv, by
@@ -174,19 +177,19 @@ universe v' u'
 
 variable (D : Type u') [Category.{v'} D]
 
-variable [HasZeroMorphisms D] [HasShift D ℤ]
+variable [HasZeroMorphisms D] [HasShift D S]
 
 /-- A functor `F : C ⥤ D` which commutes with shift functors on `C` and `D` and preserves zero
-morphisms can be lifted to a functor `DifferentialObject C ⥤ DifferentialObject D`. -/
+morphisms can be lifted to a functor `DifferentialObject S C ⥤ DifferentialObject S D`. -/
 @[simps]
 def mapDifferentialObject (F : C ⥤ D)
-    (η : (shiftFunctor C (1 : ℤ)).comp F ⟶ F.comp (shiftFunctor D (1 : ℤ)))
-    (hF : ∀ c c', F.map (0 : c ⟶ c') = 0) : DifferentialObject C ⥤ DifferentialObject D where
+    (η : (shiftFunctor C (1 : S)).comp F ⟶ F.comp (shiftFunctor D (1 : S)))
+    (hF : ∀ c c', F.map (0 : c ⟶ c') = 0) : DifferentialObject S C ⥤ DifferentialObject S D where
   obj X :=
     { obj := F.obj X.obj
       d := F.map X.d ≫ η.app X.obj
       d_squared := by
-        rw [Functor.map_comp, ← Functor.comp_map F (shiftFunctor D (1 : ℤ))]
+        rw [Functor.map_comp, ← Functor.comp_map F (shiftFunctor D (1 : S))]
         slice_lhs 2 3 => rw [← η.naturality X.d]
         rw [Functor.comp_map]
         slice_lhs 1 2 => rw [← F.map_comp, X.d_squared, hF]
@@ -195,7 +198,7 @@ def mapDifferentialObject (F : C ⥤ D)
     { f := F.map f.f
       comm := by
         dsimp
-        slice_lhs 2 3 => rw [← Functor.comp_map F (shiftFunctor D (1 : ℤ)), ← η.naturality f.f]
+        slice_lhs 2 3 => rw [← Functor.comp_map F (shiftFunctor D (1 : S)), ← η.naturality f.f]
         slice_lhs 1 2 => rw [Functor.comp_map, ← F.map_comp, f.comm, F.map_comp]
         rw [Category.assoc] }
   map_id := by intros; ext; simp
@@ -210,13 +213,14 @@ namespace CategoryTheory
 
 namespace DifferentialObject
 
-variable (C : Type u) [Category.{v} C]
+variable (S : Type _) [AddMonoidWithOne S] (C : Type u) [Category.{v} C]
 
-variable [HasZeroObject C] [HasZeroMorphisms C] [HasShift C ℤ]
+variable [HasZeroObject C] [HasZeroMorphisms C] [HasShift C S]
+variable [(shiftFunctor C (1 : S)).PreservesZeroMorphisms]
 
 open scoped ZeroObject
 
-instance hasZeroObject : HasZeroObject (DifferentialObject C) := by
+instance hasZeroObject : HasZeroObject (DifferentialObject S C) := by
   -- Porting note(https://github.com/leanprover-community/mathlib4/issues/4998): added `aesop_cat`
   -- Porting note: added `simp only [eq_iff_true_of_subsingleton]`
   refine' ⟨⟨⟨0, 0, by aesop_cat⟩, fun X => ⟨⟨⟨⟨0, by aesop_cat⟩⟩, fun f => _⟩⟩,
@@ -228,15 +232,16 @@ end DifferentialObject
 
 namespace DifferentialObject
 
+variable (S : Type _) [AddMonoidWithOne S]
 variable (C : Type (u + 1)) [LargeCategory C] [ConcreteCategory C] [HasZeroMorphisms C]
-  [HasShift C ℤ]
+variable [HasShift C S]
 
-instance concreteCategoryOfDifferentialObjects : ConcreteCategory (DifferentialObject C) where
-  forget := forget C ⋙ CategoryTheory.forget C
+instance concreteCategoryOfDifferentialObjects : ConcreteCategory (DifferentialObject S C) where
+  forget := forget S C ⋙ CategoryTheory.forget C
 #align category_theory.differential_object.concrete_category_of_differential_objects CategoryTheory.DifferentialObject.concreteCategoryOfDifferentialObjects
 
-instance : HasForget₂ (DifferentialObject C) C where
-  forget₂ := forget C
+instance : HasForget₂ (DifferentialObject S C) C where
+  forget₂ := forget S C
 
 end DifferentialObject
 
@@ -245,15 +250,15 @@ end DifferentialObject
 
 namespace DifferentialObject
 
-variable (C : Type u) [Category.{v} C]
+variable {S : Type _} [AddCommGroupWithOne S] (C : Type u) [Category.{v} C]
 
-variable [HasZeroMorphisms C] [HasShift C ℤ]
+variable [HasZeroMorphisms C] [HasShift C S]
 
 noncomputable section
 
-/-- The shift functor on `DifferentialObject C`. -/
+/-- The shift functor on `DifferentialObject S C`. -/
 @[simps]
-def shiftFunctor (n : ℤ) : DifferentialObject C ⥤ DifferentialObject C where
+def shiftFunctor (n : S) : DifferentialObject S C ⥤ DifferentialObject S C where
   obj X :=
     { obj := X.obj⟦n⟧
       d := X.d⟦n⟧' ≫ (shiftComm _ _ _).hom
@@ -271,9 +276,9 @@ def shiftFunctor (n : ℤ) : DifferentialObject C ⥤ DifferentialObject C where
   map_comp f g := by ext1; dsimp; rw [Functor.map_comp]
 #align category_theory.differential_object.shift_functor CategoryTheory.DifferentialObject.shiftFunctor
 
-/-- The shift functor on `DifferentialObject C` is additive. -/
+/-- The shift functor on `DifferentialObject S C` is additive. -/
 @[simps!]
-nonrec def shiftFunctorAdd (m n : ℤ) :
+nonrec def shiftFunctorAdd (m n : S) :
     shiftFunctor C (m + n) ≅ shiftFunctor C m ⋙ shiftFunctor C n := by
   refine' NatIso.ofComponents (fun X => mkIso (shiftAdd X.obj _ _) _) (fun f => _)
   · dsimp
@@ -291,8 +296,8 @@ section
 
 /-- The shift by zero is naturally isomorphic to the identity. -/
 @[simps!]
-def shiftZero : shiftFunctor C 0 ≅ 𝟭 (DifferentialObject C) := by
-  refine' NatIso.ofComponents (fun X => mkIso ((shiftFunctorZero C ℤ).app X.obj) _) (fun f => _)
+def shiftZero : shiftFunctor C (0 : S) ≅ 𝟭 (DifferentialObject S C) := by
+  refine' NatIso.ofComponents (fun X => mkIso ((shiftFunctorZero C S).app X.obj) _) (fun f => _)
   · erw [← NatTrans.naturality]
     dsimp
     simp only [shiftFunctorZero_hom_app_shift, Category.assoc]
@@ -301,7 +306,7 @@ def shiftZero : shiftFunctor C 0 ≅ 𝟭 (DifferentialObject C) := by
 
 end
 
-instance : HasShift (DifferentialObject C) ℤ :=
+instance : HasShift (DifferentialObject S C) S :=
   hasShiftMk _ _
     { F := shiftFunctor C
       zero := shiftZero 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,16 +2,13 @@
 Copyright (c) 2020 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.differential_object
-! leanprover-community/mathlib commit 6876fa15e3158ff3e4a4e2af1fb6e1945c6e8803
-! Please do not edit these lines, except to modify the commit id
-! if you have ported upstream changes.
 -/
 import Mathlib.Data.Int.Basic
 import Mathlib.CategoryTheory.Shift.Basic
 import Mathlib.CategoryTheory.ConcreteCategory.Basic
 
+#align_import category_theory.differential_object from "leanprover-community/mathlib"@"6876fa15e3158ff3e4a4e2af1fb6e1945c6e8803"
+
 /-!
 # Differential objects in a category.
 
feat: port Algebra.Homology.DifferentialObject (#5033)

Co-authored-by: Scott Morrison <scott.morrison@gmail.com> Co-authored-by: Parcly Taxel <reddeloostw@gmail.com>

Diff
@@ -48,8 +48,10 @@ structure DifferentialObject where
   /-- The differential `d` satisfies that `d² = 0`. -/
   d_squared : d ≫ d⟦(1 : ℤ)⟧' = 0 := by aesop_cat
 #align category_theory.differential_object CategoryTheory.DifferentialObject
+set_option linter.uppercaseLean3 false in
+#align category_theory.differential_object.X CategoryTheory.DifferentialObject.obj
 
-attribute [simp] DifferentialObject.d_squared
+attribute [reassoc (attr := simp)] DifferentialObject.d_squared
 
 variable {C}
 
feat: port CategoryTheory.DifferentialObject (#4020)

Co-authored-by: int-y1 <jason_yuen2007@hotmail.com> Co-authored-by: Jujian Zhang <jujian.zhang1998@outlook.com> Co-authored-by: Scott Morrison <scott.morrison@anu.edu.au>

Dependencies 140

141 files ported (100.0%)
57837 lines ported (100.0%)

All dependencies are ported!