category_theory.differential_object
⟷
Mathlib.CategoryTheory.DifferentialObject
The following section lists changes to this file in mathlib3 and mathlib4 that occured after the initial port. Most recent changes are shown first. Hovering over a commit will show all commits associated with the same mathlib3 commit.
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(last sync)
mathlib commit https://github.com/leanprover-community/mathlib/commit/65a1391a0106c9204fe45bc73a039f056558cb83
@@ -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
-/
mathlib commit https://github.com/leanprover-community/mathlib/commit/65a1391a0106c9204fe45bc73a039f056558cb83
@@ -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
mathlib commit https://github.com/leanprover-community/mathlib/commit/ce64cd319bb6b3e82f31c2d38e79080d377be451
@@ -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"
mathlib commit https://github.com/leanprover-community/mathlib/commit/442a83d738cb208d3600056c489be16900ba701d
@@ -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
mathlib commit https://github.com/leanprover-community/mathlib/commit/63721b2c3eba6c325ecf8ae8cca27155a4f6306f
@@ -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'
mathlib commit https://github.com/leanprover-community/mathlib/commit/8ea5598db6caeddde6cb734aa179cc2408dbd345
@@ -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.
mathlib commit https://github.com/leanprover-community/mathlib/commit/9f55d0d4363ae59948c33864cbc52e0b12e0e8ce
@@ -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`.
mathlib commit https://github.com/leanprover-community/mathlib/commit/8efcf8022aac8e01df8d302dcebdbc25d6a886c8
@@ -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
mathlib commit https://github.com/leanprover-community/mathlib/commit/cca40788df1b8755d5baf17ab2f27dacc2e17acb
@@ -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
mathlib commit https://github.com/leanprover-community/mathlib/commit/917c3c072e487b3cccdbfeff17e75b40e45f66cb
@@ -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
mathlib commit https://github.com/leanprover-community/mathlib/commit/917c3c072e487b3cccdbfeff17e75b40e45f66cb
@@ -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
mathlib commit https://github.com/leanprover-community/mathlib/commit/75e7fca56381d056096ce5d05e938f63a6567828
@@ -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
mathlib commit https://github.com/leanprover-community/mathlib/commit/b685f506164f8d17a6404048bc4d696739c5d976
@@ -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
mathlib commit https://github.com/leanprover-community/mathlib/commit/9da1b3534b65d9661eb8f42443598a92bbb49211
@@ -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
mathlib commit https://github.com/leanprover-community/mathlib/commit/bd9851ca476957ea4549eb19b40e7b5ade9428cc
@@ -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
These notions on functors are now Functor.Full
, Functor.Faithful
, Functor.EssSurj
, Functor.IsEquivalence
, Functor.ReflectsIsomorphisms
. Deprecated aliases are introduced for the previous names.
@@ -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]
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)
@@ -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
@@ -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
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.
In particular this includes adjustments for the Lean PRs
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).
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})
.
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:
(config := { unfoldPartialApp := true })
in some places, to recover the old behaviour@[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>
@@ -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
This incorporates changes from
nightly-testing
are unexciting: we need to fully qualify a few names)They can all be closed when this is merged.
Co-authored-by: Scott Morrison <scott.morrison@gmail.com> Co-authored-by: Eric Wieser <wieser.eric@gmail.com>
@@ -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
@@ -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
@@ -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
Type _
and Sort _
(#6499)
We remove all possible occurences of Type _
and Sort _
in favor of Type*
and Sort*
.
This has nice performance benefits.
@@ -28,7 +28,7 @@ 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]
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>
@@ -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
@@ -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.
@@ -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}
All dependencies are ported!