category_theory.triangulated.basic
⟷
Mathlib.CategoryTheory.Triangulated.Basic
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
@@ -3,7 +3,7 @@ Copyright (c) 2021 Luke Kershaw. All rights reserved.
Released under Apache 2.0 license as described in the file LICENSE.
Authors: Luke Kershaw
-/
-import Data.Int.Basic
+import Algebra.Group.Int
import CategoryTheory.Shift.Basic
#align_import category_theory.triangulated.basic from "leanprover-community/mathlib"@"d64d67d000b974f0d86a2be7918cf800be6271c8"
mathlib commit https://github.com/leanprover-community/mathlib/commit/ce64cd319bb6b3e82f31c2d38e79080d377be451
@@ -3,8 +3,8 @@ Copyright (c) 2021 Luke Kershaw. All rights reserved.
Released under Apache 2.0 license as described in the file LICENSE.
Authors: Luke Kershaw
-/
-import Mathbin.Data.Int.Basic
-import Mathbin.CategoryTheory.Shift.Basic
+import Data.Int.Basic
+import CategoryTheory.Shift.Basic
#align_import category_theory.triangulated.basic from "leanprover-community/mathlib"@"d64d67d000b974f0d86a2be7918cf800be6271c8"
mathlib commit https://github.com/leanprover-community/mathlib/commit/442a83d738cb208d3600056c489be16900ba701d
@@ -118,12 +118,6 @@ structure TriangleMorphism (T₁ : Triangle C) (T₂ : Triangle C) where
#align category_theory.pretriangulated.triangle_morphism CategoryTheory.Pretriangulated.TriangleMorphism
-/
-restate_axiom triangle_morphism.comm₁'
-
-restate_axiom triangle_morphism.comm₂'
-
-restate_axiom triangle_morphism.comm₃'
-
attribute [simp, reassoc] triangle_morphism.comm₁ triangle_morphism.comm₂ triangle_morphism.comm₃
#print CategoryTheory.Pretriangulated.triangleMorphismId /-
mathlib commit https://github.com/leanprover-community/mathlib/commit/8ea5598db6caeddde6cb734aa179cc2408dbd345
@@ -2,15 +2,12 @@
Copyright (c) 2021 Luke Kershaw. All rights reserved.
Released under Apache 2.0 license as described in the file LICENSE.
Authors: Luke Kershaw
-
-! This file was ported from Lean 3 source module category_theory.triangulated.basic
-! leanprover-community/mathlib commit d64d67d000b974f0d86a2be7918cf800be6271c8
-! 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
+#align_import category_theory.triangulated.basic from "leanprover-community/mathlib"@"d64d67d000b974f0d86a2be7918cf800be6271c8"
+
/-!
# Triangles
mathlib commit https://github.com/leanprover-community/mathlib/commit/9fb8964792b4237dac6200193a0d533f1b3f7423
@@ -41,6 +41,7 @@ We work in a category `C` equipped with a shift.
-/
variable (C : Type u) [Category.{v} C] [HasShift C ℤ]
+#print CategoryTheory.Pretriangulated.Triangle /-
/-- A triangle in `C` is a sextuple `(X,Y,Z,f,g,h)` where `X,Y,Z` are objects of `C`,
and `f : X ⟶ Y`, `g : Y ⟶ Z`, `h : Z ⟶ X⟦1⟧` are morphisms in `C`.
See <https://stacks.math.columbia.edu/tag/0144>.
@@ -53,9 +54,11 @@ structure Triangle where mk' ::
mor₂ : obj₂ ⟶ obj₃
mor₃ : obj₃ ⟶ obj₁⟦(1 : ℤ)⟧
#align category_theory.pretriangulated.triangle CategoryTheory.Pretriangulated.Triangle
+-/
variable {C}
+#print CategoryTheory.Pretriangulated.Triangle.mk /-
/-- A triangle `(X,Y,Z,f,g,h)` in `C` is defined by the morphisms `f : X ⟶ Y`, `g : Y ⟶ Z`
and `h : Z ⟶ X⟦1⟧`.
-/
@@ -69,6 +72,7 @@ def Triangle.mk {X Y Z : C} (f : X ⟶ Y) (g : Y ⟶ Z) (h : Z ⟶ X⟦(1 : ℤ)
mor₂ := g
mor₃ := h
#align category_theory.pretriangulated.triangle.mk CategoryTheory.Pretriangulated.Triangle.mk
+-/
section
@@ -79,15 +83,18 @@ open scoped ZeroObject
instance : Inhabited (Triangle C) :=
⟨⟨0, 0, 0, 0, 0, 0⟩⟩
+#print CategoryTheory.Pretriangulated.contractibleTriangle /-
/-- For each object in `C`, there is a triangle of the form `(X,X,0,𝟙 X,0,0)`
-/
@[simps]
def contractibleTriangle (X : C) : Triangle C :=
Triangle.mk (𝟙 X) (0 : X ⟶ 0) 0
#align category_theory.pretriangulated.contractible_triangle CategoryTheory.Pretriangulated.contractibleTriangle
+-/
end
+#print CategoryTheory.Pretriangulated.TriangleMorphism /-
/-- A morphism of triangles `(X,Y,Z,f,g,h) ⟶ (X',Y',Z',f',g',h')` in `C` is a triple of morphisms
`a : X ⟶ X'`, `b : Y ⟶ Y'`, `c : Z ⟶ Z'` such that
`a ≫ f' = f ≫ b`, `b ≫ g' = g ≫ c`, and `a⟦1⟧' ≫ h = h' ≫ c`.
@@ -112,6 +119,7 @@ structure TriangleMorphism (T₁ : Triangle C) (T₂ : Triangle C) where
comm₂' : T₁.mor₂ ≫ hom₃ = hom₂ ≫ T₂.mor₂ := by obviously
comm₃' : T₁.mor₃ ≫ hom₁⟦1⟧' = hom₃ ≫ T₂.mor₃ := by obviously
#align category_theory.pretriangulated.triangle_morphism CategoryTheory.Pretriangulated.TriangleMorphism
+-/
restate_axiom triangle_morphism.comm₁'
@@ -121,6 +129,7 @@ restate_axiom triangle_morphism.comm₃'
attribute [simp, reassoc] triangle_morphism.comm₁ triangle_morphism.comm₂ triangle_morphism.comm₃
+#print CategoryTheory.Pretriangulated.triangleMorphismId /-
/-- The identity triangle morphism.
-/
@[simps]
@@ -130,12 +139,14 @@ def triangleMorphismId (T : Triangle C) : TriangleMorphism T T
hom₂ := 𝟙 T.obj₂
hom₃ := 𝟙 T.obj₃
#align category_theory.pretriangulated.triangle_morphism_id CategoryTheory.Pretriangulated.triangleMorphismId
+-/
instance (T : Triangle C) : Inhabited (TriangleMorphism T T) :=
⟨triangleMorphismId T⟩
variable {T₁ T₂ T₃ : Triangle C}
+#print CategoryTheory.Pretriangulated.TriangleMorphism.comp /-
/-- Composition of triangle morphisms gives a triangle morphism.
-/
@[simps]
@@ -145,7 +156,9 @@ def TriangleMorphism.comp (f : TriangleMorphism T₁ T₂) (g : TriangleMorphism
hom₂ := f.hom₂ ≫ g.hom₂
hom₃ := f.hom₃ ≫ g.hom₃
#align category_theory.pretriangulated.triangle_morphism.comp CategoryTheory.Pretriangulated.TriangleMorphism.comp
+-/
+#print CategoryTheory.Pretriangulated.triangleCategory /-
/-- Triangles with triangle morphisms form a category.
-/
@[simps]
@@ -155,7 +168,9 @@ instance triangleCategory : Category (Triangle C)
id A := triangleMorphismId A
comp A B C f g := f.comp g
#align category_theory.pretriangulated.triangle_category CategoryTheory.Pretriangulated.triangleCategory
+-/
+#print CategoryTheory.Pretriangulated.Triangle.homMk /-
/-- a constructor for morphisms of triangles -/
@[simps]
def Triangle.homMk (A B : Triangle C) (hom₁ : A.obj₁ ⟶ B.obj₁) (hom₂ : A.obj₂ ⟶ B.obj₂)
@@ -168,7 +183,9 @@ def Triangle.homMk (A B : Triangle C) (hom₁ : A.obj₁ ⟶ B.obj₁) (hom₂ :
comm₂' := comm₂
comm₃' := comm₃ }
#align category_theory.pretriangulated.triangle.hom_mk CategoryTheory.Pretriangulated.Triangle.homMk
+-/
+#print CategoryTheory.Pretriangulated.Triangle.isoMk /-
/-- a constructor for isomorphisms of triangles -/
@[simps]
def Triangle.isoMk (A B : Triangle C) (iso₁ : A.obj₁ ≅ B.obj₁) (iso₂ : A.obj₂ ≅ B.obj₂)
@@ -189,6 +206,7 @@ def Triangle.isoMk (A B : Triangle C) (iso₁ : A.obj₁ ≅ B.obj₁) (iso₂ :
simp only [← cancel_mono (iso₁.hom⟦(1 : ℤ)⟧'), assoc, ← functor.map_comp, iso.inv_hom_id,
CategoryTheory.Functor.map_id, comp_id, comm₃, iso.inv_hom_id_assoc])
#align category_theory.pretriangulated.triangle.iso_mk CategoryTheory.Pretriangulated.Triangle.isoMk
+-/
end CategoryTheory.Pretriangulated
mathlib commit https://github.com/leanprover-community/mathlib/commit/917c3c072e487b3cccdbfeff17e75b40e45f66cb
@@ -74,7 +74,7 @@ section
variable [HasZeroObject C] [HasZeroMorphisms C]
-open ZeroObject
+open scoped ZeroObject
instance : Inhabited (Triangle C) :=
⟨⟨0, 0, 0, 0, 0, 0⟩⟩
mathlib commit https://github.com/leanprover-community/mathlib/commit/917c3c072e487b3cccdbfeff17e75b40e45f66cb
@@ -41,12 +41,6 @@ We work in a category `C` equipped with a shift.
-/
variable (C : Type u) [Category.{v} C] [HasShift C ℤ]
-/- warning: category_theory.pretriangulated.triangle -> CategoryTheory.Pretriangulated.Triangle is a dubious translation:
-lean 3 declaration is
- forall (C : Type.{u2}) [_inst_1 : CategoryTheory.Category.{u1, u2} C] [_inst_2 : CategoryTheory.HasShift.{u1, u2, 0} C Int _inst_1 Int.addMonoid], Sort.{max (succ u2) (succ u1)}
-but is expected to have type
- forall (C : Type.{u2}) [_inst_1 : CategoryTheory.Category.{u1, u2} C] [_inst_2 : CategoryTheory.HasShift.{u1, u2, 0} C Int _inst_1 Int.instAddMonoidInt], Sort.{max (succ u2) (succ u1)}
-Case conversion may be inaccurate. Consider using '#align category_theory.pretriangulated.triangle CategoryTheory.Pretriangulated.Triangleₓ'. -/
/-- A triangle in `C` is a sextuple `(X,Y,Z,f,g,h)` where `X,Y,Z` are objects of `C`,
and `f : X ⟶ Y`, `g : Y ⟶ Z`, `h : Z ⟶ X⟦1⟧` are morphisms in `C`.
See <https://stacks.math.columbia.edu/tag/0144>.
@@ -62,12 +56,6 @@ structure Triangle where mk' ::
variable {C}
-/- warning: category_theory.pretriangulated.triangle.mk -> CategoryTheory.Pretriangulated.Triangle.mk is a dubious translation:
-lean 3 declaration is
- forall {C : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u1, u2} C] [_inst_2 : CategoryTheory.HasShift.{u1, u2, 0} C Int _inst_1 Int.addMonoid] {X : C} {Y : C} {Z : C}, (Quiver.Hom.{succ u1, u2} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1)) X Y) -> (Quiver.Hom.{succ u1, u2} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1)) Y Z) -> (Quiver.Hom.{succ u1, u2} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1)) Z (CategoryTheory.Functor.obj.{u1, u1, u2, u2} C _inst_1 C _inst_1 (CategoryTheory.shiftFunctor.{u1, u2, 0} C Int _inst_1 Int.addMonoid _inst_2 (OfNat.ofNat.{0} Int 1 (OfNat.mk.{0} Int 1 (One.one.{0} Int Int.hasOne)))) X)) -> (CategoryTheory.Pretriangulated.Triangle.{u1, u2} C _inst_1 _inst_2)
-but is expected to have type
- forall {C : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u1, u2} C] [_inst_2 : CategoryTheory.HasShift.{u1, u2, 0} C Int _inst_1 Int.instAddMonoidInt] {X : C} {Y : C} {Z : C}, (Quiver.Hom.{succ u1, u2} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1)) X Y) -> (Quiver.Hom.{succ u1, u2} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1)) Y Z) -> (Quiver.Hom.{succ u1, u2} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1)) Z (Prefunctor.obj.{succ u1, succ u1, u2, u2} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1)) C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1)) (CategoryTheory.Functor.toPrefunctor.{u1, u1, u2, u2} C _inst_1 C _inst_1 (CategoryTheory.shiftFunctor.{u1, u2, 0} C Int _inst_1 Int.instAddMonoidInt _inst_2 (OfNat.ofNat.{0} Int 1 (instOfNatInt 1)))) X)) -> (CategoryTheory.Pretriangulated.Triangle.{u1, u2} C _inst_1 _inst_2)
-Case conversion may be inaccurate. Consider using '#align category_theory.pretriangulated.triangle.mk CategoryTheory.Pretriangulated.Triangle.mkₓ'. -/
/-- A triangle `(X,Y,Z,f,g,h)` in `C` is defined by the morphisms `f : X ⟶ Y`, `g : Y ⟶ Z`
and `h : Z ⟶ X⟦1⟧`.
-/
@@ -91,12 +79,6 @@ open ZeroObject
instance : Inhabited (Triangle C) :=
⟨⟨0, 0, 0, 0, 0, 0⟩⟩
-/- warning: category_theory.pretriangulated.contractible_triangle -> CategoryTheory.Pretriangulated.contractibleTriangle is a dubious translation:
-lean 3 declaration is
- forall {C : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u1, u2} C] [_inst_2 : CategoryTheory.HasShift.{u1, u2, 0} C Int _inst_1 Int.addMonoid] [_inst_3 : CategoryTheory.Limits.HasZeroObject.{u1, u2} C _inst_1] [_inst_4 : CategoryTheory.Limits.HasZeroMorphisms.{u1, u2} C _inst_1], C -> (CategoryTheory.Pretriangulated.Triangle.{u1, u2} C _inst_1 _inst_2)
-but is expected to have type
- forall {C : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u1, u2} C] [_inst_2 : CategoryTheory.HasShift.{u1, u2, 0} C Int _inst_1 Int.instAddMonoidInt] [_inst_3 : CategoryTheory.Limits.HasZeroObject.{u1, u2} C _inst_1] [_inst_4 : CategoryTheory.Limits.HasZeroMorphisms.{u1, u2} C _inst_1], C -> (CategoryTheory.Pretriangulated.Triangle.{u1, u2} C _inst_1 _inst_2)
-Case conversion may be inaccurate. Consider using '#align category_theory.pretriangulated.contractible_triangle CategoryTheory.Pretriangulated.contractibleTriangleₓ'. -/
/-- For each object in `C`, there is a triangle of the form `(X,X,0,𝟙 X,0,0)`
-/
@[simps]
@@ -106,12 +88,6 @@ def contractibleTriangle (X : C) : Triangle C :=
end
-/- warning: category_theory.pretriangulated.triangle_morphism -> CategoryTheory.Pretriangulated.TriangleMorphism is a dubious translation:
-lean 3 declaration is
- forall {C : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u1, u2} C] [_inst_2 : CategoryTheory.HasShift.{u1, u2, 0} C Int _inst_1 Int.addMonoid], (CategoryTheory.Pretriangulated.Triangle.{u1, u2} C _inst_1 _inst_2) -> (CategoryTheory.Pretriangulated.Triangle.{u1, u2} C _inst_1 _inst_2) -> Type.{u1}
-but is expected to have type
- forall {C : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u1, u2} C] [_inst_2 : CategoryTheory.HasShift.{u1, u2, 0} C Int _inst_1 Int.instAddMonoidInt], (CategoryTheory.Pretriangulated.Triangle.{u1, u2} C _inst_1 _inst_2) -> (CategoryTheory.Pretriangulated.Triangle.{u1, u2} C _inst_1 _inst_2) -> Type.{u1}
-Case conversion may be inaccurate. Consider using '#align category_theory.pretriangulated.triangle_morphism CategoryTheory.Pretriangulated.TriangleMorphismₓ'. -/
/-- A morphism of triangles `(X,Y,Z,f,g,h) ⟶ (X',Y',Z',f',g',h')` in `C` is a triple of morphisms
`a : X ⟶ X'`, `b : Y ⟶ Y'`, `c : Z ⟶ Z'` such that
`a ≫ f' = f ≫ b`, `b ≫ g' = g ≫ c`, and `a⟦1⟧' ≫ h = h' ≫ c`.
@@ -145,12 +121,6 @@ restate_axiom triangle_morphism.comm₃'
attribute [simp, reassoc] triangle_morphism.comm₁ triangle_morphism.comm₂ triangle_morphism.comm₃
-/- warning: category_theory.pretriangulated.triangle_morphism_id -> CategoryTheory.Pretriangulated.triangleMorphismId is a dubious translation:
-lean 3 declaration is
- forall {C : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u1, u2} C] [_inst_2 : CategoryTheory.HasShift.{u1, u2, 0} C Int _inst_1 Int.addMonoid] (T : CategoryTheory.Pretriangulated.Triangle.{u1, u2} C _inst_1 _inst_2), CategoryTheory.Pretriangulated.TriangleMorphism.{u1, u2} C _inst_1 _inst_2 T T
-but is expected to have type
- forall {C : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u1, u2} C] [_inst_2 : CategoryTheory.HasShift.{u1, u2, 0} C Int _inst_1 Int.instAddMonoidInt] (T : CategoryTheory.Pretriangulated.Triangle.{u1, u2} C _inst_1 _inst_2), CategoryTheory.Pretriangulated.TriangleMorphism.{u1, u2} C _inst_1 _inst_2 T T
-Case conversion may be inaccurate. Consider using '#align category_theory.pretriangulated.triangle_morphism_id CategoryTheory.Pretriangulated.triangleMorphismIdₓ'. -/
/-- The identity triangle morphism.
-/
@[simps]
@@ -166,12 +136,6 @@ instance (T : Triangle C) : Inhabited (TriangleMorphism T T) :=
variable {T₁ T₂ T₃ : Triangle C}
-/- warning: category_theory.pretriangulated.triangle_morphism.comp -> CategoryTheory.Pretriangulated.TriangleMorphism.comp is a dubious translation:
-lean 3 declaration is
- forall {C : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u1, u2} C] [_inst_2 : CategoryTheory.HasShift.{u1, u2, 0} C Int _inst_1 Int.addMonoid] {T₁ : CategoryTheory.Pretriangulated.Triangle.{u1, u2} C _inst_1 _inst_2} {T₂ : CategoryTheory.Pretriangulated.Triangle.{u1, u2} C _inst_1 _inst_2} {T₃ : CategoryTheory.Pretriangulated.Triangle.{u1, u2} C _inst_1 _inst_2}, (CategoryTheory.Pretriangulated.TriangleMorphism.{u1, u2} C _inst_1 _inst_2 T₁ T₂) -> (CategoryTheory.Pretriangulated.TriangleMorphism.{u1, u2} C _inst_1 _inst_2 T₂ T₃) -> (CategoryTheory.Pretriangulated.TriangleMorphism.{u1, u2} C _inst_1 _inst_2 T₁ T₃)
-but is expected to have type
- forall {C : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u1, u2} C] [_inst_2 : CategoryTheory.HasShift.{u1, u2, 0} C Int _inst_1 Int.instAddMonoidInt] {T₁ : CategoryTheory.Pretriangulated.Triangle.{u1, u2} C _inst_1 _inst_2} {T₂ : CategoryTheory.Pretriangulated.Triangle.{u1, u2} C _inst_1 _inst_2} {T₃ : CategoryTheory.Pretriangulated.Triangle.{u1, u2} C _inst_1 _inst_2}, (CategoryTheory.Pretriangulated.TriangleMorphism.{u1, u2} C _inst_1 _inst_2 T₁ T₂) -> (CategoryTheory.Pretriangulated.TriangleMorphism.{u1, u2} C _inst_1 _inst_2 T₂ T₃) -> (CategoryTheory.Pretriangulated.TriangleMorphism.{u1, u2} C _inst_1 _inst_2 T₁ T₃)
-Case conversion may be inaccurate. Consider using '#align category_theory.pretriangulated.triangle_morphism.comp CategoryTheory.Pretriangulated.TriangleMorphism.compₓ'. -/
/-- Composition of triangle morphisms gives a triangle morphism.
-/
@[simps]
@@ -182,12 +146,6 @@ def TriangleMorphism.comp (f : TriangleMorphism T₁ T₂) (g : TriangleMorphism
hom₃ := f.hom₃ ≫ g.hom₃
#align category_theory.pretriangulated.triangle_morphism.comp CategoryTheory.Pretriangulated.TriangleMorphism.comp
-/- warning: category_theory.pretriangulated.triangle_category -> CategoryTheory.Pretriangulated.triangleCategory is a dubious translation:
-lean 3 declaration is
- forall {C : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u1, u2} C] [_inst_2 : CategoryTheory.HasShift.{u1, u2, 0} C Int _inst_1 Int.addMonoid], CategoryTheory.Category.{u1, max u2 u1} (CategoryTheory.Pretriangulated.Triangle.{u1, u2} C _inst_1 _inst_2)
-but is expected to have type
- forall {C : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u1, u2} C] [_inst_2 : CategoryTheory.HasShift.{u1, u2, 0} C Int _inst_1 Int.instAddMonoidInt], CategoryTheory.Category.{u1, max u2 u1} (CategoryTheory.Pretriangulated.Triangle.{u1, u2} C _inst_1 _inst_2)
-Case conversion may be inaccurate. Consider using '#align category_theory.pretriangulated.triangle_category CategoryTheory.Pretriangulated.triangleCategoryₓ'. -/
/-- Triangles with triangle morphisms form a category.
-/
@[simps]
@@ -198,9 +156,6 @@ instance triangleCategory : Category (Triangle C)
comp A B C f g := f.comp g
#align category_theory.pretriangulated.triangle_category CategoryTheory.Pretriangulated.triangleCategory
-/- warning: category_theory.pretriangulated.triangle.hom_mk -> CategoryTheory.Pretriangulated.Triangle.homMk is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align category_theory.pretriangulated.triangle.hom_mk CategoryTheory.Pretriangulated.Triangle.homMkₓ'. -/
/-- a constructor for morphisms of triangles -/
@[simps]
def Triangle.homMk (A B : Triangle C) (hom₁ : A.obj₁ ⟶ B.obj₁) (hom₂ : A.obj₂ ⟶ B.obj₂)
@@ -214,9 +169,6 @@ def Triangle.homMk (A B : Triangle C) (hom₁ : A.obj₁ ⟶ B.obj₁) (hom₂ :
comm₃' := comm₃ }
#align category_theory.pretriangulated.triangle.hom_mk CategoryTheory.Pretriangulated.Triangle.homMk
-/- warning: category_theory.pretriangulated.triangle.iso_mk -> CategoryTheory.Pretriangulated.Triangle.isoMk is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align category_theory.pretriangulated.triangle.iso_mk CategoryTheory.Pretriangulated.Triangle.isoMkₓ'. -/
/-- a constructor for isomorphisms of triangles -/
@[simps]
def Triangle.isoMk (A B : Triangle C) (iso₁ : A.obj₁ ≅ B.obj₁) (iso₂ : A.obj₂ ≅ B.obj₂)
mathlib commit https://github.com/leanprover-community/mathlib/commit/917c3c072e487b3cccdbfeff17e75b40e45f66cb
@@ -199,10 +199,7 @@ instance triangleCategory : Category (Triangle C)
#align category_theory.pretriangulated.triangle_category CategoryTheory.Pretriangulated.triangleCategory
/- warning: category_theory.pretriangulated.triangle.hom_mk -> CategoryTheory.Pretriangulated.Triangle.homMk is a dubious translation:
-lean 3 declaration is
- forall {C : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u1, u2} C] [_inst_2 : CategoryTheory.HasShift.{u1, u2, 0} C Int _inst_1 Int.addMonoid] (A : CategoryTheory.Pretriangulated.Triangle.{u1, u2} C _inst_1 _inst_2) (B : CategoryTheory.Pretriangulated.Triangle.{u1, u2} C _inst_1 _inst_2) (hom₁ : Quiver.Hom.{succ u1, u2} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1)) (CategoryTheory.Pretriangulated.Triangle.obj₁.{u1, u2} C _inst_1 _inst_2 A) (CategoryTheory.Pretriangulated.Triangle.obj₁.{u1, u2} C _inst_1 _inst_2 B)) (hom₂ : Quiver.Hom.{succ u1, u2} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1)) (CategoryTheory.Pretriangulated.Triangle.obj₂.{u1, u2} C _inst_1 _inst_2 A) (CategoryTheory.Pretriangulated.Triangle.obj₂.{u1, u2} C _inst_1 _inst_2 B)) (hom₃ : Quiver.Hom.{succ u1, u2} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1)) (CategoryTheory.Pretriangulated.Triangle.obj₃.{u1, u2} C _inst_1 _inst_2 A) (CategoryTheory.Pretriangulated.Triangle.obj₃.{u1, u2} C _inst_1 _inst_2 B)), (Eq.{succ u1} (Quiver.Hom.{succ u1, u2} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1)) (CategoryTheory.Pretriangulated.Triangle.obj₁.{u1, u2} C _inst_1 _inst_2 A) (CategoryTheory.Pretriangulated.Triangle.obj₂.{u1, u2} C _inst_1 _inst_2 B)) (CategoryTheory.CategoryStruct.comp.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1) (CategoryTheory.Pretriangulated.Triangle.obj₁.{u1, u2} C _inst_1 _inst_2 A) (CategoryTheory.Pretriangulated.Triangle.obj₂.{u1, u2} C _inst_1 _inst_2 A) (CategoryTheory.Pretriangulated.Triangle.obj₂.{u1, u2} C _inst_1 _inst_2 B) (CategoryTheory.Pretriangulated.Triangle.mor₁.{u1, u2} C _inst_1 _inst_2 A) hom₂) (CategoryTheory.CategoryStruct.comp.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1) (CategoryTheory.Pretriangulated.Triangle.obj₁.{u1, u2} C _inst_1 _inst_2 A) (CategoryTheory.Pretriangulated.Triangle.obj₁.{u1, u2} C _inst_1 _inst_2 B) (CategoryTheory.Pretriangulated.Triangle.obj₂.{u1, u2} C _inst_1 _inst_2 B) hom₁ (CategoryTheory.Pretriangulated.Triangle.mor₁.{u1, u2} C _inst_1 _inst_2 B))) -> (Eq.{succ u1} (Quiver.Hom.{succ u1, u2} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1)) (CategoryTheory.Pretriangulated.Triangle.obj₂.{u1, u2} C _inst_1 _inst_2 A) (CategoryTheory.Pretriangulated.Triangle.obj₃.{u1, u2} C _inst_1 _inst_2 B)) (CategoryTheory.CategoryStruct.comp.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1) (CategoryTheory.Pretriangulated.Triangle.obj₂.{u1, u2} C _inst_1 _inst_2 A) (CategoryTheory.Pretriangulated.Triangle.obj₃.{u1, u2} C _inst_1 _inst_2 A) (CategoryTheory.Pretriangulated.Triangle.obj₃.{u1, u2} C _inst_1 _inst_2 B) (CategoryTheory.Pretriangulated.Triangle.mor₂.{u1, u2} C _inst_1 _inst_2 A) hom₃) (CategoryTheory.CategoryStruct.comp.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1) (CategoryTheory.Pretriangulated.Triangle.obj₂.{u1, u2} C _inst_1 _inst_2 A) (CategoryTheory.Pretriangulated.Triangle.obj₂.{u1, u2} C _inst_1 _inst_2 B) (CategoryTheory.Pretriangulated.Triangle.obj₃.{u1, u2} C _inst_1 _inst_2 B) hom₂ (CategoryTheory.Pretriangulated.Triangle.mor₂.{u1, u2} C _inst_1 _inst_2 B))) -> (Eq.{succ u1} (Quiver.Hom.{succ u1, u2} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1)) (CategoryTheory.Pretriangulated.Triangle.obj₃.{u1, u2} C _inst_1 _inst_2 A) (CategoryTheory.Functor.obj.{u1, u1, u2, u2} C _inst_1 C _inst_1 (CategoryTheory.shiftFunctor.{u1, u2, 0} C Int _inst_1 Int.addMonoid _inst_2 (OfNat.ofNat.{0} Int 1 (OfNat.mk.{0} Int 1 (One.one.{0} Int Int.hasOne)))) (CategoryTheory.Pretriangulated.Triangle.obj₁.{u1, u2} C _inst_1 _inst_2 B))) (CategoryTheory.CategoryStruct.comp.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1) (CategoryTheory.Pretriangulated.Triangle.obj₃.{u1, u2} C _inst_1 _inst_2 A) (CategoryTheory.Functor.obj.{u1, u1, u2, u2} C _inst_1 C _inst_1 (CategoryTheory.shiftFunctor.{u1, u2, 0} C Int _inst_1 Int.addMonoid _inst_2 (OfNat.ofNat.{0} Int 1 (OfNat.mk.{0} Int 1 (One.one.{0} Int Int.hasOne)))) (CategoryTheory.Pretriangulated.Triangle.obj₁.{u1, u2} C _inst_1 _inst_2 A)) (CategoryTheory.Functor.obj.{u1, u1, u2, u2} C _inst_1 C _inst_1 (CategoryTheory.shiftFunctor.{u1, u2, 0} C Int _inst_1 Int.addMonoid _inst_2 (OfNat.ofNat.{0} Int 1 (OfNat.mk.{0} Int 1 (One.one.{0} Int Int.hasOne)))) (CategoryTheory.Pretriangulated.Triangle.obj₁.{u1, u2} C _inst_1 _inst_2 B)) (CategoryTheory.Pretriangulated.Triangle.mor₃.{u1, u2} C _inst_1 _inst_2 A) (CategoryTheory.Functor.map.{u1, u1, u2, u2} C _inst_1 C _inst_1 (CategoryTheory.shiftFunctor.{u1, u2, 0} C Int _inst_1 Int.addMonoid _inst_2 (OfNat.ofNat.{0} Int 1 (OfNat.mk.{0} Int 1 (One.one.{0} Int Int.hasOne)))) (CategoryTheory.Pretriangulated.Triangle.obj₁.{u1, u2} C _inst_1 _inst_2 A) (CategoryTheory.Pretriangulated.Triangle.obj₁.{u1, u2} C _inst_1 _inst_2 B) hom₁)) (CategoryTheory.CategoryStruct.comp.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1) (CategoryTheory.Pretriangulated.Triangle.obj₃.{u1, u2} C _inst_1 _inst_2 A) (CategoryTheory.Pretriangulated.Triangle.obj₃.{u1, u2} C _inst_1 _inst_2 B) (CategoryTheory.Functor.obj.{u1, u1, u2, u2} C _inst_1 C _inst_1 (CategoryTheory.shiftFunctor.{u1, u2, 0} C Int _inst_1 Int.addMonoid _inst_2 (OfNat.ofNat.{0} Int 1 (OfNat.mk.{0} Int 1 (One.one.{0} Int Int.hasOne)))) (CategoryTheory.Pretriangulated.Triangle.obj₁.{u1, u2} C _inst_1 _inst_2 B)) hom₃ (CategoryTheory.Pretriangulated.Triangle.mor₃.{u1, u2} C _inst_1 _inst_2 B))) -> (Quiver.Hom.{succ u1, max u2 u1} (CategoryTheory.Pretriangulated.Triangle.{u1, u2} C _inst_1 _inst_2) (CategoryTheory.CategoryStruct.toQuiver.{u1, max u2 u1} (CategoryTheory.Pretriangulated.Triangle.{u1, u2} C _inst_1 _inst_2) (CategoryTheory.Category.toCategoryStruct.{u1, max u2 u1} (CategoryTheory.Pretriangulated.Triangle.{u1, u2} C _inst_1 _inst_2) (CategoryTheory.Pretriangulated.triangleCategory.{u1, u2} C _inst_1 _inst_2))) A B)
-but is expected to have type
- forall {C : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u1, u2} C] [_inst_2 : CategoryTheory.HasShift.{u1, u2, 0} C Int _inst_1 Int.instAddMonoidInt] (A : CategoryTheory.Pretriangulated.Triangle.{u1, u2} C _inst_1 _inst_2) (B : CategoryTheory.Pretriangulated.Triangle.{u1, u2} C _inst_1 _inst_2) (hom₁ : Quiver.Hom.{succ u1, u2} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1)) (CategoryTheory.Pretriangulated.Triangle.obj₁.{u1, u2} C _inst_1 _inst_2 A) (CategoryTheory.Pretriangulated.Triangle.obj₁.{u1, u2} C _inst_1 _inst_2 B)) (hom₂ : Quiver.Hom.{succ u1, u2} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1)) (CategoryTheory.Pretriangulated.Triangle.obj₂.{u1, u2} C _inst_1 _inst_2 A) (CategoryTheory.Pretriangulated.Triangle.obj₂.{u1, u2} C _inst_1 _inst_2 B)) (hom₃ : Quiver.Hom.{succ u1, u2} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1)) (CategoryTheory.Pretriangulated.Triangle.obj₃.{u1, u2} C _inst_1 _inst_2 A) (CategoryTheory.Pretriangulated.Triangle.obj₃.{u1, u2} C _inst_1 _inst_2 B)), (Eq.{succ u1} (Quiver.Hom.{succ u1, u2} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1)) (CategoryTheory.Pretriangulated.Triangle.obj₁.{u1, u2} C _inst_1 _inst_2 A) (CategoryTheory.Pretriangulated.Triangle.obj₂.{u1, u2} C _inst_1 _inst_2 B)) (CategoryTheory.CategoryStruct.comp.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1) (CategoryTheory.Pretriangulated.Triangle.obj₁.{u1, u2} C _inst_1 _inst_2 A) (CategoryTheory.Pretriangulated.Triangle.obj₂.{u1, u2} C _inst_1 _inst_2 A) (CategoryTheory.Pretriangulated.Triangle.obj₂.{u1, u2} C _inst_1 _inst_2 B) (CategoryTheory.Pretriangulated.Triangle.mor₁.{u1, u2} C _inst_1 _inst_2 A) hom₂) (CategoryTheory.CategoryStruct.comp.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1) (CategoryTheory.Pretriangulated.Triangle.obj₁.{u1, u2} C _inst_1 _inst_2 A) (CategoryTheory.Pretriangulated.Triangle.obj₁.{u1, u2} C _inst_1 _inst_2 B) (CategoryTheory.Pretriangulated.Triangle.obj₂.{u1, u2} C _inst_1 _inst_2 B) hom₁ (CategoryTheory.Pretriangulated.Triangle.mor₁.{u1, u2} C _inst_1 _inst_2 B))) -> (Eq.{succ u1} (Quiver.Hom.{succ u1, u2} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1)) (CategoryTheory.Pretriangulated.Triangle.obj₂.{u1, u2} C _inst_1 _inst_2 A) (CategoryTheory.Pretriangulated.Triangle.obj₃.{u1, u2} C _inst_1 _inst_2 B)) (CategoryTheory.CategoryStruct.comp.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1) (CategoryTheory.Pretriangulated.Triangle.obj₂.{u1, u2} C _inst_1 _inst_2 A) (CategoryTheory.Pretriangulated.Triangle.obj₃.{u1, u2} C _inst_1 _inst_2 A) (CategoryTheory.Pretriangulated.Triangle.obj₃.{u1, u2} C _inst_1 _inst_2 B) (CategoryTheory.Pretriangulated.Triangle.mor₂.{u1, u2} C _inst_1 _inst_2 A) hom₃) (CategoryTheory.CategoryStruct.comp.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1) (CategoryTheory.Pretriangulated.Triangle.obj₂.{u1, u2} C _inst_1 _inst_2 A) (CategoryTheory.Pretriangulated.Triangle.obj₂.{u1, u2} C _inst_1 _inst_2 B) (CategoryTheory.Pretriangulated.Triangle.obj₃.{u1, u2} C _inst_1 _inst_2 B) hom₂ (CategoryTheory.Pretriangulated.Triangle.mor₂.{u1, u2} C _inst_1 _inst_2 B))) -> (Eq.{succ u1} (Quiver.Hom.{succ u1, u2} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1)) (CategoryTheory.Pretriangulated.Triangle.obj₃.{u1, u2} C _inst_1 _inst_2 A) (Prefunctor.obj.{succ u1, succ u1, u2, u2} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1)) C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1)) (CategoryTheory.Functor.toPrefunctor.{u1, u1, u2, u2} C _inst_1 C _inst_1 (CategoryTheory.shiftFunctor.{u1, u2, 0} C Int _inst_1 Int.instAddMonoidInt _inst_2 (OfNat.ofNat.{0} Int 1 (instOfNatInt 1)))) (CategoryTheory.Pretriangulated.Triangle.obj₁.{u1, u2} C _inst_1 _inst_2 B))) (CategoryTheory.CategoryStruct.comp.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1) (CategoryTheory.Pretriangulated.Triangle.obj₃.{u1, u2} C _inst_1 _inst_2 A) (Prefunctor.obj.{succ u1, succ u1, u2, u2} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1)) C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1)) (CategoryTheory.Functor.toPrefunctor.{u1, u1, u2, u2} C _inst_1 C _inst_1 (CategoryTheory.shiftFunctor.{u1, u2, 0} C Int _inst_1 Int.instAddMonoidInt _inst_2 (OfNat.ofNat.{0} Int 1 (instOfNatInt 1)))) (CategoryTheory.Pretriangulated.Triangle.obj₁.{u1, u2} C _inst_1 _inst_2 A)) (Prefunctor.obj.{succ u1, succ u1, u2, u2} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1)) C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1)) (CategoryTheory.Functor.toPrefunctor.{u1, u1, u2, u2} C _inst_1 C _inst_1 (CategoryTheory.shiftFunctor.{u1, u2, 0} C Int _inst_1 Int.instAddMonoidInt _inst_2 (OfNat.ofNat.{0} Int 1 (instOfNatInt 1)))) (CategoryTheory.Pretriangulated.Triangle.obj₁.{u1, u2} C _inst_1 _inst_2 B)) (CategoryTheory.Pretriangulated.Triangle.mor₃.{u1, u2} C _inst_1 _inst_2 A) (Prefunctor.map.{succ u1, succ u1, u2, u2} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1)) C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1)) (CategoryTheory.Functor.toPrefunctor.{u1, u1, u2, u2} C _inst_1 C _inst_1 (CategoryTheory.shiftFunctor.{u1, u2, 0} C Int _inst_1 Int.instAddMonoidInt _inst_2 (OfNat.ofNat.{0} Int 1 (instOfNatInt 1)))) (CategoryTheory.Pretriangulated.Triangle.obj₁.{u1, u2} C _inst_1 _inst_2 A) (CategoryTheory.Pretriangulated.Triangle.obj₁.{u1, u2} C _inst_1 _inst_2 B) hom₁)) (CategoryTheory.CategoryStruct.comp.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1) (CategoryTheory.Pretriangulated.Triangle.obj₃.{u1, u2} C _inst_1 _inst_2 A) (CategoryTheory.Pretriangulated.Triangle.obj₃.{u1, u2} C _inst_1 _inst_2 B) (Prefunctor.obj.{succ u1, succ u1, u2, u2} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1)) C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1)) (CategoryTheory.Functor.toPrefunctor.{u1, u1, u2, u2} C _inst_1 C _inst_1 (CategoryTheory.shiftFunctor.{u1, u2, 0} C Int _inst_1 Int.instAddMonoidInt _inst_2 (OfNat.ofNat.{0} Int 1 (instOfNatInt 1)))) (CategoryTheory.Pretriangulated.Triangle.obj₁.{u1, u2} C _inst_1 _inst_2 B)) hom₃ (CategoryTheory.Pretriangulated.Triangle.mor₃.{u1, u2} C _inst_1 _inst_2 B))) -> (Quiver.Hom.{succ u1, max u2 u1} (CategoryTheory.Pretriangulated.Triangle.{u1, u2} C _inst_1 _inst_2) (CategoryTheory.CategoryStruct.toQuiver.{u1, max u2 u1} (CategoryTheory.Pretriangulated.Triangle.{u1, u2} C _inst_1 _inst_2) (CategoryTheory.Category.toCategoryStruct.{u1, max u2 u1} (CategoryTheory.Pretriangulated.Triangle.{u1, u2} C _inst_1 _inst_2) (CategoryTheory.Pretriangulated.triangleCategory.{u1, u2} C _inst_1 _inst_2))) A B)
+<too large>
Case conversion may be inaccurate. Consider using '#align category_theory.pretriangulated.triangle.hom_mk CategoryTheory.Pretriangulated.Triangle.homMkₓ'. -/
/-- a constructor for morphisms of triangles -/
@[simps]
@@ -218,10 +215,7 @@ def Triangle.homMk (A B : Triangle C) (hom₁ : A.obj₁ ⟶ B.obj₁) (hom₂ :
#align category_theory.pretriangulated.triangle.hom_mk CategoryTheory.Pretriangulated.Triangle.homMk
/- warning: category_theory.pretriangulated.triangle.iso_mk -> CategoryTheory.Pretriangulated.Triangle.isoMk is a dubious translation:
-lean 3 declaration is
- forall {C : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u1, u2} C] [_inst_2 : CategoryTheory.HasShift.{u1, u2, 0} C Int _inst_1 Int.addMonoid] (A : CategoryTheory.Pretriangulated.Triangle.{u1, u2} C _inst_1 _inst_2) (B : CategoryTheory.Pretriangulated.Triangle.{u1, u2} C _inst_1 _inst_2) (iso₁ : CategoryTheory.Iso.{u1, u2} C _inst_1 (CategoryTheory.Pretriangulated.Triangle.obj₁.{u1, u2} C _inst_1 _inst_2 A) (CategoryTheory.Pretriangulated.Triangle.obj₁.{u1, u2} C _inst_1 _inst_2 B)) (iso₂ : CategoryTheory.Iso.{u1, u2} C _inst_1 (CategoryTheory.Pretriangulated.Triangle.obj₂.{u1, u2} C _inst_1 _inst_2 A) (CategoryTheory.Pretriangulated.Triangle.obj₂.{u1, u2} C _inst_1 _inst_2 B)) (iso₃ : CategoryTheory.Iso.{u1, u2} C _inst_1 (CategoryTheory.Pretriangulated.Triangle.obj₃.{u1, u2} C _inst_1 _inst_2 A) (CategoryTheory.Pretriangulated.Triangle.obj₃.{u1, u2} C _inst_1 _inst_2 B)), (Eq.{succ u1} (Quiver.Hom.{succ u1, u2} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1)) (CategoryTheory.Pretriangulated.Triangle.obj₁.{u1, u2} C _inst_1 _inst_2 A) (CategoryTheory.Pretriangulated.Triangle.obj₂.{u1, u2} C _inst_1 _inst_2 B)) (CategoryTheory.CategoryStruct.comp.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1) (CategoryTheory.Pretriangulated.Triangle.obj₁.{u1, u2} C _inst_1 _inst_2 A) (CategoryTheory.Pretriangulated.Triangle.obj₂.{u1, u2} C _inst_1 _inst_2 A) (CategoryTheory.Pretriangulated.Triangle.obj₂.{u1, u2} C _inst_1 _inst_2 B) (CategoryTheory.Pretriangulated.Triangle.mor₁.{u1, u2} C _inst_1 _inst_2 A) (CategoryTheory.Iso.hom.{u1, u2} C _inst_1 (CategoryTheory.Pretriangulated.Triangle.obj₂.{u1, u2} C _inst_1 _inst_2 A) (CategoryTheory.Pretriangulated.Triangle.obj₂.{u1, u2} C _inst_1 _inst_2 B) iso₂)) (CategoryTheory.CategoryStruct.comp.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1) (CategoryTheory.Pretriangulated.Triangle.obj₁.{u1, u2} C _inst_1 _inst_2 A) (CategoryTheory.Pretriangulated.Triangle.obj₁.{u1, u2} C _inst_1 _inst_2 B) (CategoryTheory.Pretriangulated.Triangle.obj₂.{u1, u2} C _inst_1 _inst_2 B) (CategoryTheory.Iso.hom.{u1, u2} C _inst_1 (CategoryTheory.Pretriangulated.Triangle.obj₁.{u1, u2} C _inst_1 _inst_2 A) (CategoryTheory.Pretriangulated.Triangle.obj₁.{u1, u2} C _inst_1 _inst_2 B) iso₁) (CategoryTheory.Pretriangulated.Triangle.mor₁.{u1, u2} C _inst_1 _inst_2 B))) -> (Eq.{succ u1} (Quiver.Hom.{succ u1, u2} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1)) (CategoryTheory.Pretriangulated.Triangle.obj₂.{u1, u2} C _inst_1 _inst_2 A) (CategoryTheory.Pretriangulated.Triangle.obj₃.{u1, u2} C _inst_1 _inst_2 B)) (CategoryTheory.CategoryStruct.comp.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1) (CategoryTheory.Pretriangulated.Triangle.obj₂.{u1, u2} C _inst_1 _inst_2 A) (CategoryTheory.Pretriangulated.Triangle.obj₃.{u1, u2} C _inst_1 _inst_2 A) (CategoryTheory.Pretriangulated.Triangle.obj₃.{u1, u2} C _inst_1 _inst_2 B) (CategoryTheory.Pretriangulated.Triangle.mor₂.{u1, u2} C _inst_1 _inst_2 A) (CategoryTheory.Iso.hom.{u1, u2} C _inst_1 (CategoryTheory.Pretriangulated.Triangle.obj₃.{u1, u2} C _inst_1 _inst_2 A) (CategoryTheory.Pretriangulated.Triangle.obj₃.{u1, u2} C _inst_1 _inst_2 B) iso₃)) (CategoryTheory.CategoryStruct.comp.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1) (CategoryTheory.Pretriangulated.Triangle.obj₂.{u1, u2} C _inst_1 _inst_2 A) (CategoryTheory.Pretriangulated.Triangle.obj₂.{u1, u2} C _inst_1 _inst_2 B) (CategoryTheory.Pretriangulated.Triangle.obj₃.{u1, u2} C _inst_1 _inst_2 B) (CategoryTheory.Iso.hom.{u1, u2} C _inst_1 (CategoryTheory.Pretriangulated.Triangle.obj₂.{u1, u2} C _inst_1 _inst_2 A) (CategoryTheory.Pretriangulated.Triangle.obj₂.{u1, u2} C _inst_1 _inst_2 B) iso₂) (CategoryTheory.Pretriangulated.Triangle.mor₂.{u1, u2} C _inst_1 _inst_2 B))) -> (Eq.{succ u1} (Quiver.Hom.{succ u1, u2} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1)) (CategoryTheory.Pretriangulated.Triangle.obj₃.{u1, u2} C _inst_1 _inst_2 A) (CategoryTheory.Functor.obj.{u1, u1, u2, u2} C _inst_1 C _inst_1 (CategoryTheory.shiftFunctor.{u1, u2, 0} C Int _inst_1 Int.addMonoid _inst_2 (OfNat.ofNat.{0} Int 1 (OfNat.mk.{0} Int 1 (One.one.{0} Int Int.hasOne)))) (CategoryTheory.Pretriangulated.Triangle.obj₁.{u1, u2} C _inst_1 _inst_2 B))) (CategoryTheory.CategoryStruct.comp.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1) (CategoryTheory.Pretriangulated.Triangle.obj₃.{u1, u2} C _inst_1 _inst_2 A) (CategoryTheory.Functor.obj.{u1, u1, u2, u2} C _inst_1 C _inst_1 (CategoryTheory.shiftFunctor.{u1, u2, 0} C Int _inst_1 Int.addMonoid _inst_2 (OfNat.ofNat.{0} Int 1 (OfNat.mk.{0} Int 1 (One.one.{0} Int Int.hasOne)))) (CategoryTheory.Pretriangulated.Triangle.obj₁.{u1, u2} C _inst_1 _inst_2 A)) (CategoryTheory.Functor.obj.{u1, u1, u2, u2} C _inst_1 C _inst_1 (CategoryTheory.shiftFunctor.{u1, u2, 0} C Int _inst_1 Int.addMonoid _inst_2 (OfNat.ofNat.{0} Int 1 (OfNat.mk.{0} Int 1 (One.one.{0} Int Int.hasOne)))) (CategoryTheory.Pretriangulated.Triangle.obj₁.{u1, u2} C _inst_1 _inst_2 B)) (CategoryTheory.Pretriangulated.Triangle.mor₃.{u1, u2} C _inst_1 _inst_2 A) (CategoryTheory.Functor.map.{u1, u1, u2, u2} C _inst_1 C _inst_1 (CategoryTheory.shiftFunctor.{u1, u2, 0} C Int _inst_1 Int.addMonoid _inst_2 (OfNat.ofNat.{0} Int 1 (OfNat.mk.{0} Int 1 (One.one.{0} Int Int.hasOne)))) (CategoryTheory.Pretriangulated.Triangle.obj₁.{u1, u2} C _inst_1 _inst_2 A) (CategoryTheory.Pretriangulated.Triangle.obj₁.{u1, u2} C _inst_1 _inst_2 B) (CategoryTheory.Iso.hom.{u1, u2} C _inst_1 (CategoryTheory.Pretriangulated.Triangle.obj₁.{u1, u2} C _inst_1 _inst_2 A) (CategoryTheory.Pretriangulated.Triangle.obj₁.{u1, u2} C _inst_1 _inst_2 B) iso₁))) (CategoryTheory.CategoryStruct.comp.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1) (CategoryTheory.Pretriangulated.Triangle.obj₃.{u1, u2} C _inst_1 _inst_2 A) (CategoryTheory.Pretriangulated.Triangle.obj₃.{u1, u2} C _inst_1 _inst_2 B) (CategoryTheory.Functor.obj.{u1, u1, u2, u2} C _inst_1 C _inst_1 (CategoryTheory.shiftFunctor.{u1, u2, 0} C Int _inst_1 Int.addMonoid _inst_2 (OfNat.ofNat.{0} Int 1 (OfNat.mk.{0} Int 1 (One.one.{0} Int Int.hasOne)))) (CategoryTheory.Pretriangulated.Triangle.obj₁.{u1, u2} C _inst_1 _inst_2 B)) (CategoryTheory.Iso.hom.{u1, u2} C _inst_1 (CategoryTheory.Pretriangulated.Triangle.obj₃.{u1, u2} C _inst_1 _inst_2 A) (CategoryTheory.Pretriangulated.Triangle.obj₃.{u1, u2} C _inst_1 _inst_2 B) iso₃) (CategoryTheory.Pretriangulated.Triangle.mor₃.{u1, u2} C _inst_1 _inst_2 B))) -> (CategoryTheory.Iso.{u1, max u2 u1} (CategoryTheory.Pretriangulated.Triangle.{u1, u2} C _inst_1 _inst_2) (CategoryTheory.Pretriangulated.triangleCategory.{u1, u2} C _inst_1 _inst_2) A B)
-but is expected to have type
- forall {C : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u1, u2} C] [_inst_2 : CategoryTheory.HasShift.{u1, u2, 0} C Int _inst_1 Int.instAddMonoidInt] (A : CategoryTheory.Pretriangulated.Triangle.{u1, u2} C _inst_1 _inst_2) (B : CategoryTheory.Pretriangulated.Triangle.{u1, u2} C _inst_1 _inst_2) (iso₁ : CategoryTheory.Iso.{u1, u2} C _inst_1 (CategoryTheory.Pretriangulated.Triangle.obj₁.{u1, u2} C _inst_1 _inst_2 A) (CategoryTheory.Pretriangulated.Triangle.obj₁.{u1, u2} C _inst_1 _inst_2 B)) (iso₂ : CategoryTheory.Iso.{u1, u2} C _inst_1 (CategoryTheory.Pretriangulated.Triangle.obj₂.{u1, u2} C _inst_1 _inst_2 A) (CategoryTheory.Pretriangulated.Triangle.obj₂.{u1, u2} C _inst_1 _inst_2 B)) (iso₃ : CategoryTheory.Iso.{u1, u2} C _inst_1 (CategoryTheory.Pretriangulated.Triangle.obj₃.{u1, u2} C _inst_1 _inst_2 A) (CategoryTheory.Pretriangulated.Triangle.obj₃.{u1, u2} C _inst_1 _inst_2 B)), (Eq.{succ u1} (Quiver.Hom.{succ u1, u2} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1)) (CategoryTheory.Pretriangulated.Triangle.obj₁.{u1, u2} C _inst_1 _inst_2 A) (CategoryTheory.Pretriangulated.Triangle.obj₂.{u1, u2} C _inst_1 _inst_2 B)) (CategoryTheory.CategoryStruct.comp.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1) (CategoryTheory.Pretriangulated.Triangle.obj₁.{u1, u2} C _inst_1 _inst_2 A) (CategoryTheory.Pretriangulated.Triangle.obj₂.{u1, u2} C _inst_1 _inst_2 A) (CategoryTheory.Pretriangulated.Triangle.obj₂.{u1, u2} C _inst_1 _inst_2 B) (CategoryTheory.Pretriangulated.Triangle.mor₁.{u1, u2} C _inst_1 _inst_2 A) (CategoryTheory.Iso.hom.{u1, u2} C _inst_1 (CategoryTheory.Pretriangulated.Triangle.obj₂.{u1, u2} C _inst_1 _inst_2 A) (CategoryTheory.Pretriangulated.Triangle.obj₂.{u1, u2} C _inst_1 _inst_2 B) iso₂)) (CategoryTheory.CategoryStruct.comp.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1) (CategoryTheory.Pretriangulated.Triangle.obj₁.{u1, u2} C _inst_1 _inst_2 A) (CategoryTheory.Pretriangulated.Triangle.obj₁.{u1, u2} C _inst_1 _inst_2 B) (CategoryTheory.Pretriangulated.Triangle.obj₂.{u1, u2} C _inst_1 _inst_2 B) (CategoryTheory.Iso.hom.{u1, u2} C _inst_1 (CategoryTheory.Pretriangulated.Triangle.obj₁.{u1, u2} C _inst_1 _inst_2 A) (CategoryTheory.Pretriangulated.Triangle.obj₁.{u1, u2} C _inst_1 _inst_2 B) iso₁) (CategoryTheory.Pretriangulated.Triangle.mor₁.{u1, u2} C _inst_1 _inst_2 B))) -> (Eq.{succ u1} (Quiver.Hom.{succ u1, u2} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1)) (CategoryTheory.Pretriangulated.Triangle.obj₂.{u1, u2} C _inst_1 _inst_2 A) (CategoryTheory.Pretriangulated.Triangle.obj₃.{u1, u2} C _inst_1 _inst_2 B)) (CategoryTheory.CategoryStruct.comp.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1) (CategoryTheory.Pretriangulated.Triangle.obj₂.{u1, u2} C _inst_1 _inst_2 A) (CategoryTheory.Pretriangulated.Triangle.obj₃.{u1, u2} C _inst_1 _inst_2 A) (CategoryTheory.Pretriangulated.Triangle.obj₃.{u1, u2} C _inst_1 _inst_2 B) (CategoryTheory.Pretriangulated.Triangle.mor₂.{u1, u2} C _inst_1 _inst_2 A) (CategoryTheory.Iso.hom.{u1, u2} C _inst_1 (CategoryTheory.Pretriangulated.Triangle.obj₃.{u1, u2} C _inst_1 _inst_2 A) (CategoryTheory.Pretriangulated.Triangle.obj₃.{u1, u2} C _inst_1 _inst_2 B) iso₃)) (CategoryTheory.CategoryStruct.comp.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1) (CategoryTheory.Pretriangulated.Triangle.obj₂.{u1, u2} C _inst_1 _inst_2 A) (CategoryTheory.Pretriangulated.Triangle.obj₂.{u1, u2} C _inst_1 _inst_2 B) (CategoryTheory.Pretriangulated.Triangle.obj₃.{u1, u2} C _inst_1 _inst_2 B) (CategoryTheory.Iso.hom.{u1, u2} C _inst_1 (CategoryTheory.Pretriangulated.Triangle.obj₂.{u1, u2} C _inst_1 _inst_2 A) (CategoryTheory.Pretriangulated.Triangle.obj₂.{u1, u2} C _inst_1 _inst_2 B) iso₂) (CategoryTheory.Pretriangulated.Triangle.mor₂.{u1, u2} C _inst_1 _inst_2 B))) -> (Eq.{succ u1} (Quiver.Hom.{succ u1, u2} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1)) (CategoryTheory.Pretriangulated.Triangle.obj₃.{u1, u2} C _inst_1 _inst_2 A) (Prefunctor.obj.{succ u1, succ u1, u2, u2} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1)) C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1)) (CategoryTheory.Functor.toPrefunctor.{u1, u1, u2, u2} C _inst_1 C _inst_1 (CategoryTheory.shiftFunctor.{u1, u2, 0} C Int _inst_1 Int.instAddMonoidInt _inst_2 (OfNat.ofNat.{0} Int 1 (instOfNatInt 1)))) (CategoryTheory.Pretriangulated.Triangle.obj₁.{u1, u2} C _inst_1 _inst_2 B))) (CategoryTheory.CategoryStruct.comp.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1) (CategoryTheory.Pretriangulated.Triangle.obj₃.{u1, u2} C _inst_1 _inst_2 A) (Prefunctor.obj.{succ u1, succ u1, u2, u2} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1)) C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1)) (CategoryTheory.Functor.toPrefunctor.{u1, u1, u2, u2} C _inst_1 C _inst_1 (CategoryTheory.shiftFunctor.{u1, u2, 0} C Int _inst_1 Int.instAddMonoidInt _inst_2 (OfNat.ofNat.{0} Int 1 (instOfNatInt 1)))) (CategoryTheory.Pretriangulated.Triangle.obj₁.{u1, u2} C _inst_1 _inst_2 A)) (Prefunctor.obj.{succ u1, succ u1, u2, u2} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1)) C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1)) (CategoryTheory.Functor.toPrefunctor.{u1, u1, u2, u2} C _inst_1 C _inst_1 (CategoryTheory.shiftFunctor.{u1, u2, 0} C Int _inst_1 Int.instAddMonoidInt _inst_2 (OfNat.ofNat.{0} Int 1 (instOfNatInt 1)))) (CategoryTheory.Pretriangulated.Triangle.obj₁.{u1, u2} C _inst_1 _inst_2 B)) (CategoryTheory.Pretriangulated.Triangle.mor₃.{u1, u2} C _inst_1 _inst_2 A) (Prefunctor.map.{succ u1, succ u1, u2, u2} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1)) C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1)) (CategoryTheory.Functor.toPrefunctor.{u1, u1, u2, u2} C _inst_1 C _inst_1 (CategoryTheory.shiftFunctor.{u1, u2, 0} C Int _inst_1 Int.instAddMonoidInt _inst_2 (OfNat.ofNat.{0} Int 1 (instOfNatInt 1)))) (CategoryTheory.Pretriangulated.Triangle.obj₁.{u1, u2} C _inst_1 _inst_2 A) (CategoryTheory.Pretriangulated.Triangle.obj₁.{u1, u2} C _inst_1 _inst_2 B) (CategoryTheory.Iso.hom.{u1, u2} C _inst_1 (CategoryTheory.Pretriangulated.Triangle.obj₁.{u1, u2} C _inst_1 _inst_2 A) (CategoryTheory.Pretriangulated.Triangle.obj₁.{u1, u2} C _inst_1 _inst_2 B) iso₁))) (CategoryTheory.CategoryStruct.comp.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1) (CategoryTheory.Pretriangulated.Triangle.obj₃.{u1, u2} C _inst_1 _inst_2 A) (CategoryTheory.Pretriangulated.Triangle.obj₃.{u1, u2} C _inst_1 _inst_2 B) (Prefunctor.obj.{succ u1, succ u1, u2, u2} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1)) C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1)) (CategoryTheory.Functor.toPrefunctor.{u1, u1, u2, u2} C _inst_1 C _inst_1 (CategoryTheory.shiftFunctor.{u1, u2, 0} C Int _inst_1 Int.instAddMonoidInt _inst_2 (OfNat.ofNat.{0} Int 1 (instOfNatInt 1)))) (CategoryTheory.Pretriangulated.Triangle.obj₁.{u1, u2} C _inst_1 _inst_2 B)) (CategoryTheory.Iso.hom.{u1, u2} C _inst_1 (CategoryTheory.Pretriangulated.Triangle.obj₃.{u1, u2} C _inst_1 _inst_2 A) (CategoryTheory.Pretriangulated.Triangle.obj₃.{u1, u2} C _inst_1 _inst_2 B) iso₃) (CategoryTheory.Pretriangulated.Triangle.mor₃.{u1, u2} C _inst_1 _inst_2 B))) -> (CategoryTheory.Iso.{u1, max u2 u1} (CategoryTheory.Pretriangulated.Triangle.{u1, u2} C _inst_1 _inst_2) (CategoryTheory.Pretriangulated.triangleCategory.{u1, u2} C _inst_1 _inst_2) A B)
+<too large>
Case conversion may be inaccurate. Consider using '#align category_theory.pretriangulated.triangle.iso_mk CategoryTheory.Pretriangulated.Triangle.isoMkₓ'. -/
/-- a constructor for isomorphisms of triangles -/
@[simps]
mathlib commit https://github.com/leanprover-community/mathlib/commit/75e7fca56381d056096ce5d05e938f63a6567828
@@ -143,7 +143,7 @@ restate_axiom triangle_morphism.comm₂'
restate_axiom triangle_morphism.comm₃'
-attribute [simp, reassoc.1] triangle_morphism.comm₁ triangle_morphism.comm₂ triangle_morphism.comm₃
+attribute [simp, reassoc] triangle_morphism.comm₁ triangle_morphism.comm₂ triangle_morphism.comm₃
/- warning: category_theory.pretriangulated.triangle_morphism_id -> CategoryTheory.Pretriangulated.triangleMorphismId is a dubious translation:
lean 3 declaration is
mathlib commit https://github.com/leanprover-community/mathlib/commit/06a655b5fcfbda03502f9158bbf6c0f1400886f9
@@ -4,7 +4,7 @@ Released under Apache 2.0 license as described in the file LICENSE.
Authors: Luke Kershaw
! This file was ported from Lean 3 source module category_theory.triangulated.basic
-! leanprover-community/mathlib commit 6876fa15e3158ff3e4a4e2af1fb6e1945c6e8803
+! leanprover-community/mathlib commit d64d67d000b974f0d86a2be7918cf800be6271c8
! Please do not edit these lines, except to modify the commit id
! if you have ported upstream changes.
-/
@@ -14,6 +14,9 @@ import Mathbin.CategoryTheory.Shift.Basic
/-!
# Triangles
+> THIS FILE IS SYNCHRONIZED WITH MATHLIB4.
+> Any changes to this file require a corresponding PR to mathlib4.
+
This file contains the definition of triangles in an additive category with an additive shift.
It also defines morphisms between these triangles.
mathlib commit https://github.com/leanprover-community/mathlib/commit/d95bef0d215ea58c0fd7bbc4b151bf3fe952c095
@@ -38,6 +38,12 @@ We work in a category `C` equipped with a shift.
-/
variable (C : Type u) [Category.{v} C] [HasShift C ℤ]
+/- warning: category_theory.pretriangulated.triangle -> CategoryTheory.Pretriangulated.Triangle is a dubious translation:
+lean 3 declaration is
+ forall (C : Type.{u2}) [_inst_1 : CategoryTheory.Category.{u1, u2} C] [_inst_2 : CategoryTheory.HasShift.{u1, u2, 0} C Int _inst_1 Int.addMonoid], Sort.{max (succ u2) (succ u1)}
+but is expected to have type
+ forall (C : Type.{u2}) [_inst_1 : CategoryTheory.Category.{u1, u2} C] [_inst_2 : CategoryTheory.HasShift.{u1, u2, 0} C Int _inst_1 Int.instAddMonoidInt], Sort.{max (succ u2) (succ u1)}
+Case conversion may be inaccurate. Consider using '#align category_theory.pretriangulated.triangle CategoryTheory.Pretriangulated.Triangleₓ'. -/
/-- A triangle in `C` is a sextuple `(X,Y,Z,f,g,h)` where `X,Y,Z` are objects of `C`,
and `f : X ⟶ Y`, `g : Y ⟶ Z`, `h : Z ⟶ X⟦1⟧` are morphisms in `C`.
See <https://stacks.math.columbia.edu/tag/0144>.
@@ -53,6 +59,12 @@ structure Triangle where mk' ::
variable {C}
+/- warning: category_theory.pretriangulated.triangle.mk -> CategoryTheory.Pretriangulated.Triangle.mk is a dubious translation:
+lean 3 declaration is
+ forall {C : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u1, u2} C] [_inst_2 : CategoryTheory.HasShift.{u1, u2, 0} C Int _inst_1 Int.addMonoid] {X : C} {Y : C} {Z : C}, (Quiver.Hom.{succ u1, u2} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1)) X Y) -> (Quiver.Hom.{succ u1, u2} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1)) Y Z) -> (Quiver.Hom.{succ u1, u2} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1)) Z (CategoryTheory.Functor.obj.{u1, u1, u2, u2} C _inst_1 C _inst_1 (CategoryTheory.shiftFunctor.{u1, u2, 0} C Int _inst_1 Int.addMonoid _inst_2 (OfNat.ofNat.{0} Int 1 (OfNat.mk.{0} Int 1 (One.one.{0} Int Int.hasOne)))) X)) -> (CategoryTheory.Pretriangulated.Triangle.{u1, u2} C _inst_1 _inst_2)
+but is expected to have type
+ forall {C : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u1, u2} C] [_inst_2 : CategoryTheory.HasShift.{u1, u2, 0} C Int _inst_1 Int.instAddMonoidInt] {X : C} {Y : C} {Z : C}, (Quiver.Hom.{succ u1, u2} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1)) X Y) -> (Quiver.Hom.{succ u1, u2} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1)) Y Z) -> (Quiver.Hom.{succ u1, u2} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1)) Z (Prefunctor.obj.{succ u1, succ u1, u2, u2} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1)) C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1)) (CategoryTheory.Functor.toPrefunctor.{u1, u1, u2, u2} C _inst_1 C _inst_1 (CategoryTheory.shiftFunctor.{u1, u2, 0} C Int _inst_1 Int.instAddMonoidInt _inst_2 (OfNat.ofNat.{0} Int 1 (instOfNatInt 1)))) X)) -> (CategoryTheory.Pretriangulated.Triangle.{u1, u2} C _inst_1 _inst_2)
+Case conversion may be inaccurate. Consider using '#align category_theory.pretriangulated.triangle.mk CategoryTheory.Pretriangulated.Triangle.mkₓ'. -/
/-- A triangle `(X,Y,Z,f,g,h)` in `C` is defined by the morphisms `f : X ⟶ Y`, `g : Y ⟶ Z`
and `h : Z ⟶ X⟦1⟧`.
-/
@@ -76,6 +88,12 @@ open ZeroObject
instance : Inhabited (Triangle C) :=
⟨⟨0, 0, 0, 0, 0, 0⟩⟩
+/- warning: category_theory.pretriangulated.contractible_triangle -> CategoryTheory.Pretriangulated.contractibleTriangle is a dubious translation:
+lean 3 declaration is
+ forall {C : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u1, u2} C] [_inst_2 : CategoryTheory.HasShift.{u1, u2, 0} C Int _inst_1 Int.addMonoid] [_inst_3 : CategoryTheory.Limits.HasZeroObject.{u1, u2} C _inst_1] [_inst_4 : CategoryTheory.Limits.HasZeroMorphisms.{u1, u2} C _inst_1], C -> (CategoryTheory.Pretriangulated.Triangle.{u1, u2} C _inst_1 _inst_2)
+but is expected to have type
+ forall {C : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u1, u2} C] [_inst_2 : CategoryTheory.HasShift.{u1, u2, 0} C Int _inst_1 Int.instAddMonoidInt] [_inst_3 : CategoryTheory.Limits.HasZeroObject.{u1, u2} C _inst_1] [_inst_4 : CategoryTheory.Limits.HasZeroMorphisms.{u1, u2} C _inst_1], C -> (CategoryTheory.Pretriangulated.Triangle.{u1, u2} C _inst_1 _inst_2)
+Case conversion may be inaccurate. Consider using '#align category_theory.pretriangulated.contractible_triangle CategoryTheory.Pretriangulated.contractibleTriangleₓ'. -/
/-- For each object in `C`, there is a triangle of the form `(X,X,0,𝟙 X,0,0)`
-/
@[simps]
@@ -85,6 +103,12 @@ def contractibleTriangle (X : C) : Triangle C :=
end
+/- warning: category_theory.pretriangulated.triangle_morphism -> CategoryTheory.Pretriangulated.TriangleMorphism is a dubious translation:
+lean 3 declaration is
+ forall {C : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u1, u2} C] [_inst_2 : CategoryTheory.HasShift.{u1, u2, 0} C Int _inst_1 Int.addMonoid], (CategoryTheory.Pretriangulated.Triangle.{u1, u2} C _inst_1 _inst_2) -> (CategoryTheory.Pretriangulated.Triangle.{u1, u2} C _inst_1 _inst_2) -> Type.{u1}
+but is expected to have type
+ forall {C : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u1, u2} C] [_inst_2 : CategoryTheory.HasShift.{u1, u2, 0} C Int _inst_1 Int.instAddMonoidInt], (CategoryTheory.Pretriangulated.Triangle.{u1, u2} C _inst_1 _inst_2) -> (CategoryTheory.Pretriangulated.Triangle.{u1, u2} C _inst_1 _inst_2) -> Type.{u1}
+Case conversion may be inaccurate. Consider using '#align category_theory.pretriangulated.triangle_morphism CategoryTheory.Pretriangulated.TriangleMorphismₓ'. -/
/-- A morphism of triangles `(X,Y,Z,f,g,h) ⟶ (X',Y',Z',f',g',h')` in `C` is a triple of morphisms
`a : X ⟶ X'`, `b : Y ⟶ Y'`, `c : Z ⟶ Z'` such that
`a ≫ f' = f ≫ b`, `b ≫ g' = g ≫ c`, and `a⟦1⟧' ≫ h = h' ≫ c`.
@@ -118,6 +142,12 @@ restate_axiom triangle_morphism.comm₃'
attribute [simp, reassoc.1] triangle_morphism.comm₁ triangle_morphism.comm₂ triangle_morphism.comm₃
+/- warning: category_theory.pretriangulated.triangle_morphism_id -> CategoryTheory.Pretriangulated.triangleMorphismId is a dubious translation:
+lean 3 declaration is
+ forall {C : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u1, u2} C] [_inst_2 : CategoryTheory.HasShift.{u1, u2, 0} C Int _inst_1 Int.addMonoid] (T : CategoryTheory.Pretriangulated.Triangle.{u1, u2} C _inst_1 _inst_2), CategoryTheory.Pretriangulated.TriangleMorphism.{u1, u2} C _inst_1 _inst_2 T T
+but is expected to have type
+ forall {C : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u1, u2} C] [_inst_2 : CategoryTheory.HasShift.{u1, u2, 0} C Int _inst_1 Int.instAddMonoidInt] (T : CategoryTheory.Pretriangulated.Triangle.{u1, u2} C _inst_1 _inst_2), CategoryTheory.Pretriangulated.TriangleMorphism.{u1, u2} C _inst_1 _inst_2 T T
+Case conversion may be inaccurate. Consider using '#align category_theory.pretriangulated.triangle_morphism_id CategoryTheory.Pretriangulated.triangleMorphismIdₓ'. -/
/-- The identity triangle morphism.
-/
@[simps]
@@ -133,6 +163,12 @@ instance (T : Triangle C) : Inhabited (TriangleMorphism T T) :=
variable {T₁ T₂ T₃ : Triangle C}
+/- warning: category_theory.pretriangulated.triangle_morphism.comp -> CategoryTheory.Pretriangulated.TriangleMorphism.comp is a dubious translation:
+lean 3 declaration is
+ forall {C : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u1, u2} C] [_inst_2 : CategoryTheory.HasShift.{u1, u2, 0} C Int _inst_1 Int.addMonoid] {T₁ : CategoryTheory.Pretriangulated.Triangle.{u1, u2} C _inst_1 _inst_2} {T₂ : CategoryTheory.Pretriangulated.Triangle.{u1, u2} C _inst_1 _inst_2} {T₃ : CategoryTheory.Pretriangulated.Triangle.{u1, u2} C _inst_1 _inst_2}, (CategoryTheory.Pretriangulated.TriangleMorphism.{u1, u2} C _inst_1 _inst_2 T₁ T₂) -> (CategoryTheory.Pretriangulated.TriangleMorphism.{u1, u2} C _inst_1 _inst_2 T₂ T₃) -> (CategoryTheory.Pretriangulated.TriangleMorphism.{u1, u2} C _inst_1 _inst_2 T₁ T₃)
+but is expected to have type
+ forall {C : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u1, u2} C] [_inst_2 : CategoryTheory.HasShift.{u1, u2, 0} C Int _inst_1 Int.instAddMonoidInt] {T₁ : CategoryTheory.Pretriangulated.Triangle.{u1, u2} C _inst_1 _inst_2} {T₂ : CategoryTheory.Pretriangulated.Triangle.{u1, u2} C _inst_1 _inst_2} {T₃ : CategoryTheory.Pretriangulated.Triangle.{u1, u2} C _inst_1 _inst_2}, (CategoryTheory.Pretriangulated.TriangleMorphism.{u1, u2} C _inst_1 _inst_2 T₁ T₂) -> (CategoryTheory.Pretriangulated.TriangleMorphism.{u1, u2} C _inst_1 _inst_2 T₂ T₃) -> (CategoryTheory.Pretriangulated.TriangleMorphism.{u1, u2} C _inst_1 _inst_2 T₁ T₃)
+Case conversion may be inaccurate. Consider using '#align category_theory.pretriangulated.triangle_morphism.comp CategoryTheory.Pretriangulated.TriangleMorphism.compₓ'. -/
/-- Composition of triangle morphisms gives a triangle morphism.
-/
@[simps]
@@ -143,6 +179,12 @@ def TriangleMorphism.comp (f : TriangleMorphism T₁ T₂) (g : TriangleMorphism
hom₃ := f.hom₃ ≫ g.hom₃
#align category_theory.pretriangulated.triangle_morphism.comp CategoryTheory.Pretriangulated.TriangleMorphism.comp
+/- warning: category_theory.pretriangulated.triangle_category -> CategoryTheory.Pretriangulated.triangleCategory is a dubious translation:
+lean 3 declaration is
+ forall {C : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u1, u2} C] [_inst_2 : CategoryTheory.HasShift.{u1, u2, 0} C Int _inst_1 Int.addMonoid], CategoryTheory.Category.{u1, max u2 u1} (CategoryTheory.Pretriangulated.Triangle.{u1, u2} C _inst_1 _inst_2)
+but is expected to have type
+ forall {C : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u1, u2} C] [_inst_2 : CategoryTheory.HasShift.{u1, u2, 0} C Int _inst_1 Int.instAddMonoidInt], CategoryTheory.Category.{u1, max u2 u1} (CategoryTheory.Pretriangulated.Triangle.{u1, u2} C _inst_1 _inst_2)
+Case conversion may be inaccurate. Consider using '#align category_theory.pretriangulated.triangle_category CategoryTheory.Pretriangulated.triangleCategoryₓ'. -/
/-- Triangles with triangle morphisms form a category.
-/
@[simps]
@@ -153,6 +195,12 @@ instance triangleCategory : Category (Triangle C)
comp A B C f g := f.comp g
#align category_theory.pretriangulated.triangle_category CategoryTheory.Pretriangulated.triangleCategory
+/- warning: category_theory.pretriangulated.triangle.hom_mk -> CategoryTheory.Pretriangulated.Triangle.homMk is a dubious translation:
+lean 3 declaration is
+ forall {C : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u1, u2} C] [_inst_2 : CategoryTheory.HasShift.{u1, u2, 0} C Int _inst_1 Int.addMonoid] (A : CategoryTheory.Pretriangulated.Triangle.{u1, u2} C _inst_1 _inst_2) (B : CategoryTheory.Pretriangulated.Triangle.{u1, u2} C _inst_1 _inst_2) (hom₁ : Quiver.Hom.{succ u1, u2} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1)) (CategoryTheory.Pretriangulated.Triangle.obj₁.{u1, u2} C _inst_1 _inst_2 A) (CategoryTheory.Pretriangulated.Triangle.obj₁.{u1, u2} C _inst_1 _inst_2 B)) (hom₂ : Quiver.Hom.{succ u1, u2} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1)) (CategoryTheory.Pretriangulated.Triangle.obj₂.{u1, u2} C _inst_1 _inst_2 A) (CategoryTheory.Pretriangulated.Triangle.obj₂.{u1, u2} C _inst_1 _inst_2 B)) (hom₃ : Quiver.Hom.{succ u1, u2} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1)) (CategoryTheory.Pretriangulated.Triangle.obj₃.{u1, u2} C _inst_1 _inst_2 A) (CategoryTheory.Pretriangulated.Triangle.obj₃.{u1, u2} C _inst_1 _inst_2 B)), (Eq.{succ u1} (Quiver.Hom.{succ u1, u2} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1)) (CategoryTheory.Pretriangulated.Triangle.obj₁.{u1, u2} C _inst_1 _inst_2 A) (CategoryTheory.Pretriangulated.Triangle.obj₂.{u1, u2} C _inst_1 _inst_2 B)) (CategoryTheory.CategoryStruct.comp.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1) (CategoryTheory.Pretriangulated.Triangle.obj₁.{u1, u2} C _inst_1 _inst_2 A) (CategoryTheory.Pretriangulated.Triangle.obj₂.{u1, u2} C _inst_1 _inst_2 A) (CategoryTheory.Pretriangulated.Triangle.obj₂.{u1, u2} C _inst_1 _inst_2 B) (CategoryTheory.Pretriangulated.Triangle.mor₁.{u1, u2} C _inst_1 _inst_2 A) hom₂) (CategoryTheory.CategoryStruct.comp.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1) (CategoryTheory.Pretriangulated.Triangle.obj₁.{u1, u2} C _inst_1 _inst_2 A) (CategoryTheory.Pretriangulated.Triangle.obj₁.{u1, u2} C _inst_1 _inst_2 B) (CategoryTheory.Pretriangulated.Triangle.obj₂.{u1, u2} C _inst_1 _inst_2 B) hom₁ (CategoryTheory.Pretriangulated.Triangle.mor₁.{u1, u2} C _inst_1 _inst_2 B))) -> (Eq.{succ u1} (Quiver.Hom.{succ u1, u2} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1)) (CategoryTheory.Pretriangulated.Triangle.obj₂.{u1, u2} C _inst_1 _inst_2 A) (CategoryTheory.Pretriangulated.Triangle.obj₃.{u1, u2} C _inst_1 _inst_2 B)) (CategoryTheory.CategoryStruct.comp.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1) (CategoryTheory.Pretriangulated.Triangle.obj₂.{u1, u2} C _inst_1 _inst_2 A) (CategoryTheory.Pretriangulated.Triangle.obj₃.{u1, u2} C _inst_1 _inst_2 A) (CategoryTheory.Pretriangulated.Triangle.obj₃.{u1, u2} C _inst_1 _inst_2 B) (CategoryTheory.Pretriangulated.Triangle.mor₂.{u1, u2} C _inst_1 _inst_2 A) hom₃) (CategoryTheory.CategoryStruct.comp.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1) (CategoryTheory.Pretriangulated.Triangle.obj₂.{u1, u2} C _inst_1 _inst_2 A) (CategoryTheory.Pretriangulated.Triangle.obj₂.{u1, u2} C _inst_1 _inst_2 B) (CategoryTheory.Pretriangulated.Triangle.obj₃.{u1, u2} C _inst_1 _inst_2 B) hom₂ (CategoryTheory.Pretriangulated.Triangle.mor₂.{u1, u2} C _inst_1 _inst_2 B))) -> (Eq.{succ u1} (Quiver.Hom.{succ u1, u2} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1)) (CategoryTheory.Pretriangulated.Triangle.obj₃.{u1, u2} C _inst_1 _inst_2 A) (CategoryTheory.Functor.obj.{u1, u1, u2, u2} C _inst_1 C _inst_1 (CategoryTheory.shiftFunctor.{u1, u2, 0} C Int _inst_1 Int.addMonoid _inst_2 (OfNat.ofNat.{0} Int 1 (OfNat.mk.{0} Int 1 (One.one.{0} Int Int.hasOne)))) (CategoryTheory.Pretriangulated.Triangle.obj₁.{u1, u2} C _inst_1 _inst_2 B))) (CategoryTheory.CategoryStruct.comp.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1) (CategoryTheory.Pretriangulated.Triangle.obj₃.{u1, u2} C _inst_1 _inst_2 A) (CategoryTheory.Functor.obj.{u1, u1, u2, u2} C _inst_1 C _inst_1 (CategoryTheory.shiftFunctor.{u1, u2, 0} C Int _inst_1 Int.addMonoid _inst_2 (OfNat.ofNat.{0} Int 1 (OfNat.mk.{0} Int 1 (One.one.{0} Int Int.hasOne)))) (CategoryTheory.Pretriangulated.Triangle.obj₁.{u1, u2} C _inst_1 _inst_2 A)) (CategoryTheory.Functor.obj.{u1, u1, u2, u2} C _inst_1 C _inst_1 (CategoryTheory.shiftFunctor.{u1, u2, 0} C Int _inst_1 Int.addMonoid _inst_2 (OfNat.ofNat.{0} Int 1 (OfNat.mk.{0} Int 1 (One.one.{0} Int Int.hasOne)))) (CategoryTheory.Pretriangulated.Triangle.obj₁.{u1, u2} C _inst_1 _inst_2 B)) (CategoryTheory.Pretriangulated.Triangle.mor₃.{u1, u2} C _inst_1 _inst_2 A) (CategoryTheory.Functor.map.{u1, u1, u2, u2} C _inst_1 C _inst_1 (CategoryTheory.shiftFunctor.{u1, u2, 0} C Int _inst_1 Int.addMonoid _inst_2 (OfNat.ofNat.{0} Int 1 (OfNat.mk.{0} Int 1 (One.one.{0} Int Int.hasOne)))) (CategoryTheory.Pretriangulated.Triangle.obj₁.{u1, u2} C _inst_1 _inst_2 A) (CategoryTheory.Pretriangulated.Triangle.obj₁.{u1, u2} C _inst_1 _inst_2 B) hom₁)) (CategoryTheory.CategoryStruct.comp.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1) (CategoryTheory.Pretriangulated.Triangle.obj₃.{u1, u2} C _inst_1 _inst_2 A) (CategoryTheory.Pretriangulated.Triangle.obj₃.{u1, u2} C _inst_1 _inst_2 B) (CategoryTheory.Functor.obj.{u1, u1, u2, u2} C _inst_1 C _inst_1 (CategoryTheory.shiftFunctor.{u1, u2, 0} C Int _inst_1 Int.addMonoid _inst_2 (OfNat.ofNat.{0} Int 1 (OfNat.mk.{0} Int 1 (One.one.{0} Int Int.hasOne)))) (CategoryTheory.Pretriangulated.Triangle.obj₁.{u1, u2} C _inst_1 _inst_2 B)) hom₃ (CategoryTheory.Pretriangulated.Triangle.mor₃.{u1, u2} C _inst_1 _inst_2 B))) -> (Quiver.Hom.{succ u1, max u2 u1} (CategoryTheory.Pretriangulated.Triangle.{u1, u2} C _inst_1 _inst_2) (CategoryTheory.CategoryStruct.toQuiver.{u1, max u2 u1} (CategoryTheory.Pretriangulated.Triangle.{u1, u2} C _inst_1 _inst_2) (CategoryTheory.Category.toCategoryStruct.{u1, max u2 u1} (CategoryTheory.Pretriangulated.Triangle.{u1, u2} C _inst_1 _inst_2) (CategoryTheory.Pretriangulated.triangleCategory.{u1, u2} C _inst_1 _inst_2))) A B)
+but is expected to have type
+ forall {C : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u1, u2} C] [_inst_2 : CategoryTheory.HasShift.{u1, u2, 0} C Int _inst_1 Int.instAddMonoidInt] (A : CategoryTheory.Pretriangulated.Triangle.{u1, u2} C _inst_1 _inst_2) (B : CategoryTheory.Pretriangulated.Triangle.{u1, u2} C _inst_1 _inst_2) (hom₁ : Quiver.Hom.{succ u1, u2} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1)) (CategoryTheory.Pretriangulated.Triangle.obj₁.{u1, u2} C _inst_1 _inst_2 A) (CategoryTheory.Pretriangulated.Triangle.obj₁.{u1, u2} C _inst_1 _inst_2 B)) (hom₂ : Quiver.Hom.{succ u1, u2} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1)) (CategoryTheory.Pretriangulated.Triangle.obj₂.{u1, u2} C _inst_1 _inst_2 A) (CategoryTheory.Pretriangulated.Triangle.obj₂.{u1, u2} C _inst_1 _inst_2 B)) (hom₃ : Quiver.Hom.{succ u1, u2} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1)) (CategoryTheory.Pretriangulated.Triangle.obj₃.{u1, u2} C _inst_1 _inst_2 A) (CategoryTheory.Pretriangulated.Triangle.obj₃.{u1, u2} C _inst_1 _inst_2 B)), (Eq.{succ u1} (Quiver.Hom.{succ u1, u2} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1)) (CategoryTheory.Pretriangulated.Triangle.obj₁.{u1, u2} C _inst_1 _inst_2 A) (CategoryTheory.Pretriangulated.Triangle.obj₂.{u1, u2} C _inst_1 _inst_2 B)) (CategoryTheory.CategoryStruct.comp.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1) (CategoryTheory.Pretriangulated.Triangle.obj₁.{u1, u2} C _inst_1 _inst_2 A) (CategoryTheory.Pretriangulated.Triangle.obj₂.{u1, u2} C _inst_1 _inst_2 A) (CategoryTheory.Pretriangulated.Triangle.obj₂.{u1, u2} C _inst_1 _inst_2 B) (CategoryTheory.Pretriangulated.Triangle.mor₁.{u1, u2} C _inst_1 _inst_2 A) hom₂) (CategoryTheory.CategoryStruct.comp.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1) (CategoryTheory.Pretriangulated.Triangle.obj₁.{u1, u2} C _inst_1 _inst_2 A) (CategoryTheory.Pretriangulated.Triangle.obj₁.{u1, u2} C _inst_1 _inst_2 B) (CategoryTheory.Pretriangulated.Triangle.obj₂.{u1, u2} C _inst_1 _inst_2 B) hom₁ (CategoryTheory.Pretriangulated.Triangle.mor₁.{u1, u2} C _inst_1 _inst_2 B))) -> (Eq.{succ u1} (Quiver.Hom.{succ u1, u2} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1)) (CategoryTheory.Pretriangulated.Triangle.obj₂.{u1, u2} C _inst_1 _inst_2 A) (CategoryTheory.Pretriangulated.Triangle.obj₃.{u1, u2} C _inst_1 _inst_2 B)) (CategoryTheory.CategoryStruct.comp.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1) (CategoryTheory.Pretriangulated.Triangle.obj₂.{u1, u2} C _inst_1 _inst_2 A) (CategoryTheory.Pretriangulated.Triangle.obj₃.{u1, u2} C _inst_1 _inst_2 A) (CategoryTheory.Pretriangulated.Triangle.obj₃.{u1, u2} C _inst_1 _inst_2 B) (CategoryTheory.Pretriangulated.Triangle.mor₂.{u1, u2} C _inst_1 _inst_2 A) hom₃) (CategoryTheory.CategoryStruct.comp.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1) (CategoryTheory.Pretriangulated.Triangle.obj₂.{u1, u2} C _inst_1 _inst_2 A) (CategoryTheory.Pretriangulated.Triangle.obj₂.{u1, u2} C _inst_1 _inst_2 B) (CategoryTheory.Pretriangulated.Triangle.obj₃.{u1, u2} C _inst_1 _inst_2 B) hom₂ (CategoryTheory.Pretriangulated.Triangle.mor₂.{u1, u2} C _inst_1 _inst_2 B))) -> (Eq.{succ u1} (Quiver.Hom.{succ u1, u2} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1)) (CategoryTheory.Pretriangulated.Triangle.obj₃.{u1, u2} C _inst_1 _inst_2 A) (Prefunctor.obj.{succ u1, succ u1, u2, u2} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1)) C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1)) (CategoryTheory.Functor.toPrefunctor.{u1, u1, u2, u2} C _inst_1 C _inst_1 (CategoryTheory.shiftFunctor.{u1, u2, 0} C Int _inst_1 Int.instAddMonoidInt _inst_2 (OfNat.ofNat.{0} Int 1 (instOfNatInt 1)))) (CategoryTheory.Pretriangulated.Triangle.obj₁.{u1, u2} C _inst_1 _inst_2 B))) (CategoryTheory.CategoryStruct.comp.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1) (CategoryTheory.Pretriangulated.Triangle.obj₃.{u1, u2} C _inst_1 _inst_2 A) (Prefunctor.obj.{succ u1, succ u1, u2, u2} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1)) C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1)) (CategoryTheory.Functor.toPrefunctor.{u1, u1, u2, u2} C _inst_1 C _inst_1 (CategoryTheory.shiftFunctor.{u1, u2, 0} C Int _inst_1 Int.instAddMonoidInt _inst_2 (OfNat.ofNat.{0} Int 1 (instOfNatInt 1)))) (CategoryTheory.Pretriangulated.Triangle.obj₁.{u1, u2} C _inst_1 _inst_2 A)) (Prefunctor.obj.{succ u1, succ u1, u2, u2} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1)) C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1)) (CategoryTheory.Functor.toPrefunctor.{u1, u1, u2, u2} C _inst_1 C _inst_1 (CategoryTheory.shiftFunctor.{u1, u2, 0} C Int _inst_1 Int.instAddMonoidInt _inst_2 (OfNat.ofNat.{0} Int 1 (instOfNatInt 1)))) (CategoryTheory.Pretriangulated.Triangle.obj₁.{u1, u2} C _inst_1 _inst_2 B)) (CategoryTheory.Pretriangulated.Triangle.mor₃.{u1, u2} C _inst_1 _inst_2 A) (Prefunctor.map.{succ u1, succ u1, u2, u2} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1)) C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1)) (CategoryTheory.Functor.toPrefunctor.{u1, u1, u2, u2} C _inst_1 C _inst_1 (CategoryTheory.shiftFunctor.{u1, u2, 0} C Int _inst_1 Int.instAddMonoidInt _inst_2 (OfNat.ofNat.{0} Int 1 (instOfNatInt 1)))) (CategoryTheory.Pretriangulated.Triangle.obj₁.{u1, u2} C _inst_1 _inst_2 A) (CategoryTheory.Pretriangulated.Triangle.obj₁.{u1, u2} C _inst_1 _inst_2 B) hom₁)) (CategoryTheory.CategoryStruct.comp.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1) (CategoryTheory.Pretriangulated.Triangle.obj₃.{u1, u2} C _inst_1 _inst_2 A) (CategoryTheory.Pretriangulated.Triangle.obj₃.{u1, u2} C _inst_1 _inst_2 B) (Prefunctor.obj.{succ u1, succ u1, u2, u2} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1)) C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1)) (CategoryTheory.Functor.toPrefunctor.{u1, u1, u2, u2} C _inst_1 C _inst_1 (CategoryTheory.shiftFunctor.{u1, u2, 0} C Int _inst_1 Int.instAddMonoidInt _inst_2 (OfNat.ofNat.{0} Int 1 (instOfNatInt 1)))) (CategoryTheory.Pretriangulated.Triangle.obj₁.{u1, u2} C _inst_1 _inst_2 B)) hom₃ (CategoryTheory.Pretriangulated.Triangle.mor₃.{u1, u2} C _inst_1 _inst_2 B))) -> (Quiver.Hom.{succ u1, max u2 u1} (CategoryTheory.Pretriangulated.Triangle.{u1, u2} C _inst_1 _inst_2) (CategoryTheory.CategoryStruct.toQuiver.{u1, max u2 u1} (CategoryTheory.Pretriangulated.Triangle.{u1, u2} C _inst_1 _inst_2) (CategoryTheory.Category.toCategoryStruct.{u1, max u2 u1} (CategoryTheory.Pretriangulated.Triangle.{u1, u2} C _inst_1 _inst_2) (CategoryTheory.Pretriangulated.triangleCategory.{u1, u2} C _inst_1 _inst_2))) A B)
+Case conversion may be inaccurate. Consider using '#align category_theory.pretriangulated.triangle.hom_mk CategoryTheory.Pretriangulated.Triangle.homMkₓ'. -/
/-- a constructor for morphisms of triangles -/
@[simps]
def Triangle.homMk (A B : Triangle C) (hom₁ : A.obj₁ ⟶ B.obj₁) (hom₂ : A.obj₂ ⟶ B.obj₂)
@@ -166,6 +214,12 @@ def Triangle.homMk (A B : Triangle C) (hom₁ : A.obj₁ ⟶ B.obj₁) (hom₂ :
comm₃' := comm₃ }
#align category_theory.pretriangulated.triangle.hom_mk CategoryTheory.Pretriangulated.Triangle.homMk
+/- warning: category_theory.pretriangulated.triangle.iso_mk -> CategoryTheory.Pretriangulated.Triangle.isoMk is a dubious translation:
+lean 3 declaration is
+ forall {C : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u1, u2} C] [_inst_2 : CategoryTheory.HasShift.{u1, u2, 0} C Int _inst_1 Int.addMonoid] (A : CategoryTheory.Pretriangulated.Triangle.{u1, u2} C _inst_1 _inst_2) (B : CategoryTheory.Pretriangulated.Triangle.{u1, u2} C _inst_1 _inst_2) (iso₁ : CategoryTheory.Iso.{u1, u2} C _inst_1 (CategoryTheory.Pretriangulated.Triangle.obj₁.{u1, u2} C _inst_1 _inst_2 A) (CategoryTheory.Pretriangulated.Triangle.obj₁.{u1, u2} C _inst_1 _inst_2 B)) (iso₂ : CategoryTheory.Iso.{u1, u2} C _inst_1 (CategoryTheory.Pretriangulated.Triangle.obj₂.{u1, u2} C _inst_1 _inst_2 A) (CategoryTheory.Pretriangulated.Triangle.obj₂.{u1, u2} C _inst_1 _inst_2 B)) (iso₃ : CategoryTheory.Iso.{u1, u2} C _inst_1 (CategoryTheory.Pretriangulated.Triangle.obj₃.{u1, u2} C _inst_1 _inst_2 A) (CategoryTheory.Pretriangulated.Triangle.obj₃.{u1, u2} C _inst_1 _inst_2 B)), (Eq.{succ u1} (Quiver.Hom.{succ u1, u2} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1)) (CategoryTheory.Pretriangulated.Triangle.obj₁.{u1, u2} C _inst_1 _inst_2 A) (CategoryTheory.Pretriangulated.Triangle.obj₂.{u1, u2} C _inst_1 _inst_2 B)) (CategoryTheory.CategoryStruct.comp.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1) (CategoryTheory.Pretriangulated.Triangle.obj₁.{u1, u2} C _inst_1 _inst_2 A) (CategoryTheory.Pretriangulated.Triangle.obj₂.{u1, u2} C _inst_1 _inst_2 A) (CategoryTheory.Pretriangulated.Triangle.obj₂.{u1, u2} C _inst_1 _inst_2 B) (CategoryTheory.Pretriangulated.Triangle.mor₁.{u1, u2} C _inst_1 _inst_2 A) (CategoryTheory.Iso.hom.{u1, u2} C _inst_1 (CategoryTheory.Pretriangulated.Triangle.obj₂.{u1, u2} C _inst_1 _inst_2 A) (CategoryTheory.Pretriangulated.Triangle.obj₂.{u1, u2} C _inst_1 _inst_2 B) iso₂)) (CategoryTheory.CategoryStruct.comp.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1) (CategoryTheory.Pretriangulated.Triangle.obj₁.{u1, u2} C _inst_1 _inst_2 A) (CategoryTheory.Pretriangulated.Triangle.obj₁.{u1, u2} C _inst_1 _inst_2 B) (CategoryTheory.Pretriangulated.Triangle.obj₂.{u1, u2} C _inst_1 _inst_2 B) (CategoryTheory.Iso.hom.{u1, u2} C _inst_1 (CategoryTheory.Pretriangulated.Triangle.obj₁.{u1, u2} C _inst_1 _inst_2 A) (CategoryTheory.Pretriangulated.Triangle.obj₁.{u1, u2} C _inst_1 _inst_2 B) iso₁) (CategoryTheory.Pretriangulated.Triangle.mor₁.{u1, u2} C _inst_1 _inst_2 B))) -> (Eq.{succ u1} (Quiver.Hom.{succ u1, u2} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1)) (CategoryTheory.Pretriangulated.Triangle.obj₂.{u1, u2} C _inst_1 _inst_2 A) (CategoryTheory.Pretriangulated.Triangle.obj₃.{u1, u2} C _inst_1 _inst_2 B)) (CategoryTheory.CategoryStruct.comp.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1) (CategoryTheory.Pretriangulated.Triangle.obj₂.{u1, u2} C _inst_1 _inst_2 A) (CategoryTheory.Pretriangulated.Triangle.obj₃.{u1, u2} C _inst_1 _inst_2 A) (CategoryTheory.Pretriangulated.Triangle.obj₃.{u1, u2} C _inst_1 _inst_2 B) (CategoryTheory.Pretriangulated.Triangle.mor₂.{u1, u2} C _inst_1 _inst_2 A) (CategoryTheory.Iso.hom.{u1, u2} C _inst_1 (CategoryTheory.Pretriangulated.Triangle.obj₃.{u1, u2} C _inst_1 _inst_2 A) (CategoryTheory.Pretriangulated.Triangle.obj₃.{u1, u2} C _inst_1 _inst_2 B) iso₃)) (CategoryTheory.CategoryStruct.comp.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1) (CategoryTheory.Pretriangulated.Triangle.obj₂.{u1, u2} C _inst_1 _inst_2 A) (CategoryTheory.Pretriangulated.Triangle.obj₂.{u1, u2} C _inst_1 _inst_2 B) (CategoryTheory.Pretriangulated.Triangle.obj₃.{u1, u2} C _inst_1 _inst_2 B) (CategoryTheory.Iso.hom.{u1, u2} C _inst_1 (CategoryTheory.Pretriangulated.Triangle.obj₂.{u1, u2} C _inst_1 _inst_2 A) (CategoryTheory.Pretriangulated.Triangle.obj₂.{u1, u2} C _inst_1 _inst_2 B) iso₂) (CategoryTheory.Pretriangulated.Triangle.mor₂.{u1, u2} C _inst_1 _inst_2 B))) -> (Eq.{succ u1} (Quiver.Hom.{succ u1, u2} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1)) (CategoryTheory.Pretriangulated.Triangle.obj₃.{u1, u2} C _inst_1 _inst_2 A) (CategoryTheory.Functor.obj.{u1, u1, u2, u2} C _inst_1 C _inst_1 (CategoryTheory.shiftFunctor.{u1, u2, 0} C Int _inst_1 Int.addMonoid _inst_2 (OfNat.ofNat.{0} Int 1 (OfNat.mk.{0} Int 1 (One.one.{0} Int Int.hasOne)))) (CategoryTheory.Pretriangulated.Triangle.obj₁.{u1, u2} C _inst_1 _inst_2 B))) (CategoryTheory.CategoryStruct.comp.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1) (CategoryTheory.Pretriangulated.Triangle.obj₃.{u1, u2} C _inst_1 _inst_2 A) (CategoryTheory.Functor.obj.{u1, u1, u2, u2} C _inst_1 C _inst_1 (CategoryTheory.shiftFunctor.{u1, u2, 0} C Int _inst_1 Int.addMonoid _inst_2 (OfNat.ofNat.{0} Int 1 (OfNat.mk.{0} Int 1 (One.one.{0} Int Int.hasOne)))) (CategoryTheory.Pretriangulated.Triangle.obj₁.{u1, u2} C _inst_1 _inst_2 A)) (CategoryTheory.Functor.obj.{u1, u1, u2, u2} C _inst_1 C _inst_1 (CategoryTheory.shiftFunctor.{u1, u2, 0} C Int _inst_1 Int.addMonoid _inst_2 (OfNat.ofNat.{0} Int 1 (OfNat.mk.{0} Int 1 (One.one.{0} Int Int.hasOne)))) (CategoryTheory.Pretriangulated.Triangle.obj₁.{u1, u2} C _inst_1 _inst_2 B)) (CategoryTheory.Pretriangulated.Triangle.mor₃.{u1, u2} C _inst_1 _inst_2 A) (CategoryTheory.Functor.map.{u1, u1, u2, u2} C _inst_1 C _inst_1 (CategoryTheory.shiftFunctor.{u1, u2, 0} C Int _inst_1 Int.addMonoid _inst_2 (OfNat.ofNat.{0} Int 1 (OfNat.mk.{0} Int 1 (One.one.{0} Int Int.hasOne)))) (CategoryTheory.Pretriangulated.Triangle.obj₁.{u1, u2} C _inst_1 _inst_2 A) (CategoryTheory.Pretriangulated.Triangle.obj₁.{u1, u2} C _inst_1 _inst_2 B) (CategoryTheory.Iso.hom.{u1, u2} C _inst_1 (CategoryTheory.Pretriangulated.Triangle.obj₁.{u1, u2} C _inst_1 _inst_2 A) (CategoryTheory.Pretriangulated.Triangle.obj₁.{u1, u2} C _inst_1 _inst_2 B) iso₁))) (CategoryTheory.CategoryStruct.comp.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1) (CategoryTheory.Pretriangulated.Triangle.obj₃.{u1, u2} C _inst_1 _inst_2 A) (CategoryTheory.Pretriangulated.Triangle.obj₃.{u1, u2} C _inst_1 _inst_2 B) (CategoryTheory.Functor.obj.{u1, u1, u2, u2} C _inst_1 C _inst_1 (CategoryTheory.shiftFunctor.{u1, u2, 0} C Int _inst_1 Int.addMonoid _inst_2 (OfNat.ofNat.{0} Int 1 (OfNat.mk.{0} Int 1 (One.one.{0} Int Int.hasOne)))) (CategoryTheory.Pretriangulated.Triangle.obj₁.{u1, u2} C _inst_1 _inst_2 B)) (CategoryTheory.Iso.hom.{u1, u2} C _inst_1 (CategoryTheory.Pretriangulated.Triangle.obj₃.{u1, u2} C _inst_1 _inst_2 A) (CategoryTheory.Pretriangulated.Triangle.obj₃.{u1, u2} C _inst_1 _inst_2 B) iso₃) (CategoryTheory.Pretriangulated.Triangle.mor₃.{u1, u2} C _inst_1 _inst_2 B))) -> (CategoryTheory.Iso.{u1, max u2 u1} (CategoryTheory.Pretriangulated.Triangle.{u1, u2} C _inst_1 _inst_2) (CategoryTheory.Pretriangulated.triangleCategory.{u1, u2} C _inst_1 _inst_2) A B)
+but is expected to have type
+ forall {C : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u1, u2} C] [_inst_2 : CategoryTheory.HasShift.{u1, u2, 0} C Int _inst_1 Int.instAddMonoidInt] (A : CategoryTheory.Pretriangulated.Triangle.{u1, u2} C _inst_1 _inst_2) (B : CategoryTheory.Pretriangulated.Triangle.{u1, u2} C _inst_1 _inst_2) (iso₁ : CategoryTheory.Iso.{u1, u2} C _inst_1 (CategoryTheory.Pretriangulated.Triangle.obj₁.{u1, u2} C _inst_1 _inst_2 A) (CategoryTheory.Pretriangulated.Triangle.obj₁.{u1, u2} C _inst_1 _inst_2 B)) (iso₂ : CategoryTheory.Iso.{u1, u2} C _inst_1 (CategoryTheory.Pretriangulated.Triangle.obj₂.{u1, u2} C _inst_1 _inst_2 A) (CategoryTheory.Pretriangulated.Triangle.obj₂.{u1, u2} C _inst_1 _inst_2 B)) (iso₃ : CategoryTheory.Iso.{u1, u2} C _inst_1 (CategoryTheory.Pretriangulated.Triangle.obj₃.{u1, u2} C _inst_1 _inst_2 A) (CategoryTheory.Pretriangulated.Triangle.obj₃.{u1, u2} C _inst_1 _inst_2 B)), (Eq.{succ u1} (Quiver.Hom.{succ u1, u2} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1)) (CategoryTheory.Pretriangulated.Triangle.obj₁.{u1, u2} C _inst_1 _inst_2 A) (CategoryTheory.Pretriangulated.Triangle.obj₂.{u1, u2} C _inst_1 _inst_2 B)) (CategoryTheory.CategoryStruct.comp.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1) (CategoryTheory.Pretriangulated.Triangle.obj₁.{u1, u2} C _inst_1 _inst_2 A) (CategoryTheory.Pretriangulated.Triangle.obj₂.{u1, u2} C _inst_1 _inst_2 A) (CategoryTheory.Pretriangulated.Triangle.obj₂.{u1, u2} C _inst_1 _inst_2 B) (CategoryTheory.Pretriangulated.Triangle.mor₁.{u1, u2} C _inst_1 _inst_2 A) (CategoryTheory.Iso.hom.{u1, u2} C _inst_1 (CategoryTheory.Pretriangulated.Triangle.obj₂.{u1, u2} C _inst_1 _inst_2 A) (CategoryTheory.Pretriangulated.Triangle.obj₂.{u1, u2} C _inst_1 _inst_2 B) iso₂)) (CategoryTheory.CategoryStruct.comp.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1) (CategoryTheory.Pretriangulated.Triangle.obj₁.{u1, u2} C _inst_1 _inst_2 A) (CategoryTheory.Pretriangulated.Triangle.obj₁.{u1, u2} C _inst_1 _inst_2 B) (CategoryTheory.Pretriangulated.Triangle.obj₂.{u1, u2} C _inst_1 _inst_2 B) (CategoryTheory.Iso.hom.{u1, u2} C _inst_1 (CategoryTheory.Pretriangulated.Triangle.obj₁.{u1, u2} C _inst_1 _inst_2 A) (CategoryTheory.Pretriangulated.Triangle.obj₁.{u1, u2} C _inst_1 _inst_2 B) iso₁) (CategoryTheory.Pretriangulated.Triangle.mor₁.{u1, u2} C _inst_1 _inst_2 B))) -> (Eq.{succ u1} (Quiver.Hom.{succ u1, u2} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1)) (CategoryTheory.Pretriangulated.Triangle.obj₂.{u1, u2} C _inst_1 _inst_2 A) (CategoryTheory.Pretriangulated.Triangle.obj₃.{u1, u2} C _inst_1 _inst_2 B)) (CategoryTheory.CategoryStruct.comp.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1) (CategoryTheory.Pretriangulated.Triangle.obj₂.{u1, u2} C _inst_1 _inst_2 A) (CategoryTheory.Pretriangulated.Triangle.obj₃.{u1, u2} C _inst_1 _inst_2 A) (CategoryTheory.Pretriangulated.Triangle.obj₃.{u1, u2} C _inst_1 _inst_2 B) (CategoryTheory.Pretriangulated.Triangle.mor₂.{u1, u2} C _inst_1 _inst_2 A) (CategoryTheory.Iso.hom.{u1, u2} C _inst_1 (CategoryTheory.Pretriangulated.Triangle.obj₃.{u1, u2} C _inst_1 _inst_2 A) (CategoryTheory.Pretriangulated.Triangle.obj₃.{u1, u2} C _inst_1 _inst_2 B) iso₃)) (CategoryTheory.CategoryStruct.comp.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1) (CategoryTheory.Pretriangulated.Triangle.obj₂.{u1, u2} C _inst_1 _inst_2 A) (CategoryTheory.Pretriangulated.Triangle.obj₂.{u1, u2} C _inst_1 _inst_2 B) (CategoryTheory.Pretriangulated.Triangle.obj₃.{u1, u2} C _inst_1 _inst_2 B) (CategoryTheory.Iso.hom.{u1, u2} C _inst_1 (CategoryTheory.Pretriangulated.Triangle.obj₂.{u1, u2} C _inst_1 _inst_2 A) (CategoryTheory.Pretriangulated.Triangle.obj₂.{u1, u2} C _inst_1 _inst_2 B) iso₂) (CategoryTheory.Pretriangulated.Triangle.mor₂.{u1, u2} C _inst_1 _inst_2 B))) -> (Eq.{succ u1} (Quiver.Hom.{succ u1, u2} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1)) (CategoryTheory.Pretriangulated.Triangle.obj₃.{u1, u2} C _inst_1 _inst_2 A) (Prefunctor.obj.{succ u1, succ u1, u2, u2} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1)) C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1)) (CategoryTheory.Functor.toPrefunctor.{u1, u1, u2, u2} C _inst_1 C _inst_1 (CategoryTheory.shiftFunctor.{u1, u2, 0} C Int _inst_1 Int.instAddMonoidInt _inst_2 (OfNat.ofNat.{0} Int 1 (instOfNatInt 1)))) (CategoryTheory.Pretriangulated.Triangle.obj₁.{u1, u2} C _inst_1 _inst_2 B))) (CategoryTheory.CategoryStruct.comp.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1) (CategoryTheory.Pretriangulated.Triangle.obj₃.{u1, u2} C _inst_1 _inst_2 A) (Prefunctor.obj.{succ u1, succ u1, u2, u2} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1)) C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1)) (CategoryTheory.Functor.toPrefunctor.{u1, u1, u2, u2} C _inst_1 C _inst_1 (CategoryTheory.shiftFunctor.{u1, u2, 0} C Int _inst_1 Int.instAddMonoidInt _inst_2 (OfNat.ofNat.{0} Int 1 (instOfNatInt 1)))) (CategoryTheory.Pretriangulated.Triangle.obj₁.{u1, u2} C _inst_1 _inst_2 A)) (Prefunctor.obj.{succ u1, succ u1, u2, u2} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1)) C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1)) (CategoryTheory.Functor.toPrefunctor.{u1, u1, u2, u2} C _inst_1 C _inst_1 (CategoryTheory.shiftFunctor.{u1, u2, 0} C Int _inst_1 Int.instAddMonoidInt _inst_2 (OfNat.ofNat.{0} Int 1 (instOfNatInt 1)))) (CategoryTheory.Pretriangulated.Triangle.obj₁.{u1, u2} C _inst_1 _inst_2 B)) (CategoryTheory.Pretriangulated.Triangle.mor₃.{u1, u2} C _inst_1 _inst_2 A) (Prefunctor.map.{succ u1, succ u1, u2, u2} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1)) C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1)) (CategoryTheory.Functor.toPrefunctor.{u1, u1, u2, u2} C _inst_1 C _inst_1 (CategoryTheory.shiftFunctor.{u1, u2, 0} C Int _inst_1 Int.instAddMonoidInt _inst_2 (OfNat.ofNat.{0} Int 1 (instOfNatInt 1)))) (CategoryTheory.Pretriangulated.Triangle.obj₁.{u1, u2} C _inst_1 _inst_2 A) (CategoryTheory.Pretriangulated.Triangle.obj₁.{u1, u2} C _inst_1 _inst_2 B) (CategoryTheory.Iso.hom.{u1, u2} C _inst_1 (CategoryTheory.Pretriangulated.Triangle.obj₁.{u1, u2} C _inst_1 _inst_2 A) (CategoryTheory.Pretriangulated.Triangle.obj₁.{u1, u2} C _inst_1 _inst_2 B) iso₁))) (CategoryTheory.CategoryStruct.comp.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1) (CategoryTheory.Pretriangulated.Triangle.obj₃.{u1, u2} C _inst_1 _inst_2 A) (CategoryTheory.Pretriangulated.Triangle.obj₃.{u1, u2} C _inst_1 _inst_2 B) (Prefunctor.obj.{succ u1, succ u1, u2, u2} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1)) C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1)) (CategoryTheory.Functor.toPrefunctor.{u1, u1, u2, u2} C _inst_1 C _inst_1 (CategoryTheory.shiftFunctor.{u1, u2, 0} C Int _inst_1 Int.instAddMonoidInt _inst_2 (OfNat.ofNat.{0} Int 1 (instOfNatInt 1)))) (CategoryTheory.Pretriangulated.Triangle.obj₁.{u1, u2} C _inst_1 _inst_2 B)) (CategoryTheory.Iso.hom.{u1, u2} C _inst_1 (CategoryTheory.Pretriangulated.Triangle.obj₃.{u1, u2} C _inst_1 _inst_2 A) (CategoryTheory.Pretriangulated.Triangle.obj₃.{u1, u2} C _inst_1 _inst_2 B) iso₃) (CategoryTheory.Pretriangulated.Triangle.mor₃.{u1, u2} C _inst_1 _inst_2 B))) -> (CategoryTheory.Iso.{u1, max u2 u1} (CategoryTheory.Pretriangulated.Triangle.{u1, u2} C _inst_1 _inst_2) (CategoryTheory.Pretriangulated.triangleCategory.{u1, u2} C _inst_1 _inst_2) A B)
+Case conversion may be inaccurate. Consider using '#align category_theory.pretriangulated.triangle.iso_mk CategoryTheory.Pretriangulated.Triangle.isoMkₓ'. -/
/-- a constructor for isomorphisms of triangles -/
@[simps]
def Triangle.isoMk (A B : Triangle C) (iso₁ : A.obj₁ ≅ B.obj₁) (iso₂ : A.obj₂ ≅ B.obj₂)
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: Luke Kershaw
! This file was ported from Lean 3 source module category_theory.triangulated.basic
-! 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
/-!
# Triangles
@@ -153,5 +153,39 @@ instance triangleCategory : Category (Triangle C)
comp A B C f g := f.comp g
#align category_theory.pretriangulated.triangle_category CategoryTheory.Pretriangulated.triangleCategory
+/-- a constructor for morphisms of triangles -/
+@[simps]
+def Triangle.homMk (A B : Triangle C) (hom₁ : A.obj₁ ⟶ B.obj₁) (hom₂ : A.obj₂ ⟶ B.obj₂)
+ (hom₃ : A.obj₃ ⟶ B.obj₃) (comm₁ : A.mor₁ ≫ hom₂ = hom₁ ≫ B.mor₁)
+ (comm₂ : A.mor₂ ≫ hom₃ = hom₂ ≫ B.mor₂) (comm₃ : A.mor₃ ≫ hom₁⟦1⟧' = hom₃ ≫ B.mor₃) : A ⟶ B :=
+ { hom₁
+ hom₂
+ hom₃
+ comm₁' := comm₁
+ comm₂' := comm₂
+ comm₃' := comm₃ }
+#align category_theory.pretriangulated.triangle.hom_mk CategoryTheory.Pretriangulated.Triangle.homMk
+
+/-- a constructor for isomorphisms of triangles -/
+@[simps]
+def Triangle.isoMk (A B : Triangle C) (iso₁ : A.obj₁ ≅ B.obj₁) (iso₂ : A.obj₂ ≅ B.obj₂)
+ (iso₃ : A.obj₃ ≅ B.obj₃) (comm₁ : A.mor₁ ≫ iso₂.Hom = iso₁.Hom ≫ B.mor₁)
+ (comm₂ : A.mor₂ ≫ iso₃.Hom = iso₂.Hom ≫ B.mor₂)
+ (comm₃ : A.mor₃ ≫ iso₁.Hom⟦1⟧' = iso₃.Hom ≫ B.mor₃) : A ≅ B
+ where
+ Hom := Triangle.homMk _ _ iso₁.Hom iso₂.Hom iso₃.Hom comm₁ comm₂ comm₃
+ inv :=
+ Triangle.homMk _ _ iso₁.inv iso₂.inv iso₃.inv
+ (by
+ simp only [← cancel_mono iso₂.hom, assoc, iso.inv_hom_id, comp_id, comm₁,
+ iso.inv_hom_id_assoc])
+ (by
+ simp only [← cancel_mono iso₃.hom, assoc, iso.inv_hom_id, comp_id, comm₂,
+ iso.inv_hom_id_assoc])
+ (by
+ simp only [← cancel_mono (iso₁.hom⟦(1 : ℤ)⟧'), assoc, ← functor.map_comp, iso.inv_hom_id,
+ CategoryTheory.Functor.map_id, comp_id, comm₃, iso.inv_hom_id_assoc])
+#align category_theory.pretriangulated.triangle.iso_mk CategoryTheory.Pretriangulated.Triangle.isoMk
+
end CategoryTheory.Pretriangulated
mathlib commit https://github.com/leanprover-community/mathlib/commit/bd9851ca476957ea4549eb19b40e7b5ade9428cc
In this PR, it is shown that in order to show that a pretriangulated category is triangulated category, i.e. in order to check the octahedron axiom, it is possible to replace a given diagram by an isomorphic diagram. This shall be used in #9550 in order to show that the homotopy category of cochain complexes in an additive category is triangulated.
@@ -331,4 +331,36 @@ lemma productTriangle.zero₃₁ [HasZeroMorphisms C]
end
+namespace Triangle
+
+/-- The first projection `Triangle C ⥤ C`. -/
+@[simps]
+def π₁ : Triangle C ⥤ C where
+ obj T := T.obj₁
+ map f := f.hom₁
+
+/-- The second projection `Triangle C ⥤ C`. -/
+@[simps]
+def π₂ : Triangle C ⥤ C where
+ obj T := T.obj₂
+ map f := f.hom₂
+
+/-- The third projection `Triangle C ⥤ C`. -/
+@[simps]
+def π₃ : Triangle C ⥤ C where
+ obj T := T.obj₃
+ map f := f.hom₃
+
+section
+
+variable {A B : Triangle C} (φ : A ⟶ B) [IsIso φ]
+
+instance : IsIso φ.hom₁ := (inferInstance : IsIso (π₁.map φ))
+instance : IsIso φ.hom₂ := (inferInstance : IsIso (π₂.map φ))
+instance : IsIso φ.hom₃ := (inferInstance : IsIso (π₃.map φ))
+
+end
+
+end Triangle
+
end CategoryTheory.Pretriangulated
This PR adds various small prerequisites for the construction of the triangulated structure on the homotopy category of cochain complexes.
@@ -162,6 +162,23 @@ lemma Triangle.hom_ext {A B : Triangle C} (f g : A ⟶ B)
(h₁ : f.hom₁ = g.hom₁) (h₂ : f.hom₂ = g.hom₂) (h₃ : f.hom₃ = g.hom₃) : f = g :=
TriangleMorphism.ext _ _ h₁ h₂ h₃
+@[simp]
+lemma id_hom₁ (A : Triangle C) : TriangleMorphism.hom₁ (𝟙 A) = 𝟙 _ := rfl
+@[simp]
+lemma id_hom₂ (A : Triangle C) : TriangleMorphism.hom₂ (𝟙 A) = 𝟙 _ := rfl
+@[simp]
+lemma id_hom₃ (A : Triangle C) : TriangleMorphism.hom₃ (𝟙 A) = 𝟙 _ := rfl
+
+@[simp, reassoc]
+lemma comp_hom₁ {X Y Z : Triangle C} (f : X ⟶ Y) (g : Y ⟶ Z) :
+ (f ≫ g).hom₁ = f.hom₁ ≫ g.hom₁ := rfl
+@[simp, reassoc]
+lemma comp_hom₂ {X Y Z : Triangle C} (f : X ⟶ Y) (g : Y ⟶ Z) :
+ (f ≫ g).hom₂ = f.hom₂ ≫ g.hom₂ := rfl
+@[simp, reassoc]
+lemma comp_hom₃ {X Y Z : Triangle C} (f : X ⟶ Y) (g : Y ⟶ Z) :
+ (f ≫ g).hom₃ = f.hom₃ ≫ g.hom₃ := rfl
+
@[simps]
def Triangle.homMk (A B : Triangle C)
(hom₁ : A.obj₁ ⟶ B.obj₁) (hom₂ : A.obj₂ ⟶ B.obj₂) (hom₃ : A.obj₃ ⟶ B.obj₃)
@@ -200,6 +217,26 @@ lemma Triangle.isIso_of_isIsos {A B : Triangle C} (f : A ⟶ B)
(by simp) (by simp) (by simp)
exact (inferInstance : IsIso e.hom)
+@[reassoc (attr := simp)]
+lemma _root_.CategoryTheory.Iso.hom_inv_id_triangle_hom₁ {A B : Triangle C} (e : A ≅ B) :
+ e.hom.hom₁ ≫ e.inv.hom₁ = 𝟙 _ := by rw [← comp_hom₁, e.hom_inv_id, id_hom₁]
+@[reassoc (attr := simp)]
+lemma _root_.CategoryTheory.Iso.hom_inv_id_triangle_hom₂ {A B : Triangle C} (e : A ≅ B) :
+ e.hom.hom₂ ≫ e.inv.hom₂ = 𝟙 _ := by rw [← comp_hom₂, e.hom_inv_id, id_hom₂]
+@[reassoc (attr := simp)]
+lemma _root_.CategoryTheory.Iso.hom_inv_id_triangle_hom₃ {A B : Triangle C} (e : A ≅ B) :
+ e.hom.hom₃ ≫ e.inv.hom₃ = 𝟙 _ := by rw [← comp_hom₃, e.hom_inv_id, id_hom₃]
+
+@[reassoc (attr := simp)]
+lemma _root_.CategoryTheory.Iso.inv_hom_id_triangle_hom₁ {A B : Triangle C} (e : A ≅ B) :
+ e.inv.hom₁ ≫ e.hom.hom₁ = 𝟙 _ := by rw [← comp_hom₁, e.inv_hom_id, id_hom₁]
+@[reassoc (attr := simp)]
+lemma _root_.CategoryTheory.Iso.inv_hom_id_triangle_hom₂ {A B : Triangle C} (e : A ≅ B) :
+ e.inv.hom₂ ≫ e.hom.hom₂ = 𝟙 _ := by rw [← comp_hom₂, e.inv_hom_id, id_hom₂]
+@[reassoc (attr := simp)]
+lemma _root_.CategoryTheory.Iso.inv_hom_id_triangle_hom₃ {A B : Triangle C} (e : A ≅ B) :
+ e.inv.hom₃ ≫ e.hom.hom₃ = 𝟙 _ := by rw [← comp_hom₃, e.inv_hom_id, id_hom₃]
+
lemma Triangle.eqToHom_hom₁ {A B : Triangle C} (h : A = B) :
(eqToHom h).hom₁ = eqToHom (by subst h; rfl) := by subst h; rfl
lemma Triangle.eqToHom_hom₂ {A B : Triangle C} (h : A = B) :
@@ -3,7 +3,8 @@ Copyright (c) 2021 Luke Kershaw. All rights reserved.
Released under Apache 2.0 license as described in the file LICENSE.
Authors: Luke Kershaw
-/
-import Mathlib.Data.Int.Basic
+import Mathlib.CategoryTheory.Adjunction.Limits
+import Mathlib.CategoryTheory.Limits.Preserves.Shapes.Products
import Mathlib.CategoryTheory.Limits.Shapes.Biproducts
import Mathlib.CategoryTheory.Shift.Basic
@@ -193,6 +194,12 @@ def Triangle.isoMk (A B : Triangle C)
Functor.map_id, Category.comp_id])
#align category_theory.pretriangulated.triangle.iso_mk CategoryTheory.Pretriangulated.Triangle.isoMk
+lemma Triangle.isIso_of_isIsos {A B : Triangle C} (f : A ⟶ B)
+ (h₁ : IsIso f.hom₁) (h₂ : IsIso f.hom₂) (h₃ : IsIso f.hom₃) : IsIso f := by
+ let e := Triangle.isoMk A B (asIso f.hom₁) (asIso f.hom₂) (asIso f.hom₃)
+ (by simp) (by simp) (by simp)
+ exact (inferInstance : IsIso e.hom)
+
lemma Triangle.eqToHom_hom₁ {A B : Triangle C} (h : A = B) :
(eqToHom h).hom₁ = eqToHom (by subst h; rfl) := by subst h; rfl
lemma Triangle.eqToHom_hom₂ {A B : Triangle C} (h : A = B) :
@@ -221,4 +228,70 @@ def binaryProductTriangleIsoBinaryBiproductTriangle
Triangle.isoMk _ _ (Iso.refl _) (biprod.isoProd X₁ X₂).symm (Iso.refl _)
(by aesop_cat) (by aesop_cat) (by aesop_cat)
+section
+
+variable {J : Type*} (T : J → Triangle C)
+ [HasProduct (fun j => (T j).obj₁)] [HasProduct (fun j => (T j).obj₂)]
+ [HasProduct (fun j => (T j).obj₃)] [HasProduct (fun j => (T j).obj₁⟦(1 : ℤ)⟧)]
+
+/-- The product of a family of triangles. -/
+@[simps!]
+def productTriangle : Triangle C :=
+ Triangle.mk (Pi.map (fun j => (T j).mor₁))
+ (Pi.map (fun j => (T j).mor₂))
+ (Pi.map (fun j => (T j).mor₃) ≫ inv (piComparison _ _))
+
+/-- A projection from the product of a family of triangles. -/
+@[simps]
+def productTriangle.π (j : J) :
+ productTriangle T ⟶ T j where
+ hom₁ := Pi.π _ j
+ hom₂ := Pi.π _ j
+ hom₃ := Pi.π _ j
+ comm₃ := by
+ dsimp
+ rw [← piComparison_comp_π, assoc, IsIso.inv_hom_id_assoc]
+ simp only [limMap_π, Discrete.natTrans_app]
+
+/-- The fan given by `productTriangle T`. -/
+@[simp]
+def productTriangle.fan : Fan T := Fan.mk (productTriangle T) (productTriangle.π T)
+
+/-- A family of morphisms `T' ⟶ T j` lifts to a morphism `T' ⟶ productTriangle T`. -/
+@[simps]
+def productTriangle.lift {T' : Triangle C} (φ : ∀ j, T' ⟶ T j) :
+ T' ⟶ productTriangle T where
+ hom₁ := Pi.lift (fun j => (φ j).hom₁)
+ hom₂ := Pi.lift (fun j => (φ j).hom₂)
+ hom₃ := Pi.lift (fun j => (φ j).hom₃)
+ comm₃ := by
+ dsimp
+ rw [← cancel_mono (piComparison _ _), assoc, assoc, assoc, IsIso.inv_hom_id, comp_id]
+ aesop_cat
+
+/-- The triangle `productTriangle T` satisfies the universal property of the categorical
+product of the triangles `T`. -/
+def productTriangle.isLimitFan : IsLimit (productTriangle.fan T) :=
+ mkFanLimit _ (fun s => productTriangle.lift T s.proj) (fun s j => by aesop_cat) (by
+ intro s m hm
+ ext1
+ all_goals
+ exact Pi.hom_ext _ _ (fun j => (by simp [← hm])))
+
+lemma productTriangle.zero₃₁ [HasZeroMorphisms C]
+ (h : ∀ j, (T j).mor₃ ≫ (T j).mor₁⟦(1 : ℤ)⟧' = 0) :
+ (productTriangle T).mor₃ ≫ (productTriangle T).mor₁⟦1⟧' = 0 := by
+ have : HasProduct (fun j => (T j).obj₂⟦(1 : ℤ)⟧) :=
+ ⟨_, isLimitFanMkObjOfIsLimit (shiftFunctor C (1 : ℤ)) _ _
+ (productIsProduct (fun j => (T j).obj₂))⟩
+ dsimp
+ change _ ≫ (Pi.lift (fun j => Pi.π _ j ≫ (T j).mor₁))⟦(1 : ℤ)⟧' = 0
+ rw [assoc, ← cancel_mono (piComparison _ _), zero_comp, assoc, assoc]
+ ext j
+ simp only [map_lift_piComparison, assoc, limit.lift_π, Fan.mk_π_app, zero_comp,
+ Functor.map_comp, ← piComparison_comp_π_assoc, IsIso.inv_hom_id_assoc,
+ limMap_π_assoc, Discrete.natTrans_app, h j, comp_zero]
+
+end
+
end CategoryTheory.Pretriangulated
@@ -4,6 +4,7 @@ Released under Apache 2.0 license as described in the file LICENSE.
Authors: Luke Kershaw
-/
import Mathlib.Data.Int.Basic
+import Mathlib.CategoryTheory.Limits.Shapes.Biproducts
import Mathlib.CategoryTheory.Shift.Basic
#align_import category_theory.triangulated.basic from "leanprover-community/mathlib"@"6876fa15e3158ff3e4a4e2af1fb6e1945c6e8803"
@@ -199,4 +200,25 @@ lemma Triangle.eqToHom_hom₂ {A B : Triangle C} (h : A = B) :
lemma Triangle.eqToHom_hom₃ {A B : Triangle C} (h : A = B) :
(eqToHom h).hom₃ = eqToHom (by subst h; rfl) := by subst h; rfl
+/-- The obvious triangle `X₁ ⟶ X₁ ⊞ X₂ ⟶ X₂ ⟶ X₁⟦1⟧`. -/
+@[simps!]
+def binaryBiproductTriangle (X₁ X₂ : C) [HasZeroMorphisms C] [HasBinaryBiproduct X₁ X₂] :
+ Triangle C :=
+ Triangle.mk biprod.inl (Limits.biprod.snd : X₁ ⊞ X₂ ⟶ _) 0
+
+/-- The obvious triangle `X₁ ⟶ X₁ ⨯ X₂ ⟶ X₂ ⟶ X₁⟦1⟧`. -/
+@[simps!]
+def binaryProductTriangle (X₁ X₂ : C) [HasZeroMorphisms C] [HasBinaryProduct X₁ X₂] :
+ Triangle C :=
+ Triangle.mk ((Limits.prod.lift (𝟙 X₁) 0)) (Limits.prod.snd : X₁ ⨯ X₂ ⟶ _) 0
+
+/-- The canonical isomorphism of triangles
+`binaryProductTriangle X₁ X₂ ≅ binaryBiproductTriangle X₁ X₂`. -/
+@[simps!]
+def binaryProductTriangleIsoBinaryBiproductTriangle
+ (X₁ X₂ : C) [HasZeroMorphisms C] [HasBinaryBiproduct X₁ X₂] :
+ binaryProductTriangle X₁ X₂ ≅ binaryBiproductTriangle X₁ X₂ :=
+ Triangle.isoMk _ _ (Iso.refl _) (biprod.isoProd X₁ X₂).symm (Iso.refl _)
+ (by aesop_cat) (by aesop_cat) (by aesop_cat)
+
end CategoryTheory.Pretriangulated
@@ -157,7 +157,7 @@ instance triangleCategory : Category (Triangle C)
@[ext]
lemma Triangle.hom_ext {A B : Triangle C} (f g : A ⟶ B)
- (h₁ : f.hom₁ = g.hom₁) (h₂ : f.hom₂ = g.hom₂) (h₃ : f.hom₃ = g.hom₃) : f = g :=
+ (h₁ : f.hom₁ = g.hom₁) (h₂ : f.hom₂ = g.hom₂) (h₃ : f.hom₃ = g.hom₃) : f = g :=
TriangleMorphism.ext _ _ h₁ h₂ h₃
@[simps]
If a preadditive category C
is equipped with a shift by the integers, then the category of triangles in C
is also equipped with a shift.
@@ -192,4 +192,11 @@ def Triangle.isoMk (A B : Triangle C)
Functor.map_id, Category.comp_id])
#align category_theory.pretriangulated.triangle.iso_mk CategoryTheory.Pretriangulated.Triangle.isoMk
+lemma Triangle.eqToHom_hom₁ {A B : Triangle C} (h : A = B) :
+ (eqToHom h).hom₁ = eqToHom (by subst h; rfl) := by subst h; rfl
+lemma Triangle.eqToHom_hom₂ {A B : Triangle C} (h : A = B) :
+ (eqToHom h).hom₂ = eqToHom (by subst h; rfl) := by subst h; rfl
+lemma Triangle.eqToHom_hom₃ {A B : Triangle C} (h : A = B) :
+ (eqToHom h).hom₃ = eqToHom (by subst h; rfl) := by subst h; rfl
+
end CategoryTheory.Pretriangulated
@@ -2,15 +2,12 @@
Copyright (c) 2021 Luke Kershaw. All rights reserved.
Released under Apache 2.0 license as described in the file LICENSE.
Authors: Luke Kershaw
-
-! This file was ported from Lean 3 source module category_theory.triangulated.basic
-! 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
+#align_import category_theory.triangulated.basic from "leanprover-community/mathlib"@"6876fa15e3158ff3e4a4e2af1fb6e1945c6e8803"
+
/-!
# Triangles
@@ -23,9 +23,7 @@ TODO: generalise this to n-angles in n-angulated categories as in https://arxiv.
noncomputable section
-open CategoryTheory
-
-open CategoryTheory.Limits
+open CategoryTheory Limits
universe v v₀ v₁ v₂ u u₀ u₁ u₂
@@ -168,8 +166,9 @@ lemma Triangle.hom_ext {A B : Triangle C} (f g : A ⟶ B)
@[simps]
def Triangle.homMk (A B : Triangle C)
(hom₁ : A.obj₁ ⟶ B.obj₁) (hom₂ : A.obj₂ ⟶ B.obj₂) (hom₃ : A.obj₃ ⟶ B.obj₃)
- (comm₁ : A.mor₁ ≫ hom₂ = hom₁ ≫ B.mor₁) (comm₂ : A.mor₂ ≫ hom₃ = hom₂ ≫ B.mor₂)
- (comm₃ : A.mor₃ ≫ hom₁⟦1⟧' = hom₃ ≫ B.mor₃) :
+ (comm₁ : A.mor₁ ≫ hom₂ = hom₁ ≫ B.mor₁ := by aesop_cat)
+ (comm₂ : A.mor₂ ≫ hom₃ = hom₂ ≫ B.mor₂ := by aesop_cat)
+ (comm₃ : A.mor₃ ≫ hom₁⟦1⟧' = hom₃ ≫ B.mor₃ := by aesop_cat) :
A ⟶ B where
hom₁ := hom₁
hom₂ := hom₂
@@ -182,9 +181,9 @@ def Triangle.homMk (A B : Triangle C)
@[simps]
def Triangle.isoMk (A B : Triangle C)
(iso₁ : A.obj₁ ≅ B.obj₁) (iso₂ : A.obj₂ ≅ B.obj₂) (iso₃ : A.obj₃ ≅ B.obj₃)
- (comm₁ : A.mor₁ ≫ iso₂.hom = iso₁.hom ≫ B.mor₁)
- (comm₂ : A.mor₂ ≫ iso₃.hom = iso₂.hom ≫ B.mor₂)
- (comm₃ : A.mor₃ ≫ iso₁.hom⟦1⟧' = iso₃.hom ≫ B.mor₃) : A ≅ B where
+ (comm₁ : A.mor₁ ≫ iso₂.hom = iso₁.hom ≫ B.mor₁ := by aesop_cat)
+ (comm₂ : A.mor₂ ≫ iso₃.hom = iso₂.hom ≫ B.mor₂ := by aesop_cat)
+ (comm₃ : A.mor₃ ≫ iso₁.hom⟦1⟧' = iso₃.hom ≫ B.mor₃ := by aesop_cat) : A ≅ B where
hom := Triangle.homMk _ _ iso₁.hom iso₂.hom iso₃.hom comm₁ comm₂ comm₃
inv := Triangle.homMk _ _ iso₁.inv iso₂.inv iso₃.inv
(by simp only [← cancel_mono iso₂.hom, assoc, Iso.inv_hom_id, comp_id,
Also actually corrects the SHA that was incorrectly corrected in #3346; the stupid example was in CategoryTheory.Triangulated.Rotate
and not CategoryTheory.Triangulated.Basic
.
Co-authored-by: Joël Riou <joel.riou@universite-paris-saclay.fr> Co-authored-by: Jeremy Tan Jie Rui <reddeloostw@gmail.com> Co-authored-by: Parcly Taxel <reddeloostw@gmail.com> Co-authored-by: Scott Morrison <scott@tqft.net> Co-authored-by: Chris Hughes <chrishughes24@gmail.com> Co-authored-by: Jon Eugster <eugster.jon@gmail.com> Co-authored-by: Jason Yuen <jason_yuen2007@hotmail.com> Co-authored-by: Yury G. Kudryashov <urkud@urkud.name> Co-authored-by: qawbecrdtey <qawbecrdtey@kaist.ac.kr> Co-authored-by: Jeremy Tan Jie Rui <e0191785@u.nus.edu> Co-authored-by: Sebastian Zivota <loewenheim@mailbox.org> Co-authored-by: Kyle Miller <kmill31415@gmail.com> Co-authored-by: Yaël Dillies <yael.dillies@gmail.com> Co-authored-by: Floris van Doorn <fpvdoorn@gmail.com>
@@ -4,7 +4,7 @@ Released under Apache 2.0 license as described in the file LICENSE.
Authors: Luke Kershaw
! This file was ported from Lean 3 source module category_theory.triangulated.basic
-! leanprover-community/mathlib commit 94d4e70e97c36c896cb70fb42821acfed040de60
+! leanprover-community/mathlib commit 6876fa15e3158ff3e4a4e2af1fb6e1945c6e8803
! Please do not edit these lines, except to modify the commit id
! if you have ported upstream changes.
-/
CategoryTheory.Triangulated.Basic
(#3346)
The stupid example (https://github.com/leanprover-community/mathlib/pull/18701) wasn't ported and thus doesn't need to be removed.
@@ -4,7 +4,7 @@ Released under Apache 2.0 license as described in the file LICENSE.
Authors: Luke Kershaw
! This file was ported from Lean 3 source module category_theory.triangulated.basic
-! leanprover-community/mathlib commit 6876fa15e3158ff3e4a4e2af1fb6e1945c6e8803
+! leanprover-community/mathlib commit 94d4e70e97c36c896cb70fb42821acfed040de60
! Please do not edit these lines, except to modify the commit id
! if you have ported upstream changes.
-/
Co-authored-by: Scott Morrison <scott.morrison@gmail.com> Co-authored-by: adamtopaz <github@adamtopaz.com> Co-authored-by: Moritz Firsching <firsching@google.com> Co-authored-by: ChrisHughes24 <chrishughes24@gmail.com> Co-authored-by: Parcly Taxel <reddeloostw@gmail.com>
All dependencies are ported!