category_theory.idempotents.karoubi
⟷
Mathlib.CategoryTheory.Idempotents.Karoubi
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)
(last sync)
mathlib commit https://github.com/leanprover-community/mathlib/commit/65a1391a0106c9204fe45bc73a039f056558cb83
@@ -185,9 +185,9 @@ def toKaroubi : C ⥤ Karoubi C
#align category_theory.idempotents.to_karoubi CategoryTheory.Idempotents.toKaroubi
-/
-instance : Full (toKaroubi C) where preimage X Y f := f.f
+instance : CategoryTheory.Functor.Full (toKaroubi C) where preimage X Y f := f.f
-instance : Faithful (toKaroubi C) where
+instance : CategoryTheory.Functor.Faithful (toKaroubi C) where
variable {C}
@@ -256,7 +256,7 @@ instance : IsIdempotentComplete (Karoubi C) :=
use⟨p.f, by rw [hp', p_comp p]⟩
constructor <;> simpa only [hom_ext] using hp'
-instance [IsIdempotentComplete C] : EssSurj (toKaroubi C) :=
+instance [IsIdempotentComplete C] : CategoryTheory.Functor.EssSurj (toKaroubi C) :=
⟨fun P => by
have h : is_idempotent_complete C := inferInstance
rcases is_idempotent_complete.idempotents_split P.X P.p P.idem with ⟨Y, i, e, ⟨h₁, h₂⟩⟩
@@ -268,8 +268,9 @@ instance [IsIdempotentComplete C] : EssSurj (toKaroubi C) :=
#print CategoryTheory.Idempotents.toKaroubiIsEquivalence /-
/-- If `C` is idempotent complete, the functor `to_karoubi : C ⥤ karoubi C` is an equivalence. -/
-def toKaroubiIsEquivalence [IsIdempotentComplete C] : IsEquivalence (toKaroubi C) :=
- Equivalence.ofFullyFaithfullyEssSurj (toKaroubi C)
+def toKaroubiIsEquivalence [IsIdempotentComplete C] :
+ CategoryTheory.Functor.IsEquivalence (toKaroubi C) :=
+ CategoryTheory.Functor.IsEquivalence.ofFullyFaithfullyEssSurj (toKaroubi C)
#align category_theory.idempotents.to_karoubi_is_equivalence CategoryTheory.Idempotents.toKaroubiIsEquivalence
-/
mathlib commit https://github.com/leanprover-community/mathlib/commit/65a1391a0106c9204fe45bc73a039f056558cb83
@@ -70,7 +70,7 @@ theorem ext {P Q : Karoubi C} (h_X : P.pt = Q.pt) (h_p : P.p ≫ eqToHom h_X = e
P = Q := by
cases P
cases Q
- dsimp at h_X h_p
+ dsimp at h_X h_p
subst h_X
simpa only [true_and_iff, eq_self_iff_true, id_comp, eq_to_hom_refl, heq_iff_eq, comp_id] using
h_p
@@ -250,7 +250,7 @@ instance : IsIdempotentComplete (Karoubi C) :=
refine' ⟨_⟩
intro P p hp
have hp' := hom_ext.mp hp
- simp only [comp_f] at hp'
+ simp only [comp_f] at hp'
use⟨P.X, p.f, hp'⟩
use⟨p.f, by rw [comp_p p, hp']⟩
use⟨p.f, by rw [hp', p_comp p]⟩
mathlib commit https://github.com/leanprover-community/mathlib/commit/65a1391a0106c9204fe45bc73a039f056558cb83
@@ -230,7 +230,7 @@ def inclusionHom [Preadditive C] (P Q : Karoubi C) : AddMonoidHom (P ⟶ Q) (P.p
@[simp]
theorem sum_hom [Preadditive C] {P Q : Karoubi C} {α : Type _} (s : Finset α) (f : α → (P ⟶ Q)) :
(∑ x in s, f x).f = ∑ x in s, (f x).f :=
- AddMonoidHom.map_sum (inclusionHom P Q) f s
+ map_sum (inclusionHom P Q) f s
#align category_theory.idempotents.karoubi.sum_hom CategoryTheory.Idempotents.Karoubi.sum_hom
-/
mathlib commit https://github.com/leanprover-community/mathlib/commit/ce64cd319bb6b3e82f31c2d38e79080d377be451
@@ -3,9 +3,9 @@ Copyright (c) 2022 Joël Riou. All rights reserved.
Released under Apache 2.0 license as described in the file LICENSE.
Authors: Joël Riou
-/
-import Mathbin.CategoryTheory.Idempotents.Basic
-import Mathbin.CategoryTheory.Preadditive.AdditiveFunctor
-import Mathbin.CategoryTheory.Equivalence
+import CategoryTheory.Idempotents.Basic
+import CategoryTheory.Preadditive.AdditiveFunctor
+import CategoryTheory.Equivalence
#align_import category_theory.idempotents.karoubi from "leanprover-community/mathlib"@"19cb3751e5e9b3d97adb51023949c50c13b5fdfd"
mathlib commit https://github.com/leanprover-community/mathlib/commit/32a7e535287f9c73f2e4d2aef306a39190f0b504
@@ -266,26 +266,26 @@ instance [IsIdempotentComplete C] : EssSurj (toKaroubi C) :=
{ Hom := ⟨i, by erw [id_comp, ← h₂, ← assoc, h₁, id_comp]⟩
inv := ⟨e, by erw [comp_id, ← h₂, assoc, h₁, comp_id]⟩ }⟩
-#print CategoryTheory.Idempotents.toKaroubi_isEquivalence /-
+#print CategoryTheory.Idempotents.toKaroubiIsEquivalence /-
/-- If `C` is idempotent complete, the functor `to_karoubi : C ⥤ karoubi C` is an equivalence. -/
-def toKaroubi_isEquivalence [IsIdempotentComplete C] : IsEquivalence (toKaroubi C) :=
+def toKaroubiIsEquivalence [IsIdempotentComplete C] : IsEquivalence (toKaroubi C) :=
Equivalence.ofFullyFaithfullyEssSurj (toKaroubi C)
-#align category_theory.idempotents.to_karoubi_is_equivalence CategoryTheory.Idempotents.toKaroubi_isEquivalence
+#align category_theory.idempotents.to_karoubi_is_equivalence CategoryTheory.Idempotents.toKaroubiIsEquivalence
-/
-#print CategoryTheory.Idempotents.toKaroubi_equivalence /-
+#print CategoryTheory.Idempotents.toKaroubiEquivalence /-
/-- The equivalence `C ≅ karoubi C` when `C` is idempotent complete. -/
-def toKaroubi_equivalence [IsIdempotentComplete C] : C ≌ Karoubi C :=
+def toKaroubiEquivalence [IsIdempotentComplete C] : C ≌ Karoubi C :=
haveI := to_karoubi_is_equivalence C
functor.as_equivalence (to_karoubi C)
-#align category_theory.idempotents.to_karoubi_equivalence CategoryTheory.Idempotents.toKaroubi_equivalence
+#align category_theory.idempotents.to_karoubi_equivalence CategoryTheory.Idempotents.toKaroubiEquivalence
-/
-#print CategoryTheory.Idempotents.toKaroubi_equivalence_functor_additive /-
-instance toKaroubi_equivalence_functor_additive [Preadditive C] [IsIdempotentComplete C] :
- (toKaroubi_equivalence C).Functor.Additive :=
+#print CategoryTheory.Idempotents.toKaroubiEquivalence_functor_additive /-
+instance toKaroubiEquivalence_functor_additive [Preadditive C] [IsIdempotentComplete C] :
+ (toKaroubiEquivalence C).Functor.Additive :=
(inferInstance : (toKaroubi C).Additive)
-#align category_theory.idempotents.to_karoubi_equivalence_functor_additive CategoryTheory.Idempotents.toKaroubi_equivalence_functor_additive
+#align category_theory.idempotents.to_karoubi_equivalence_functor_additive CategoryTheory.Idempotents.toKaroubiEquivalence_functor_additive
-/
namespace Karoubi
mathlib commit https://github.com/leanprover-community/mathlib/commit/63721b2c3eba6c325ecf8ae8cca27155a4f6306f
@@ -251,9 +251,9 @@ instance : IsIdempotentComplete (Karoubi C) :=
intro P p hp
have hp' := hom_ext.mp hp
simp only [comp_f] at hp'
- use ⟨P.X, p.f, hp'⟩
- use ⟨p.f, by rw [comp_p p, hp']⟩
- use ⟨p.f, by rw [hp', p_comp p]⟩
+ use⟨P.X, p.f, hp'⟩
+ use⟨p.f, by rw [comp_p p, hp']⟩
+ use⟨p.f, by rw [hp', p_comp p]⟩
constructor <;> simpa only [hom_ext] using hp'
instance [IsIdempotentComplete C] : EssSurj (toKaroubi C) :=
mathlib commit https://github.com/leanprover-community/mathlib/commit/8ea5598db6caeddde6cb734aa179cc2408dbd345
@@ -2,16 +2,13 @@
Copyright (c) 2022 Joël Riou. All rights reserved.
Released under Apache 2.0 license as described in the file LICENSE.
Authors: Joël Riou
-
-! This file was ported from Lean 3 source module category_theory.idempotents.karoubi
-! leanprover-community/mathlib commit 19cb3751e5e9b3d97adb51023949c50c13b5fdfd
-! Please do not edit these lines, except to modify the commit id
-! if you have ported upstream changes.
-/
import Mathbin.CategoryTheory.Idempotents.Basic
import Mathbin.CategoryTheory.Preadditive.AdditiveFunctor
import Mathbin.CategoryTheory.Equivalence
+#align_import category_theory.idempotents.karoubi from "leanprover-community/mathlib"@"19cb3751e5e9b3d97adb51023949c50c13b5fdfd"
+
/-!
# The Karoubi envelope of a category
mathlib commit https://github.com/leanprover-community/mathlib/commit/9fb8964792b4237dac6200193a0d533f1b3f7423
@@ -67,6 +67,7 @@ variable {C}
attribute [simp, reassoc] idem
+#print CategoryTheory.Idempotents.Karoubi.ext /-
@[ext]
theorem ext {P Q : Karoubi C} (h_X : P.pt = Q.pt) (h_p : P.p ≫ eqToHom h_X = eqToHom h_X ≫ Q.p) :
P = Q := by
@@ -77,6 +78,7 @@ theorem ext {P Q : Karoubi C} (h_X : P.pt = Q.pt) (h_p : P.p ≫ eqToHom h_X = e
simpa only [true_and_iff, eq_self_iff_true, id_comp, eq_to_hom_refl, heq_iff_eq, comp_id] using
h_p
#align category_theory.idempotents.karoubi.ext CategoryTheory.Idempotents.Karoubi.ext
+-/
#print CategoryTheory.Idempotents.Karoubi.Hom /-
/-- A morphism `P ⟶ Q` in the category `karoubi C` is a morphism in the underlying category
@@ -93,6 +95,7 @@ structure Hom (P Q : Karoubi C) where
instance [Preadditive C] (P Q : Karoubi C) : Inhabited (Hom P Q) :=
⟨⟨0, by rw [zero_comp, comp_zero]⟩⟩
+#print CategoryTheory.Idempotents.Karoubi.hom_ext_iff /-
@[simp]
theorem hom_ext_iff {P Q : Karoubi C} {f g : Hom P Q} : f = g ↔ f.f = g.f :=
by
@@ -100,22 +103,31 @@ theorem hom_ext_iff {P Q : Karoubi C} {f g : Hom P Q} : f = g ↔ f.f = g.f :=
· intro h; rw [h]
· ext
#align category_theory.idempotents.karoubi.hom_ext CategoryTheory.Idempotents.Karoubi.hom_ext_iff
+-/
+#print CategoryTheory.Idempotents.Karoubi.p_comp /-
@[simp, reassoc]
theorem p_comp {P Q : Karoubi C} (f : Hom P Q) : P.p ≫ f.f = f.f := by rw [f.comm, ← assoc, P.idem]
#align category_theory.idempotents.karoubi.p_comp CategoryTheory.Idempotents.Karoubi.p_comp
+-/
+#print CategoryTheory.Idempotents.Karoubi.comp_p /-
@[simp, reassoc]
theorem comp_p {P Q : Karoubi C} (f : Hom P Q) : f.f ≫ Q.p = f.f := by
rw [f.comm, assoc, assoc, Q.idem]
#align category_theory.idempotents.karoubi.comp_p CategoryTheory.Idempotents.Karoubi.comp_p
+-/
+#print CategoryTheory.Idempotents.Karoubi.p_comm /-
theorem p_comm {P Q : Karoubi C} (f : Hom P Q) : P.p ≫ f.f = f.f ≫ Q.p := by rw [p_comp, comp_p]
#align category_theory.idempotents.karoubi.p_comm CategoryTheory.Idempotents.Karoubi.p_comm
+-/
+#print CategoryTheory.Idempotents.Karoubi.comp_proof /-
theorem comp_proof {P Q R : Karoubi C} (g : Hom Q R) (f : Hom P Q) :
f.f ≫ g.f = P.p ≫ (f.f ≫ g.f) ≫ R.p := by rw [assoc, comp_p, ← assoc, p_comp]
#align category_theory.idempotents.karoubi.comp_proof CategoryTheory.Idempotents.Karoubi.comp_proof
+-/
/-- The category structure on the karoubi envelope of a category. -/
instance : Category (Karoubi C) where
@@ -123,23 +135,31 @@ instance : Category (Karoubi C) where
id P := ⟨P.p, by repeat' rw [P.idem]⟩
comp P Q R f g := ⟨f.f ≫ g.f, Karoubi.comp_proof g f⟩
+#print CategoryTheory.Idempotents.Karoubi.comp_f /-
@[simp]
theorem comp_f {P Q R : Karoubi C} (f : P ⟶ Q) (g : Q ⟶ R) : (f ≫ g).f = f.f ≫ g.f := by rfl
#align category_theory.idempotents.karoubi.comp_f CategoryTheory.Idempotents.Karoubi.comp_f
+-/
+#print CategoryTheory.Idempotents.Karoubi.id_eq /-
@[simp]
theorem id_eq {P : Karoubi C} : 𝟙 P = ⟨P.p, by repeat' rw [P.idem]⟩ := by rfl
#align category_theory.idempotents.karoubi.id_eq CategoryTheory.Idempotents.Karoubi.id_eq
+-/
+#print CategoryTheory.Idempotents.Karoubi.coe /-
/-- It is possible to coerce an object of `C` into an object of `karoubi C`.
See also the functor `to_karoubi`. -/
instance coe : CoeTC C (Karoubi C) :=
⟨fun X => ⟨X, 𝟙 X, by rw [comp_id]⟩⟩
#align category_theory.idempotents.karoubi.coe CategoryTheory.Idempotents.Karoubi.coe
+-/
+#print CategoryTheory.Idempotents.Karoubi.coe_X /-
@[simp]
theorem coe_X (X : C) : (X : Karoubi C).pt = X := by rfl
#align category_theory.idempotents.karoubi.coe_X CategoryTheory.Idempotents.Karoubi.coe_X
+-/
#print CategoryTheory.Idempotents.Karoubi.coe_p /-
@[simp]
@@ -147,14 +167,17 @@ theorem coe_p (X : C) : (X : Karoubi C).p = 𝟙 X := by rfl
#align category_theory.idempotents.karoubi.coe_p CategoryTheory.Idempotents.Karoubi.coe_p
-/
+#print CategoryTheory.Idempotents.Karoubi.eqToHom_f /-
@[simp]
theorem eqToHom_f {P Q : Karoubi C} (h : P = Q) :
Karoubi.Hom.f (eqToHom h) = P.p ≫ eqToHom (congr_arg Karoubi.x h) := by subst h;
simp only [eq_to_hom_refl, karoubi.id_eq, comp_id]
#align category_theory.idempotents.karoubi.eq_to_hom_f CategoryTheory.Idempotents.Karoubi.eqToHom_f
+-/
end Karoubi
+#print CategoryTheory.Idempotents.toKaroubi /-
/-- The obvious fully faithful functor `to_karoubi` sends an object `X : C` to the obvious
formal direct factor of `X` given by `𝟙 X`. -/
@[simps]
@@ -163,6 +186,7 @@ def toKaroubi : C ⥤ Karoubi C
obj X := ⟨X, 𝟙 X, by rw [comp_id]⟩
map X Y f := ⟨f, by simp only [comp_id, id_comp]⟩
#align category_theory.idempotents.to_karoubi CategoryTheory.Idempotents.toKaroubi
+-/
instance : Full (toKaroubi C) where preimage X Y f := f.f
@@ -188,10 +212,13 @@ instance [Preadditive C] {P Q : Karoubi C} : AddCommGroup (P ⟶ Q)
namespace Karoubi
+#print CategoryTheory.Idempotents.Karoubi.hom_eq_zero_iff /-
theorem hom_eq_zero_iff [Preadditive C] {P Q : Karoubi C} {f : Hom P Q} : f = 0 ↔ f.f = 0 :=
hom_ext_iff
#align category_theory.idempotents.karoubi.hom_eq_zero_iff CategoryTheory.Idempotents.Karoubi.hom_eq_zero_iff
+-/
+#print CategoryTheory.Idempotents.Karoubi.inclusionHom /-
/-- The map sending `f : P ⟶ Q` to `f.f : P.X ⟶ Q.X` is additive. -/
@[simps]
def inclusionHom [Preadditive C] (P Q : Karoubi C) : AddMonoidHom (P ⟶ Q) (P.pt ⟶ Q.pt)
@@ -200,12 +227,15 @@ def inclusionHom [Preadditive C] (P Q : Karoubi C) : AddMonoidHom (P ⟶ Q) (P.p
map_zero' := rfl
map_add' f g := rfl
#align category_theory.idempotents.karoubi.inclusion_hom CategoryTheory.Idempotents.Karoubi.inclusionHom
+-/
+#print CategoryTheory.Idempotents.Karoubi.sum_hom /-
@[simp]
theorem sum_hom [Preadditive C] {P Q : Karoubi C} {α : Type _} (s : Finset α) (f : α → (P ⟶ Q)) :
(∑ x in s, f x).f = ∑ x in s, (f x).f :=
AddMonoidHom.map_sum (inclusionHom P Q) f s
#align category_theory.idempotents.karoubi.sum_hom CategoryTheory.Idempotents.Karoubi.sum_hom
+-/
end Karoubi
@@ -239,69 +269,93 @@ instance [IsIdempotentComplete C] : EssSurj (toKaroubi C) :=
{ Hom := ⟨i, by erw [id_comp, ← h₂, ← assoc, h₁, id_comp]⟩
inv := ⟨e, by erw [comp_id, ← h₂, assoc, h₁, comp_id]⟩ }⟩
+#print CategoryTheory.Idempotents.toKaroubi_isEquivalence /-
/-- If `C` is idempotent complete, the functor `to_karoubi : C ⥤ karoubi C` is an equivalence. -/
def toKaroubi_isEquivalence [IsIdempotentComplete C] : IsEquivalence (toKaroubi C) :=
Equivalence.ofFullyFaithfullyEssSurj (toKaroubi C)
#align category_theory.idempotents.to_karoubi_is_equivalence CategoryTheory.Idempotents.toKaroubi_isEquivalence
+-/
+#print CategoryTheory.Idempotents.toKaroubi_equivalence /-
/-- The equivalence `C ≅ karoubi C` when `C` is idempotent complete. -/
def toKaroubi_equivalence [IsIdempotentComplete C] : C ≌ Karoubi C :=
haveI := to_karoubi_is_equivalence C
functor.as_equivalence (to_karoubi C)
#align category_theory.idempotents.to_karoubi_equivalence CategoryTheory.Idempotents.toKaroubi_equivalence
+-/
+#print CategoryTheory.Idempotents.toKaroubi_equivalence_functor_additive /-
instance toKaroubi_equivalence_functor_additive [Preadditive C] [IsIdempotentComplete C] :
(toKaroubi_equivalence C).Functor.Additive :=
(inferInstance : (toKaroubi C).Additive)
#align category_theory.idempotents.to_karoubi_equivalence_functor_additive CategoryTheory.Idempotents.toKaroubi_equivalence_functor_additive
+-/
namespace Karoubi
variable {C}
+#print CategoryTheory.Idempotents.Karoubi.decompId_i /-
/-- The split mono which appears in the factorisation `decomp_id P`. -/
@[simps]
def decompId_i (P : Karoubi C) : P ⟶ P.pt :=
⟨P.p, by erw [coe_p, comp_id, P.idem]⟩
#align category_theory.idempotents.karoubi.decomp_id_i CategoryTheory.Idempotents.Karoubi.decompId_i
+-/
+#print CategoryTheory.Idempotents.Karoubi.decompId_p /-
/-- The split epi which appears in the factorisation `decomp_id P`. -/
@[simps]
def decompId_p (P : Karoubi C) : (P.pt : Karoubi C) ⟶ P :=
⟨P.p, by erw [coe_p, id_comp, P.idem]⟩
#align category_theory.idempotents.karoubi.decomp_id_p CategoryTheory.Idempotents.Karoubi.decompId_p
+-/
+#print CategoryTheory.Idempotents.Karoubi.decompId /-
/-- The formal direct factor of `P.X` given by the idempotent `P.p` in the category `C`
is actually a direct factor in the category `karoubi C`. -/
theorem decompId (P : Karoubi C) : 𝟙 P = decompId_i P ≫ decompId_p P := by ext;
simp only [comp_f, id_eq, P.idem, decomp_id_i, decomp_id_p]
#align category_theory.idempotents.karoubi.decomp_id CategoryTheory.Idempotents.Karoubi.decompId
+-/
+#print CategoryTheory.Idempotents.Karoubi.decomp_p /-
theorem decomp_p (P : Karoubi C) : (toKaroubi C).map P.p = decompId_p P ≫ decompId_i P := by ext;
simp only [comp_f, decomp_id_p_f, decomp_id_i_f, P.idem, to_karoubi_map_f]
#align category_theory.idempotents.karoubi.decomp_p CategoryTheory.Idempotents.Karoubi.decomp_p
+-/
+#print CategoryTheory.Idempotents.Karoubi.decompId_i_toKaroubi /-
theorem decompId_i_toKaroubi (X : C) : decompId_i ((toKaroubi C).obj X) = 𝟙 _ := by ext; rfl
#align category_theory.idempotents.karoubi.decomp_id_i_to_karoubi CategoryTheory.Idempotents.Karoubi.decompId_i_toKaroubi
+-/
+#print CategoryTheory.Idempotents.Karoubi.decompId_p_toKaroubi /-
theorem decompId_p_toKaroubi (X : C) : decompId_p ((toKaroubi C).obj X) = 𝟙 _ := by ext; rfl
#align category_theory.idempotents.karoubi.decomp_id_p_to_karoubi CategoryTheory.Idempotents.Karoubi.decompId_p_toKaroubi
+-/
+#print CategoryTheory.Idempotents.Karoubi.decompId_i_naturality /-
theorem decompId_i_naturality {P Q : Karoubi C} (f : P ⟶ Q) :
f ≫ decompId_i _ = decompId_i _ ≫ ⟨f.f, by erw [comp_id, id_comp]⟩ := by ext;
simp only [comp_f, decomp_id_i_f, karoubi.comp_p, karoubi.p_comp]
#align category_theory.idempotents.karoubi.decomp_id_i_naturality CategoryTheory.Idempotents.Karoubi.decompId_i_naturality
+-/
+#print CategoryTheory.Idempotents.Karoubi.decompId_p_naturality /-
theorem decompId_p_naturality {P Q : Karoubi C} (f : P ⟶ Q) :
decompId_p P ≫ f =
(⟨f.f, by erw [comp_id, id_comp]⟩ : (P.pt : Karoubi C) ⟶ Q.pt) ≫ decompId_p Q :=
by ext; simp only [comp_f, decomp_id_p_f, karoubi.comp_p, karoubi.p_comp]
#align category_theory.idempotents.karoubi.decomp_id_p_naturality CategoryTheory.Idempotents.Karoubi.decompId_p_naturality
+-/
+#print CategoryTheory.Idempotents.Karoubi.zsmul_hom /-
@[simp]
theorem zsmul_hom [Preadditive C] {P Q : Karoubi C} (n : ℤ) (f : P ⟶ Q) : (n • f).f = n • f.f :=
map_zsmul (inclusionHom P Q) n f
#align category_theory.idempotents.karoubi.zsmul_hom CategoryTheory.Idempotents.Karoubi.zsmul_hom
+-/
end Karoubi
mathlib commit https://github.com/leanprover-community/mathlib/commit/cca40788df1b8755d5baf17ab2f27dacc2e17acb
@@ -72,7 +72,7 @@ theorem ext {P Q : Karoubi C} (h_X : P.pt = Q.pt) (h_p : P.p ≫ eqToHom h_X = e
P = Q := by
cases P
cases Q
- dsimp at h_X h_p
+ dsimp at h_X h_p
subst h_X
simpa only [true_and_iff, eq_self_iff_true, id_comp, eq_to_hom_refl, heq_iff_eq, comp_id] using
h_p
@@ -177,7 +177,7 @@ instance [Preadditive C] {P Q : Karoubi C} : AddCommGroup (P ⟶ Q)
⟨f.f + g.f, by
rw [add_comp, comp_add]
congr
- exacts[f.comm, g.comm]⟩
+ exacts [f.comm, g.comm]⟩
zero := ⟨0, by simp only [comp_zero, zero_comp]⟩
zero_add f := by ext; simp only [zero_add]
add_zero f := by ext; simp only [add_zero]
@@ -223,7 +223,7 @@ instance : IsIdempotentComplete (Karoubi C) :=
refine' ⟨_⟩
intro P p hp
have hp' := hom_ext.mp hp
- simp only [comp_f] at hp'
+ simp only [comp_f] at hp'
use ⟨P.X, p.f, hp'⟩
use ⟨p.f, by rw [comp_p p, hp']⟩
use ⟨p.f, by rw [hp', p_comp p]⟩
mathlib commit https://github.com/leanprover-community/mathlib/commit/917c3c072e487b3cccdbfeff17e75b40e45f66cb
@@ -38,7 +38,7 @@ open CategoryTheory.Preadditive
open CategoryTheory.Limits
-open BigOperators
+open scoped BigOperators
namespace CategoryTheory
mathlib commit https://github.com/leanprover-community/mathlib/commit/917c3c072e487b3cccdbfeff17e75b40e45f66cb
@@ -67,12 +67,6 @@ variable {C}
attribute [simp, reassoc] idem
-/- warning: category_theory.idempotents.karoubi.ext -> CategoryTheory.Idempotents.Karoubi.ext is a dubious translation:
-lean 3 declaration is
- forall {C : Type.{u1}} [_inst_1 : CategoryTheory.Category.{u2, u1} C] {P : CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1} {Q : CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1} (h_X : Eq.{succ u1} C (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 Q)), (Eq.{succ u2} (Quiver.Hom.{succ u2, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1)) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 Q)) (CategoryTheory.CategoryStruct.comp.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 Q) (CategoryTheory.Idempotents.Karoubi.p.{u1, u2} C _inst_1 P) (CategoryTheory.eqToHom.{u2, u1} C _inst_1 (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 Q) h_X)) (CategoryTheory.CategoryStruct.comp.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 Q) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 Q) (CategoryTheory.eqToHom.{u2, u1} C _inst_1 (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 Q) h_X) (CategoryTheory.Idempotents.Karoubi.p.{u1, u2} C _inst_1 Q))) -> (Eq.{max (succ u1) (succ u2)} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) P Q)
-but is expected to have type
- forall {C : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u1, u2} C] {P : CategoryTheory.Idempotents.Karoubi.{u2, u1} C _inst_1} {Q : CategoryTheory.Idempotents.Karoubi.{u2, u1} C _inst_1} (h_X : Eq.{succ u2} C (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 Q)), (Eq.{succ u1} (Quiver.Hom.{succ u1, u2} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1)) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 Q)) (CategoryTheory.CategoryStruct.comp.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 Q) (CategoryTheory.Idempotents.Karoubi.p.{u2, u1} C _inst_1 P) (CategoryTheory.eqToHom.{u1, u2} C _inst_1 (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 Q) h_X)) (CategoryTheory.CategoryStruct.comp.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 Q) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 Q) (CategoryTheory.eqToHom.{u1, u2} C _inst_1 (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 Q) h_X) (CategoryTheory.Idempotents.Karoubi.p.{u2, u1} C _inst_1 Q))) -> (Eq.{max (succ u2) (succ u1)} (CategoryTheory.Idempotents.Karoubi.{u2, u1} C _inst_1) P Q)
-Case conversion may be inaccurate. Consider using '#align category_theory.idempotents.karoubi.ext CategoryTheory.Idempotents.Karoubi.extₓ'. -/
@[ext]
theorem ext {P Q : Karoubi C} (h_X : P.pt = Q.pt) (h_p : P.p ≫ eqToHom h_X = eqToHom h_X ≫ Q.p) :
P = Q := by
@@ -99,12 +93,6 @@ structure Hom (P Q : Karoubi C) where
instance [Preadditive C] (P Q : Karoubi C) : Inhabited (Hom P Q) :=
⟨⟨0, by rw [zero_comp, comp_zero]⟩⟩
-/- warning: category_theory.idempotents.karoubi.hom_ext -> CategoryTheory.Idempotents.Karoubi.hom_ext_iff is a dubious translation:
-lean 3 declaration is
- forall {C : Type.{u1}} [_inst_1 : CategoryTheory.Category.{u2, u1} C] {P : CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1} {Q : CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1} {f : CategoryTheory.Idempotents.Karoubi.Hom.{u1, u2} C _inst_1 P Q} {g : CategoryTheory.Idempotents.Karoubi.Hom.{u1, u2} C _inst_1 P Q}, Iff (Eq.{succ u2} (CategoryTheory.Idempotents.Karoubi.Hom.{u1, u2} C _inst_1 P Q) f g) (Eq.{succ u2} (Quiver.Hom.{succ u2, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1)) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 Q)) (CategoryTheory.Idempotents.Karoubi.Hom.f.{u1, u2} C _inst_1 P Q f) (CategoryTheory.Idempotents.Karoubi.Hom.f.{u1, u2} C _inst_1 P Q g))
-but is expected to have type
- forall {C : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u1, u2} C] {P : CategoryTheory.Idempotents.Karoubi.{u2, u1} C _inst_1} {Q : CategoryTheory.Idempotents.Karoubi.{u2, u1} C _inst_1} {f : Quiver.Hom.{succ u1, max u2 u1} (CategoryTheory.Idempotents.Karoubi.{u2, u1} C _inst_1) (CategoryTheory.CategoryStruct.toQuiver.{u1, max u2 u1} (CategoryTheory.Idempotents.Karoubi.{u2, u1} C _inst_1) (CategoryTheory.Category.toCategoryStruct.{u1, max u2 u1} (CategoryTheory.Idempotents.Karoubi.{u2, u1} C _inst_1) (CategoryTheory.Idempotents.Karoubi.instCategoryKaroubi.{u2, u1} C _inst_1))) P Q} {g : Quiver.Hom.{succ u1, max u2 u1} (CategoryTheory.Idempotents.Karoubi.{u2, u1} C _inst_1) (CategoryTheory.CategoryStruct.toQuiver.{u1, max u2 u1} (CategoryTheory.Idempotents.Karoubi.{u2, u1} C _inst_1) (CategoryTheory.Category.toCategoryStruct.{u1, max u2 u1} (CategoryTheory.Idempotents.Karoubi.{u2, u1} C _inst_1) (CategoryTheory.Idempotents.Karoubi.instCategoryKaroubi.{u2, u1} C _inst_1))) P Q}, Iff (Eq.{succ u1} (Quiver.Hom.{succ u1, max u2 u1} (CategoryTheory.Idempotents.Karoubi.{u2, u1} C _inst_1) (CategoryTheory.CategoryStruct.toQuiver.{u1, max u2 u1} (CategoryTheory.Idempotents.Karoubi.{u2, u1} C _inst_1) (CategoryTheory.Category.toCategoryStruct.{u1, max u2 u1} (CategoryTheory.Idempotents.Karoubi.{u2, u1} C _inst_1) (CategoryTheory.Idempotents.Karoubi.instCategoryKaroubi.{u2, u1} C _inst_1))) P Q) f g) (Eq.{succ u1} (Quiver.Hom.{succ u1, u2} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1)) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 Q)) (CategoryTheory.Idempotents.Karoubi.Hom.f.{u2, u1} C _inst_1 P Q f) (CategoryTheory.Idempotents.Karoubi.Hom.f.{u2, u1} C _inst_1 P Q g))
-Case conversion may be inaccurate. Consider using '#align category_theory.idempotents.karoubi.hom_ext CategoryTheory.Idempotents.Karoubi.hom_ext_iffₓ'. -/
@[simp]
theorem hom_ext_iff {P Q : Karoubi C} {f g : Hom P Q} : f = g ↔ f.f = g.f :=
by
@@ -113,42 +101,18 @@ theorem hom_ext_iff {P Q : Karoubi C} {f g : Hom P Q} : f = g ↔ f.f = g.f :=
· ext
#align category_theory.idempotents.karoubi.hom_ext CategoryTheory.Idempotents.Karoubi.hom_ext_iff
-/- warning: category_theory.idempotents.karoubi.p_comp -> CategoryTheory.Idempotents.Karoubi.p_comp is a dubious translation:
-lean 3 declaration is
- forall {C : Type.{u1}} [_inst_1 : CategoryTheory.Category.{u2, u1} C] {P : CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1} {Q : CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1} (f : CategoryTheory.Idempotents.Karoubi.Hom.{u1, u2} C _inst_1 P Q), Eq.{succ u2} (Quiver.Hom.{succ u2, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1)) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 Q)) (CategoryTheory.CategoryStruct.comp.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 Q) (CategoryTheory.Idempotents.Karoubi.p.{u1, u2} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.Hom.f.{u1, u2} C _inst_1 P Q f)) (CategoryTheory.Idempotents.Karoubi.Hom.f.{u1, u2} C _inst_1 P Q f)
-but is expected to have type
- forall {C : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u1, u2} C] {P : CategoryTheory.Idempotents.Karoubi.{u2, u1} C _inst_1} {Q : CategoryTheory.Idempotents.Karoubi.{u2, u1} C _inst_1} (f : CategoryTheory.Idempotents.Karoubi.Hom.{u2, u1} C _inst_1 P Q), Eq.{succ u1} (Quiver.Hom.{succ u1, u2} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1)) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 Q)) (CategoryTheory.CategoryStruct.comp.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 Q) (CategoryTheory.Idempotents.Karoubi.p.{u2, u1} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.Hom.f.{u2, u1} C _inst_1 P Q f)) (CategoryTheory.Idempotents.Karoubi.Hom.f.{u2, u1} C _inst_1 P Q f)
-Case conversion may be inaccurate. Consider using '#align category_theory.idempotents.karoubi.p_comp CategoryTheory.Idempotents.Karoubi.p_compₓ'. -/
@[simp, reassoc]
theorem p_comp {P Q : Karoubi C} (f : Hom P Q) : P.p ≫ f.f = f.f := by rw [f.comm, ← assoc, P.idem]
#align category_theory.idempotents.karoubi.p_comp CategoryTheory.Idempotents.Karoubi.p_comp
-/- warning: category_theory.idempotents.karoubi.comp_p -> CategoryTheory.Idempotents.Karoubi.comp_p is a dubious translation:
-lean 3 declaration is
- forall {C : Type.{u1}} [_inst_1 : CategoryTheory.Category.{u2, u1} C] {P : CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1} {Q : CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1} (f : CategoryTheory.Idempotents.Karoubi.Hom.{u1, u2} C _inst_1 P Q), Eq.{succ u2} (Quiver.Hom.{succ u2, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1)) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 Q)) (CategoryTheory.CategoryStruct.comp.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 Q) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 Q) (CategoryTheory.Idempotents.Karoubi.Hom.f.{u1, u2} C _inst_1 P Q f) (CategoryTheory.Idempotents.Karoubi.p.{u1, u2} C _inst_1 Q)) (CategoryTheory.Idempotents.Karoubi.Hom.f.{u1, u2} C _inst_1 P Q f)
-but is expected to have type
- forall {C : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u1, u2} C] {P : CategoryTheory.Idempotents.Karoubi.{u2, u1} C _inst_1} {Q : CategoryTheory.Idempotents.Karoubi.{u2, u1} C _inst_1} (f : CategoryTheory.Idempotents.Karoubi.Hom.{u2, u1} C _inst_1 P Q), Eq.{succ u1} (Quiver.Hom.{succ u1, u2} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1)) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 Q)) (CategoryTheory.CategoryStruct.comp.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 Q) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 Q) (CategoryTheory.Idempotents.Karoubi.Hom.f.{u2, u1} C _inst_1 P Q f) (CategoryTheory.Idempotents.Karoubi.p.{u2, u1} C _inst_1 Q)) (CategoryTheory.Idempotents.Karoubi.Hom.f.{u2, u1} C _inst_1 P Q f)
-Case conversion may be inaccurate. Consider using '#align category_theory.idempotents.karoubi.comp_p CategoryTheory.Idempotents.Karoubi.comp_pₓ'. -/
@[simp, reassoc]
theorem comp_p {P Q : Karoubi C} (f : Hom P Q) : f.f ≫ Q.p = f.f := by
rw [f.comm, assoc, assoc, Q.idem]
#align category_theory.idempotents.karoubi.comp_p CategoryTheory.Idempotents.Karoubi.comp_p
-/- warning: category_theory.idempotents.karoubi.p_comm -> CategoryTheory.Idempotents.Karoubi.p_comm is a dubious translation:
-lean 3 declaration is
- forall {C : Type.{u1}} [_inst_1 : CategoryTheory.Category.{u2, u1} C] {P : CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1} {Q : CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1} (f : CategoryTheory.Idempotents.Karoubi.Hom.{u1, u2} C _inst_1 P Q), Eq.{succ u2} (Quiver.Hom.{succ u2, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1)) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 Q)) (CategoryTheory.CategoryStruct.comp.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 Q) (CategoryTheory.Idempotents.Karoubi.p.{u1, u2} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.Hom.f.{u1, u2} C _inst_1 P Q f)) (CategoryTheory.CategoryStruct.comp.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 Q) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 Q) (CategoryTheory.Idempotents.Karoubi.Hom.f.{u1, u2} C _inst_1 P Q f) (CategoryTheory.Idempotents.Karoubi.p.{u1, u2} C _inst_1 Q))
-but is expected to have type
- forall {C : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u1, u2} C] {P : CategoryTheory.Idempotents.Karoubi.{u2, u1} C _inst_1} {Q : CategoryTheory.Idempotents.Karoubi.{u2, u1} C _inst_1} (f : CategoryTheory.Idempotents.Karoubi.Hom.{u2, u1} C _inst_1 P Q), Eq.{succ u1} (Quiver.Hom.{succ u1, u2} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1)) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 Q)) (CategoryTheory.CategoryStruct.comp.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 Q) (CategoryTheory.Idempotents.Karoubi.p.{u2, u1} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.Hom.f.{u2, u1} C _inst_1 P Q f)) (CategoryTheory.CategoryStruct.comp.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 Q) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 Q) (CategoryTheory.Idempotents.Karoubi.Hom.f.{u2, u1} C _inst_1 P Q f) (CategoryTheory.Idempotents.Karoubi.p.{u2, u1} C _inst_1 Q))
-Case conversion may be inaccurate. Consider using '#align category_theory.idempotents.karoubi.p_comm CategoryTheory.Idempotents.Karoubi.p_commₓ'. -/
theorem p_comm {P Q : Karoubi C} (f : Hom P Q) : P.p ≫ f.f = f.f ≫ Q.p := by rw [p_comp, comp_p]
#align category_theory.idempotents.karoubi.p_comm CategoryTheory.Idempotents.Karoubi.p_comm
-/- warning: category_theory.idempotents.karoubi.comp_proof -> CategoryTheory.Idempotents.Karoubi.comp_proof is a dubious translation:
-lean 3 declaration is
- forall {C : Type.{u1}} [_inst_1 : CategoryTheory.Category.{u2, u1} C] {P : CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1} {Q : CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1} {R : CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1} (g : CategoryTheory.Idempotents.Karoubi.Hom.{u1, u2} C _inst_1 Q R) (f : CategoryTheory.Idempotents.Karoubi.Hom.{u1, u2} C _inst_1 P Q), Eq.{succ u2} (Quiver.Hom.{succ u2, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1)) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 R)) (CategoryTheory.CategoryStruct.comp.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 Q) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 R) (CategoryTheory.Idempotents.Karoubi.Hom.f.{u1, u2} C _inst_1 P Q f) (CategoryTheory.Idempotents.Karoubi.Hom.f.{u1, u2} C _inst_1 Q R g)) (CategoryTheory.CategoryStruct.comp.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 R) (CategoryTheory.Idempotents.Karoubi.p.{u1, u2} C _inst_1 P) (CategoryTheory.CategoryStruct.comp.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 R) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 R) (CategoryTheory.CategoryStruct.comp.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 Q) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 R) (CategoryTheory.Idempotents.Karoubi.Hom.f.{u1, u2} C _inst_1 P Q f) (CategoryTheory.Idempotents.Karoubi.Hom.f.{u1, u2} C _inst_1 Q R g)) (CategoryTheory.Idempotents.Karoubi.p.{u1, u2} C _inst_1 R)))
-but is expected to have type
- forall {C : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u1, u2} C] {P : CategoryTheory.Idempotents.Karoubi.{u2, u1} C _inst_1} {Q : CategoryTheory.Idempotents.Karoubi.{u2, u1} C _inst_1} {R : CategoryTheory.Idempotents.Karoubi.{u2, u1} C _inst_1} (g : CategoryTheory.Idempotents.Karoubi.Hom.{u2, u1} C _inst_1 Q R) (f : CategoryTheory.Idempotents.Karoubi.Hom.{u2, u1} C _inst_1 P Q), Eq.{succ u1} (Quiver.Hom.{succ u1, u2} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1)) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 R)) (CategoryTheory.CategoryStruct.comp.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 Q) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 R) (CategoryTheory.Idempotents.Karoubi.Hom.f.{u2, u1} C _inst_1 P Q f) (CategoryTheory.Idempotents.Karoubi.Hom.f.{u2, u1} C _inst_1 Q R g)) (CategoryTheory.CategoryStruct.comp.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 R) (CategoryTheory.Idempotents.Karoubi.p.{u2, u1} C _inst_1 P) (CategoryTheory.CategoryStruct.comp.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 R) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 R) (CategoryTheory.CategoryStruct.comp.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 Q) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 R) (CategoryTheory.Idempotents.Karoubi.Hom.f.{u2, u1} C _inst_1 P Q f) (CategoryTheory.Idempotents.Karoubi.Hom.f.{u2, u1} C _inst_1 Q R g)) (CategoryTheory.Idempotents.Karoubi.p.{u2, u1} C _inst_1 R)))
-Case conversion may be inaccurate. Consider using '#align category_theory.idempotents.karoubi.comp_proof CategoryTheory.Idempotents.Karoubi.comp_proofₓ'. -/
theorem comp_proof {P Q R : Karoubi C} (g : Hom Q R) (f : Hom P Q) :
f.f ≫ g.f = P.p ≫ (f.f ≫ g.f) ≫ R.p := by rw [assoc, comp_p, ← assoc, p_comp]
#align category_theory.idempotents.karoubi.comp_proof CategoryTheory.Idempotents.Karoubi.comp_proof
@@ -159,41 +123,20 @@ instance : Category (Karoubi C) where
id P := ⟨P.p, by repeat' rw [P.idem]⟩
comp P Q R f g := ⟨f.f ≫ g.f, Karoubi.comp_proof g f⟩
-/- warning: category_theory.idempotents.karoubi.comp_f -> CategoryTheory.Idempotents.Karoubi.comp_f is a dubious translation:
-lean 3 declaration is
- forall {C : Type.{u1}} [_inst_1 : CategoryTheory.Category.{u2, u1} C] {P : CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1} {Q : CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1} {R : CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1} (f : Quiver.Hom.{succ u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.CategoryStruct.toQuiver.{u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Category.toCategoryStruct.{u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.CategoryTheory.category.{u1, u2} C _inst_1))) P Q) (g : Quiver.Hom.{succ u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.CategoryStruct.toQuiver.{u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Category.toCategoryStruct.{u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.CategoryTheory.category.{u1, u2} C _inst_1))) Q R), Eq.{succ u2} (Quiver.Hom.{succ u2, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1)) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 R)) (CategoryTheory.Idempotents.Karoubi.Hom.f.{u1, u2} C _inst_1 P R (CategoryTheory.CategoryStruct.comp.{u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Category.toCategoryStruct.{u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.CategoryTheory.category.{u1, u2} C _inst_1)) P Q R f g)) (CategoryTheory.CategoryStruct.comp.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 Q) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 R) (CategoryTheory.Idempotents.Karoubi.Hom.f.{u1, u2} C _inst_1 P Q f) (CategoryTheory.Idempotents.Karoubi.Hom.f.{u1, u2} C _inst_1 Q R g))
-but is expected to have type
- forall {C : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u1, u2} C] {P : CategoryTheory.Idempotents.Karoubi.{u2, u1} C _inst_1} {Q : CategoryTheory.Idempotents.Karoubi.{u2, u1} C _inst_1} {R : CategoryTheory.Idempotents.Karoubi.{u2, u1} C _inst_1} (f : Quiver.Hom.{succ u1, max u2 u1} (CategoryTheory.Idempotents.Karoubi.{u2, u1} C _inst_1) (CategoryTheory.CategoryStruct.toQuiver.{u1, max u2 u1} (CategoryTheory.Idempotents.Karoubi.{u2, u1} C _inst_1) (CategoryTheory.Category.toCategoryStruct.{u1, max u2 u1} (CategoryTheory.Idempotents.Karoubi.{u2, u1} C _inst_1) (CategoryTheory.Idempotents.Karoubi.instCategoryKaroubi.{u2, u1} C _inst_1))) P Q) (g : Quiver.Hom.{succ u1, max u2 u1} (CategoryTheory.Idempotents.Karoubi.{u2, u1} C _inst_1) (CategoryTheory.CategoryStruct.toQuiver.{u1, max u2 u1} (CategoryTheory.Idempotents.Karoubi.{u2, u1} C _inst_1) (CategoryTheory.Category.toCategoryStruct.{u1, max u2 u1} (CategoryTheory.Idempotents.Karoubi.{u2, u1} C _inst_1) (CategoryTheory.Idempotents.Karoubi.instCategoryKaroubi.{u2, u1} C _inst_1))) Q R), Eq.{succ u1} (Quiver.Hom.{succ u1, u2} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1)) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 R)) (CategoryTheory.Idempotents.Karoubi.Hom.f.{u2, u1} C _inst_1 P R (CategoryTheory.CategoryStruct.comp.{u1, max u2 u1} (CategoryTheory.Idempotents.Karoubi.{u2, u1} C _inst_1) (CategoryTheory.Category.toCategoryStruct.{u1, max u2 u1} (CategoryTheory.Idempotents.Karoubi.{u2, u1} C _inst_1) (CategoryTheory.Idempotents.Karoubi.instCategoryKaroubi.{u2, u1} C _inst_1)) P Q R f g)) (CategoryTheory.CategoryStruct.comp.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 Q) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 R) (CategoryTheory.Idempotents.Karoubi.Hom.f.{u2, u1} C _inst_1 P Q f) (CategoryTheory.Idempotents.Karoubi.Hom.f.{u2, u1} C _inst_1 Q R g))
-Case conversion may be inaccurate. Consider using '#align category_theory.idempotents.karoubi.comp_f CategoryTheory.Idempotents.Karoubi.comp_fₓ'. -/
@[simp]
theorem comp_f {P Q R : Karoubi C} (f : P ⟶ Q) (g : Q ⟶ R) : (f ≫ g).f = f.f ≫ g.f := by rfl
#align category_theory.idempotents.karoubi.comp_f CategoryTheory.Idempotents.Karoubi.comp_f
-/- warning: category_theory.idempotents.karoubi.id_eq -> CategoryTheory.Idempotents.Karoubi.id_eq is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align category_theory.idempotents.karoubi.id_eq CategoryTheory.Idempotents.Karoubi.id_eqₓ'. -/
@[simp]
theorem id_eq {P : Karoubi C} : 𝟙 P = ⟨P.p, by repeat' rw [P.idem]⟩ := by rfl
#align category_theory.idempotents.karoubi.id_eq CategoryTheory.Idempotents.Karoubi.id_eq
-/- warning: category_theory.idempotents.karoubi.coe -> CategoryTheory.Idempotents.Karoubi.coe is a dubious translation:
-lean 3 declaration is
- forall {C : Type.{u1}} [_inst_1 : CategoryTheory.Category.{u2, u1} C], CoeTCₓ.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1)
-but is expected to have type
- forall {C : Type.{u1}} [_inst_1 : CategoryTheory.Category.{u2, u1} C], CoeTC.{succ u1, max (succ u2) (succ u1)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1)
-Case conversion may be inaccurate. Consider using '#align category_theory.idempotents.karoubi.coe CategoryTheory.Idempotents.Karoubi.coeₓ'. -/
/-- It is possible to coerce an object of `C` into an object of `karoubi C`.
See also the functor `to_karoubi`. -/
instance coe : CoeTC C (Karoubi C) :=
⟨fun X => ⟨X, 𝟙 X, by rw [comp_id]⟩⟩
#align category_theory.idempotents.karoubi.coe CategoryTheory.Idempotents.Karoubi.coe
-/- warning: category_theory.idempotents.karoubi.coe_X -> CategoryTheory.Idempotents.Karoubi.coe_X is a dubious translation:
-lean 3 declaration is
- forall {C : Type.{u1}} [_inst_1 : CategoryTheory.Category.{u2, u1} C] (X : C), Eq.{succ u1} C (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) X)) X
-but is expected to have type
- forall {C : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u1, u2} C] (X : C), Eq.{succ u2} C (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 (CategoryTheory.Idempotents.Karoubi.mk.{u2, u1} C _inst_1 X (CategoryTheory.CategoryStruct.id.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1) X) (CategoryTheory.Idempotents.Karoubi.coe.proof_1.{u1, u2} C _inst_1 X))) X
-Case conversion may be inaccurate. Consider using '#align category_theory.idempotents.karoubi.coe_X CategoryTheory.Idempotents.Karoubi.coe_Xₓ'. -/
@[simp]
theorem coe_X (X : C) : (X : Karoubi C).pt = X := by rfl
#align category_theory.idempotents.karoubi.coe_X CategoryTheory.Idempotents.Karoubi.coe_X
@@ -204,12 +147,6 @@ theorem coe_p (X : C) : (X : Karoubi C).p = 𝟙 X := by rfl
#align category_theory.idempotents.karoubi.coe_p CategoryTheory.Idempotents.Karoubi.coe_p
-/
-/- warning: category_theory.idempotents.karoubi.eq_to_hom_f -> CategoryTheory.Idempotents.Karoubi.eqToHom_f is a dubious translation:
-lean 3 declaration is
- forall {C : Type.{u1}} [_inst_1 : CategoryTheory.Category.{u2, u1} C] {P : CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1} {Q : CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1} (h : Eq.{max (succ u1) (succ u2)} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) P Q), Eq.{succ u2} (Quiver.Hom.{succ u2, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1)) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 Q)) (CategoryTheory.Idempotents.Karoubi.Hom.f.{u1, u2} C _inst_1 P Q (CategoryTheory.eqToHom.{u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.CategoryTheory.category.{u1, u2} C _inst_1) P Q h)) (CategoryTheory.CategoryStruct.comp.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 Q) (CategoryTheory.Idempotents.Karoubi.p.{u1, u2} C _inst_1 P) (CategoryTheory.eqToHom.{u2, u1} C _inst_1 (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 Q) (congr_arg.{max (succ u1) (succ u2), succ u1} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) C P Q (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1) h)))
-but is expected to have type
- forall {C : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u1, u2} C] {P : CategoryTheory.Idempotents.Karoubi.{u2, u1} C _inst_1} {Q : CategoryTheory.Idempotents.Karoubi.{u2, u1} C _inst_1} (h : Eq.{max (succ u2) (succ u1)} (CategoryTheory.Idempotents.Karoubi.{u2, u1} C _inst_1) P Q), Eq.{succ u1} (Quiver.Hom.{succ u1, u2} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1)) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 Q)) (CategoryTheory.Idempotents.Karoubi.Hom.f.{u2, u1} C _inst_1 P Q (CategoryTheory.eqToHom.{u1, max u2 u1} (CategoryTheory.Idempotents.Karoubi.{u2, u1} C _inst_1) (CategoryTheory.Idempotents.Karoubi.instCategoryKaroubi.{u2, u1} C _inst_1) P Q h)) (CategoryTheory.CategoryStruct.comp.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 Q) (CategoryTheory.Idempotents.Karoubi.p.{u2, u1} C _inst_1 P) (CategoryTheory.eqToHom.{u1, u2} C _inst_1 (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 Q) (congr_arg.{max (succ u1) (succ u2), succ u2} (CategoryTheory.Idempotents.Karoubi.{u2, u1} C _inst_1) C P Q (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1) h)))
-Case conversion may be inaccurate. Consider using '#align category_theory.idempotents.karoubi.eq_to_hom_f CategoryTheory.Idempotents.Karoubi.eqToHom_fₓ'. -/
@[simp]
theorem eqToHom_f {P Q : Karoubi C} (h : P = Q) :
Karoubi.Hom.f (eqToHom h) = P.p ≫ eqToHom (congr_arg Karoubi.x h) := by subst h;
@@ -218,12 +155,6 @@ theorem eqToHom_f {P Q : Karoubi C} (h : P = Q) :
end Karoubi
-/- warning: category_theory.idempotents.to_karoubi -> CategoryTheory.Idempotents.toKaroubi is a dubious translation:
-lean 3 declaration is
- forall (C : Type.{u1}) [_inst_1 : CategoryTheory.Category.{u2, u1} C], CategoryTheory.Functor.{u2, u2, u1, max u1 u2} C _inst_1 (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.CategoryTheory.category.{u1, u2} C _inst_1)
-but is expected to have type
- forall (C : Type.{u1}) [_inst_1 : CategoryTheory.Category.{u2, u1} C], CategoryTheory.Functor.{u2, u2, u1, max u2 u1} C _inst_1 (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.instCategoryKaroubi.{u1, u2} C _inst_1)
-Case conversion may be inaccurate. Consider using '#align category_theory.idempotents.to_karoubi CategoryTheory.Idempotents.toKaroubiₓ'. -/
/-- The obvious fully faithful functor `to_karoubi` sends an object `X : C` to the obvious
formal direct factor of `X` given by `𝟙 X`. -/
@[simps]
@@ -257,22 +188,10 @@ instance [Preadditive C] {P Q : Karoubi C} : AddCommGroup (P ⟶ Q)
namespace Karoubi
-/- warning: category_theory.idempotents.karoubi.hom_eq_zero_iff -> CategoryTheory.Idempotents.Karoubi.hom_eq_zero_iff is a dubious translation:
-lean 3 declaration is
- forall {C : Type.{u1}} [_inst_1 : CategoryTheory.Category.{u2, u1} C] [_inst_2 : CategoryTheory.Preadditive.{u2, u1} C _inst_1] {P : CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1} {Q : CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1} {f : CategoryTheory.Idempotents.Karoubi.Hom.{u1, u2} C _inst_1 P Q}, Iff (Eq.{succ u2} (CategoryTheory.Idempotents.Karoubi.Hom.{u1, u2} C _inst_1 P Q) f (OfNat.ofNat.{u2} (CategoryTheory.Idempotents.Karoubi.Hom.{u1, u2} C _inst_1 P Q) 0 (OfNat.mk.{u2} (CategoryTheory.Idempotents.Karoubi.Hom.{u1, u2} C _inst_1 P Q) 0 (Zero.zero.{u2} (CategoryTheory.Idempotents.Karoubi.Hom.{u1, u2} C _inst_1 P Q) (AddZeroClass.toHasZero.{u2} (CategoryTheory.Idempotents.Karoubi.Hom.{u1, u2} C _inst_1 P Q) (AddMonoid.toAddZeroClass.{u2} (CategoryTheory.Idempotents.Karoubi.Hom.{u1, u2} C _inst_1 P Q) (SubNegMonoid.toAddMonoid.{u2} (CategoryTheory.Idempotents.Karoubi.Hom.{u1, u2} C _inst_1 P Q) (AddGroup.toSubNegMonoid.{u2} (CategoryTheory.Idempotents.Karoubi.Hom.{u1, u2} C _inst_1 P Q) (AddCommGroup.toAddGroup.{u2} (CategoryTheory.Idempotents.Karoubi.Hom.{u1, u2} C _inst_1 P Q) (CategoryTheory.Idempotents.Quiver.Hom.addCommGroup.{u1, u2} C _inst_1 _inst_2 P Q)))))))))) (Eq.{succ u2} (Quiver.Hom.{succ u2, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1)) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 Q)) (CategoryTheory.Idempotents.Karoubi.Hom.f.{u1, u2} C _inst_1 P Q f) (OfNat.ofNat.{u2} (Quiver.Hom.{succ u2, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1)) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 Q)) 0 (OfNat.mk.{u2} (Quiver.Hom.{succ u2, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1)) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 Q)) 0 (Zero.zero.{u2} (Quiver.Hom.{succ u2, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1)) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 Q)) (CategoryTheory.Limits.HasZeroMorphisms.hasZero.{u2, u1} C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u1} C _inst_1 _inst_2) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 Q))))))
-but is expected to have type
- forall {C : Type.{u1}} [_inst_1 : CategoryTheory.Category.{u2, u1} C] [_inst_2 : CategoryTheory.Preadditive.{u2, u1} C _inst_1] {P : CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1} {Q : CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1} {f : Quiver.Hom.{succ u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.CategoryStruct.toQuiver.{u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Category.toCategoryStruct.{u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.instCategoryKaroubi.{u1, u2} C _inst_1))) P Q}, Iff (Eq.{succ u2} (Quiver.Hom.{succ u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.CategoryStruct.toQuiver.{u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Category.toCategoryStruct.{u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.instCategoryKaroubi.{u1, u2} C _inst_1))) P Q) f (OfNat.ofNat.{u2} (Quiver.Hom.{succ u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.CategoryStruct.toQuiver.{u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Category.toCategoryStruct.{u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.instCategoryKaroubi.{u1, u2} C _inst_1))) P Q) 0 (Zero.toOfNat0.{u2} (Quiver.Hom.{succ u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.CategoryStruct.toQuiver.{u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Category.toCategoryStruct.{u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.instCategoryKaroubi.{u1, u2} C _inst_1))) P Q) (NegZeroClass.toZero.{u2} (Quiver.Hom.{succ u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.CategoryStruct.toQuiver.{u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Category.toCategoryStruct.{u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.instCategoryKaroubi.{u1, u2} C _inst_1))) P Q) (SubNegZeroMonoid.toNegZeroClass.{u2} (Quiver.Hom.{succ u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.CategoryStruct.toQuiver.{u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Category.toCategoryStruct.{u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.instCategoryKaroubi.{u1, u2} C _inst_1))) P Q) (SubtractionMonoid.toSubNegZeroMonoid.{u2} (Quiver.Hom.{succ u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.CategoryStruct.toQuiver.{u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Category.toCategoryStruct.{u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.instCategoryKaroubi.{u1, u2} C _inst_1))) P Q) (SubtractionCommMonoid.toSubtractionMonoid.{u2} (Quiver.Hom.{succ u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.CategoryStruct.toQuiver.{u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Category.toCategoryStruct.{u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.instCategoryKaroubi.{u1, u2} C _inst_1))) P Q) (AddCommGroup.toDivisionAddCommMonoid.{u2} (Quiver.Hom.{succ u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.CategoryStruct.toQuiver.{u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Category.toCategoryStruct.{u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.instCategoryKaroubi.{u1, u2} C _inst_1))) P Q) (CategoryTheory.Idempotents.instAddCommGroupHom.{u1, u2} C _inst_1 _inst_2 P Q))))))))) (Eq.{succ u2} (Quiver.Hom.{succ u2, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1)) (CategoryTheory.Idempotents.Karoubi.X.{u1, u2} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.X.{u1, u2} C _inst_1 Q)) (CategoryTheory.Idempotents.Karoubi.Hom.f.{u1, u2} C _inst_1 P Q f) (OfNat.ofNat.{u2} (Quiver.Hom.{succ u2, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1)) (CategoryTheory.Idempotents.Karoubi.X.{u1, u2} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.X.{u1, u2} C _inst_1 Q)) 0 (Zero.toOfNat0.{u2} (Quiver.Hom.{succ u2, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1)) (CategoryTheory.Idempotents.Karoubi.X.{u1, u2} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.X.{u1, u2} C _inst_1 Q)) (CategoryTheory.Limits.HasZeroMorphisms.Zero.{u2, u1} C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u1} C _inst_1 _inst_2) (CategoryTheory.Idempotents.Karoubi.X.{u1, u2} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.X.{u1, u2} C _inst_1 Q)))))
-Case conversion may be inaccurate. Consider using '#align category_theory.idempotents.karoubi.hom_eq_zero_iff CategoryTheory.Idempotents.Karoubi.hom_eq_zero_iffₓ'. -/
theorem hom_eq_zero_iff [Preadditive C] {P Q : Karoubi C} {f : Hom P Q} : f = 0 ↔ f.f = 0 :=
hom_ext_iff
#align category_theory.idempotents.karoubi.hom_eq_zero_iff CategoryTheory.Idempotents.Karoubi.hom_eq_zero_iff
-/- warning: category_theory.idempotents.karoubi.inclusion_hom -> CategoryTheory.Idempotents.Karoubi.inclusionHom is a dubious translation:
-lean 3 declaration is
- forall {C : Type.{u1}} [_inst_1 : CategoryTheory.Category.{u2, u1} C] [_inst_2 : CategoryTheory.Preadditive.{u2, u1} C _inst_1] (P : CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (Q : CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1), AddMonoidHom.{u2, u2} (Quiver.Hom.{succ u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.CategoryStruct.toQuiver.{u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Category.toCategoryStruct.{u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.CategoryTheory.category.{u1, u2} C _inst_1))) P Q) (Quiver.Hom.{succ u2, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1)) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 Q)) (AddMonoid.toAddZeroClass.{u2} (Quiver.Hom.{succ u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.CategoryStruct.toQuiver.{u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Category.toCategoryStruct.{u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.CategoryTheory.category.{u1, u2} C _inst_1))) P Q) (SubNegMonoid.toAddMonoid.{u2} (Quiver.Hom.{succ u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.CategoryStruct.toQuiver.{u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Category.toCategoryStruct.{u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.CategoryTheory.category.{u1, u2} C _inst_1))) P Q) (AddGroup.toSubNegMonoid.{u2} (Quiver.Hom.{succ u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.CategoryStruct.toQuiver.{u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Category.toCategoryStruct.{u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.CategoryTheory.category.{u1, u2} C _inst_1))) P Q) (AddCommGroup.toAddGroup.{u2} (Quiver.Hom.{succ u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.CategoryStruct.toQuiver.{u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Category.toCategoryStruct.{u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.CategoryTheory.category.{u1, u2} C _inst_1))) P Q) (CategoryTheory.Idempotents.Quiver.Hom.addCommGroup.{u1, u2} C _inst_1 _inst_2 P Q))))) (AddMonoid.toAddZeroClass.{u2} (Quiver.Hom.{succ u2, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1)) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 Q)) (SubNegMonoid.toAddMonoid.{u2} (Quiver.Hom.{succ u2, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1)) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 Q)) (AddGroup.toSubNegMonoid.{u2} (Quiver.Hom.{succ u2, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1)) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 Q)) (AddCommGroup.toAddGroup.{u2} (Quiver.Hom.{succ u2, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1)) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 Q)) (CategoryTheory.Preadditive.homGroup.{u2, u1} C _inst_1 _inst_2 (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 Q))))))
-but is expected to have type
- forall {C : Type.{u1}} [_inst_1 : CategoryTheory.Category.{u2, u1} C] [_inst_2 : CategoryTheory.Preadditive.{u2, u1} C _inst_1] (P : CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (Q : CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1), AddMonoidHom.{u2, u2} (Quiver.Hom.{succ u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.CategoryStruct.toQuiver.{u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Category.toCategoryStruct.{u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.instCategoryKaroubi.{u1, u2} C _inst_1))) P Q) (Quiver.Hom.{succ u2, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1)) (CategoryTheory.Idempotents.Karoubi.X.{u1, u2} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.X.{u1, u2} C _inst_1 Q)) (AddMonoid.toAddZeroClass.{u2} (Quiver.Hom.{succ u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.CategoryStruct.toQuiver.{u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Category.toCategoryStruct.{u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.instCategoryKaroubi.{u1, u2} C _inst_1))) P Q) (SubNegMonoid.toAddMonoid.{u2} (Quiver.Hom.{succ u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.CategoryStruct.toQuiver.{u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Category.toCategoryStruct.{u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.instCategoryKaroubi.{u1, u2} C _inst_1))) P Q) (AddGroup.toSubNegMonoid.{u2} (Quiver.Hom.{succ u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.CategoryStruct.toQuiver.{u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Category.toCategoryStruct.{u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.instCategoryKaroubi.{u1, u2} C _inst_1))) P Q) (AddCommGroup.toAddGroup.{u2} (Quiver.Hom.{succ u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.CategoryStruct.toQuiver.{u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Category.toCategoryStruct.{u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.instCategoryKaroubi.{u1, u2} C _inst_1))) P Q) (CategoryTheory.Idempotents.instAddCommGroupHom.{u1, u2} C _inst_1 _inst_2 P Q))))) (AddMonoid.toAddZeroClass.{u2} (Quiver.Hom.{succ u2, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1)) (CategoryTheory.Idempotents.Karoubi.X.{u1, u2} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.X.{u1, u2} C _inst_1 Q)) (SubNegMonoid.toAddMonoid.{u2} (Quiver.Hom.{succ u2, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1)) (CategoryTheory.Idempotents.Karoubi.X.{u1, u2} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.X.{u1, u2} C _inst_1 Q)) (AddGroup.toSubNegMonoid.{u2} (Quiver.Hom.{succ u2, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1)) (CategoryTheory.Idempotents.Karoubi.X.{u1, u2} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.X.{u1, u2} C _inst_1 Q)) (AddCommGroup.toAddGroup.{u2} (Quiver.Hom.{succ u2, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1)) (CategoryTheory.Idempotents.Karoubi.X.{u1, u2} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.X.{u1, u2} C _inst_1 Q)) (CategoryTheory.Preadditive.homGroup.{u2, u1} C _inst_1 _inst_2 (CategoryTheory.Idempotents.Karoubi.X.{u1, u2} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.X.{u1, u2} C _inst_1 Q))))))
-Case conversion may be inaccurate. Consider using '#align category_theory.idempotents.karoubi.inclusion_hom CategoryTheory.Idempotents.Karoubi.inclusionHomₓ'. -/
/-- The map sending `f : P ⟶ Q` to `f.f : P.X ⟶ Q.X` is additive. -/
@[simps]
def inclusionHom [Preadditive C] (P Q : Karoubi C) : AddMonoidHom (P ⟶ Q) (P.pt ⟶ Q.pt)
@@ -282,12 +201,6 @@ def inclusionHom [Preadditive C] (P Q : Karoubi C) : AddMonoidHom (P ⟶ Q) (P.p
map_add' f g := rfl
#align category_theory.idempotents.karoubi.inclusion_hom CategoryTheory.Idempotents.Karoubi.inclusionHom
-/- warning: category_theory.idempotents.karoubi.sum_hom -> CategoryTheory.Idempotents.Karoubi.sum_hom is a dubious translation:
-lean 3 declaration is
- forall {C : Type.{u1}} [_inst_1 : CategoryTheory.Category.{u2, u1} C] [_inst_2 : CategoryTheory.Preadditive.{u2, u1} C _inst_1] {P : CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1} {Q : CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1} {α : Type.{u3}} (s : Finset.{u3} α) (f : α -> (Quiver.Hom.{succ u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.CategoryStruct.toQuiver.{u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Category.toCategoryStruct.{u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.CategoryTheory.category.{u1, u2} C _inst_1))) P Q)), Eq.{succ u2} (Quiver.Hom.{succ u2, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1)) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 Q)) (CategoryTheory.Idempotents.Karoubi.Hom.f.{u1, u2} C _inst_1 P Q (Finset.sum.{u2, u3} (Quiver.Hom.{succ u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.CategoryStruct.toQuiver.{u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Category.toCategoryStruct.{u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.CategoryTheory.category.{u1, u2} C _inst_1))) P Q) α (AddCommGroup.toAddCommMonoid.{u2} (Quiver.Hom.{succ u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.CategoryStruct.toQuiver.{u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Category.toCategoryStruct.{u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.CategoryTheory.category.{u1, u2} C _inst_1))) P Q) (CategoryTheory.Idempotents.Quiver.Hom.addCommGroup.{u1, u2} C _inst_1 _inst_2 P Q)) s (fun (x : α) => f x))) (Finset.sum.{u2, u3} (Quiver.Hom.{succ u2, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1)) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 Q)) α (AddCommGroup.toAddCommMonoid.{u2} (Quiver.Hom.{succ u2, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1)) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 Q)) (CategoryTheory.Preadditive.homGroup.{u2, u1} C _inst_1 _inst_2 (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 Q))) s (fun (x : α) => CategoryTheory.Idempotents.Karoubi.Hom.f.{u1, u2} C _inst_1 P Q (f x)))
-but is expected to have type
- forall {C : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u3, u2} C] [_inst_2 : CategoryTheory.Preadditive.{u3, u2} C _inst_1] {P : CategoryTheory.Idempotents.Karoubi.{u2, u3} C _inst_1} {Q : CategoryTheory.Idempotents.Karoubi.{u2, u3} C _inst_1} {α : Type.{u1}} (s : Finset.{u1} α) (f : α -> (Quiver.Hom.{succ u3, max u2 u3} (CategoryTheory.Idempotents.Karoubi.{u2, u3} C _inst_1) (CategoryTheory.CategoryStruct.toQuiver.{u3, max u2 u3} (CategoryTheory.Idempotents.Karoubi.{u2, u3} C _inst_1) (CategoryTheory.Category.toCategoryStruct.{u3, max u2 u3} (CategoryTheory.Idempotents.Karoubi.{u2, u3} C _inst_1) (CategoryTheory.Idempotents.Karoubi.instCategoryKaroubi.{u2, u3} C _inst_1))) P Q)), Eq.{succ u3} (Quiver.Hom.{succ u3, u2} C (CategoryTheory.CategoryStruct.toQuiver.{u3, u2} C (CategoryTheory.Category.toCategoryStruct.{u3, u2} C _inst_1)) (CategoryTheory.Idempotents.Karoubi.X.{u2, u3} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.X.{u2, u3} C _inst_1 Q)) (CategoryTheory.Idempotents.Karoubi.Hom.f.{u2, u3} C _inst_1 P Q (Finset.sum.{u3, u1} (Quiver.Hom.{succ u3, max u2 u3} (CategoryTheory.Idempotents.Karoubi.{u2, u3} C _inst_1) (CategoryTheory.CategoryStruct.toQuiver.{u3, max u2 u3} (CategoryTheory.Idempotents.Karoubi.{u2, u3} C _inst_1) (CategoryTheory.Category.toCategoryStruct.{u3, max u2 u3} (CategoryTheory.Idempotents.Karoubi.{u2, u3} C _inst_1) (CategoryTheory.Idempotents.Karoubi.instCategoryKaroubi.{u2, u3} C _inst_1))) P Q) α (AddCommGroup.toAddCommMonoid.{u3} (Quiver.Hom.{succ u3, max u2 u3} (CategoryTheory.Idempotents.Karoubi.{u2, u3} C _inst_1) (CategoryTheory.CategoryStruct.toQuiver.{u3, max u2 u3} (CategoryTheory.Idempotents.Karoubi.{u2, u3} C _inst_1) (CategoryTheory.Category.toCategoryStruct.{u3, max u2 u3} (CategoryTheory.Idempotents.Karoubi.{u2, u3} C _inst_1) (CategoryTheory.Idempotents.Karoubi.instCategoryKaroubi.{u2, u3} C _inst_1))) P Q) (CategoryTheory.Idempotents.instAddCommGroupHom.{u2, u3} C _inst_1 _inst_2 P Q)) s (fun (x : α) => f x))) (Finset.sum.{u3, u1} (Quiver.Hom.{succ u3, u2} C (CategoryTheory.CategoryStruct.toQuiver.{u3, u2} C (CategoryTheory.Category.toCategoryStruct.{u3, u2} C _inst_1)) (CategoryTheory.Idempotents.Karoubi.X.{u2, u3} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.X.{u2, u3} C _inst_1 Q)) α (AddCommGroup.toAddCommMonoid.{u3} (Quiver.Hom.{succ u3, u2} C (CategoryTheory.CategoryStruct.toQuiver.{u3, u2} C (CategoryTheory.Category.toCategoryStruct.{u3, u2} C _inst_1)) (CategoryTheory.Idempotents.Karoubi.X.{u2, u3} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.X.{u2, u3} C _inst_1 Q)) (CategoryTheory.Preadditive.homGroup.{u3, u2} C _inst_1 _inst_2 (CategoryTheory.Idempotents.Karoubi.X.{u2, u3} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.X.{u2, u3} C _inst_1 Q))) s (fun (x : α) => CategoryTheory.Idempotents.Karoubi.Hom.f.{u2, u3} C _inst_1 P Q (f x)))
-Case conversion may be inaccurate. Consider using '#align category_theory.idempotents.karoubi.sum_hom CategoryTheory.Idempotents.Karoubi.sum_homₓ'. -/
@[simp]
theorem sum_hom [Preadditive C] {P Q : Karoubi C} {α : Type _} (s : Finset α) (f : α → (P ⟶ Q)) :
(∑ x in s, f x).f = ∑ x in s, (f x).f :=
@@ -326,35 +239,17 @@ instance [IsIdempotentComplete C] : EssSurj (toKaroubi C) :=
{ Hom := ⟨i, by erw [id_comp, ← h₂, ← assoc, h₁, id_comp]⟩
inv := ⟨e, by erw [comp_id, ← h₂, assoc, h₁, comp_id]⟩ }⟩
-/- warning: category_theory.idempotents.to_karoubi_is_equivalence -> CategoryTheory.Idempotents.toKaroubi_isEquivalence is a dubious translation:
-lean 3 declaration is
- forall (C : Type.{u1}) [_inst_1 : CategoryTheory.Category.{u2, u1} C] [_inst_2 : CategoryTheory.IsIdempotentComplete.{u1, u2} C _inst_1], CategoryTheory.IsEquivalence.{u2, u2, u1, max u1 u2} C _inst_1 (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.CategoryTheory.category.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.toKaroubi.{u1, u2} C _inst_1)
-but is expected to have type
- forall (C : Type.{u1}) [_inst_1 : CategoryTheory.Category.{u2, u1} C] [_inst_2 : CategoryTheory.IsIdempotentComplete.{u1, u2} C _inst_1], CategoryTheory.IsEquivalence.{u2, u2, u1, max u1 u2} C _inst_1 (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.instCategoryKaroubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.toKaroubi.{u1, u2} C _inst_1)
-Case conversion may be inaccurate. Consider using '#align category_theory.idempotents.to_karoubi_is_equivalence CategoryTheory.Idempotents.toKaroubi_isEquivalenceₓ'. -/
/-- If `C` is idempotent complete, the functor `to_karoubi : C ⥤ karoubi C` is an equivalence. -/
def toKaroubi_isEquivalence [IsIdempotentComplete C] : IsEquivalence (toKaroubi C) :=
Equivalence.ofFullyFaithfullyEssSurj (toKaroubi C)
#align category_theory.idempotents.to_karoubi_is_equivalence CategoryTheory.Idempotents.toKaroubi_isEquivalence
-/- warning: category_theory.idempotents.to_karoubi_equivalence -> CategoryTheory.Idempotents.toKaroubi_equivalence is a dubious translation:
-lean 3 declaration is
- forall (C : Type.{u1}) [_inst_1 : CategoryTheory.Category.{u2, u1} C] [_inst_2 : CategoryTheory.IsIdempotentComplete.{u1, u2} C _inst_1], CategoryTheory.Equivalence.{u2, u2, u1, max u1 u2} C _inst_1 (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.CategoryTheory.category.{u1, u2} C _inst_1)
-but is expected to have type
- forall (C : Type.{u1}) [_inst_1 : CategoryTheory.Category.{u2, u1} C] [_inst_2 : CategoryTheory.IsIdempotentComplete.{u1, u2} C _inst_1], CategoryTheory.Equivalence.{u2, u2, u1, max u2 u1} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) _inst_1 (CategoryTheory.Idempotents.Karoubi.instCategoryKaroubi.{u1, u2} C _inst_1)
-Case conversion may be inaccurate. Consider using '#align category_theory.idempotents.to_karoubi_equivalence CategoryTheory.Idempotents.toKaroubi_equivalenceₓ'. -/
/-- The equivalence `C ≅ karoubi C` when `C` is idempotent complete. -/
def toKaroubi_equivalence [IsIdempotentComplete C] : C ≌ Karoubi C :=
haveI := to_karoubi_is_equivalence C
functor.as_equivalence (to_karoubi C)
#align category_theory.idempotents.to_karoubi_equivalence CategoryTheory.Idempotents.toKaroubi_equivalence
-/- warning: category_theory.idempotents.to_karoubi_equivalence_functor_additive -> CategoryTheory.Idempotents.toKaroubi_equivalence_functor_additive is a dubious translation:
-lean 3 declaration is
- forall (C : Type.{u1}) [_inst_1 : CategoryTheory.Category.{u2, u1} C] [_inst_2 : CategoryTheory.Preadditive.{u2, u1} C _inst_1] [_inst_3 : CategoryTheory.IsIdempotentComplete.{u1, u2} C _inst_1], CategoryTheory.Functor.Additive.{u1, max u1 u2, u2, u2} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) _inst_1 (CategoryTheory.Idempotents.Karoubi.CategoryTheory.category.{u1, u2} C _inst_1) _inst_2 (CategoryTheory.Idempotents.Karoubi.CategoryTheory.preadditive.{u1, u2} C _inst_1 _inst_2) (CategoryTheory.Equivalence.functor.{u2, u2, u1, max u1 u2} C _inst_1 (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.CategoryTheory.category.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.toKaroubi_equivalence.{u1, u2} C _inst_1 _inst_3))
-but is expected to have type
- forall (C : Type.{u1}) [_inst_1 : CategoryTheory.Category.{u2, u1} C] [_inst_2 : CategoryTheory.Preadditive.{u2, u1} C _inst_1] [_inst_3 : CategoryTheory.IsIdempotentComplete.{u1, u2} C _inst_1], CategoryTheory.Functor.Additive.{u1, max u1 u2, u2, u2} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) _inst_1 (CategoryTheory.Idempotents.Karoubi.instCategoryKaroubi.{u1, u2} C _inst_1) _inst_2 (CategoryTheory.Idempotents.instPreadditiveKaroubiInstCategoryKaroubi.{u1, u2} C _inst_1 _inst_2) (CategoryTheory.Equivalence.functor.{u2, u2, u1, max u1 u2} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) _inst_1 (CategoryTheory.Idempotents.Karoubi.instCategoryKaroubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.toKaroubi_equivalence.{u1, u2} C _inst_1 _inst_3))
-Case conversion may be inaccurate. Consider using '#align category_theory.idempotents.to_karoubi_equivalence_functor_additive CategoryTheory.Idempotents.toKaroubi_equivalence_functor_additiveₓ'. -/
instance toKaroubi_equivalence_functor_additive [Preadditive C] [IsIdempotentComplete C] :
(toKaroubi_equivalence C).Functor.Additive :=
(inferInstance : (toKaroubi C).Additive)
@@ -364,90 +259,45 @@ namespace Karoubi
variable {C}
-/- warning: category_theory.idempotents.karoubi.decomp_id_i -> CategoryTheory.Idempotents.Karoubi.decompId_i is a dubious translation:
-lean 3 declaration is
- forall {C : Type.{u1}} [_inst_1 : CategoryTheory.Category.{u2, u1} C] (P : CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1), Quiver.Hom.{succ u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.CategoryStruct.toQuiver.{u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Category.toCategoryStruct.{u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.CategoryTheory.category.{u1, u2} C _inst_1))) P ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P))
-but is expected to have type
- forall {C : Type.{u1}} [_inst_1 : CategoryTheory.Category.{u2, u1} C] (P : CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1), Quiver.Hom.{succ u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.CategoryStruct.toQuiver.{u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Category.toCategoryStruct.{u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.instCategoryKaroubi.{u1, u2} C _inst_1))) P (CategoryTheory.Idempotents.Karoubi.mk.{u1, u2} C _inst_1 (CategoryTheory.Idempotents.Karoubi.X.{u1, u2} C _inst_1 P) (CategoryTheory.CategoryStruct.id.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1) (CategoryTheory.Idempotents.Karoubi.X.{u1, u2} C _inst_1 P)) (CategoryTheory.Idempotents.Karoubi.coe.proof_1.{u2, u1} C _inst_1 (CategoryTheory.Idempotents.Karoubi.X.{u1, u2} C _inst_1 P)))
-Case conversion may be inaccurate. Consider using '#align category_theory.idempotents.karoubi.decomp_id_i CategoryTheory.Idempotents.Karoubi.decompId_iₓ'. -/
/-- The split mono which appears in the factorisation `decomp_id P`. -/
@[simps]
def decompId_i (P : Karoubi C) : P ⟶ P.pt :=
⟨P.p, by erw [coe_p, comp_id, P.idem]⟩
#align category_theory.idempotents.karoubi.decomp_id_i CategoryTheory.Idempotents.Karoubi.decompId_i
-/- warning: category_theory.idempotents.karoubi.decomp_id_p -> CategoryTheory.Idempotents.Karoubi.decompId_p is a dubious translation:
-lean 3 declaration is
- forall {C : Type.{u1}} [_inst_1 : CategoryTheory.Category.{u2, u1} C] (P : CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1), Quiver.Hom.{succ u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.CategoryStruct.toQuiver.{u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Category.toCategoryStruct.{u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.CategoryTheory.category.{u1, u2} C _inst_1))) ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P)) P
-but is expected to have type
- forall {C : Type.{u1}} [_inst_1 : CategoryTheory.Category.{u2, u1} C] (P : CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1), Quiver.Hom.{succ u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.CategoryStruct.toQuiver.{u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Category.toCategoryStruct.{u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.instCategoryKaroubi.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.mk.{u1, u2} C _inst_1 (CategoryTheory.Idempotents.Karoubi.X.{u1, u2} C _inst_1 P) (CategoryTheory.CategoryStruct.id.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1) (CategoryTheory.Idempotents.Karoubi.X.{u1, u2} C _inst_1 P)) (CategoryTheory.Idempotents.Karoubi.coe.proof_1.{u2, u1} C _inst_1 (CategoryTheory.Idempotents.Karoubi.X.{u1, u2} C _inst_1 P))) P
-Case conversion may be inaccurate. Consider using '#align category_theory.idempotents.karoubi.decomp_id_p CategoryTheory.Idempotents.Karoubi.decompId_pₓ'. -/
/-- The split epi which appears in the factorisation `decomp_id P`. -/
@[simps]
def decompId_p (P : Karoubi C) : (P.pt : Karoubi C) ⟶ P :=
⟨P.p, by erw [coe_p, id_comp, P.idem]⟩
#align category_theory.idempotents.karoubi.decomp_id_p CategoryTheory.Idempotents.Karoubi.decompId_p
-/- warning: category_theory.idempotents.karoubi.decomp_id -> CategoryTheory.Idempotents.Karoubi.decompId is a dubious translation:
-lean 3 declaration is
- forall {C : Type.{u1}} [_inst_1 : CategoryTheory.Category.{u2, u1} C] (P : CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1), Eq.{succ u2} (Quiver.Hom.{succ u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.CategoryStruct.toQuiver.{u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Category.toCategoryStruct.{u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.CategoryTheory.category.{u1, u2} C _inst_1))) P P) (CategoryTheory.CategoryStruct.id.{u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Category.toCategoryStruct.{u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.CategoryTheory.category.{u1, u2} C _inst_1)) P) (CategoryTheory.CategoryStruct.comp.{u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Category.toCategoryStruct.{u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.CategoryTheory.category.{u1, u2} C _inst_1)) P ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P)) P (CategoryTheory.Idempotents.Karoubi.decompId_i.{u1, u2} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.decompId_p.{u1, u2} C _inst_1 P))
-but is expected to have type
- forall {C : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u1, u2} C] (P : CategoryTheory.Idempotents.Karoubi.{u2, u1} C _inst_1), Eq.{succ u1} (Quiver.Hom.{succ u1, max u2 u1} (CategoryTheory.Idempotents.Karoubi.{u2, u1} C _inst_1) (CategoryTheory.CategoryStruct.toQuiver.{u1, max u2 u1} (CategoryTheory.Idempotents.Karoubi.{u2, u1} C _inst_1) (CategoryTheory.Category.toCategoryStruct.{u1, max u2 u1} (CategoryTheory.Idempotents.Karoubi.{u2, u1} C _inst_1) (CategoryTheory.Idempotents.Karoubi.instCategoryKaroubi.{u2, u1} C _inst_1))) P P) (CategoryTheory.CategoryStruct.id.{u1, max u2 u1} (CategoryTheory.Idempotents.Karoubi.{u2, u1} C _inst_1) (CategoryTheory.Category.toCategoryStruct.{u1, max u2 u1} (CategoryTheory.Idempotents.Karoubi.{u2, u1} C _inst_1) (CategoryTheory.Idempotents.Karoubi.instCategoryKaroubi.{u2, u1} C _inst_1)) P) (CategoryTheory.CategoryStruct.comp.{u1, max u2 u1} (CategoryTheory.Idempotents.Karoubi.{u2, u1} C _inst_1) (CategoryTheory.Category.toCategoryStruct.{u1, max u2 u1} (CategoryTheory.Idempotents.Karoubi.{u2, u1} C _inst_1) (CategoryTheory.Idempotents.Karoubi.instCategoryKaroubi.{u2, u1} C _inst_1)) P (CategoryTheory.Idempotents.Karoubi.mk.{u2, u1} C _inst_1 (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 P) (CategoryTheory.CategoryStruct.id.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 P)) (CategoryTheory.Idempotents.Karoubi.coe.proof_1.{u1, u2} C _inst_1 (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 P))) P (CategoryTheory.Idempotents.Karoubi.decompId_i.{u2, u1} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.decompId_p.{u2, u1} C _inst_1 P))
-Case conversion may be inaccurate. Consider using '#align category_theory.idempotents.karoubi.decomp_id CategoryTheory.Idempotents.Karoubi.decompIdₓ'. -/
/-- The formal direct factor of `P.X` given by the idempotent `P.p` in the category `C`
is actually a direct factor in the category `karoubi C`. -/
theorem decompId (P : Karoubi C) : 𝟙 P = decompId_i P ≫ decompId_p P := by ext;
simp only [comp_f, id_eq, P.idem, decomp_id_i, decomp_id_p]
#align category_theory.idempotents.karoubi.decomp_id CategoryTheory.Idempotents.Karoubi.decompId
-/- warning: category_theory.idempotents.karoubi.decomp_p -> CategoryTheory.Idempotents.Karoubi.decomp_p is a dubious translation:
-lean 3 declaration is
- forall {C : Type.{u1}} [_inst_1 : CategoryTheory.Category.{u2, u1} C] (P : CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1), Eq.{succ u2} (Quiver.Hom.{succ u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.CategoryStruct.toQuiver.{u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Category.toCategoryStruct.{u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.CategoryTheory.category.{u1, u2} C _inst_1))) (CategoryTheory.Functor.obj.{u2, u2, u1, max u1 u2} C _inst_1 (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.CategoryTheory.category.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.toKaroubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P)) (CategoryTheory.Functor.obj.{u2, u2, u1, max u1 u2} C _inst_1 (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.CategoryTheory.category.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.toKaroubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P))) (CategoryTheory.Functor.map.{u2, u2, u1, max u1 u2} C _inst_1 (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.CategoryTheory.category.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.toKaroubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.p.{u1, u2} C _inst_1 P)) (CategoryTheory.CategoryStruct.comp.{u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Category.toCategoryStruct.{u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.CategoryTheory.category.{u1, u2} C _inst_1)) (CategoryTheory.Functor.obj.{u2, u2, u1, max u1 u2} C _inst_1 (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.CategoryTheory.category.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.toKaroubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P)) P (CategoryTheory.Functor.obj.{u2, u2, u1, max u1 u2} C _inst_1 (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.CategoryTheory.category.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.toKaroubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P)) (CategoryTheory.Idempotents.Karoubi.decompId_p.{u1, u2} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.decompId_i.{u1, u2} C _inst_1 P))
-but is expected to have type
- forall {C : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u1, u2} C] (P : CategoryTheory.Idempotents.Karoubi.{u2, u1} C _inst_1), Eq.{succ u1} (Quiver.Hom.{succ u1, max u2 u1} (CategoryTheory.Idempotents.Karoubi.{u2, u1} C _inst_1) (CategoryTheory.CategoryStruct.toQuiver.{u1, max u2 u1} (CategoryTheory.Idempotents.Karoubi.{u2, u1} C _inst_1) (CategoryTheory.Category.toCategoryStruct.{u1, max u2 u1} (CategoryTheory.Idempotents.Karoubi.{u2, u1} C _inst_1) (CategoryTheory.Idempotents.Karoubi.instCategoryKaroubi.{u2, u1} C _inst_1))) (Prefunctor.obj.{succ u1, succ u1, u2, max u2 u1} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1)) (CategoryTheory.Idempotents.Karoubi.{u2, u1} C _inst_1) (CategoryTheory.CategoryStruct.toQuiver.{u1, max u2 u1} (CategoryTheory.Idempotents.Karoubi.{u2, u1} C _inst_1) (CategoryTheory.Category.toCategoryStruct.{u1, max u2 u1} (CategoryTheory.Idempotents.Karoubi.{u2, u1} C _inst_1) (CategoryTheory.Idempotents.Karoubi.instCategoryKaroubi.{u2, u1} C _inst_1))) (CategoryTheory.Functor.toPrefunctor.{u1, u1, u2, max u2 u1} C _inst_1 (CategoryTheory.Idempotents.Karoubi.{u2, u1} C _inst_1) (CategoryTheory.Idempotents.Karoubi.instCategoryKaroubi.{u2, u1} C _inst_1) (CategoryTheory.Idempotents.toKaroubi.{u2, u1} C _inst_1)) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 P)) (Prefunctor.obj.{succ u1, succ u1, u2, max u2 u1} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1)) (CategoryTheory.Idempotents.Karoubi.{u2, u1} C _inst_1) (CategoryTheory.CategoryStruct.toQuiver.{u1, max u2 u1} (CategoryTheory.Idempotents.Karoubi.{u2, u1} C _inst_1) (CategoryTheory.Category.toCategoryStruct.{u1, max u2 u1} (CategoryTheory.Idempotents.Karoubi.{u2, u1} C _inst_1) (CategoryTheory.Idempotents.Karoubi.instCategoryKaroubi.{u2, u1} C _inst_1))) (CategoryTheory.Functor.toPrefunctor.{u1, u1, u2, max u2 u1} C _inst_1 (CategoryTheory.Idempotents.Karoubi.{u2, u1} C _inst_1) (CategoryTheory.Idempotents.Karoubi.instCategoryKaroubi.{u2, u1} C _inst_1) (CategoryTheory.Idempotents.toKaroubi.{u2, u1} C _inst_1)) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 P))) (Prefunctor.map.{succ u1, succ u1, u2, max u2 u1} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1)) (CategoryTheory.Idempotents.Karoubi.{u2, u1} C _inst_1) (CategoryTheory.CategoryStruct.toQuiver.{u1, max u2 u1} (CategoryTheory.Idempotents.Karoubi.{u2, u1} C _inst_1) (CategoryTheory.Category.toCategoryStruct.{u1, max u2 u1} (CategoryTheory.Idempotents.Karoubi.{u2, u1} C _inst_1) (CategoryTheory.Idempotents.Karoubi.instCategoryKaroubi.{u2, u1} C _inst_1))) (CategoryTheory.Functor.toPrefunctor.{u1, u1, u2, max u2 u1} C _inst_1 (CategoryTheory.Idempotents.Karoubi.{u2, u1} C _inst_1) (CategoryTheory.Idempotents.Karoubi.instCategoryKaroubi.{u2, u1} C _inst_1) (CategoryTheory.Idempotents.toKaroubi.{u2, u1} C _inst_1)) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.p.{u2, u1} C _inst_1 P)) (CategoryTheory.CategoryStruct.comp.{u1, max u2 u1} (CategoryTheory.Idempotents.Karoubi.{u2, u1} C _inst_1) (CategoryTheory.Category.toCategoryStruct.{u1, max u2 u1} (CategoryTheory.Idempotents.Karoubi.{u2, u1} C _inst_1) (CategoryTheory.Idempotents.Karoubi.instCategoryKaroubi.{u2, u1} C _inst_1)) (CategoryTheory.Idempotents.Karoubi.mk.{u2, u1} C _inst_1 (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 P) (CategoryTheory.CategoryStruct.id.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 P)) (CategoryTheory.Idempotents.Karoubi.coe.proof_1.{u1, u2} C _inst_1 (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 P))) P (CategoryTheory.Idempotents.Karoubi.mk.{u2, u1} C _inst_1 (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 P) (CategoryTheory.CategoryStruct.id.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 P)) (CategoryTheory.Idempotents.Karoubi.coe.proof_1.{u1, u2} C _inst_1 (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 P))) (CategoryTheory.Idempotents.Karoubi.decompId_p.{u2, u1} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.decompId_i.{u2, u1} C _inst_1 P))
-Case conversion may be inaccurate. Consider using '#align category_theory.idempotents.karoubi.decomp_p CategoryTheory.Idempotents.Karoubi.decomp_pₓ'. -/
theorem decomp_p (P : Karoubi C) : (toKaroubi C).map P.p = decompId_p P ≫ decompId_i P := by ext;
simp only [comp_f, decomp_id_p_f, decomp_id_i_f, P.idem, to_karoubi_map_f]
#align category_theory.idempotents.karoubi.decomp_p CategoryTheory.Idempotents.Karoubi.decomp_p
-/- warning: category_theory.idempotents.karoubi.decomp_id_i_to_karoubi -> CategoryTheory.Idempotents.Karoubi.decompId_i_toKaroubi is a dubious translation:
-lean 3 declaration is
- forall {C : Type.{u1}} [_inst_1 : CategoryTheory.Category.{u2, u1} C] (X : C), Eq.{succ u2} (Quiver.Hom.{succ u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.CategoryStruct.toQuiver.{u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Category.toCategoryStruct.{u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.CategoryTheory.category.{u1, u2} C _inst_1))) (CategoryTheory.Functor.obj.{u2, u2, u1, max u1 u2} C _inst_1 (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.CategoryTheory.category.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.toKaroubi.{u1, u2} C _inst_1) X) ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 (CategoryTheory.Functor.obj.{u2, u2, u1, max u1 u2} C _inst_1 (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.CategoryTheory.category.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.toKaroubi.{u1, u2} C _inst_1) X)))) (CategoryTheory.Idempotents.Karoubi.decompId_i.{u1, u2} C _inst_1 (CategoryTheory.Functor.obj.{u2, u2, u1, max u1 u2} C _inst_1 (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.CategoryTheory.category.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.toKaroubi.{u1, u2} C _inst_1) X)) (CategoryTheory.CategoryStruct.id.{u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Category.toCategoryStruct.{u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.CategoryTheory.category.{u1, u2} C _inst_1)) (CategoryTheory.Functor.obj.{u2, u2, u1, max u1 u2} C _inst_1 (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.CategoryTheory.category.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.toKaroubi.{u1, u2} C _inst_1) X))
-but is expected to have type
- forall {C : Type.{u1}} [_inst_1 : CategoryTheory.Category.{u2, u1} C] (X : C), Eq.{succ u2} (Quiver.Hom.{succ u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.CategoryStruct.toQuiver.{u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Category.toCategoryStruct.{u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.instCategoryKaroubi.{u1, u2} C _inst_1))) (Prefunctor.obj.{succ u2, succ u2, u1, max u1 u2} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1)) (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.CategoryStruct.toQuiver.{u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Category.toCategoryStruct.{u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.instCategoryKaroubi.{u1, u2} C _inst_1))) (CategoryTheory.Functor.toPrefunctor.{u2, u2, u1, max u1 u2} C _inst_1 (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.instCategoryKaroubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.toKaroubi.{u1, u2} C _inst_1)) X) (CategoryTheory.Idempotents.Karoubi.mk.{u1, u2} C _inst_1 (CategoryTheory.Idempotents.Karoubi.X.{u1, u2} C _inst_1 (Prefunctor.obj.{succ u2, succ u2, u1, max u1 u2} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1)) (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.CategoryStruct.toQuiver.{u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Category.toCategoryStruct.{u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.instCategoryKaroubi.{u1, u2} C _inst_1))) (CategoryTheory.Functor.toPrefunctor.{u2, u2, u1, max u1 u2} C _inst_1 (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.instCategoryKaroubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.toKaroubi.{u1, u2} C _inst_1)) X)) (CategoryTheory.CategoryStruct.id.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1) (CategoryTheory.Idempotents.Karoubi.X.{u1, u2} C _inst_1 (Prefunctor.obj.{succ u2, succ u2, u1, max u1 u2} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1)) (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.CategoryStruct.toQuiver.{u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Category.toCategoryStruct.{u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.instCategoryKaroubi.{u1, u2} C _inst_1))) (CategoryTheory.Functor.toPrefunctor.{u2, u2, u1, max u1 u2} C _inst_1 (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.instCategoryKaroubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.toKaroubi.{u1, u2} C _inst_1)) X))) (CategoryTheory.Idempotents.Karoubi.coe.proof_1.{u2, u1} C _inst_1 (CategoryTheory.Idempotents.Karoubi.X.{u1, u2} C _inst_1 (Prefunctor.obj.{succ u2, succ u2, u1, max u1 u2} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1)) (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.CategoryStruct.toQuiver.{u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Category.toCategoryStruct.{u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.instCategoryKaroubi.{u1, u2} C _inst_1))) (CategoryTheory.Functor.toPrefunctor.{u2, u2, u1, max u1 u2} C _inst_1 (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.instCategoryKaroubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.toKaroubi.{u1, u2} C _inst_1)) X))))) (CategoryTheory.Idempotents.Karoubi.decompId_i.{u1, u2} C _inst_1 (Prefunctor.obj.{succ u2, succ u2, u1, max u1 u2} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1)) (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.CategoryStruct.toQuiver.{u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Category.toCategoryStruct.{u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.instCategoryKaroubi.{u1, u2} C _inst_1))) (CategoryTheory.Functor.toPrefunctor.{u2, u2, u1, max u1 u2} C _inst_1 (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.instCategoryKaroubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.toKaroubi.{u1, u2} C _inst_1)) X)) (CategoryTheory.CategoryStruct.id.{u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Category.toCategoryStruct.{u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.instCategoryKaroubi.{u1, u2} C _inst_1)) (Prefunctor.obj.{succ u2, succ u2, u1, max u1 u2} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1)) (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.CategoryStruct.toQuiver.{u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Category.toCategoryStruct.{u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.instCategoryKaroubi.{u1, u2} C _inst_1))) (CategoryTheory.Functor.toPrefunctor.{u2, u2, u1, max u1 u2} C _inst_1 (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.instCategoryKaroubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.toKaroubi.{u1, u2} C _inst_1)) X))
-Case conversion may be inaccurate. Consider using '#align category_theory.idempotents.karoubi.decomp_id_i_to_karoubi CategoryTheory.Idempotents.Karoubi.decompId_i_toKaroubiₓ'. -/
theorem decompId_i_toKaroubi (X : C) : decompId_i ((toKaroubi C).obj X) = 𝟙 _ := by ext; rfl
#align category_theory.idempotents.karoubi.decomp_id_i_to_karoubi CategoryTheory.Idempotents.Karoubi.decompId_i_toKaroubi
-/- warning: category_theory.idempotents.karoubi.decomp_id_p_to_karoubi -> CategoryTheory.Idempotents.Karoubi.decompId_p_toKaroubi is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align category_theory.idempotents.karoubi.decomp_id_p_to_karoubi CategoryTheory.Idempotents.Karoubi.decompId_p_toKaroubiₓ'. -/
theorem decompId_p_toKaroubi (X : C) : decompId_p ((toKaroubi C).obj X) = 𝟙 _ := by ext; rfl
#align category_theory.idempotents.karoubi.decomp_id_p_to_karoubi CategoryTheory.Idempotents.Karoubi.decompId_p_toKaroubi
-/- warning: category_theory.idempotents.karoubi.decomp_id_i_naturality -> CategoryTheory.Idempotents.Karoubi.decompId_i_naturality is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align category_theory.idempotents.karoubi.decomp_id_i_naturality CategoryTheory.Idempotents.Karoubi.decompId_i_naturalityₓ'. -/
theorem decompId_i_naturality {P Q : Karoubi C} (f : P ⟶ Q) :
f ≫ decompId_i _ = decompId_i _ ≫ ⟨f.f, by erw [comp_id, id_comp]⟩ := by ext;
simp only [comp_f, decomp_id_i_f, karoubi.comp_p, karoubi.p_comp]
#align category_theory.idempotents.karoubi.decomp_id_i_naturality CategoryTheory.Idempotents.Karoubi.decompId_i_naturality
-/- warning: category_theory.idempotents.karoubi.decomp_id_p_naturality -> CategoryTheory.Idempotents.Karoubi.decompId_p_naturality is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align category_theory.idempotents.karoubi.decomp_id_p_naturality CategoryTheory.Idempotents.Karoubi.decompId_p_naturalityₓ'. -/
theorem decompId_p_naturality {P Q : Karoubi C} (f : P ⟶ Q) :
decompId_p P ≫ f =
(⟨f.f, by erw [comp_id, id_comp]⟩ : (P.pt : Karoubi C) ⟶ Q.pt) ≫ decompId_p Q :=
by ext; simp only [comp_f, decomp_id_p_f, karoubi.comp_p, karoubi.p_comp]
#align category_theory.idempotents.karoubi.decomp_id_p_naturality CategoryTheory.Idempotents.Karoubi.decompId_p_naturality
-/- warning: category_theory.idempotents.karoubi.zsmul_hom -> CategoryTheory.Idempotents.Karoubi.zsmul_hom is a dubious translation:
-lean 3 declaration is
- forall {C : Type.{u1}} [_inst_1 : CategoryTheory.Category.{u2, u1} C] [_inst_2 : CategoryTheory.Preadditive.{u2, u1} C _inst_1] {P : CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1} {Q : CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1} (n : Int) (f : Quiver.Hom.{succ u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.CategoryStruct.toQuiver.{u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Category.toCategoryStruct.{u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.CategoryTheory.category.{u1, u2} C _inst_1))) P Q), Eq.{succ u2} (Quiver.Hom.{succ u2, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1)) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 Q)) (CategoryTheory.Idempotents.Karoubi.Hom.f.{u1, u2} C _inst_1 P Q (SMul.smul.{0, u2} Int (Quiver.Hom.{succ u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.CategoryStruct.toQuiver.{u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Category.toCategoryStruct.{u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.CategoryTheory.category.{u1, u2} C _inst_1))) P Q) (SubNegMonoid.SMulInt.{u2} (Quiver.Hom.{succ u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.CategoryStruct.toQuiver.{u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Category.toCategoryStruct.{u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.CategoryTheory.category.{u1, u2} C _inst_1))) P Q) (AddGroup.toSubNegMonoid.{u2} (Quiver.Hom.{succ u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.CategoryStruct.toQuiver.{u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Category.toCategoryStruct.{u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.CategoryTheory.category.{u1, u2} C _inst_1))) P Q) (AddCommGroup.toAddGroup.{u2} (Quiver.Hom.{succ u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.CategoryStruct.toQuiver.{u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Category.toCategoryStruct.{u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.CategoryTheory.category.{u1, u2} C _inst_1))) P Q) (CategoryTheory.Idempotents.Quiver.Hom.addCommGroup.{u1, u2} C _inst_1 _inst_2 P Q)))) n f)) (SMul.smul.{0, u2} Int (Quiver.Hom.{succ u2, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1)) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 Q)) (SubNegMonoid.SMulInt.{u2} (Quiver.Hom.{succ u2, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1)) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 Q)) (AddGroup.toSubNegMonoid.{u2} (Quiver.Hom.{succ u2, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1)) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 Q)) (AddCommGroup.toAddGroup.{u2} (Quiver.Hom.{succ u2, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1)) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 Q)) (CategoryTheory.Preadditive.homGroup.{u2, u1} C _inst_1 _inst_2 (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 Q))))) n (CategoryTheory.Idempotents.Karoubi.Hom.f.{u1, u2} C _inst_1 P Q f))
-but is expected to have type
- forall {C : Type.{u1}} [_inst_1 : CategoryTheory.Category.{u2, u1} C] [_inst_2 : CategoryTheory.Preadditive.{u2, u1} C _inst_1] {P : CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1} {Q : CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1} (n : Int) (f : Quiver.Hom.{succ u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.CategoryStruct.toQuiver.{u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Category.toCategoryStruct.{u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.instCategoryKaroubi.{u1, u2} C _inst_1))) P Q), Eq.{succ u2} (Quiver.Hom.{succ u2, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1)) (CategoryTheory.Idempotents.Karoubi.X.{u1, u2} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.X.{u1, u2} C _inst_1 Q)) (CategoryTheory.Idempotents.Karoubi.Hom.f.{u1, u2} C _inst_1 P Q (HSMul.hSMul.{0, u2, u2} Int (Quiver.Hom.{succ u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.CategoryStruct.toQuiver.{u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Category.toCategoryStruct.{u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.instCategoryKaroubi.{u1, u2} C _inst_1))) P Q) (Quiver.Hom.{succ u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.CategoryStruct.toQuiver.{u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Category.toCategoryStruct.{u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.instCategoryKaroubi.{u1, u2} C _inst_1))) P Q) (instHSMul.{0, u2} Int (Quiver.Hom.{succ u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.CategoryStruct.toQuiver.{u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Category.toCategoryStruct.{u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.instCategoryKaroubi.{u1, u2} C _inst_1))) P Q) (SubNegMonoid.SMulInt.{u2} (Quiver.Hom.{succ u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.CategoryStruct.toQuiver.{u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Category.toCategoryStruct.{u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.instCategoryKaroubi.{u1, u2} C _inst_1))) P Q) (AddGroup.toSubNegMonoid.{u2} (Quiver.Hom.{succ u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.CategoryStruct.toQuiver.{u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Category.toCategoryStruct.{u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.instCategoryKaroubi.{u1, u2} C _inst_1))) P Q) (AddCommGroup.toAddGroup.{u2} (Quiver.Hom.{succ u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.CategoryStruct.toQuiver.{u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Category.toCategoryStruct.{u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.instCategoryKaroubi.{u1, u2} C _inst_1))) P Q) (CategoryTheory.Idempotents.instAddCommGroupHom.{u1, u2} C _inst_1 _inst_2 P Q))))) n f)) (HSMul.hSMul.{0, u2, u2} Int (Quiver.Hom.{succ u2, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1)) (CategoryTheory.Idempotents.Karoubi.X.{u1, u2} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.X.{u1, u2} C _inst_1 Q)) (Quiver.Hom.{succ u2, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1)) (CategoryTheory.Idempotents.Karoubi.X.{u1, u2} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.X.{u1, u2} C _inst_1 Q)) (instHSMul.{0, u2} Int (Quiver.Hom.{succ u2, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1)) (CategoryTheory.Idempotents.Karoubi.X.{u1, u2} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.X.{u1, u2} C _inst_1 Q)) (SubNegMonoid.SMulInt.{u2} (Quiver.Hom.{succ u2, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1)) (CategoryTheory.Idempotents.Karoubi.X.{u1, u2} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.X.{u1, u2} C _inst_1 Q)) (AddGroup.toSubNegMonoid.{u2} (Quiver.Hom.{succ u2, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1)) (CategoryTheory.Idempotents.Karoubi.X.{u1, u2} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.X.{u1, u2} C _inst_1 Q)) (AddCommGroup.toAddGroup.{u2} (Quiver.Hom.{succ u2, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1)) (CategoryTheory.Idempotents.Karoubi.X.{u1, u2} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.X.{u1, u2} C _inst_1 Q)) (CategoryTheory.Preadditive.homGroup.{u2, u1} C _inst_1 _inst_2 (CategoryTheory.Idempotents.Karoubi.X.{u1, u2} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.X.{u1, u2} C _inst_1 Q)))))) n (CategoryTheory.Idempotents.Karoubi.Hom.f.{u1, u2} C _inst_1 P Q f))
-Case conversion may be inaccurate. Consider using '#align category_theory.idempotents.karoubi.zsmul_hom CategoryTheory.Idempotents.Karoubi.zsmul_homₓ'. -/
@[simp]
theorem zsmul_hom [Preadditive C] {P Q : Karoubi C} (n : ℤ) (f : P ⟶ Q) : (n • f).f = n • f.f :=
map_zsmul (inclusionHom P Q) n f
mathlib commit https://github.com/leanprover-community/mathlib/commit/917c3c072e487b3cccdbfeff17e75b40e45f66cb
@@ -109,8 +109,7 @@ Case conversion may be inaccurate. Consider using '#align category_theory.idempo
theorem hom_ext_iff {P Q : Karoubi C} {f g : Hom P Q} : f = g ↔ f.f = g.f :=
by
constructor
- · intro h
- rw [h]
+ · intro h; rw [h]
· ext
#align category_theory.idempotents.karoubi.hom_ext CategoryTheory.Idempotents.Karoubi.hom_ext_iff
@@ -213,9 +212,7 @@ but is expected to have type
Case conversion may be inaccurate. Consider using '#align category_theory.idempotents.karoubi.eq_to_hom_f CategoryTheory.Idempotents.Karoubi.eqToHom_fₓ'. -/
@[simp]
theorem eqToHom_f {P Q : Karoubi C} (h : P = Q) :
- Karoubi.Hom.f (eqToHom h) = P.p ≫ eqToHom (congr_arg Karoubi.x h) :=
- by
- subst h
+ Karoubi.Hom.f (eqToHom h) = P.p ≫ eqToHom (congr_arg Karoubi.x h) := by subst h;
simp only [eq_to_hom_refl, karoubi.id_eq, comp_id]
#align category_theory.idempotents.karoubi.eq_to_hom_f CategoryTheory.Idempotents.Karoubi.eqToHom_f
@@ -251,20 +248,12 @@ instance [Preadditive C] {P Q : Karoubi C} : AddCommGroup (P ⟶ Q)
congr
exacts[f.comm, g.comm]⟩
zero := ⟨0, by simp only [comp_zero, zero_comp]⟩
- zero_add f := by
- ext
- simp only [zero_add]
- add_zero f := by
- ext
- simp only [add_zero]
+ zero_add f := by ext; simp only [zero_add]
+ add_zero f := by ext; simp only [add_zero]
add_assoc f g h' := by simp only [add_assoc]
- add_comm f g := by
- ext
- apply_rules [add_comm]
+ add_comm f g := by ext; apply_rules [add_comm]
neg f := ⟨-f.f, by simpa only [neg_comp, comp_neg, neg_inj] using f.comm⟩
- add_left_neg f := by
- ext
- apply_rules [add_left_neg]
+ add_left_neg f := by ext; apply_rules [add_left_neg]
namespace Karoubi
@@ -407,9 +396,7 @@ but is expected to have type
Case conversion may be inaccurate. Consider using '#align category_theory.idempotents.karoubi.decomp_id CategoryTheory.Idempotents.Karoubi.decompIdₓ'. -/
/-- The formal direct factor of `P.X` given by the idempotent `P.p` in the category `C`
is actually a direct factor in the category `karoubi C`. -/
-theorem decompId (P : Karoubi C) : 𝟙 P = decompId_i P ≫ decompId_p P :=
- by
- ext
+theorem decompId (P : Karoubi C) : 𝟙 P = decompId_i P ≫ decompId_p P := by ext;
simp only [comp_f, id_eq, P.idem, decomp_id_i, decomp_id_p]
#align category_theory.idempotents.karoubi.decomp_id CategoryTheory.Idempotents.Karoubi.decompId
@@ -419,9 +406,7 @@ lean 3 declaration is
but is expected to have type
forall {C : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u1, u2} C] (P : CategoryTheory.Idempotents.Karoubi.{u2, u1} C _inst_1), Eq.{succ u1} (Quiver.Hom.{succ u1, max u2 u1} (CategoryTheory.Idempotents.Karoubi.{u2, u1} C _inst_1) (CategoryTheory.CategoryStruct.toQuiver.{u1, max u2 u1} (CategoryTheory.Idempotents.Karoubi.{u2, u1} C _inst_1) (CategoryTheory.Category.toCategoryStruct.{u1, max u2 u1} (CategoryTheory.Idempotents.Karoubi.{u2, u1} C _inst_1) (CategoryTheory.Idempotents.Karoubi.instCategoryKaroubi.{u2, u1} C _inst_1))) (Prefunctor.obj.{succ u1, succ u1, u2, max u2 u1} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1)) (CategoryTheory.Idempotents.Karoubi.{u2, u1} C _inst_1) (CategoryTheory.CategoryStruct.toQuiver.{u1, max u2 u1} (CategoryTheory.Idempotents.Karoubi.{u2, u1} C _inst_1) (CategoryTheory.Category.toCategoryStruct.{u1, max u2 u1} (CategoryTheory.Idempotents.Karoubi.{u2, u1} C _inst_1) (CategoryTheory.Idempotents.Karoubi.instCategoryKaroubi.{u2, u1} C _inst_1))) (CategoryTheory.Functor.toPrefunctor.{u1, u1, u2, max u2 u1} C _inst_1 (CategoryTheory.Idempotents.Karoubi.{u2, u1} C _inst_1) (CategoryTheory.Idempotents.Karoubi.instCategoryKaroubi.{u2, u1} C _inst_1) (CategoryTheory.Idempotents.toKaroubi.{u2, u1} C _inst_1)) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 P)) (Prefunctor.obj.{succ u1, succ u1, u2, max u2 u1} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1)) (CategoryTheory.Idempotents.Karoubi.{u2, u1} C _inst_1) (CategoryTheory.CategoryStruct.toQuiver.{u1, max u2 u1} (CategoryTheory.Idempotents.Karoubi.{u2, u1} C _inst_1) (CategoryTheory.Category.toCategoryStruct.{u1, max u2 u1} (CategoryTheory.Idempotents.Karoubi.{u2, u1} C _inst_1) (CategoryTheory.Idempotents.Karoubi.instCategoryKaroubi.{u2, u1} C _inst_1))) (CategoryTheory.Functor.toPrefunctor.{u1, u1, u2, max u2 u1} C _inst_1 (CategoryTheory.Idempotents.Karoubi.{u2, u1} C _inst_1) (CategoryTheory.Idempotents.Karoubi.instCategoryKaroubi.{u2, u1} C _inst_1) (CategoryTheory.Idempotents.toKaroubi.{u2, u1} C _inst_1)) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 P))) (Prefunctor.map.{succ u1, succ u1, u2, max u2 u1} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1)) (CategoryTheory.Idempotents.Karoubi.{u2, u1} C _inst_1) (CategoryTheory.CategoryStruct.toQuiver.{u1, max u2 u1} (CategoryTheory.Idempotents.Karoubi.{u2, u1} C _inst_1) (CategoryTheory.Category.toCategoryStruct.{u1, max u2 u1} (CategoryTheory.Idempotents.Karoubi.{u2, u1} C _inst_1) (CategoryTheory.Idempotents.Karoubi.instCategoryKaroubi.{u2, u1} C _inst_1))) (CategoryTheory.Functor.toPrefunctor.{u1, u1, u2, max u2 u1} C _inst_1 (CategoryTheory.Idempotents.Karoubi.{u2, u1} C _inst_1) (CategoryTheory.Idempotents.Karoubi.instCategoryKaroubi.{u2, u1} C _inst_1) (CategoryTheory.Idempotents.toKaroubi.{u2, u1} C _inst_1)) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.p.{u2, u1} C _inst_1 P)) (CategoryTheory.CategoryStruct.comp.{u1, max u2 u1} (CategoryTheory.Idempotents.Karoubi.{u2, u1} C _inst_1) (CategoryTheory.Category.toCategoryStruct.{u1, max u2 u1} (CategoryTheory.Idempotents.Karoubi.{u2, u1} C _inst_1) (CategoryTheory.Idempotents.Karoubi.instCategoryKaroubi.{u2, u1} C _inst_1)) (CategoryTheory.Idempotents.Karoubi.mk.{u2, u1} C _inst_1 (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 P) (CategoryTheory.CategoryStruct.id.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 P)) (CategoryTheory.Idempotents.Karoubi.coe.proof_1.{u1, u2} C _inst_1 (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 P))) P (CategoryTheory.Idempotents.Karoubi.mk.{u2, u1} C _inst_1 (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 P) (CategoryTheory.CategoryStruct.id.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 P)) (CategoryTheory.Idempotents.Karoubi.coe.proof_1.{u1, u2} C _inst_1 (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 P))) (CategoryTheory.Idempotents.Karoubi.decompId_p.{u2, u1} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.decompId_i.{u2, u1} C _inst_1 P))
Case conversion may be inaccurate. Consider using '#align category_theory.idempotents.karoubi.decomp_p CategoryTheory.Idempotents.Karoubi.decomp_pₓ'. -/
-theorem decomp_p (P : Karoubi C) : (toKaroubi C).map P.p = decompId_p P ≫ decompId_i P :=
- by
- ext
+theorem decomp_p (P : Karoubi C) : (toKaroubi C).map P.p = decompId_p P ≫ decompId_i P := by ext;
simp only [comp_f, decomp_id_p_f, decomp_id_i_f, P.idem, to_karoubi_map_f]
#align category_theory.idempotents.karoubi.decomp_p CategoryTheory.Idempotents.Karoubi.decomp_p
@@ -431,28 +416,20 @@ lean 3 declaration is
but is expected to have type
forall {C : Type.{u1}} [_inst_1 : CategoryTheory.Category.{u2, u1} C] (X : C), Eq.{succ u2} (Quiver.Hom.{succ u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.CategoryStruct.toQuiver.{u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Category.toCategoryStruct.{u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.instCategoryKaroubi.{u1, u2} C _inst_1))) (Prefunctor.obj.{succ u2, succ u2, u1, max u1 u2} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1)) (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.CategoryStruct.toQuiver.{u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Category.toCategoryStruct.{u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.instCategoryKaroubi.{u1, u2} C _inst_1))) (CategoryTheory.Functor.toPrefunctor.{u2, u2, u1, max u1 u2} C _inst_1 (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.instCategoryKaroubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.toKaroubi.{u1, u2} C _inst_1)) X) (CategoryTheory.Idempotents.Karoubi.mk.{u1, u2} C _inst_1 (CategoryTheory.Idempotents.Karoubi.X.{u1, u2} C _inst_1 (Prefunctor.obj.{succ u2, succ u2, u1, max u1 u2} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1)) (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.CategoryStruct.toQuiver.{u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Category.toCategoryStruct.{u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.instCategoryKaroubi.{u1, u2} C _inst_1))) (CategoryTheory.Functor.toPrefunctor.{u2, u2, u1, max u1 u2} C _inst_1 (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.instCategoryKaroubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.toKaroubi.{u1, u2} C _inst_1)) X)) (CategoryTheory.CategoryStruct.id.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1) (CategoryTheory.Idempotents.Karoubi.X.{u1, u2} C _inst_1 (Prefunctor.obj.{succ u2, succ u2, u1, max u1 u2} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1)) (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.CategoryStruct.toQuiver.{u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Category.toCategoryStruct.{u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.instCategoryKaroubi.{u1, u2} C _inst_1))) (CategoryTheory.Functor.toPrefunctor.{u2, u2, u1, max u1 u2} C _inst_1 (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.instCategoryKaroubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.toKaroubi.{u1, u2} C _inst_1)) X))) (CategoryTheory.Idempotents.Karoubi.coe.proof_1.{u2, u1} C _inst_1 (CategoryTheory.Idempotents.Karoubi.X.{u1, u2} C _inst_1 (Prefunctor.obj.{succ u2, succ u2, u1, max u1 u2} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1)) (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.CategoryStruct.toQuiver.{u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Category.toCategoryStruct.{u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.instCategoryKaroubi.{u1, u2} C _inst_1))) (CategoryTheory.Functor.toPrefunctor.{u2, u2, u1, max u1 u2} C _inst_1 (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.instCategoryKaroubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.toKaroubi.{u1, u2} C _inst_1)) X))))) (CategoryTheory.Idempotents.Karoubi.decompId_i.{u1, u2} C _inst_1 (Prefunctor.obj.{succ u2, succ u2, u1, max u1 u2} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1)) (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.CategoryStruct.toQuiver.{u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Category.toCategoryStruct.{u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.instCategoryKaroubi.{u1, u2} C _inst_1))) (CategoryTheory.Functor.toPrefunctor.{u2, u2, u1, max u1 u2} C _inst_1 (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.instCategoryKaroubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.toKaroubi.{u1, u2} C _inst_1)) X)) (CategoryTheory.CategoryStruct.id.{u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Category.toCategoryStruct.{u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.instCategoryKaroubi.{u1, u2} C _inst_1)) (Prefunctor.obj.{succ u2, succ u2, u1, max u1 u2} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1)) (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.CategoryStruct.toQuiver.{u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Category.toCategoryStruct.{u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.instCategoryKaroubi.{u1, u2} C _inst_1))) (CategoryTheory.Functor.toPrefunctor.{u2, u2, u1, max u1 u2} C _inst_1 (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.instCategoryKaroubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.toKaroubi.{u1, u2} C _inst_1)) X))
Case conversion may be inaccurate. Consider using '#align category_theory.idempotents.karoubi.decomp_id_i_to_karoubi CategoryTheory.Idempotents.Karoubi.decompId_i_toKaroubiₓ'. -/
-theorem decompId_i_toKaroubi (X : C) : decompId_i ((toKaroubi C).obj X) = 𝟙 _ :=
- by
- ext
- rfl
+theorem decompId_i_toKaroubi (X : C) : decompId_i ((toKaroubi C).obj X) = 𝟙 _ := by ext; rfl
#align category_theory.idempotents.karoubi.decomp_id_i_to_karoubi CategoryTheory.Idempotents.Karoubi.decompId_i_toKaroubi
/- warning: category_theory.idempotents.karoubi.decomp_id_p_to_karoubi -> CategoryTheory.Idempotents.Karoubi.decompId_p_toKaroubi is a dubious translation:
<too large>
Case conversion may be inaccurate. Consider using '#align category_theory.idempotents.karoubi.decomp_id_p_to_karoubi CategoryTheory.Idempotents.Karoubi.decompId_p_toKaroubiₓ'. -/
-theorem decompId_p_toKaroubi (X : C) : decompId_p ((toKaroubi C).obj X) = 𝟙 _ :=
- by
- ext
- rfl
+theorem decompId_p_toKaroubi (X : C) : decompId_p ((toKaroubi C).obj X) = 𝟙 _ := by ext; rfl
#align category_theory.idempotents.karoubi.decomp_id_p_to_karoubi CategoryTheory.Idempotents.Karoubi.decompId_p_toKaroubi
/- warning: category_theory.idempotents.karoubi.decomp_id_i_naturality -> CategoryTheory.Idempotents.Karoubi.decompId_i_naturality is a dubious translation:
<too large>
Case conversion may be inaccurate. Consider using '#align category_theory.idempotents.karoubi.decomp_id_i_naturality CategoryTheory.Idempotents.Karoubi.decompId_i_naturalityₓ'. -/
theorem decompId_i_naturality {P Q : Karoubi C} (f : P ⟶ Q) :
- f ≫ decompId_i _ = decompId_i _ ≫ ⟨f.f, by erw [comp_id, id_comp]⟩ :=
- by
- ext
+ f ≫ decompId_i _ = decompId_i _ ≫ ⟨f.f, by erw [comp_id, id_comp]⟩ := by ext;
simp only [comp_f, decomp_id_i_f, karoubi.comp_p, karoubi.p_comp]
#align category_theory.idempotents.karoubi.decomp_id_i_naturality CategoryTheory.Idempotents.Karoubi.decompId_i_naturality
@@ -462,9 +439,7 @@ Case conversion may be inaccurate. Consider using '#align category_theory.idempo
theorem decompId_p_naturality {P Q : Karoubi C} (f : P ⟶ Q) :
decompId_p P ≫ f =
(⟨f.f, by erw [comp_id, id_comp]⟩ : (P.pt : Karoubi C) ⟶ Q.pt) ≫ decompId_p Q :=
- by
- ext
- simp only [comp_f, decomp_id_p_f, karoubi.comp_p, karoubi.p_comp]
+ by ext; simp only [comp_f, decomp_id_p_f, karoubi.comp_p, karoubi.p_comp]
#align category_theory.idempotents.karoubi.decomp_id_p_naturality CategoryTheory.Idempotents.Karoubi.decompId_p_naturality
/- warning: category_theory.idempotents.karoubi.zsmul_hom -> CategoryTheory.Idempotents.Karoubi.zsmul_hom is a dubious translation:
mathlib commit https://github.com/leanprover-community/mathlib/commit/917c3c072e487b3cccdbfeff17e75b40e45f66cb
@@ -171,10 +171,7 @@ theorem comp_f {P Q R : Karoubi C} (f : P ⟶ Q) (g : Q ⟶ R) : (f ≫ g).f = f
#align category_theory.idempotents.karoubi.comp_f CategoryTheory.Idempotents.Karoubi.comp_f
/- warning: category_theory.idempotents.karoubi.id_eq -> CategoryTheory.Idempotents.Karoubi.id_eq is a dubious translation:
-lean 3 declaration is
- forall {C : Type.{u1}} [_inst_1 : CategoryTheory.Category.{u2, u1} C] {P : CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1}, Eq.{succ u2} (Quiver.Hom.{succ u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.CategoryStruct.toQuiver.{u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Category.toCategoryStruct.{u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.CategoryTheory.category.{u1, u2} C _inst_1))) P P) (CategoryTheory.CategoryStruct.id.{u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Category.toCategoryStruct.{u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.CategoryTheory.category.{u1, u2} C _inst_1)) P) (CategoryTheory.Idempotents.Karoubi.Hom.mk.{u1, u2} C _inst_1 P P (CategoryTheory.Idempotents.Karoubi.p.{u1, u2} C _inst_1 P) (Eq.mpr.{0} (Eq.{succ u2} (Quiver.Hom.{succ u2, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1)) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P)) (CategoryTheory.Idempotents.Karoubi.p.{u1, u2} C _inst_1 P) (CategoryTheory.CategoryStruct.comp.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.p.{u1, u2} C _inst_1 P) (CategoryTheory.CategoryStruct.comp.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.p.{u1, u2} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.p.{u1, u2} C _inst_1 P)))) (Eq.{succ u2} (Quiver.Hom.{succ u2, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1)) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P)) (CategoryTheory.Idempotents.Karoubi.p.{u1, u2} C _inst_1 P) (CategoryTheory.CategoryStruct.comp.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.p.{u1, u2} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.p.{u1, u2} C _inst_1 P))) (id_tag Tactic.IdTag.rw (Eq.{1} Prop (Eq.{succ u2} (Quiver.Hom.{succ u2, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1)) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P)) (CategoryTheory.Idempotents.Karoubi.p.{u1, u2} C _inst_1 P) (CategoryTheory.CategoryStruct.comp.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.p.{u1, u2} C _inst_1 P) (CategoryTheory.CategoryStruct.comp.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.p.{u1, u2} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.p.{u1, u2} C _inst_1 P)))) (Eq.{succ u2} (Quiver.Hom.{succ u2, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1)) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P)) (CategoryTheory.Idempotents.Karoubi.p.{u1, u2} C _inst_1 P) (CategoryTheory.CategoryStruct.comp.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.p.{u1, u2} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.p.{u1, u2} C _inst_1 P)))) (Eq.ndrec.{0, succ u2} (Quiver.Hom.{succ u2, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1)) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P)) (CategoryTheory.CategoryStruct.comp.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.p.{u1, u2} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.p.{u1, u2} C _inst_1 P)) (fun (_a : Quiver.Hom.{succ u2, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1)) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P)) => Eq.{1} Prop (Eq.{succ u2} (Quiver.Hom.{succ u2, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1)) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P)) (CategoryTheory.Idempotents.Karoubi.p.{u1, u2} C _inst_1 P) (CategoryTheory.CategoryStruct.comp.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.p.{u1, u2} C _inst_1 P) (CategoryTheory.CategoryStruct.comp.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.p.{u1, u2} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.p.{u1, u2} C _inst_1 P)))) (Eq.{succ u2} (Quiver.Hom.{succ u2, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1)) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P)) (CategoryTheory.Idempotents.Karoubi.p.{u1, u2} C _inst_1 P) (CategoryTheory.CategoryStruct.comp.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.p.{u1, u2} C _inst_1 P) _a))) (rfl.{1} Prop (Eq.{succ u2} (Quiver.Hom.{succ u2, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1)) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P)) (CategoryTheory.Idempotents.Karoubi.p.{u1, u2} C _inst_1 P) (CategoryTheory.CategoryStruct.comp.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.p.{u1, u2} C _inst_1 P) (CategoryTheory.CategoryStruct.comp.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.p.{u1, u2} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.p.{u1, u2} C _inst_1 P))))) (CategoryTheory.Idempotents.Karoubi.p.{u1, u2} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.idem.{u1, u2} C _inst_1 P))) (Eq.mpr.{0} (Eq.{succ u2} (Quiver.Hom.{succ u2, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1)) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P)) (CategoryTheory.Idempotents.Karoubi.p.{u1, u2} C _inst_1 P) (CategoryTheory.CategoryStruct.comp.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.p.{u1, u2} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.p.{u1, u2} C _inst_1 P))) (Eq.{succ u2} (Quiver.Hom.{succ u2, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1)) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P)) (CategoryTheory.Idempotents.Karoubi.p.{u1, u2} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.p.{u1, u2} C _inst_1 P)) (id_tag Tactic.IdTag.rw (Eq.{1} Prop (Eq.{succ u2} (Quiver.Hom.{succ u2, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1)) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P)) (CategoryTheory.Idempotents.Karoubi.p.{u1, u2} C _inst_1 P) (CategoryTheory.CategoryStruct.comp.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.p.{u1, u2} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.p.{u1, u2} C _inst_1 P))) (Eq.{succ u2} (Quiver.Hom.{succ u2, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1)) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P)) (CategoryTheory.Idempotents.Karoubi.p.{u1, u2} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.p.{u1, u2} C _inst_1 P))) (Eq.ndrec.{0, succ u2} (Quiver.Hom.{succ u2, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1)) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P)) (CategoryTheory.CategoryStruct.comp.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.p.{u1, u2} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.p.{u1, u2} C _inst_1 P)) (fun (_a : Quiver.Hom.{succ u2, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1)) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P)) => Eq.{1} Prop (Eq.{succ u2} (Quiver.Hom.{succ u2, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1)) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P)) (CategoryTheory.Idempotents.Karoubi.p.{u1, u2} C _inst_1 P) (CategoryTheory.CategoryStruct.comp.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.p.{u1, u2} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.p.{u1, u2} C _inst_1 P))) (Eq.{succ u2} (Quiver.Hom.{succ u2, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1)) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P)) (CategoryTheory.Idempotents.Karoubi.p.{u1, u2} C _inst_1 P) _a)) (rfl.{1} Prop (Eq.{succ u2} (Quiver.Hom.{succ u2, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1)) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P)) (CategoryTheory.Idempotents.Karoubi.p.{u1, u2} C _inst_1 P) (CategoryTheory.CategoryStruct.comp.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.p.{u1, u2} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.p.{u1, u2} C _inst_1 P)))) (CategoryTheory.Idempotents.Karoubi.p.{u1, u2} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.idem.{u1, u2} C _inst_1 P))) (rfl.{succ u2} (Quiver.Hom.{succ u2, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1)) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P)) (CategoryTheory.Idempotents.Karoubi.p.{u1, u2} C _inst_1 P)))))
-but is expected to have type
- forall {C : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u1, u2} C] {P : CategoryTheory.Idempotents.Karoubi.{u2, u1} C _inst_1}, Eq.{succ u1} (Quiver.Hom.{succ u1, max u2 u1} (CategoryTheory.Idempotents.Karoubi.{u2, u1} C _inst_1) (CategoryTheory.CategoryStruct.toQuiver.{u1, max u2 u1} (CategoryTheory.Idempotents.Karoubi.{u2, u1} C _inst_1) (CategoryTheory.Category.toCategoryStruct.{u1, max u2 u1} (CategoryTheory.Idempotents.Karoubi.{u2, u1} C _inst_1) (CategoryTheory.Idempotents.Karoubi.instCategoryKaroubi.{u2, u1} C _inst_1))) P P) (CategoryTheory.CategoryStruct.id.{u1, max u2 u1} (CategoryTheory.Idempotents.Karoubi.{u2, u1} C _inst_1) (CategoryTheory.Category.toCategoryStruct.{u1, max u2 u1} (CategoryTheory.Idempotents.Karoubi.{u2, u1} C _inst_1) (CategoryTheory.Idempotents.Karoubi.instCategoryKaroubi.{u2, u1} C _inst_1)) P) (CategoryTheory.Idempotents.Karoubi.Hom.mk.{u2, u1} C _inst_1 P P (CategoryTheory.Idempotents.Karoubi.p.{u2, u1} C _inst_1 P) (Eq.mpr.{0} (Eq.{succ u1} (Quiver.Hom.{succ u1, u2} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1)) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 P)) (CategoryTheory.Idempotents.Karoubi.p.{u2, u1} C _inst_1 P) (CategoryTheory.CategoryStruct.comp.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.p.{u2, u1} C _inst_1 P) (CategoryTheory.CategoryStruct.comp.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.p.{u2, u1} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.p.{u2, u1} C _inst_1 P)))) (Eq.{succ u1} (Quiver.Hom.{succ u1, u2} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1)) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 P)) (CategoryTheory.Idempotents.Karoubi.p.{u2, u1} C _inst_1 P) (CategoryTheory.CategoryStruct.comp.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.p.{u2, u1} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.p.{u2, u1} C _inst_1 P))) (id.{0} (Eq.{1} Prop (Eq.{succ u1} (Quiver.Hom.{succ u1, u2} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1)) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 P)) (CategoryTheory.Idempotents.Karoubi.p.{u2, u1} C _inst_1 P) (CategoryTheory.CategoryStruct.comp.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.p.{u2, u1} C _inst_1 P) (CategoryTheory.CategoryStruct.comp.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.p.{u2, u1} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.p.{u2, u1} C _inst_1 P)))) (Eq.{succ u1} (Quiver.Hom.{succ u1, u2} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1)) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 P)) (CategoryTheory.Idempotents.Karoubi.p.{u2, u1} C _inst_1 P) (CategoryTheory.CategoryStruct.comp.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.p.{u2, u1} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.p.{u2, u1} C _inst_1 P)))) (Eq.ndrec.{0, succ u1} (Quiver.Hom.{succ u1, u2} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1)) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 P)) (CategoryTheory.CategoryStruct.comp.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.p.{u2, u1} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.p.{u2, u1} C _inst_1 P)) (fun (_a : Quiver.Hom.{succ u1, u2} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1)) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 P)) => Eq.{1} Prop (Eq.{succ u1} (Quiver.Hom.{succ u1, u2} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1)) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 P)) (CategoryTheory.Idempotents.Karoubi.p.{u2, u1} C _inst_1 P) (CategoryTheory.CategoryStruct.comp.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.p.{u2, u1} C _inst_1 P) (CategoryTheory.CategoryStruct.comp.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.p.{u2, u1} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.p.{u2, u1} C _inst_1 P)))) (Eq.{succ u1} (Quiver.Hom.{succ u1, u2} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1)) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 P)) (CategoryTheory.Idempotents.Karoubi.p.{u2, u1} C _inst_1 P) (CategoryTheory.CategoryStruct.comp.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.p.{u2, u1} C _inst_1 P) _a))) (Eq.refl.{1} Prop (Eq.{succ u1} (Quiver.Hom.{succ u1, u2} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1)) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 P)) (CategoryTheory.Idempotents.Karoubi.p.{u2, u1} C _inst_1 P) (CategoryTheory.CategoryStruct.comp.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.p.{u2, u1} C _inst_1 P) (CategoryTheory.CategoryStruct.comp.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.p.{u2, u1} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.p.{u2, u1} C _inst_1 P))))) (CategoryTheory.Idempotents.Karoubi.p.{u2, u1} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.idem.{u2, u1} C _inst_1 P))) (Eq.mpr.{0} (Eq.{succ u1} (Quiver.Hom.{succ u1, u2} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1)) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 P)) (CategoryTheory.Idempotents.Karoubi.p.{u2, u1} C _inst_1 P) (CategoryTheory.CategoryStruct.comp.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.p.{u2, u1} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.p.{u2, u1} C _inst_1 P))) (Eq.{succ u1} (Quiver.Hom.{succ u1, u2} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1)) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 P)) (CategoryTheory.Idempotents.Karoubi.p.{u2, u1} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.p.{u2, u1} C _inst_1 P)) (id.{0} (Eq.{1} Prop (Eq.{succ u1} (Quiver.Hom.{succ u1, u2} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1)) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 P)) (CategoryTheory.Idempotents.Karoubi.p.{u2, u1} C _inst_1 P) (CategoryTheory.CategoryStruct.comp.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.p.{u2, u1} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.p.{u2, u1} C _inst_1 P))) (Eq.{succ u1} (Quiver.Hom.{succ u1, u2} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1)) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 P)) (CategoryTheory.Idempotents.Karoubi.p.{u2, u1} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.p.{u2, u1} C _inst_1 P))) (Eq.ndrec.{0, succ u1} (Quiver.Hom.{succ u1, u2} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1)) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 P)) (CategoryTheory.CategoryStruct.comp.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.p.{u2, u1} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.p.{u2, u1} C _inst_1 P)) (fun (_a : Quiver.Hom.{succ u1, u2} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1)) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 P)) => Eq.{1} Prop (Eq.{succ u1} (Quiver.Hom.{succ u1, u2} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1)) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 P)) (CategoryTheory.Idempotents.Karoubi.p.{u2, u1} C _inst_1 P) (CategoryTheory.CategoryStruct.comp.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.p.{u2, u1} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.p.{u2, u1} C _inst_1 P))) (Eq.{succ u1} (Quiver.Hom.{succ u1, u2} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1)) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 P)) (CategoryTheory.Idempotents.Karoubi.p.{u2, u1} C _inst_1 P) _a)) (Eq.refl.{1} Prop (Eq.{succ u1} (Quiver.Hom.{succ u1, u2} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1)) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 P)) (CategoryTheory.Idempotents.Karoubi.p.{u2, u1} C _inst_1 P) (CategoryTheory.CategoryStruct.comp.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.p.{u2, u1} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.p.{u2, u1} C _inst_1 P)))) (CategoryTheory.Idempotents.Karoubi.p.{u2, u1} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.idem.{u2, u1} C _inst_1 P))) (Eq.refl.{succ u1} (Quiver.Hom.{succ u1, u2} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1)) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 P)) (CategoryTheory.Idempotents.Karoubi.p.{u2, u1} C _inst_1 P)))))
+<too large>
Case conversion may be inaccurate. Consider using '#align category_theory.idempotents.karoubi.id_eq CategoryTheory.Idempotents.Karoubi.id_eqₓ'. -/
@[simp]
theorem id_eq {P : Karoubi C} : 𝟙 P = ⟨P.p, by repeat' rw [P.idem]⟩ := by rfl
@@ -441,10 +438,7 @@ theorem decompId_i_toKaroubi (X : C) : decompId_i ((toKaroubi C).obj X) = 𝟙 _
#align category_theory.idempotents.karoubi.decomp_id_i_to_karoubi CategoryTheory.Idempotents.Karoubi.decompId_i_toKaroubi
/- warning: category_theory.idempotents.karoubi.decomp_id_p_to_karoubi -> CategoryTheory.Idempotents.Karoubi.decompId_p_toKaroubi is a dubious translation:
-lean 3 declaration is
- forall {C : Type.{u1}} [_inst_1 : CategoryTheory.Category.{u2, u1} C] (X : C), Eq.{succ u2} (Quiver.Hom.{succ u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.CategoryStruct.toQuiver.{u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Category.toCategoryStruct.{u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.CategoryTheory.category.{u1, u2} C _inst_1))) ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 (CategoryTheory.Functor.obj.{u2, u2, u1, max u1 u2} C _inst_1 (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.CategoryTheory.category.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.toKaroubi.{u1, u2} C _inst_1) X))) (CategoryTheory.Functor.obj.{u2, u2, u1, max u1 u2} C _inst_1 (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.CategoryTheory.category.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.toKaroubi.{u1, u2} C _inst_1) X)) (CategoryTheory.Idempotents.Karoubi.decompId_p.{u1, u2} C _inst_1 (CategoryTheory.Functor.obj.{u2, u2, u1, max u1 u2} C _inst_1 (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.CategoryTheory.category.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.toKaroubi.{u1, u2} C _inst_1) X)) (CategoryTheory.CategoryStruct.id.{u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Category.toCategoryStruct.{u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.CategoryTheory.category.{u1, u2} C _inst_1)) ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 (CategoryTheory.Functor.obj.{u2, u2, u1, max u1 u2} C _inst_1 (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.CategoryTheory.category.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.toKaroubi.{u1, u2} C _inst_1) X))))
-but is expected to have type
- forall {C : Type.{u1}} [_inst_1 : CategoryTheory.Category.{u2, u1} C] (X : C), Eq.{succ u2} (Quiver.Hom.{succ u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.CategoryStruct.toQuiver.{u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Category.toCategoryStruct.{u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.instCategoryKaroubi.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.mk.{u1, u2} C _inst_1 (CategoryTheory.Idempotents.Karoubi.X.{u1, u2} C _inst_1 (Prefunctor.obj.{succ u2, succ u2, u1, max u1 u2} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1)) (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.CategoryStruct.toQuiver.{u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Category.toCategoryStruct.{u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.instCategoryKaroubi.{u1, u2} C _inst_1))) (CategoryTheory.Functor.toPrefunctor.{u2, u2, u1, max u1 u2} C _inst_1 (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.instCategoryKaroubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.toKaroubi.{u1, u2} C _inst_1)) X)) (CategoryTheory.CategoryStruct.id.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1) (CategoryTheory.Idempotents.Karoubi.X.{u1, u2} C _inst_1 (Prefunctor.obj.{succ u2, succ u2, u1, max u1 u2} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1)) (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.CategoryStruct.toQuiver.{u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Category.toCategoryStruct.{u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.instCategoryKaroubi.{u1, u2} C _inst_1))) (CategoryTheory.Functor.toPrefunctor.{u2, u2, u1, max u1 u2} C _inst_1 (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.instCategoryKaroubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.toKaroubi.{u1, u2} C _inst_1)) X))) (CategoryTheory.Idempotents.Karoubi.coe.proof_1.{u2, u1} C _inst_1 (CategoryTheory.Idempotents.Karoubi.X.{u1, u2} C _inst_1 (Prefunctor.obj.{succ u2, succ u2, u1, max u1 u2} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1)) (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.CategoryStruct.toQuiver.{u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Category.toCategoryStruct.{u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.instCategoryKaroubi.{u1, u2} C _inst_1))) (CategoryTheory.Functor.toPrefunctor.{u2, u2, u1, max u1 u2} C _inst_1 (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.instCategoryKaroubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.toKaroubi.{u1, u2} C _inst_1)) X)))) (Prefunctor.obj.{succ u2, succ u2, u1, max u1 u2} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1)) (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.CategoryStruct.toQuiver.{u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Category.toCategoryStruct.{u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.instCategoryKaroubi.{u1, u2} C _inst_1))) (CategoryTheory.Functor.toPrefunctor.{u2, u2, u1, max u1 u2} C _inst_1 (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.instCategoryKaroubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.toKaroubi.{u1, u2} C _inst_1)) X)) (CategoryTheory.Idempotents.Karoubi.decompId_p.{u1, u2} C _inst_1 (Prefunctor.obj.{succ u2, succ u2, u1, max u1 u2} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1)) (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.CategoryStruct.toQuiver.{u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Category.toCategoryStruct.{u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.instCategoryKaroubi.{u1, u2} C _inst_1))) (CategoryTheory.Functor.toPrefunctor.{u2, u2, u1, max u1 u2} C _inst_1 (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.instCategoryKaroubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.toKaroubi.{u1, u2} C _inst_1)) X)) (CategoryTheory.CategoryStruct.id.{u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Category.toCategoryStruct.{u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.instCategoryKaroubi.{u1, u2} C _inst_1)) (CategoryTheory.Idempotents.Karoubi.mk.{u1, u2} C _inst_1 (CategoryTheory.Idempotents.Karoubi.X.{u1, u2} C _inst_1 (Prefunctor.obj.{succ u2, succ u2, u1, max u1 u2} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1)) (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.CategoryStruct.toQuiver.{u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Category.toCategoryStruct.{u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.instCategoryKaroubi.{u1, u2} C _inst_1))) (CategoryTheory.Functor.toPrefunctor.{u2, u2, u1, max u1 u2} C _inst_1 (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.instCategoryKaroubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.toKaroubi.{u1, u2} C _inst_1)) X)) (CategoryTheory.CategoryStruct.id.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1) (CategoryTheory.Idempotents.Karoubi.X.{u1, u2} C _inst_1 (Prefunctor.obj.{succ u2, succ u2, u1, max u1 u2} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1)) (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.CategoryStruct.toQuiver.{u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Category.toCategoryStruct.{u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.instCategoryKaroubi.{u1, u2} C _inst_1))) (CategoryTheory.Functor.toPrefunctor.{u2, u2, u1, max u1 u2} C _inst_1 (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.instCategoryKaroubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.toKaroubi.{u1, u2} C _inst_1)) X))) (CategoryTheory.Idempotents.Karoubi.coe.proof_1.{u2, u1} C _inst_1 (CategoryTheory.Idempotents.Karoubi.X.{u1, u2} C _inst_1 (Prefunctor.obj.{succ u2, succ u2, u1, max u1 u2} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1)) (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.CategoryStruct.toQuiver.{u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Category.toCategoryStruct.{u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.instCategoryKaroubi.{u1, u2} C _inst_1))) (CategoryTheory.Functor.toPrefunctor.{u2, u2, u1, max u1 u2} C _inst_1 (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.instCategoryKaroubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.toKaroubi.{u1, u2} C _inst_1)) X)))))
+<too large>
Case conversion may be inaccurate. Consider using '#align category_theory.idempotents.karoubi.decomp_id_p_to_karoubi CategoryTheory.Idempotents.Karoubi.decompId_p_toKaroubiₓ'. -/
theorem decompId_p_toKaroubi (X : C) : decompId_p ((toKaroubi C).obj X) = 𝟙 _ :=
by
@@ -453,10 +447,7 @@ theorem decompId_p_toKaroubi (X : C) : decompId_p ((toKaroubi C).obj X) = 𝟙 _
#align category_theory.idempotents.karoubi.decomp_id_p_to_karoubi CategoryTheory.Idempotents.Karoubi.decompId_p_toKaroubi
/- warning: category_theory.idempotents.karoubi.decomp_id_i_naturality -> CategoryTheory.Idempotents.Karoubi.decompId_i_naturality is a dubious translation:
-lean 3 declaration is
- forall {C : Type.{u1}} [_inst_1 : CategoryTheory.Category.{u2, u1} C] {P : CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1} {Q : CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1} (f : Quiver.Hom.{succ u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.CategoryStruct.toQuiver.{u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Category.toCategoryStruct.{u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.CategoryTheory.category.{u1, u2} C _inst_1))) P Q), Eq.{succ u2} (Quiver.Hom.{succ u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.CategoryStruct.toQuiver.{u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Category.toCategoryStruct.{u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.CategoryTheory.category.{u1, u2} C _inst_1))) P ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 Q))) (CategoryTheory.CategoryStruct.comp.{u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Category.toCategoryStruct.{u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.CategoryTheory.category.{u1, u2} C _inst_1)) P Q ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 Q)) f (CategoryTheory.Idempotents.Karoubi.decompId_i.{u1, u2} C _inst_1 Q)) (CategoryTheory.CategoryStruct.comp.{u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Category.toCategoryStruct.{u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.CategoryTheory.category.{u1, u2} C _inst_1)) P ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P)) ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 Q)) (CategoryTheory.Idempotents.Karoubi.decompId_i.{u1, u2} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.Hom.mk.{u1, u2} C _inst_1 ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P)) ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 Q)) (CategoryTheory.Idempotents.Karoubi.Hom.f.{u1, u2} C _inst_1 P Q f) (Eq.mpr.{0} (Eq.{succ u2} (Quiver.Hom.{succ u2, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1)) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 Q)))) (CategoryTheory.Idempotents.Karoubi.Hom.f.{u1, u2} C _inst_1 P Q f) (CategoryTheory.CategoryStruct.comp.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 Q))) (CategoryTheory.Idempotents.Karoubi.p.{u1, u2} C _inst_1 ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P))) (CategoryTheory.CategoryStruct.comp.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 Q))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 Q))) (CategoryTheory.Idempotents.Karoubi.Hom.f.{u1, u2} C _inst_1 P Q f) (CategoryTheory.Idempotents.Karoubi.p.{u1, u2} C _inst_1 ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 Q)))))) (Eq.{succ u2} (Quiver.Hom.{succ u2, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1)) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 Q)))) (CategoryTheory.Idempotents.Karoubi.Hom.f.{u1, u2} C _inst_1 P Q f) (CategoryTheory.CategoryStruct.comp.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 Q))) (CategoryTheory.Idempotents.Karoubi.p.{u1, u2} C _inst_1 ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P))) (CategoryTheory.Idempotents.Karoubi.Hom.f.{u1, u2} C _inst_1 P Q f))) (id_tag Tactic.IdTag.rw (Eq.{1} Prop (Eq.{succ u2} (Quiver.Hom.{succ u2, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1)) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 Q)))) (CategoryTheory.Idempotents.Karoubi.Hom.f.{u1, u2} C _inst_1 P Q f) (CategoryTheory.CategoryStruct.comp.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 Q))) (CategoryTheory.Idempotents.Karoubi.p.{u1, u2} C _inst_1 ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P))) (CategoryTheory.CategoryStruct.comp.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 Q))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 Q))) (CategoryTheory.Idempotents.Karoubi.Hom.f.{u1, u2} C _inst_1 P Q f) (CategoryTheory.Idempotents.Karoubi.p.{u1, u2} C _inst_1 ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 Q)))))) (Eq.{succ u2} (Quiver.Hom.{succ u2, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1)) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 Q)))) (CategoryTheory.Idempotents.Karoubi.Hom.f.{u1, u2} C _inst_1 P Q f) (CategoryTheory.CategoryStruct.comp.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 Q))) (CategoryTheory.Idempotents.Karoubi.p.{u1, u2} C _inst_1 ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P))) (CategoryTheory.Idempotents.Karoubi.Hom.f.{u1, u2} C _inst_1 P Q f)))) (Eq.ndrec.{0, succ u2} (Quiver.Hom.{succ u2, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1)) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 Q)))) (CategoryTheory.CategoryStruct.comp.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 Q))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 Q))) (CategoryTheory.Idempotents.Karoubi.Hom.f.{u1, u2} C _inst_1 P Q f) (CategoryTheory.CategoryStruct.id.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 Q))))) (fun (_a : Quiver.Hom.{succ u2, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1)) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 Q)))) => Eq.{1} Prop (Eq.{succ u2} (Quiver.Hom.{succ u2, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1)) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 Q)))) (CategoryTheory.Idempotents.Karoubi.Hom.f.{u1, u2} C _inst_1 P Q f) (CategoryTheory.CategoryStruct.comp.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 Q))) (CategoryTheory.Idempotents.Karoubi.p.{u1, u2} C _inst_1 ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P))) (CategoryTheory.CategoryStruct.comp.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 Q))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 Q))) (CategoryTheory.Idempotents.Karoubi.Hom.f.{u1, u2} C _inst_1 P Q f) (CategoryTheory.Idempotents.Karoubi.p.{u1, u2} C _inst_1 ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 Q)))))) (Eq.{succ u2} (Quiver.Hom.{succ u2, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1)) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 Q)))) (CategoryTheory.Idempotents.Karoubi.Hom.f.{u1, u2} C _inst_1 P Q f) (CategoryTheory.CategoryStruct.comp.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 Q))) (CategoryTheory.Idempotents.Karoubi.p.{u1, u2} C _inst_1 ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P))) _a))) (rfl.{1} Prop (Eq.{succ u2} (Quiver.Hom.{succ u2, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1)) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 Q)))) (CategoryTheory.Idempotents.Karoubi.Hom.f.{u1, u2} C _inst_1 P Q f) (CategoryTheory.CategoryStruct.comp.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 Q))) (CategoryTheory.Idempotents.Karoubi.p.{u1, u2} C _inst_1 ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P))) (CategoryTheory.CategoryStruct.comp.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 Q))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 Q))) (CategoryTheory.Idempotents.Karoubi.Hom.f.{u1, u2} C _inst_1 P Q f) (CategoryTheory.Idempotents.Karoubi.p.{u1, u2} C _inst_1 ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 Q))))))) (CategoryTheory.Idempotents.Karoubi.Hom.f.{u1, u2} C _inst_1 P Q f) (CategoryTheory.Category.comp_id.{u2, u1} C _inst_1 (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 Q))) (CategoryTheory.Idempotents.Karoubi.Hom.f.{u1, u2} C _inst_1 P Q f)))) (Eq.mpr.{0} (Eq.{succ u2} (Quiver.Hom.{succ u2, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1)) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 Q)))) (CategoryTheory.Idempotents.Karoubi.Hom.f.{u1, u2} C _inst_1 P Q f) (CategoryTheory.CategoryStruct.comp.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 Q))) (CategoryTheory.Idempotents.Karoubi.p.{u1, u2} C _inst_1 ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P))) (CategoryTheory.Idempotents.Karoubi.Hom.f.{u1, u2} C _inst_1 P Q f))) (Eq.{succ u2} (Quiver.Hom.{succ u2, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1)) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 Q)))) (CategoryTheory.Idempotents.Karoubi.Hom.f.{u1, u2} C _inst_1 P Q f) (CategoryTheory.Idempotents.Karoubi.Hom.f.{u1, u2} C _inst_1 P Q f)) (id_tag Tactic.IdTag.rw (Eq.{1} Prop (Eq.{succ u2} (Quiver.Hom.{succ u2, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1)) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 Q)))) (CategoryTheory.Idempotents.Karoubi.Hom.f.{u1, u2} C _inst_1 P Q f) (CategoryTheory.CategoryStruct.comp.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 Q))) (CategoryTheory.Idempotents.Karoubi.p.{u1, u2} C _inst_1 ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P))) (CategoryTheory.Idempotents.Karoubi.Hom.f.{u1, u2} C _inst_1 P Q f))) (Eq.{succ u2} (Quiver.Hom.{succ u2, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1)) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 Q)))) (CategoryTheory.Idempotents.Karoubi.Hom.f.{u1, u2} C _inst_1 P Q f) (CategoryTheory.Idempotents.Karoubi.Hom.f.{u1, u2} C _inst_1 P Q f))) (Eq.ndrec.{0, succ u2} (Quiver.Hom.{succ u2, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1)) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 Q)))) (CategoryTheory.CategoryStruct.comp.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 Q))) (CategoryTheory.CategoryStruct.id.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P)))) (CategoryTheory.Idempotents.Karoubi.Hom.f.{u1, u2} C _inst_1 P Q f)) (fun (_a : Quiver.Hom.{succ u2, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1)) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 Q)))) => Eq.{1} Prop (Eq.{succ u2} (Quiver.Hom.{succ u2, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1)) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 Q)))) (CategoryTheory.Idempotents.Karoubi.Hom.f.{u1, u2} C _inst_1 P Q f) (CategoryTheory.CategoryStruct.comp.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 Q))) (CategoryTheory.Idempotents.Karoubi.p.{u1, u2} C _inst_1 ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P))) (CategoryTheory.Idempotents.Karoubi.Hom.f.{u1, u2} C _inst_1 P Q f))) (Eq.{succ u2} (Quiver.Hom.{succ u2, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1)) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 Q)))) (CategoryTheory.Idempotents.Karoubi.Hom.f.{u1, u2} C _inst_1 P Q f) _a)) (rfl.{1} Prop (Eq.{succ u2} (Quiver.Hom.{succ u2, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1)) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 Q)))) (CategoryTheory.Idempotents.Karoubi.Hom.f.{u1, u2} C _inst_1 P Q f) (CategoryTheory.CategoryStruct.comp.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 Q))) (CategoryTheory.Idempotents.Karoubi.p.{u1, u2} C _inst_1 ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P))) (CategoryTheory.Idempotents.Karoubi.Hom.f.{u1, u2} C _inst_1 P Q f)))) (CategoryTheory.Idempotents.Karoubi.Hom.f.{u1, u2} C _inst_1 P Q f) (CategoryTheory.Category.id_comp.{u2, u1} C _inst_1 (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 Q))) (CategoryTheory.Idempotents.Karoubi.Hom.f.{u1, u2} C _inst_1 P Q f)))) (rfl.{succ u2} (Quiver.Hom.{succ u2, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1)) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 Q)))) (CategoryTheory.Idempotents.Karoubi.Hom.f.{u1, u2} C _inst_1 P Q f))))))
-but is expected to have type
- forall {C : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u1, u2} C] {P : CategoryTheory.Idempotents.Karoubi.{u2, u1} C _inst_1} {Q : CategoryTheory.Idempotents.Karoubi.{u2, u1} C _inst_1} (f : Quiver.Hom.{succ u1, max u2 u1} (CategoryTheory.Idempotents.Karoubi.{u2, u1} C _inst_1) (CategoryTheory.CategoryStruct.toQuiver.{u1, max u2 u1} (CategoryTheory.Idempotents.Karoubi.{u2, u1} C _inst_1) (CategoryTheory.Category.toCategoryStruct.{u1, max u2 u1} (CategoryTheory.Idempotents.Karoubi.{u2, u1} C _inst_1) (CategoryTheory.Idempotents.Karoubi.instCategoryKaroubi.{u2, u1} C _inst_1))) P Q), Eq.{succ u1} (Quiver.Hom.{succ u1, max u2 u1} (CategoryTheory.Idempotents.Karoubi.{u2, u1} C _inst_1) (CategoryTheory.CategoryStruct.toQuiver.{u1, max u2 u1} (CategoryTheory.Idempotents.Karoubi.{u2, u1} C _inst_1) (CategoryTheory.Category.toCategoryStruct.{u1, max u2 u1} (CategoryTheory.Idempotents.Karoubi.{u2, u1} C _inst_1) (CategoryTheory.Idempotents.Karoubi.instCategoryKaroubi.{u2, u1} C _inst_1))) P (CategoryTheory.Idempotents.Karoubi.mk.{u2, u1} C _inst_1 (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 Q) (CategoryTheory.CategoryStruct.id.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 Q)) (CategoryTheory.Idempotents.Karoubi.coe.proof_1.{u1, u2} C _inst_1 (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 Q)))) (CategoryTheory.CategoryStruct.comp.{u1, max u2 u1} (CategoryTheory.Idempotents.Karoubi.{u2, u1} C _inst_1) (CategoryTheory.Category.toCategoryStruct.{u1, max u2 u1} (CategoryTheory.Idempotents.Karoubi.{u2, u1} C _inst_1) (CategoryTheory.Idempotents.Karoubi.instCategoryKaroubi.{u2, u1} C _inst_1)) P Q (CategoryTheory.Idempotents.Karoubi.mk.{u2, u1} C _inst_1 (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 Q) (CategoryTheory.CategoryStruct.id.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 Q)) (CategoryTheory.Idempotents.Karoubi.coe.proof_1.{u1, u2} C _inst_1 (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 Q))) f (CategoryTheory.Idempotents.Karoubi.decompId_i.{u2, u1} C _inst_1 Q)) (CategoryTheory.CategoryStruct.comp.{u1, max u2 u1} (CategoryTheory.Idempotents.Karoubi.{u2, u1} C _inst_1) (CategoryTheory.Category.toCategoryStruct.{u1, max u2 u1} (CategoryTheory.Idempotents.Karoubi.{u2, u1} C _inst_1) (CategoryTheory.Idempotents.Karoubi.instCategoryKaroubi.{u2, u1} C _inst_1)) P (CategoryTheory.Idempotents.Karoubi.mk.{u2, u1} C _inst_1 (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 P) (CategoryTheory.CategoryStruct.id.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 P)) (CategoryTheory.Idempotents.Karoubi.coe.proof_1.{u1, u2} C _inst_1 (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 P))) (CategoryTheory.Idempotents.Karoubi.mk.{u2, u1} C _inst_1 (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 Q) (CategoryTheory.CategoryStruct.id.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 Q)) (CategoryTheory.Idempotents.Karoubi.coe.proof_1.{u1, u2} C _inst_1 (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 Q))) (CategoryTheory.Idempotents.Karoubi.decompId_i.{u2, u1} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.Hom.mk.{u2, u1} C _inst_1 (CategoryTheory.Idempotents.Karoubi.mk.{u2, u1} C _inst_1 (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 P) (CategoryTheory.CategoryStruct.id.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 P)) (CategoryTheory.Idempotents.Karoubi.coe.proof_1.{u1, u2} C _inst_1 (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 P))) (CategoryTheory.Idempotents.Karoubi.mk.{u2, u1} C _inst_1 (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 Q) (CategoryTheory.CategoryStruct.id.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 Q)) (CategoryTheory.Idempotents.Karoubi.coe.proof_1.{u1, u2} C _inst_1 (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 Q))) (CategoryTheory.Idempotents.Karoubi.Hom.f.{u2, u1} C _inst_1 P Q f) (of_eq_true (Eq.{succ u1} (Quiver.Hom.{succ u1, u2} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1)) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 Q)) (CategoryTheory.Idempotents.Karoubi.Hom.f.{u2, u1} C _inst_1 P Q f) (CategoryTheory.CategoryStruct.comp.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 Q) (CategoryTheory.CategoryStruct.id.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 P)) (CategoryTheory.CategoryStruct.comp.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 Q) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 Q) (CategoryTheory.Idempotents.Karoubi.Hom.f.{u2, u1} C _inst_1 P Q f) (CategoryTheory.CategoryStruct.id.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 Q))))) (Eq.trans.{1} Prop (Eq.{succ u1} (Quiver.Hom.{succ u1, u2} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1)) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 Q)) (CategoryTheory.Idempotents.Karoubi.Hom.f.{u2, u1} C _inst_1 P Q f) (CategoryTheory.CategoryStruct.comp.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 Q) (CategoryTheory.CategoryStruct.id.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 P)) (CategoryTheory.CategoryStruct.comp.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 Q) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 Q) (CategoryTheory.Idempotents.Karoubi.Hom.f.{u2, u1} C _inst_1 P Q f) (CategoryTheory.CategoryStruct.id.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 Q))))) (Eq.{succ u1} (Quiver.Hom.{succ u1, u2} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1)) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 Q)) (CategoryTheory.Idempotents.Karoubi.Hom.f.{u2, u1} C _inst_1 P Q f) (CategoryTheory.Idempotents.Karoubi.Hom.f.{u2, u1} C _inst_1 P Q f)) True (congrArg.{succ u1, 1} (Quiver.Hom.{succ u1, u2} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1)) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 Q)) Prop (CategoryTheory.CategoryStruct.comp.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 Q) (CategoryTheory.CategoryStruct.id.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 P)) (CategoryTheory.CategoryStruct.comp.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 Q) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 Q) (CategoryTheory.Idempotents.Karoubi.Hom.f.{u2, u1} C _inst_1 P Q f) (CategoryTheory.CategoryStruct.id.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 Q)))) (CategoryTheory.Idempotents.Karoubi.Hom.f.{u2, u1} C _inst_1 P Q f) (Eq.{succ u1} (Quiver.Hom.{succ u1, u2} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1)) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 Q)) (CategoryTheory.Idempotents.Karoubi.Hom.f.{u2, u1} C _inst_1 P Q f)) (Eq.trans.{succ u1} (Quiver.Hom.{succ u1, u2} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1)) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 Q)) (CategoryTheory.CategoryStruct.comp.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 Q) (CategoryTheory.CategoryStruct.id.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 P)) (CategoryTheory.CategoryStruct.comp.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 Q) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 Q) (CategoryTheory.Idempotents.Karoubi.Hom.f.{u2, u1} C _inst_1 P Q f) (CategoryTheory.CategoryStruct.id.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 Q)))) (CategoryTheory.CategoryStruct.comp.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 Q) (CategoryTheory.CategoryStruct.id.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 P)) (CategoryTheory.Idempotents.Karoubi.Hom.f.{u2, u1} C _inst_1 P Q f)) (CategoryTheory.Idempotents.Karoubi.Hom.f.{u2, u1} C _inst_1 P Q f) (congrArg.{succ u1, succ u1} (Quiver.Hom.{succ u1, u2} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1)) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 Q)) (Quiver.Hom.{succ u1, u2} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1)) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 Q)) (CategoryTheory.CategoryStruct.comp.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 Q) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 Q) (CategoryTheory.Idempotents.Karoubi.Hom.f.{u2, u1} C _inst_1 P Q f) (CategoryTheory.CategoryStruct.id.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 Q))) (CategoryTheory.Idempotents.Karoubi.Hom.f.{u2, u1} C _inst_1 P Q f) (CategoryTheory.CategoryStruct.comp.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 Q) (CategoryTheory.CategoryStruct.id.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 P))) (CategoryTheory.Category.comp_id.{u1, u2} C _inst_1 (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 Q) (CategoryTheory.Idempotents.Karoubi.Hom.f.{u2, u1} C _inst_1 P Q f))) (CategoryTheory.Category.id_comp.{u1, u2} C _inst_1 (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 Q) (CategoryTheory.Idempotents.Karoubi.Hom.f.{u2, u1} C _inst_1 P Q f)))) (eq_self.{succ u1} (Quiver.Hom.{succ u1, u2} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1)) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 Q)) (CategoryTheory.Idempotents.Karoubi.Hom.f.{u2, u1} C _inst_1 P Q f))))))
+<too large>
Case conversion may be inaccurate. Consider using '#align category_theory.idempotents.karoubi.decomp_id_i_naturality CategoryTheory.Idempotents.Karoubi.decompId_i_naturalityₓ'. -/
theorem decompId_i_naturality {P Q : Karoubi C} (f : P ⟶ Q) :
f ≫ decompId_i _ = decompId_i _ ≫ ⟨f.f, by erw [comp_id, id_comp]⟩ :=
@@ -466,10 +457,7 @@ theorem decompId_i_naturality {P Q : Karoubi C} (f : P ⟶ Q) :
#align category_theory.idempotents.karoubi.decomp_id_i_naturality CategoryTheory.Idempotents.Karoubi.decompId_i_naturality
/- warning: category_theory.idempotents.karoubi.decomp_id_p_naturality -> CategoryTheory.Idempotents.Karoubi.decompId_p_naturality is a dubious translation:
-lean 3 declaration is
- forall {C : Type.{u1}} [_inst_1 : CategoryTheory.Category.{u2, u1} C] {P : CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1} {Q : CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1} (f : Quiver.Hom.{succ u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.CategoryStruct.toQuiver.{u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Category.toCategoryStruct.{u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.CategoryTheory.category.{u1, u2} C _inst_1))) P Q), Eq.{succ u2} (Quiver.Hom.{succ u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.CategoryStruct.toQuiver.{u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Category.toCategoryStruct.{u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.CategoryTheory.category.{u1, u2} C _inst_1))) ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P)) Q) (CategoryTheory.CategoryStruct.comp.{u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Category.toCategoryStruct.{u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.CategoryTheory.category.{u1, u2} C _inst_1)) ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P)) P Q (CategoryTheory.Idempotents.Karoubi.decompId_p.{u1, u2} C _inst_1 P) f) (CategoryTheory.CategoryStruct.comp.{u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Category.toCategoryStruct.{u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.CategoryTheory.category.{u1, u2} C _inst_1)) ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P)) ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 Q)) Q (CategoryTheory.Idempotents.Karoubi.Hom.mk.{u1, u2} C _inst_1 ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P)) ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 Q)) (CategoryTheory.Idempotents.Karoubi.Hom.f.{u1, u2} C _inst_1 P Q f) (Eq.mpr.{0} (Eq.{succ u2} (Quiver.Hom.{succ u2, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1)) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 Q)))) (CategoryTheory.Idempotents.Karoubi.Hom.f.{u1, u2} C _inst_1 P Q f) (CategoryTheory.CategoryStruct.comp.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 Q))) (CategoryTheory.Idempotents.Karoubi.p.{u1, u2} C _inst_1 ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P))) (CategoryTheory.CategoryStruct.comp.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 Q))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 Q))) (CategoryTheory.Idempotents.Karoubi.Hom.f.{u1, u2} C _inst_1 P Q f) (CategoryTheory.Idempotents.Karoubi.p.{u1, u2} C _inst_1 ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 Q)))))) (Eq.{succ u2} (Quiver.Hom.{succ u2, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1)) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 Q)))) (CategoryTheory.Idempotents.Karoubi.Hom.f.{u1, u2} C _inst_1 P Q f) (CategoryTheory.CategoryStruct.comp.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 Q))) (CategoryTheory.Idempotents.Karoubi.p.{u1, u2} C _inst_1 ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P))) (CategoryTheory.Idempotents.Karoubi.Hom.f.{u1, u2} C _inst_1 P Q f))) (id_tag Tactic.IdTag.rw (Eq.{1} Prop (Eq.{succ u2} (Quiver.Hom.{succ u2, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1)) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 Q)))) (CategoryTheory.Idempotents.Karoubi.Hom.f.{u1, u2} C _inst_1 P Q f) (CategoryTheory.CategoryStruct.comp.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 Q))) (CategoryTheory.Idempotents.Karoubi.p.{u1, u2} C _inst_1 ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P))) (CategoryTheory.CategoryStruct.comp.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 Q))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 Q))) (CategoryTheory.Idempotents.Karoubi.Hom.f.{u1, u2} C _inst_1 P Q f) (CategoryTheory.Idempotents.Karoubi.p.{u1, u2} C _inst_1 ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 Q)))))) (Eq.{succ u2} (Quiver.Hom.{succ u2, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1)) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 Q)))) (CategoryTheory.Idempotents.Karoubi.Hom.f.{u1, u2} C _inst_1 P Q f) (CategoryTheory.CategoryStruct.comp.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 Q))) (CategoryTheory.Idempotents.Karoubi.p.{u1, u2} C _inst_1 ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P))) (CategoryTheory.Idempotents.Karoubi.Hom.f.{u1, u2} C _inst_1 P Q f)))) (Eq.ndrec.{0, succ u2} (Quiver.Hom.{succ u2, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1)) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 Q)))) (CategoryTheory.CategoryStruct.comp.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 Q))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 Q))) (CategoryTheory.Idempotents.Karoubi.Hom.f.{u1, u2} C _inst_1 P Q f) (CategoryTheory.CategoryStruct.id.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 Q))))) (fun (_a : Quiver.Hom.{succ u2, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1)) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 Q)))) => Eq.{1} Prop (Eq.{succ u2} (Quiver.Hom.{succ u2, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1)) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 Q)))) (CategoryTheory.Idempotents.Karoubi.Hom.f.{u1, u2} C _inst_1 P Q f) (CategoryTheory.CategoryStruct.comp.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 Q))) (CategoryTheory.Idempotents.Karoubi.p.{u1, u2} C _inst_1 ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P))) (CategoryTheory.CategoryStruct.comp.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 Q))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 Q))) (CategoryTheory.Idempotents.Karoubi.Hom.f.{u1, u2} C _inst_1 P Q f) (CategoryTheory.Idempotents.Karoubi.p.{u1, u2} C _inst_1 ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 Q)))))) (Eq.{succ u2} (Quiver.Hom.{succ u2, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1)) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 Q)))) (CategoryTheory.Idempotents.Karoubi.Hom.f.{u1, u2} C _inst_1 P Q f) (CategoryTheory.CategoryStruct.comp.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 Q))) (CategoryTheory.Idempotents.Karoubi.p.{u1, u2} C _inst_1 ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P))) _a))) (rfl.{1} Prop (Eq.{succ u2} (Quiver.Hom.{succ u2, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1)) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 Q)))) (CategoryTheory.Idempotents.Karoubi.Hom.f.{u1, u2} C _inst_1 P Q f) (CategoryTheory.CategoryStruct.comp.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 Q))) (CategoryTheory.Idempotents.Karoubi.p.{u1, u2} C _inst_1 ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P))) (CategoryTheory.CategoryStruct.comp.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 Q))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 Q))) (CategoryTheory.Idempotents.Karoubi.Hom.f.{u1, u2} C _inst_1 P Q f) (CategoryTheory.Idempotents.Karoubi.p.{u1, u2} C _inst_1 ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 Q))))))) (CategoryTheory.Idempotents.Karoubi.Hom.f.{u1, u2} C _inst_1 P Q f) (CategoryTheory.Category.comp_id.{u2, u1} C _inst_1 (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 Q))) (CategoryTheory.Idempotents.Karoubi.Hom.f.{u1, u2} C _inst_1 P Q f)))) (Eq.mpr.{0} (Eq.{succ u2} (Quiver.Hom.{succ u2, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1)) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 Q)))) (CategoryTheory.Idempotents.Karoubi.Hom.f.{u1, u2} C _inst_1 P Q f) (CategoryTheory.CategoryStruct.comp.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 Q))) (CategoryTheory.Idempotents.Karoubi.p.{u1, u2} C _inst_1 ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P))) (CategoryTheory.Idempotents.Karoubi.Hom.f.{u1, u2} C _inst_1 P Q f))) (Eq.{succ u2} (Quiver.Hom.{succ u2, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1)) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 Q)))) (CategoryTheory.Idempotents.Karoubi.Hom.f.{u1, u2} C _inst_1 P Q f) (CategoryTheory.Idempotents.Karoubi.Hom.f.{u1, u2} C _inst_1 P Q f)) (id_tag Tactic.IdTag.rw (Eq.{1} Prop (Eq.{succ u2} (Quiver.Hom.{succ u2, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1)) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 Q)))) (CategoryTheory.Idempotents.Karoubi.Hom.f.{u1, u2} C _inst_1 P Q f) (CategoryTheory.CategoryStruct.comp.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 Q))) (CategoryTheory.Idempotents.Karoubi.p.{u1, u2} C _inst_1 ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P))) (CategoryTheory.Idempotents.Karoubi.Hom.f.{u1, u2} C _inst_1 P Q f))) (Eq.{succ u2} (Quiver.Hom.{succ u2, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1)) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 Q)))) (CategoryTheory.Idempotents.Karoubi.Hom.f.{u1, u2} C _inst_1 P Q f) (CategoryTheory.Idempotents.Karoubi.Hom.f.{u1, u2} C _inst_1 P Q f))) (Eq.ndrec.{0, succ u2} (Quiver.Hom.{succ u2, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1)) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 Q)))) (CategoryTheory.CategoryStruct.comp.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 Q))) (CategoryTheory.CategoryStruct.id.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P)))) (CategoryTheory.Idempotents.Karoubi.Hom.f.{u1, u2} C _inst_1 P Q f)) (fun (_a : Quiver.Hom.{succ u2, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1)) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 Q)))) => Eq.{1} Prop (Eq.{succ u2} (Quiver.Hom.{succ u2, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1)) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 Q)))) (CategoryTheory.Idempotents.Karoubi.Hom.f.{u1, u2} C _inst_1 P Q f) (CategoryTheory.CategoryStruct.comp.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 Q))) (CategoryTheory.Idempotents.Karoubi.p.{u1, u2} C _inst_1 ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P))) (CategoryTheory.Idempotents.Karoubi.Hom.f.{u1, u2} C _inst_1 P Q f))) (Eq.{succ u2} (Quiver.Hom.{succ u2, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1)) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 Q)))) (CategoryTheory.Idempotents.Karoubi.Hom.f.{u1, u2} C _inst_1 P Q f) _a)) (rfl.{1} Prop (Eq.{succ u2} (Quiver.Hom.{succ u2, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1)) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 Q)))) (CategoryTheory.Idempotents.Karoubi.Hom.f.{u1, u2} C _inst_1 P Q f) (CategoryTheory.CategoryStruct.comp.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 Q))) (CategoryTheory.Idempotents.Karoubi.p.{u1, u2} C _inst_1 ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P))) (CategoryTheory.Idempotents.Karoubi.Hom.f.{u1, u2} C _inst_1 P Q f)))) (CategoryTheory.Idempotents.Karoubi.Hom.f.{u1, u2} C _inst_1 P Q f) (CategoryTheory.Category.id_comp.{u2, u1} C _inst_1 (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 Q))) (CategoryTheory.Idempotents.Karoubi.Hom.f.{u1, u2} C _inst_1 P Q f)))) (rfl.{succ u2} (Quiver.Hom.{succ u2, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1)) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 Q)))) (CategoryTheory.Idempotents.Karoubi.Hom.f.{u1, u2} C _inst_1 P Q f))))) (CategoryTheory.Idempotents.Karoubi.decompId_p.{u1, u2} C _inst_1 Q))
-but is expected to have type
- forall {C : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u1, u2} C] {P : CategoryTheory.Idempotents.Karoubi.{u2, u1} C _inst_1} {Q : CategoryTheory.Idempotents.Karoubi.{u2, u1} C _inst_1} (f : Quiver.Hom.{succ u1, max u2 u1} (CategoryTheory.Idempotents.Karoubi.{u2, u1} C _inst_1) (CategoryTheory.CategoryStruct.toQuiver.{u1, max u2 u1} (CategoryTheory.Idempotents.Karoubi.{u2, u1} C _inst_1) (CategoryTheory.Category.toCategoryStruct.{u1, max u2 u1} (CategoryTheory.Idempotents.Karoubi.{u2, u1} C _inst_1) (CategoryTheory.Idempotents.Karoubi.instCategoryKaroubi.{u2, u1} C _inst_1))) P Q), Eq.{succ u1} (Quiver.Hom.{succ u1, max u2 u1} (CategoryTheory.Idempotents.Karoubi.{u2, u1} C _inst_1) (CategoryTheory.CategoryStruct.toQuiver.{u1, max u2 u1} (CategoryTheory.Idempotents.Karoubi.{u2, u1} C _inst_1) (CategoryTheory.Category.toCategoryStruct.{u1, max u2 u1} (CategoryTheory.Idempotents.Karoubi.{u2, u1} C _inst_1) (CategoryTheory.Idempotents.Karoubi.instCategoryKaroubi.{u2, u1} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.mk.{u2, u1} C _inst_1 (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 P) (CategoryTheory.CategoryStruct.id.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 P)) (CategoryTheory.Idempotents.Karoubi.coe.proof_1.{u1, u2} C _inst_1 (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 P))) Q) (CategoryTheory.CategoryStruct.comp.{u1, max u2 u1} (CategoryTheory.Idempotents.Karoubi.{u2, u1} C _inst_1) (CategoryTheory.Category.toCategoryStruct.{u1, max u2 u1} (CategoryTheory.Idempotents.Karoubi.{u2, u1} C _inst_1) (CategoryTheory.Idempotents.Karoubi.instCategoryKaroubi.{u2, u1} C _inst_1)) (CategoryTheory.Idempotents.Karoubi.mk.{u2, u1} C _inst_1 (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 P) (CategoryTheory.CategoryStruct.id.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 P)) (CategoryTheory.Idempotents.Karoubi.coe.proof_1.{u1, u2} C _inst_1 (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 P))) P Q (CategoryTheory.Idempotents.Karoubi.decompId_p.{u2, u1} C _inst_1 P) f) (CategoryTheory.CategoryStruct.comp.{u1, max u2 u1} (CategoryTheory.Idempotents.Karoubi.{u2, u1} C _inst_1) (CategoryTheory.Category.toCategoryStruct.{u1, max u2 u1} (CategoryTheory.Idempotents.Karoubi.{u2, u1} C _inst_1) (CategoryTheory.Idempotents.Karoubi.instCategoryKaroubi.{u2, u1} C _inst_1)) (CategoryTheory.Idempotents.Karoubi.mk.{u2, u1} C _inst_1 (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 P) (CategoryTheory.CategoryStruct.id.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 P)) (CategoryTheory.Idempotents.Karoubi.coe.proof_1.{u1, u2} C _inst_1 (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 P))) (CategoryTheory.Idempotents.Karoubi.mk.{u2, u1} C _inst_1 (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 Q) (CategoryTheory.CategoryStruct.id.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 Q)) (CategoryTheory.Idempotents.Karoubi.coe.proof_1.{u1, u2} C _inst_1 (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 Q))) Q (CategoryTheory.Idempotents.Karoubi.Hom.mk.{u2, u1} C _inst_1 (CategoryTheory.Idempotents.Karoubi.mk.{u2, u1} C _inst_1 (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 P) (CategoryTheory.CategoryStruct.id.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 P)) (CategoryTheory.Idempotents.Karoubi.coe.proof_1.{u1, u2} C _inst_1 (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 P))) (CategoryTheory.Idempotents.Karoubi.mk.{u2, u1} C _inst_1 (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 Q) (CategoryTheory.CategoryStruct.id.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 Q)) (CategoryTheory.Idempotents.Karoubi.coe.proof_1.{u1, u2} C _inst_1 (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 Q))) (CategoryTheory.Idempotents.Karoubi.Hom.f.{u2, u1} C _inst_1 P Q f) (of_eq_true (Eq.{succ u1} (Quiver.Hom.{succ u1, u2} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1)) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 Q)) (CategoryTheory.Idempotents.Karoubi.Hom.f.{u2, u1} C _inst_1 P Q f) (CategoryTheory.CategoryStruct.comp.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 Q) (CategoryTheory.CategoryStruct.id.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 P)) (CategoryTheory.CategoryStruct.comp.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 Q) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 Q) (CategoryTheory.Idempotents.Karoubi.Hom.f.{u2, u1} C _inst_1 P Q f) (CategoryTheory.CategoryStruct.id.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 Q))))) (Eq.trans.{1} Prop (Eq.{succ u1} (Quiver.Hom.{succ u1, u2} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1)) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 Q)) (CategoryTheory.Idempotents.Karoubi.Hom.f.{u2, u1} C _inst_1 P Q f) (CategoryTheory.CategoryStruct.comp.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 Q) (CategoryTheory.CategoryStruct.id.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 P)) (CategoryTheory.CategoryStruct.comp.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 Q) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 Q) (CategoryTheory.Idempotents.Karoubi.Hom.f.{u2, u1} C _inst_1 P Q f) (CategoryTheory.CategoryStruct.id.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 Q))))) (Eq.{succ u1} (Quiver.Hom.{succ u1, u2} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1)) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 Q)) (CategoryTheory.Idempotents.Karoubi.Hom.f.{u2, u1} C _inst_1 P Q f) (CategoryTheory.Idempotents.Karoubi.Hom.f.{u2, u1} C _inst_1 P Q f)) True (congrArg.{succ u1, 1} (Quiver.Hom.{succ u1, u2} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1)) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 Q)) Prop (CategoryTheory.CategoryStruct.comp.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 Q) (CategoryTheory.CategoryStruct.id.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 P)) (CategoryTheory.CategoryStruct.comp.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 Q) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 Q) (CategoryTheory.Idempotents.Karoubi.Hom.f.{u2, u1} C _inst_1 P Q f) (CategoryTheory.CategoryStruct.id.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 Q)))) (CategoryTheory.Idempotents.Karoubi.Hom.f.{u2, u1} C _inst_1 P Q f) (Eq.{succ u1} (Quiver.Hom.{succ u1, u2} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1)) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 Q)) (CategoryTheory.Idempotents.Karoubi.Hom.f.{u2, u1} C _inst_1 P Q f)) (Eq.trans.{succ u1} (Quiver.Hom.{succ u1, u2} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1)) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 Q)) (CategoryTheory.CategoryStruct.comp.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 Q) (CategoryTheory.CategoryStruct.id.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 P)) (CategoryTheory.CategoryStruct.comp.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 Q) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 Q) (CategoryTheory.Idempotents.Karoubi.Hom.f.{u2, u1} C _inst_1 P Q f) (CategoryTheory.CategoryStruct.id.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 Q)))) (CategoryTheory.CategoryStruct.comp.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 Q) (CategoryTheory.CategoryStruct.id.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 P)) (CategoryTheory.Idempotents.Karoubi.Hom.f.{u2, u1} C _inst_1 P Q f)) (CategoryTheory.Idempotents.Karoubi.Hom.f.{u2, u1} C _inst_1 P Q f) (congrArg.{succ u1, succ u1} (Quiver.Hom.{succ u1, u2} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1)) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 Q)) (Quiver.Hom.{succ u1, u2} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1)) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 Q)) (CategoryTheory.CategoryStruct.comp.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 Q) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 Q) (CategoryTheory.Idempotents.Karoubi.Hom.f.{u2, u1} C _inst_1 P Q f) (CategoryTheory.CategoryStruct.id.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 Q))) (CategoryTheory.Idempotents.Karoubi.Hom.f.{u2, u1} C _inst_1 P Q f) (CategoryTheory.CategoryStruct.comp.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 Q) (CategoryTheory.CategoryStruct.id.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 P))) (CategoryTheory.Category.comp_id.{u1, u2} C _inst_1 (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 Q) (CategoryTheory.Idempotents.Karoubi.Hom.f.{u2, u1} C _inst_1 P Q f))) (CategoryTheory.Category.id_comp.{u1, u2} C _inst_1 (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 Q) (CategoryTheory.Idempotents.Karoubi.Hom.f.{u2, u1} C _inst_1 P Q f)))) (eq_self.{succ u1} (Quiver.Hom.{succ u1, u2} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1)) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 Q)) (CategoryTheory.Idempotents.Karoubi.Hom.f.{u2, u1} C _inst_1 P Q f))))) (CategoryTheory.Idempotents.Karoubi.decompId_p.{u2, u1} C _inst_1 Q))
+<too large>
Case conversion may be inaccurate. Consider using '#align category_theory.idempotents.karoubi.decomp_id_p_naturality CategoryTheory.Idempotents.Karoubi.decompId_p_naturalityₓ'. -/
theorem decompId_p_naturality {P Q : Karoubi C} (f : P ⟶ Q) :
decompId_p P ≫ f =
mathlib commit https://github.com/leanprover-community/mathlib/commit/75e7fca56381d056096ce5d05e938f63a6567828
@@ -65,7 +65,7 @@ namespace Karoubi
variable {C}
-attribute [simp, reassoc.1] idem
+attribute [simp, reassoc] idem
/- warning: category_theory.idempotents.karoubi.ext -> CategoryTheory.Idempotents.Karoubi.ext is a dubious translation:
lean 3 declaration is
@@ -120,7 +120,7 @@ lean 3 declaration is
but is expected to have type
forall {C : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u1, u2} C] {P : CategoryTheory.Idempotents.Karoubi.{u2, u1} C _inst_1} {Q : CategoryTheory.Idempotents.Karoubi.{u2, u1} C _inst_1} (f : CategoryTheory.Idempotents.Karoubi.Hom.{u2, u1} C _inst_1 P Q), Eq.{succ u1} (Quiver.Hom.{succ u1, u2} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1)) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 Q)) (CategoryTheory.CategoryStruct.comp.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 Q) (CategoryTheory.Idempotents.Karoubi.p.{u2, u1} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.Hom.f.{u2, u1} C _inst_1 P Q f)) (CategoryTheory.Idempotents.Karoubi.Hom.f.{u2, u1} C _inst_1 P Q f)
Case conversion may be inaccurate. Consider using '#align category_theory.idempotents.karoubi.p_comp CategoryTheory.Idempotents.Karoubi.p_compₓ'. -/
-@[simp, reassoc.1]
+@[simp, reassoc]
theorem p_comp {P Q : Karoubi C} (f : Hom P Q) : P.p ≫ f.f = f.f := by rw [f.comm, ← assoc, P.idem]
#align category_theory.idempotents.karoubi.p_comp CategoryTheory.Idempotents.Karoubi.p_comp
@@ -130,7 +130,7 @@ lean 3 declaration is
but is expected to have type
forall {C : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u1, u2} C] {P : CategoryTheory.Idempotents.Karoubi.{u2, u1} C _inst_1} {Q : CategoryTheory.Idempotents.Karoubi.{u2, u1} C _inst_1} (f : CategoryTheory.Idempotents.Karoubi.Hom.{u2, u1} C _inst_1 P Q), Eq.{succ u1} (Quiver.Hom.{succ u1, u2} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1)) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 Q)) (CategoryTheory.CategoryStruct.comp.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 Q) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 Q) (CategoryTheory.Idempotents.Karoubi.Hom.f.{u2, u1} C _inst_1 P Q f) (CategoryTheory.Idempotents.Karoubi.p.{u2, u1} C _inst_1 Q)) (CategoryTheory.Idempotents.Karoubi.Hom.f.{u2, u1} C _inst_1 P Q f)
Case conversion may be inaccurate. Consider using '#align category_theory.idempotents.karoubi.comp_p CategoryTheory.Idempotents.Karoubi.comp_pₓ'. -/
-@[simp, reassoc.1]
+@[simp, reassoc]
theorem comp_p {P Q : Karoubi C} (f : Hom P Q) : f.f ≫ Q.p = f.f := by
rw [f.comm, assoc, assoc, Q.idem]
#align category_theory.idempotents.karoubi.comp_p CategoryTheory.Idempotents.Karoubi.comp_p
mathlib commit https://github.com/leanprover-community/mathlib/commit/2f8347015b12b0864dfaf366ec4909eb70c78740
@@ -275,7 +275,7 @@ namespace Karoubi
lean 3 declaration is
forall {C : Type.{u1}} [_inst_1 : CategoryTheory.Category.{u2, u1} C] [_inst_2 : CategoryTheory.Preadditive.{u2, u1} C _inst_1] {P : CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1} {Q : CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1} {f : CategoryTheory.Idempotents.Karoubi.Hom.{u1, u2} C _inst_1 P Q}, Iff (Eq.{succ u2} (CategoryTheory.Idempotents.Karoubi.Hom.{u1, u2} C _inst_1 P Q) f (OfNat.ofNat.{u2} (CategoryTheory.Idempotents.Karoubi.Hom.{u1, u2} C _inst_1 P Q) 0 (OfNat.mk.{u2} (CategoryTheory.Idempotents.Karoubi.Hom.{u1, u2} C _inst_1 P Q) 0 (Zero.zero.{u2} (CategoryTheory.Idempotents.Karoubi.Hom.{u1, u2} C _inst_1 P Q) (AddZeroClass.toHasZero.{u2} (CategoryTheory.Idempotents.Karoubi.Hom.{u1, u2} C _inst_1 P Q) (AddMonoid.toAddZeroClass.{u2} (CategoryTheory.Idempotents.Karoubi.Hom.{u1, u2} C _inst_1 P Q) (SubNegMonoid.toAddMonoid.{u2} (CategoryTheory.Idempotents.Karoubi.Hom.{u1, u2} C _inst_1 P Q) (AddGroup.toSubNegMonoid.{u2} (CategoryTheory.Idempotents.Karoubi.Hom.{u1, u2} C _inst_1 P Q) (AddCommGroup.toAddGroup.{u2} (CategoryTheory.Idempotents.Karoubi.Hom.{u1, u2} C _inst_1 P Q) (CategoryTheory.Idempotents.Quiver.Hom.addCommGroup.{u1, u2} C _inst_1 _inst_2 P Q)))))))))) (Eq.{succ u2} (Quiver.Hom.{succ u2, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1)) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 Q)) (CategoryTheory.Idempotents.Karoubi.Hom.f.{u1, u2} C _inst_1 P Q f) (OfNat.ofNat.{u2} (Quiver.Hom.{succ u2, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1)) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 Q)) 0 (OfNat.mk.{u2} (Quiver.Hom.{succ u2, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1)) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 Q)) 0 (Zero.zero.{u2} (Quiver.Hom.{succ u2, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1)) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 Q)) (CategoryTheory.Limits.HasZeroMorphisms.hasZero.{u2, u1} C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u1} C _inst_1 _inst_2) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 Q))))))
but is expected to have type
- forall {C : Type.{u1}} [_inst_1 : CategoryTheory.Category.{u2, u1} C] [_inst_2 : CategoryTheory.Preadditive.{u2, u1} C _inst_1] {P : CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1} {Q : CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1} {f : Quiver.Hom.{succ u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.CategoryStruct.toQuiver.{u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Category.toCategoryStruct.{u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.instCategoryKaroubi.{u1, u2} C _inst_1))) P Q}, Iff (Eq.{succ u2} (Quiver.Hom.{succ u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.CategoryStruct.toQuiver.{u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Category.toCategoryStruct.{u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.instCategoryKaroubi.{u1, u2} C _inst_1))) P Q) f (OfNat.ofNat.{u2} (Quiver.Hom.{succ u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.CategoryStruct.toQuiver.{u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Category.toCategoryStruct.{u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.instCategoryKaroubi.{u1, u2} C _inst_1))) P Q) 0 (Zero.toOfNat0.{u2} (Quiver.Hom.{succ u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.CategoryStruct.toQuiver.{u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Category.toCategoryStruct.{u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.instCategoryKaroubi.{u1, u2} C _inst_1))) P Q) (NegZeroClass.toZero.{u2} (Quiver.Hom.{succ u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.CategoryStruct.toQuiver.{u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Category.toCategoryStruct.{u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.instCategoryKaroubi.{u1, u2} C _inst_1))) P Q) (SubNegZeroMonoid.toNegZeroClass.{u2} (Quiver.Hom.{succ u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.CategoryStruct.toQuiver.{u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Category.toCategoryStruct.{u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.instCategoryKaroubi.{u1, u2} C _inst_1))) P Q) (SubtractionMonoid.toSubNegZeroMonoid.{u2} (Quiver.Hom.{succ u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.CategoryStruct.toQuiver.{u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Category.toCategoryStruct.{u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.instCategoryKaroubi.{u1, u2} C _inst_1))) P Q) (SubtractionCommMonoid.toSubtractionMonoid.{u2} (Quiver.Hom.{succ u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.CategoryStruct.toQuiver.{u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Category.toCategoryStruct.{u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.instCategoryKaroubi.{u1, u2} C _inst_1))) P Q) (AddCommGroup.toDivisionAddCommMonoid.{u2} (Quiver.Hom.{succ u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.CategoryStruct.toQuiver.{u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Category.toCategoryStruct.{u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.instCategoryKaroubi.{u1, u2} C _inst_1))) P Q) (CategoryTheory.Idempotents.instAddCommGroupHomKaroubiToQuiverToCategoryStructInstCategoryKaroubi.{u1, u2} C _inst_1 _inst_2 P Q))))))))) (Eq.{succ u2} (Quiver.Hom.{succ u2, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1)) (CategoryTheory.Idempotents.Karoubi.X.{u1, u2} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.X.{u1, u2} C _inst_1 Q)) (CategoryTheory.Idempotents.Karoubi.Hom.f.{u1, u2} C _inst_1 P Q f) (OfNat.ofNat.{u2} (Quiver.Hom.{succ u2, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1)) (CategoryTheory.Idempotents.Karoubi.X.{u1, u2} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.X.{u1, u2} C _inst_1 Q)) 0 (Zero.toOfNat0.{u2} (Quiver.Hom.{succ u2, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1)) (CategoryTheory.Idempotents.Karoubi.X.{u1, u2} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.X.{u1, u2} C _inst_1 Q)) (CategoryTheory.Limits.HasZeroMorphisms.Zero.{u2, u1} C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u1} C _inst_1 _inst_2) (CategoryTheory.Idempotents.Karoubi.X.{u1, u2} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.X.{u1, u2} C _inst_1 Q)))))
+ forall {C : Type.{u1}} [_inst_1 : CategoryTheory.Category.{u2, u1} C] [_inst_2 : CategoryTheory.Preadditive.{u2, u1} C _inst_1] {P : CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1} {Q : CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1} {f : Quiver.Hom.{succ u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.CategoryStruct.toQuiver.{u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Category.toCategoryStruct.{u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.instCategoryKaroubi.{u1, u2} C _inst_1))) P Q}, Iff (Eq.{succ u2} (Quiver.Hom.{succ u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.CategoryStruct.toQuiver.{u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Category.toCategoryStruct.{u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.instCategoryKaroubi.{u1, u2} C _inst_1))) P Q) f (OfNat.ofNat.{u2} (Quiver.Hom.{succ u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.CategoryStruct.toQuiver.{u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Category.toCategoryStruct.{u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.instCategoryKaroubi.{u1, u2} C _inst_1))) P Q) 0 (Zero.toOfNat0.{u2} (Quiver.Hom.{succ u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.CategoryStruct.toQuiver.{u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Category.toCategoryStruct.{u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.instCategoryKaroubi.{u1, u2} C _inst_1))) P Q) (NegZeroClass.toZero.{u2} (Quiver.Hom.{succ u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.CategoryStruct.toQuiver.{u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Category.toCategoryStruct.{u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.instCategoryKaroubi.{u1, u2} C _inst_1))) P Q) (SubNegZeroMonoid.toNegZeroClass.{u2} (Quiver.Hom.{succ u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.CategoryStruct.toQuiver.{u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Category.toCategoryStruct.{u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.instCategoryKaroubi.{u1, u2} C _inst_1))) P Q) (SubtractionMonoid.toSubNegZeroMonoid.{u2} (Quiver.Hom.{succ u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.CategoryStruct.toQuiver.{u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Category.toCategoryStruct.{u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.instCategoryKaroubi.{u1, u2} C _inst_1))) P Q) (SubtractionCommMonoid.toSubtractionMonoid.{u2} (Quiver.Hom.{succ u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.CategoryStruct.toQuiver.{u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Category.toCategoryStruct.{u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.instCategoryKaroubi.{u1, u2} C _inst_1))) P Q) (AddCommGroup.toDivisionAddCommMonoid.{u2} (Quiver.Hom.{succ u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.CategoryStruct.toQuiver.{u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Category.toCategoryStruct.{u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.instCategoryKaroubi.{u1, u2} C _inst_1))) P Q) (CategoryTheory.Idempotents.instAddCommGroupHom.{u1, u2} C _inst_1 _inst_2 P Q))))))))) (Eq.{succ u2} (Quiver.Hom.{succ u2, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1)) (CategoryTheory.Idempotents.Karoubi.X.{u1, u2} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.X.{u1, u2} C _inst_1 Q)) (CategoryTheory.Idempotents.Karoubi.Hom.f.{u1, u2} C _inst_1 P Q f) (OfNat.ofNat.{u2} (Quiver.Hom.{succ u2, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1)) (CategoryTheory.Idempotents.Karoubi.X.{u1, u2} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.X.{u1, u2} C _inst_1 Q)) 0 (Zero.toOfNat0.{u2} (Quiver.Hom.{succ u2, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1)) (CategoryTheory.Idempotents.Karoubi.X.{u1, u2} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.X.{u1, u2} C _inst_1 Q)) (CategoryTheory.Limits.HasZeroMorphisms.Zero.{u2, u1} C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u1} C _inst_1 _inst_2) (CategoryTheory.Idempotents.Karoubi.X.{u1, u2} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.X.{u1, u2} C _inst_1 Q)))))
Case conversion may be inaccurate. Consider using '#align category_theory.idempotents.karoubi.hom_eq_zero_iff CategoryTheory.Idempotents.Karoubi.hom_eq_zero_iffₓ'. -/
theorem hom_eq_zero_iff [Preadditive C] {P Q : Karoubi C} {f : Hom P Q} : f = 0 ↔ f.f = 0 :=
hom_ext_iff
@@ -285,7 +285,7 @@ theorem hom_eq_zero_iff [Preadditive C] {P Q : Karoubi C} {f : Hom P Q} : f = 0
lean 3 declaration is
forall {C : Type.{u1}} [_inst_1 : CategoryTheory.Category.{u2, u1} C] [_inst_2 : CategoryTheory.Preadditive.{u2, u1} C _inst_1] (P : CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (Q : CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1), AddMonoidHom.{u2, u2} (Quiver.Hom.{succ u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.CategoryStruct.toQuiver.{u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Category.toCategoryStruct.{u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.CategoryTheory.category.{u1, u2} C _inst_1))) P Q) (Quiver.Hom.{succ u2, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1)) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 Q)) (AddMonoid.toAddZeroClass.{u2} (Quiver.Hom.{succ u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.CategoryStruct.toQuiver.{u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Category.toCategoryStruct.{u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.CategoryTheory.category.{u1, u2} C _inst_1))) P Q) (SubNegMonoid.toAddMonoid.{u2} (Quiver.Hom.{succ u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.CategoryStruct.toQuiver.{u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Category.toCategoryStruct.{u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.CategoryTheory.category.{u1, u2} C _inst_1))) P Q) (AddGroup.toSubNegMonoid.{u2} (Quiver.Hom.{succ u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.CategoryStruct.toQuiver.{u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Category.toCategoryStruct.{u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.CategoryTheory.category.{u1, u2} C _inst_1))) P Q) (AddCommGroup.toAddGroup.{u2} (Quiver.Hom.{succ u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.CategoryStruct.toQuiver.{u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Category.toCategoryStruct.{u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.CategoryTheory.category.{u1, u2} C _inst_1))) P Q) (CategoryTheory.Idempotents.Quiver.Hom.addCommGroup.{u1, u2} C _inst_1 _inst_2 P Q))))) (AddMonoid.toAddZeroClass.{u2} (Quiver.Hom.{succ u2, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1)) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 Q)) (SubNegMonoid.toAddMonoid.{u2} (Quiver.Hom.{succ u2, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1)) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 Q)) (AddGroup.toSubNegMonoid.{u2} (Quiver.Hom.{succ u2, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1)) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 Q)) (AddCommGroup.toAddGroup.{u2} (Quiver.Hom.{succ u2, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1)) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 Q)) (CategoryTheory.Preadditive.homGroup.{u2, u1} C _inst_1 _inst_2 (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 Q))))))
but is expected to have type
- forall {C : Type.{u1}} [_inst_1 : CategoryTheory.Category.{u2, u1} C] [_inst_2 : CategoryTheory.Preadditive.{u2, u1} C _inst_1] (P : CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (Q : CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1), AddMonoidHom.{u2, u2} (Quiver.Hom.{succ u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.CategoryStruct.toQuiver.{u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Category.toCategoryStruct.{u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.instCategoryKaroubi.{u1, u2} C _inst_1))) P Q) (Quiver.Hom.{succ u2, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1)) (CategoryTheory.Idempotents.Karoubi.X.{u1, u2} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.X.{u1, u2} C _inst_1 Q)) (AddMonoid.toAddZeroClass.{u2} (Quiver.Hom.{succ u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.CategoryStruct.toQuiver.{u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Category.toCategoryStruct.{u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.instCategoryKaroubi.{u1, u2} C _inst_1))) P Q) (SubNegMonoid.toAddMonoid.{u2} (Quiver.Hom.{succ u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.CategoryStruct.toQuiver.{u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Category.toCategoryStruct.{u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.instCategoryKaroubi.{u1, u2} C _inst_1))) P Q) (AddGroup.toSubNegMonoid.{u2} (Quiver.Hom.{succ u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.CategoryStruct.toQuiver.{u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Category.toCategoryStruct.{u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.instCategoryKaroubi.{u1, u2} C _inst_1))) P Q) (AddCommGroup.toAddGroup.{u2} (Quiver.Hom.{succ u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.CategoryStruct.toQuiver.{u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Category.toCategoryStruct.{u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.instCategoryKaroubi.{u1, u2} C _inst_1))) P Q) (CategoryTheory.Idempotents.instAddCommGroupHomKaroubiToQuiverToCategoryStructInstCategoryKaroubi.{u1, u2} C _inst_1 _inst_2 P Q))))) (AddMonoid.toAddZeroClass.{u2} (Quiver.Hom.{succ u2, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1)) (CategoryTheory.Idempotents.Karoubi.X.{u1, u2} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.X.{u1, u2} C _inst_1 Q)) (SubNegMonoid.toAddMonoid.{u2} (Quiver.Hom.{succ u2, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1)) (CategoryTheory.Idempotents.Karoubi.X.{u1, u2} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.X.{u1, u2} C _inst_1 Q)) (AddGroup.toSubNegMonoid.{u2} (Quiver.Hom.{succ u2, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1)) (CategoryTheory.Idempotents.Karoubi.X.{u1, u2} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.X.{u1, u2} C _inst_1 Q)) (AddCommGroup.toAddGroup.{u2} (Quiver.Hom.{succ u2, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1)) (CategoryTheory.Idempotents.Karoubi.X.{u1, u2} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.X.{u1, u2} C _inst_1 Q)) (CategoryTheory.Preadditive.homGroup.{u2, u1} C _inst_1 _inst_2 (CategoryTheory.Idempotents.Karoubi.X.{u1, u2} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.X.{u1, u2} C _inst_1 Q))))))
+ forall {C : Type.{u1}} [_inst_1 : CategoryTheory.Category.{u2, u1} C] [_inst_2 : CategoryTheory.Preadditive.{u2, u1} C _inst_1] (P : CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (Q : CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1), AddMonoidHom.{u2, u2} (Quiver.Hom.{succ u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.CategoryStruct.toQuiver.{u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Category.toCategoryStruct.{u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.instCategoryKaroubi.{u1, u2} C _inst_1))) P Q) (Quiver.Hom.{succ u2, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1)) (CategoryTheory.Idempotents.Karoubi.X.{u1, u2} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.X.{u1, u2} C _inst_1 Q)) (AddMonoid.toAddZeroClass.{u2} (Quiver.Hom.{succ u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.CategoryStruct.toQuiver.{u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Category.toCategoryStruct.{u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.instCategoryKaroubi.{u1, u2} C _inst_1))) P Q) (SubNegMonoid.toAddMonoid.{u2} (Quiver.Hom.{succ u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.CategoryStruct.toQuiver.{u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Category.toCategoryStruct.{u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.instCategoryKaroubi.{u1, u2} C _inst_1))) P Q) (AddGroup.toSubNegMonoid.{u2} (Quiver.Hom.{succ u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.CategoryStruct.toQuiver.{u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Category.toCategoryStruct.{u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.instCategoryKaroubi.{u1, u2} C _inst_1))) P Q) (AddCommGroup.toAddGroup.{u2} (Quiver.Hom.{succ u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.CategoryStruct.toQuiver.{u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Category.toCategoryStruct.{u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.instCategoryKaroubi.{u1, u2} C _inst_1))) P Q) (CategoryTheory.Idempotents.instAddCommGroupHom.{u1, u2} C _inst_1 _inst_2 P Q))))) (AddMonoid.toAddZeroClass.{u2} (Quiver.Hom.{succ u2, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1)) (CategoryTheory.Idempotents.Karoubi.X.{u1, u2} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.X.{u1, u2} C _inst_1 Q)) (SubNegMonoid.toAddMonoid.{u2} (Quiver.Hom.{succ u2, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1)) (CategoryTheory.Idempotents.Karoubi.X.{u1, u2} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.X.{u1, u2} C _inst_1 Q)) (AddGroup.toSubNegMonoid.{u2} (Quiver.Hom.{succ u2, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1)) (CategoryTheory.Idempotents.Karoubi.X.{u1, u2} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.X.{u1, u2} C _inst_1 Q)) (AddCommGroup.toAddGroup.{u2} (Quiver.Hom.{succ u2, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1)) (CategoryTheory.Idempotents.Karoubi.X.{u1, u2} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.X.{u1, u2} C _inst_1 Q)) (CategoryTheory.Preadditive.homGroup.{u2, u1} C _inst_1 _inst_2 (CategoryTheory.Idempotents.Karoubi.X.{u1, u2} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.X.{u1, u2} C _inst_1 Q))))))
Case conversion may be inaccurate. Consider using '#align category_theory.idempotents.karoubi.inclusion_hom CategoryTheory.Idempotents.Karoubi.inclusionHomₓ'. -/
/-- The map sending `f : P ⟶ Q` to `f.f : P.X ⟶ Q.X` is additive. -/
@[simps]
@@ -300,7 +300,7 @@ def inclusionHom [Preadditive C] (P Q : Karoubi C) : AddMonoidHom (P ⟶ Q) (P.p
lean 3 declaration is
forall {C : Type.{u1}} [_inst_1 : CategoryTheory.Category.{u2, u1} C] [_inst_2 : CategoryTheory.Preadditive.{u2, u1} C _inst_1] {P : CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1} {Q : CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1} {α : Type.{u3}} (s : Finset.{u3} α) (f : α -> (Quiver.Hom.{succ u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.CategoryStruct.toQuiver.{u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Category.toCategoryStruct.{u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.CategoryTheory.category.{u1, u2} C _inst_1))) P Q)), Eq.{succ u2} (Quiver.Hom.{succ u2, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1)) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 Q)) (CategoryTheory.Idempotents.Karoubi.Hom.f.{u1, u2} C _inst_1 P Q (Finset.sum.{u2, u3} (Quiver.Hom.{succ u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.CategoryStruct.toQuiver.{u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Category.toCategoryStruct.{u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.CategoryTheory.category.{u1, u2} C _inst_1))) P Q) α (AddCommGroup.toAddCommMonoid.{u2} (Quiver.Hom.{succ u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.CategoryStruct.toQuiver.{u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Category.toCategoryStruct.{u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.CategoryTheory.category.{u1, u2} C _inst_1))) P Q) (CategoryTheory.Idempotents.Quiver.Hom.addCommGroup.{u1, u2} C _inst_1 _inst_2 P Q)) s (fun (x : α) => f x))) (Finset.sum.{u2, u3} (Quiver.Hom.{succ u2, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1)) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 Q)) α (AddCommGroup.toAddCommMonoid.{u2} (Quiver.Hom.{succ u2, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1)) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 Q)) (CategoryTheory.Preadditive.homGroup.{u2, u1} C _inst_1 _inst_2 (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 Q))) s (fun (x : α) => CategoryTheory.Idempotents.Karoubi.Hom.f.{u1, u2} C _inst_1 P Q (f x)))
but is expected to have type
- forall {C : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u3, u2} C] [_inst_2 : CategoryTheory.Preadditive.{u3, u2} C _inst_1] {P : CategoryTheory.Idempotents.Karoubi.{u2, u3} C _inst_1} {Q : CategoryTheory.Idempotents.Karoubi.{u2, u3} C _inst_1} {α : Type.{u1}} (s : Finset.{u1} α) (f : α -> (Quiver.Hom.{succ u3, max u2 u3} (CategoryTheory.Idempotents.Karoubi.{u2, u3} C _inst_1) (CategoryTheory.CategoryStruct.toQuiver.{u3, max u2 u3} (CategoryTheory.Idempotents.Karoubi.{u2, u3} C _inst_1) (CategoryTheory.Category.toCategoryStruct.{u3, max u2 u3} (CategoryTheory.Idempotents.Karoubi.{u2, u3} C _inst_1) (CategoryTheory.Idempotents.Karoubi.instCategoryKaroubi.{u2, u3} C _inst_1))) P Q)), Eq.{succ u3} (Quiver.Hom.{succ u3, u2} C (CategoryTheory.CategoryStruct.toQuiver.{u3, u2} C (CategoryTheory.Category.toCategoryStruct.{u3, u2} C _inst_1)) (CategoryTheory.Idempotents.Karoubi.X.{u2, u3} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.X.{u2, u3} C _inst_1 Q)) (CategoryTheory.Idempotents.Karoubi.Hom.f.{u2, u3} C _inst_1 P Q (Finset.sum.{u3, u1} (Quiver.Hom.{succ u3, max u2 u3} (CategoryTheory.Idempotents.Karoubi.{u2, u3} C _inst_1) (CategoryTheory.CategoryStruct.toQuiver.{u3, max u2 u3} (CategoryTheory.Idempotents.Karoubi.{u2, u3} C _inst_1) (CategoryTheory.Category.toCategoryStruct.{u3, max u2 u3} (CategoryTheory.Idempotents.Karoubi.{u2, u3} C _inst_1) (CategoryTheory.Idempotents.Karoubi.instCategoryKaroubi.{u2, u3} C _inst_1))) P Q) α (AddCommGroup.toAddCommMonoid.{u3} (Quiver.Hom.{succ u3, max u2 u3} (CategoryTheory.Idempotents.Karoubi.{u2, u3} C _inst_1) (CategoryTheory.CategoryStruct.toQuiver.{u3, max u2 u3} (CategoryTheory.Idempotents.Karoubi.{u2, u3} C _inst_1) (CategoryTheory.Category.toCategoryStruct.{u3, max u2 u3} (CategoryTheory.Idempotents.Karoubi.{u2, u3} C _inst_1) (CategoryTheory.Idempotents.Karoubi.instCategoryKaroubi.{u2, u3} C _inst_1))) P Q) (CategoryTheory.Idempotents.instAddCommGroupHomKaroubiToQuiverToCategoryStructInstCategoryKaroubi.{u2, u3} C _inst_1 _inst_2 P Q)) s (fun (x : α) => f x))) (Finset.sum.{u3, u1} (Quiver.Hom.{succ u3, u2} C (CategoryTheory.CategoryStruct.toQuiver.{u3, u2} C (CategoryTheory.Category.toCategoryStruct.{u3, u2} C _inst_1)) (CategoryTheory.Idempotents.Karoubi.X.{u2, u3} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.X.{u2, u3} C _inst_1 Q)) α (AddCommGroup.toAddCommMonoid.{u3} (Quiver.Hom.{succ u3, u2} C (CategoryTheory.CategoryStruct.toQuiver.{u3, u2} C (CategoryTheory.Category.toCategoryStruct.{u3, u2} C _inst_1)) (CategoryTheory.Idempotents.Karoubi.X.{u2, u3} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.X.{u2, u3} C _inst_1 Q)) (CategoryTheory.Preadditive.homGroup.{u3, u2} C _inst_1 _inst_2 (CategoryTheory.Idempotents.Karoubi.X.{u2, u3} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.X.{u2, u3} C _inst_1 Q))) s (fun (x : α) => CategoryTheory.Idempotents.Karoubi.Hom.f.{u2, u3} C _inst_1 P Q (f x)))
+ forall {C : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u3, u2} C] [_inst_2 : CategoryTheory.Preadditive.{u3, u2} C _inst_1] {P : CategoryTheory.Idempotents.Karoubi.{u2, u3} C _inst_1} {Q : CategoryTheory.Idempotents.Karoubi.{u2, u3} C _inst_1} {α : Type.{u1}} (s : Finset.{u1} α) (f : α -> (Quiver.Hom.{succ u3, max u2 u3} (CategoryTheory.Idempotents.Karoubi.{u2, u3} C _inst_1) (CategoryTheory.CategoryStruct.toQuiver.{u3, max u2 u3} (CategoryTheory.Idempotents.Karoubi.{u2, u3} C _inst_1) (CategoryTheory.Category.toCategoryStruct.{u3, max u2 u3} (CategoryTheory.Idempotents.Karoubi.{u2, u3} C _inst_1) (CategoryTheory.Idempotents.Karoubi.instCategoryKaroubi.{u2, u3} C _inst_1))) P Q)), Eq.{succ u3} (Quiver.Hom.{succ u3, u2} C (CategoryTheory.CategoryStruct.toQuiver.{u3, u2} C (CategoryTheory.Category.toCategoryStruct.{u3, u2} C _inst_1)) (CategoryTheory.Idempotents.Karoubi.X.{u2, u3} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.X.{u2, u3} C _inst_1 Q)) (CategoryTheory.Idempotents.Karoubi.Hom.f.{u2, u3} C _inst_1 P Q (Finset.sum.{u3, u1} (Quiver.Hom.{succ u3, max u2 u3} (CategoryTheory.Idempotents.Karoubi.{u2, u3} C _inst_1) (CategoryTheory.CategoryStruct.toQuiver.{u3, max u2 u3} (CategoryTheory.Idempotents.Karoubi.{u2, u3} C _inst_1) (CategoryTheory.Category.toCategoryStruct.{u3, max u2 u3} (CategoryTheory.Idempotents.Karoubi.{u2, u3} C _inst_1) (CategoryTheory.Idempotents.Karoubi.instCategoryKaroubi.{u2, u3} C _inst_1))) P Q) α (AddCommGroup.toAddCommMonoid.{u3} (Quiver.Hom.{succ u3, max u2 u3} (CategoryTheory.Idempotents.Karoubi.{u2, u3} C _inst_1) (CategoryTheory.CategoryStruct.toQuiver.{u3, max u2 u3} (CategoryTheory.Idempotents.Karoubi.{u2, u3} C _inst_1) (CategoryTheory.Category.toCategoryStruct.{u3, max u2 u3} (CategoryTheory.Idempotents.Karoubi.{u2, u3} C _inst_1) (CategoryTheory.Idempotents.Karoubi.instCategoryKaroubi.{u2, u3} C _inst_1))) P Q) (CategoryTheory.Idempotents.instAddCommGroupHom.{u2, u3} C _inst_1 _inst_2 P Q)) s (fun (x : α) => f x))) (Finset.sum.{u3, u1} (Quiver.Hom.{succ u3, u2} C (CategoryTheory.CategoryStruct.toQuiver.{u3, u2} C (CategoryTheory.Category.toCategoryStruct.{u3, u2} C _inst_1)) (CategoryTheory.Idempotents.Karoubi.X.{u2, u3} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.X.{u2, u3} C _inst_1 Q)) α (AddCommGroup.toAddCommMonoid.{u3} (Quiver.Hom.{succ u3, u2} C (CategoryTheory.CategoryStruct.toQuiver.{u3, u2} C (CategoryTheory.Category.toCategoryStruct.{u3, u2} C _inst_1)) (CategoryTheory.Idempotents.Karoubi.X.{u2, u3} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.X.{u2, u3} C _inst_1 Q)) (CategoryTheory.Preadditive.homGroup.{u3, u2} C _inst_1 _inst_2 (CategoryTheory.Idempotents.Karoubi.X.{u2, u3} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.X.{u2, u3} C _inst_1 Q))) s (fun (x : α) => CategoryTheory.Idempotents.Karoubi.Hom.f.{u2, u3} C _inst_1 P Q (f x)))
Case conversion may be inaccurate. Consider using '#align category_theory.idempotents.karoubi.sum_hom CategoryTheory.Idempotents.Karoubi.sum_homₓ'. -/
@[simp]
theorem sum_hom [Preadditive C] {P Q : Karoubi C} {α : Type _} (s : Finset α) (f : α → (P ⟶ Q)) :
@@ -483,7 +483,7 @@ theorem decompId_p_naturality {P Q : Karoubi C} (f : P ⟶ Q) :
lean 3 declaration is
forall {C : Type.{u1}} [_inst_1 : CategoryTheory.Category.{u2, u1} C] [_inst_2 : CategoryTheory.Preadditive.{u2, u1} C _inst_1] {P : CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1} {Q : CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1} (n : Int) (f : Quiver.Hom.{succ u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.CategoryStruct.toQuiver.{u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Category.toCategoryStruct.{u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.CategoryTheory.category.{u1, u2} C _inst_1))) P Q), Eq.{succ u2} (Quiver.Hom.{succ u2, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1)) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 Q)) (CategoryTheory.Idempotents.Karoubi.Hom.f.{u1, u2} C _inst_1 P Q (SMul.smul.{0, u2} Int (Quiver.Hom.{succ u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.CategoryStruct.toQuiver.{u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Category.toCategoryStruct.{u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.CategoryTheory.category.{u1, u2} C _inst_1))) P Q) (SubNegMonoid.SMulInt.{u2} (Quiver.Hom.{succ u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.CategoryStruct.toQuiver.{u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Category.toCategoryStruct.{u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.CategoryTheory.category.{u1, u2} C _inst_1))) P Q) (AddGroup.toSubNegMonoid.{u2} (Quiver.Hom.{succ u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.CategoryStruct.toQuiver.{u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Category.toCategoryStruct.{u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.CategoryTheory.category.{u1, u2} C _inst_1))) P Q) (AddCommGroup.toAddGroup.{u2} (Quiver.Hom.{succ u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.CategoryStruct.toQuiver.{u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Category.toCategoryStruct.{u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.CategoryTheory.category.{u1, u2} C _inst_1))) P Q) (CategoryTheory.Idempotents.Quiver.Hom.addCommGroup.{u1, u2} C _inst_1 _inst_2 P Q)))) n f)) (SMul.smul.{0, u2} Int (Quiver.Hom.{succ u2, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1)) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 Q)) (SubNegMonoid.SMulInt.{u2} (Quiver.Hom.{succ u2, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1)) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 Q)) (AddGroup.toSubNegMonoid.{u2} (Quiver.Hom.{succ u2, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1)) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 Q)) (AddCommGroup.toAddGroup.{u2} (Quiver.Hom.{succ u2, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1)) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 Q)) (CategoryTheory.Preadditive.homGroup.{u2, u1} C _inst_1 _inst_2 (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 Q))))) n (CategoryTheory.Idempotents.Karoubi.Hom.f.{u1, u2} C _inst_1 P Q f))
but is expected to have type
- forall {C : Type.{u1}} [_inst_1 : CategoryTheory.Category.{u2, u1} C] [_inst_2 : CategoryTheory.Preadditive.{u2, u1} C _inst_1] {P : CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1} {Q : CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1} (n : Int) (f : Quiver.Hom.{succ u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.CategoryStruct.toQuiver.{u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Category.toCategoryStruct.{u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.instCategoryKaroubi.{u1, u2} C _inst_1))) P Q), Eq.{succ u2} (Quiver.Hom.{succ u2, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1)) (CategoryTheory.Idempotents.Karoubi.X.{u1, u2} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.X.{u1, u2} C _inst_1 Q)) (CategoryTheory.Idempotents.Karoubi.Hom.f.{u1, u2} C _inst_1 P Q (HSMul.hSMul.{0, u2, u2} Int (Quiver.Hom.{succ u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.CategoryStruct.toQuiver.{u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Category.toCategoryStruct.{u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.instCategoryKaroubi.{u1, u2} C _inst_1))) P Q) (Quiver.Hom.{succ u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.CategoryStruct.toQuiver.{u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Category.toCategoryStruct.{u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.instCategoryKaroubi.{u1, u2} C _inst_1))) P Q) (instHSMul.{0, u2} Int (Quiver.Hom.{succ u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.CategoryStruct.toQuiver.{u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Category.toCategoryStruct.{u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.instCategoryKaroubi.{u1, u2} C _inst_1))) P Q) (SubNegMonoid.SMulInt.{u2} (Quiver.Hom.{succ u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.CategoryStruct.toQuiver.{u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Category.toCategoryStruct.{u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.instCategoryKaroubi.{u1, u2} C _inst_1))) P Q) (AddGroup.toSubNegMonoid.{u2} (Quiver.Hom.{succ u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.CategoryStruct.toQuiver.{u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Category.toCategoryStruct.{u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.instCategoryKaroubi.{u1, u2} C _inst_1))) P Q) (AddCommGroup.toAddGroup.{u2} (Quiver.Hom.{succ u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.CategoryStruct.toQuiver.{u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Category.toCategoryStruct.{u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.instCategoryKaroubi.{u1, u2} C _inst_1))) P Q) (CategoryTheory.Idempotents.instAddCommGroupHomKaroubiToQuiverToCategoryStructInstCategoryKaroubi.{u1, u2} C _inst_1 _inst_2 P Q))))) n f)) (HSMul.hSMul.{0, u2, u2} Int (Quiver.Hom.{succ u2, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1)) (CategoryTheory.Idempotents.Karoubi.X.{u1, u2} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.X.{u1, u2} C _inst_1 Q)) (Quiver.Hom.{succ u2, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1)) (CategoryTheory.Idempotents.Karoubi.X.{u1, u2} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.X.{u1, u2} C _inst_1 Q)) (instHSMul.{0, u2} Int (Quiver.Hom.{succ u2, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1)) (CategoryTheory.Idempotents.Karoubi.X.{u1, u2} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.X.{u1, u2} C _inst_1 Q)) (SubNegMonoid.SMulInt.{u2} (Quiver.Hom.{succ u2, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1)) (CategoryTheory.Idempotents.Karoubi.X.{u1, u2} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.X.{u1, u2} C _inst_1 Q)) (AddGroup.toSubNegMonoid.{u2} (Quiver.Hom.{succ u2, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1)) (CategoryTheory.Idempotents.Karoubi.X.{u1, u2} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.X.{u1, u2} C _inst_1 Q)) (AddCommGroup.toAddGroup.{u2} (Quiver.Hom.{succ u2, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1)) (CategoryTheory.Idempotents.Karoubi.X.{u1, u2} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.X.{u1, u2} C _inst_1 Q)) (CategoryTheory.Preadditive.homGroup.{u2, u1} C _inst_1 _inst_2 (CategoryTheory.Idempotents.Karoubi.X.{u1, u2} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.X.{u1, u2} C _inst_1 Q)))))) n (CategoryTheory.Idempotents.Karoubi.Hom.f.{u1, u2} C _inst_1 P Q f))
+ forall {C : Type.{u1}} [_inst_1 : CategoryTheory.Category.{u2, u1} C] [_inst_2 : CategoryTheory.Preadditive.{u2, u1} C _inst_1] {P : CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1} {Q : CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1} (n : Int) (f : Quiver.Hom.{succ u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.CategoryStruct.toQuiver.{u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Category.toCategoryStruct.{u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.instCategoryKaroubi.{u1, u2} C _inst_1))) P Q), Eq.{succ u2} (Quiver.Hom.{succ u2, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1)) (CategoryTheory.Idempotents.Karoubi.X.{u1, u2} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.X.{u1, u2} C _inst_1 Q)) (CategoryTheory.Idempotents.Karoubi.Hom.f.{u1, u2} C _inst_1 P Q (HSMul.hSMul.{0, u2, u2} Int (Quiver.Hom.{succ u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.CategoryStruct.toQuiver.{u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Category.toCategoryStruct.{u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.instCategoryKaroubi.{u1, u2} C _inst_1))) P Q) (Quiver.Hom.{succ u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.CategoryStruct.toQuiver.{u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Category.toCategoryStruct.{u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.instCategoryKaroubi.{u1, u2} C _inst_1))) P Q) (instHSMul.{0, u2} Int (Quiver.Hom.{succ u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.CategoryStruct.toQuiver.{u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Category.toCategoryStruct.{u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.instCategoryKaroubi.{u1, u2} C _inst_1))) P Q) (SubNegMonoid.SMulInt.{u2} (Quiver.Hom.{succ u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.CategoryStruct.toQuiver.{u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Category.toCategoryStruct.{u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.instCategoryKaroubi.{u1, u2} C _inst_1))) P Q) (AddGroup.toSubNegMonoid.{u2} (Quiver.Hom.{succ u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.CategoryStruct.toQuiver.{u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Category.toCategoryStruct.{u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.instCategoryKaroubi.{u1, u2} C _inst_1))) P Q) (AddCommGroup.toAddGroup.{u2} (Quiver.Hom.{succ u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.CategoryStruct.toQuiver.{u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Category.toCategoryStruct.{u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.instCategoryKaroubi.{u1, u2} C _inst_1))) P Q) (CategoryTheory.Idempotents.instAddCommGroupHom.{u1, u2} C _inst_1 _inst_2 P Q))))) n f)) (HSMul.hSMul.{0, u2, u2} Int (Quiver.Hom.{succ u2, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1)) (CategoryTheory.Idempotents.Karoubi.X.{u1, u2} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.X.{u1, u2} C _inst_1 Q)) (Quiver.Hom.{succ u2, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1)) (CategoryTheory.Idempotents.Karoubi.X.{u1, u2} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.X.{u1, u2} C _inst_1 Q)) (instHSMul.{0, u2} Int (Quiver.Hom.{succ u2, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1)) (CategoryTheory.Idempotents.Karoubi.X.{u1, u2} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.X.{u1, u2} C _inst_1 Q)) (SubNegMonoid.SMulInt.{u2} (Quiver.Hom.{succ u2, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1)) (CategoryTheory.Idempotents.Karoubi.X.{u1, u2} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.X.{u1, u2} C _inst_1 Q)) (AddGroup.toSubNegMonoid.{u2} (Quiver.Hom.{succ u2, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1)) (CategoryTheory.Idempotents.Karoubi.X.{u1, u2} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.X.{u1, u2} C _inst_1 Q)) (AddCommGroup.toAddGroup.{u2} (Quiver.Hom.{succ u2, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1)) (CategoryTheory.Idempotents.Karoubi.X.{u1, u2} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.X.{u1, u2} C _inst_1 Q)) (CategoryTheory.Preadditive.homGroup.{u2, u1} C _inst_1 _inst_2 (CategoryTheory.Idempotents.Karoubi.X.{u1, u2} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.X.{u1, u2} C _inst_1 Q)))))) n (CategoryTheory.Idempotents.Karoubi.Hom.f.{u1, u2} C _inst_1 P Q f))
Case conversion may be inaccurate. Consider using '#align category_theory.idempotents.karoubi.zsmul_hom CategoryTheory.Idempotents.Karoubi.zsmul_homₓ'. -/
@[simp]
theorem zsmul_hom [Preadditive C] {P Q : Karoubi C} (n : ℤ) (f : P ⟶ Q) : (n • f).f = n • f.f :=
mathlib commit https://github.com/leanprover-community/mathlib/commit/284fdd2962e67d2932fa3a79ce19fcf92d38e228
@@ -4,7 +4,7 @@ Released under Apache 2.0 license as described in the file LICENSE.
Authors: Joël Riou
! This file was ported from Lean 3 source module category_theory.idempotents.karoubi
-! leanprover-community/mathlib commit 200eda15d8ff5669854ff6bcc10aaf37cb70498f
+! leanprover-community/mathlib commit 19cb3751e5e9b3d97adb51023949c50c13b5fdfd
! Please do not edit these lines, except to modify the commit id
! if you have ported upstream changes.
-/
@@ -15,6 +15,9 @@ import Mathbin.CategoryTheory.Equivalence
/-!
# The Karoubi envelope of a category
+> THIS FILE IS SYNCHRONIZED WITH MATHLIB4.
+> Any changes to this file require a corresponding PR to mathlib4.
+
In this file, we define the Karoubi envelope `karoubi C` of a category `C`.
## Main constructions and definitions
mathlib commit https://github.com/leanprover-community/mathlib/commit/06a655b5fcfbda03502f9158bbf6c0f1400886f9
@@ -43,6 +43,7 @@ variable (C : Type _) [Category C]
namespace Idempotents
+#print CategoryTheory.Idempotents.Karoubi /-
/-- In a preadditive category `C`, when an object `X` decomposes as `X ≅ P ⨿ Q`, one may
consider `P` as a direct factor of `X` and up to unique isomorphism, it is determined by the
obvious idempotent `X ⟶ P ⟶ X` which is the projection onto `P` with kernel `Q`. More generally,
@@ -55,6 +56,7 @@ structure Karoubi where
p : X ⟶ X
idem : p ≫ p = p
#align category_theory.idempotents.karoubi CategoryTheory.Idempotents.Karoubi
+-/
namespace Karoubi
@@ -62,6 +64,12 @@ variable {C}
attribute [simp, reassoc.1] idem
+/- warning: category_theory.idempotents.karoubi.ext -> CategoryTheory.Idempotents.Karoubi.ext is a dubious translation:
+lean 3 declaration is
+ forall {C : Type.{u1}} [_inst_1 : CategoryTheory.Category.{u2, u1} C] {P : CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1} {Q : CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1} (h_X : Eq.{succ u1} C (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 Q)), (Eq.{succ u2} (Quiver.Hom.{succ u2, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1)) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 Q)) (CategoryTheory.CategoryStruct.comp.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 Q) (CategoryTheory.Idempotents.Karoubi.p.{u1, u2} C _inst_1 P) (CategoryTheory.eqToHom.{u2, u1} C _inst_1 (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 Q) h_X)) (CategoryTheory.CategoryStruct.comp.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 Q) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 Q) (CategoryTheory.eqToHom.{u2, u1} C _inst_1 (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 Q) h_X) (CategoryTheory.Idempotents.Karoubi.p.{u1, u2} C _inst_1 Q))) -> (Eq.{max (succ u1) (succ u2)} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) P Q)
+but is expected to have type
+ forall {C : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u1, u2} C] {P : CategoryTheory.Idempotents.Karoubi.{u2, u1} C _inst_1} {Q : CategoryTheory.Idempotents.Karoubi.{u2, u1} C _inst_1} (h_X : Eq.{succ u2} C (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 Q)), (Eq.{succ u1} (Quiver.Hom.{succ u1, u2} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1)) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 Q)) (CategoryTheory.CategoryStruct.comp.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 Q) (CategoryTheory.Idempotents.Karoubi.p.{u2, u1} C _inst_1 P) (CategoryTheory.eqToHom.{u1, u2} C _inst_1 (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 Q) h_X)) (CategoryTheory.CategoryStruct.comp.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 Q) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 Q) (CategoryTheory.eqToHom.{u1, u2} C _inst_1 (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 Q) h_X) (CategoryTheory.Idempotents.Karoubi.p.{u2, u1} C _inst_1 Q))) -> (Eq.{max (succ u2) (succ u1)} (CategoryTheory.Idempotents.Karoubi.{u2, u1} C _inst_1) P Q)
+Case conversion may be inaccurate. Consider using '#align category_theory.idempotents.karoubi.ext CategoryTheory.Idempotents.Karoubi.extₓ'. -/
@[ext]
theorem ext {P Q : Karoubi C} (h_X : P.pt = Q.pt) (h_p : P.p ≫ eqToHom h_X = eqToHom h_X ≫ Q.p) :
P = Q := by
@@ -73,6 +81,7 @@ theorem ext {P Q : Karoubi C} (h_X : P.pt = Q.pt) (h_p : P.p ≫ eqToHom h_X = e
h_p
#align category_theory.idempotents.karoubi.ext CategoryTheory.Idempotents.Karoubi.ext
+#print CategoryTheory.Idempotents.Karoubi.Hom /-
/-- A morphism `P ⟶ Q` in the category `karoubi C` is a morphism in the underlying category
`C` which satisfies a relation, which in the preadditive case, expresses that it induces a
map between the corresponding "formal direct factors" and that it vanishes on the complement
@@ -82,31 +91,62 @@ structure Hom (P Q : Karoubi C) where
f : P.pt ⟶ Q.pt
comm : f = P.p ≫ f ≫ Q.p
#align category_theory.idempotents.karoubi.hom CategoryTheory.Idempotents.Karoubi.Hom
+-/
instance [Preadditive C] (P Q : Karoubi C) : Inhabited (Hom P Q) :=
⟨⟨0, by rw [zero_comp, comp_zero]⟩⟩
+/- warning: category_theory.idempotents.karoubi.hom_ext -> CategoryTheory.Idempotents.Karoubi.hom_ext_iff is a dubious translation:
+lean 3 declaration is
+ forall {C : Type.{u1}} [_inst_1 : CategoryTheory.Category.{u2, u1} C] {P : CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1} {Q : CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1} {f : CategoryTheory.Idempotents.Karoubi.Hom.{u1, u2} C _inst_1 P Q} {g : CategoryTheory.Idempotents.Karoubi.Hom.{u1, u2} C _inst_1 P Q}, Iff (Eq.{succ u2} (CategoryTheory.Idempotents.Karoubi.Hom.{u1, u2} C _inst_1 P Q) f g) (Eq.{succ u2} (Quiver.Hom.{succ u2, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1)) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 Q)) (CategoryTheory.Idempotents.Karoubi.Hom.f.{u1, u2} C _inst_1 P Q f) (CategoryTheory.Idempotents.Karoubi.Hom.f.{u1, u2} C _inst_1 P Q g))
+but is expected to have type
+ forall {C : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u1, u2} C] {P : CategoryTheory.Idempotents.Karoubi.{u2, u1} C _inst_1} {Q : CategoryTheory.Idempotents.Karoubi.{u2, u1} C _inst_1} {f : Quiver.Hom.{succ u1, max u2 u1} (CategoryTheory.Idempotents.Karoubi.{u2, u1} C _inst_1) (CategoryTheory.CategoryStruct.toQuiver.{u1, max u2 u1} (CategoryTheory.Idempotents.Karoubi.{u2, u1} C _inst_1) (CategoryTheory.Category.toCategoryStruct.{u1, max u2 u1} (CategoryTheory.Idempotents.Karoubi.{u2, u1} C _inst_1) (CategoryTheory.Idempotents.Karoubi.instCategoryKaroubi.{u2, u1} C _inst_1))) P Q} {g : Quiver.Hom.{succ u1, max u2 u1} (CategoryTheory.Idempotents.Karoubi.{u2, u1} C _inst_1) (CategoryTheory.CategoryStruct.toQuiver.{u1, max u2 u1} (CategoryTheory.Idempotents.Karoubi.{u2, u1} C _inst_1) (CategoryTheory.Category.toCategoryStruct.{u1, max u2 u1} (CategoryTheory.Idempotents.Karoubi.{u2, u1} C _inst_1) (CategoryTheory.Idempotents.Karoubi.instCategoryKaroubi.{u2, u1} C _inst_1))) P Q}, Iff (Eq.{succ u1} (Quiver.Hom.{succ u1, max u2 u1} (CategoryTheory.Idempotents.Karoubi.{u2, u1} C _inst_1) (CategoryTheory.CategoryStruct.toQuiver.{u1, max u2 u1} (CategoryTheory.Idempotents.Karoubi.{u2, u1} C _inst_1) (CategoryTheory.Category.toCategoryStruct.{u1, max u2 u1} (CategoryTheory.Idempotents.Karoubi.{u2, u1} C _inst_1) (CategoryTheory.Idempotents.Karoubi.instCategoryKaroubi.{u2, u1} C _inst_1))) P Q) f g) (Eq.{succ u1} (Quiver.Hom.{succ u1, u2} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1)) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 Q)) (CategoryTheory.Idempotents.Karoubi.Hom.f.{u2, u1} C _inst_1 P Q f) (CategoryTheory.Idempotents.Karoubi.Hom.f.{u2, u1} C _inst_1 P Q g))
+Case conversion may be inaccurate. Consider using '#align category_theory.idempotents.karoubi.hom_ext CategoryTheory.Idempotents.Karoubi.hom_ext_iffₓ'. -/
@[simp]
-theorem hom_ext {P Q : Karoubi C} {f g : Hom P Q} : f = g ↔ f.f = g.f :=
+theorem hom_ext_iff {P Q : Karoubi C} {f g : Hom P Q} : f = g ↔ f.f = g.f :=
by
constructor
· intro h
rw [h]
· ext
-#align category_theory.idempotents.karoubi.hom_ext CategoryTheory.Idempotents.Karoubi.hom_ext
-
+#align category_theory.idempotents.karoubi.hom_ext CategoryTheory.Idempotents.Karoubi.hom_ext_iff
+
+/- warning: category_theory.idempotents.karoubi.p_comp -> CategoryTheory.Idempotents.Karoubi.p_comp is a dubious translation:
+lean 3 declaration is
+ forall {C : Type.{u1}} [_inst_1 : CategoryTheory.Category.{u2, u1} C] {P : CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1} {Q : CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1} (f : CategoryTheory.Idempotents.Karoubi.Hom.{u1, u2} C _inst_1 P Q), Eq.{succ u2} (Quiver.Hom.{succ u2, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1)) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 Q)) (CategoryTheory.CategoryStruct.comp.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 Q) (CategoryTheory.Idempotents.Karoubi.p.{u1, u2} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.Hom.f.{u1, u2} C _inst_1 P Q f)) (CategoryTheory.Idempotents.Karoubi.Hom.f.{u1, u2} C _inst_1 P Q f)
+but is expected to have type
+ forall {C : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u1, u2} C] {P : CategoryTheory.Idempotents.Karoubi.{u2, u1} C _inst_1} {Q : CategoryTheory.Idempotents.Karoubi.{u2, u1} C _inst_1} (f : CategoryTheory.Idempotents.Karoubi.Hom.{u2, u1} C _inst_1 P Q), Eq.{succ u1} (Quiver.Hom.{succ u1, u2} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1)) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 Q)) (CategoryTheory.CategoryStruct.comp.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 Q) (CategoryTheory.Idempotents.Karoubi.p.{u2, u1} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.Hom.f.{u2, u1} C _inst_1 P Q f)) (CategoryTheory.Idempotents.Karoubi.Hom.f.{u2, u1} C _inst_1 P Q f)
+Case conversion may be inaccurate. Consider using '#align category_theory.idempotents.karoubi.p_comp CategoryTheory.Idempotents.Karoubi.p_compₓ'. -/
@[simp, reassoc.1]
theorem p_comp {P Q : Karoubi C} (f : Hom P Q) : P.p ≫ f.f = f.f := by rw [f.comm, ← assoc, P.idem]
#align category_theory.idempotents.karoubi.p_comp CategoryTheory.Idempotents.Karoubi.p_comp
+/- warning: category_theory.idempotents.karoubi.comp_p -> CategoryTheory.Idempotents.Karoubi.comp_p is a dubious translation:
+lean 3 declaration is
+ forall {C : Type.{u1}} [_inst_1 : CategoryTheory.Category.{u2, u1} C] {P : CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1} {Q : CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1} (f : CategoryTheory.Idempotents.Karoubi.Hom.{u1, u2} C _inst_1 P Q), Eq.{succ u2} (Quiver.Hom.{succ u2, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1)) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 Q)) (CategoryTheory.CategoryStruct.comp.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 Q) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 Q) (CategoryTheory.Idempotents.Karoubi.Hom.f.{u1, u2} C _inst_1 P Q f) (CategoryTheory.Idempotents.Karoubi.p.{u1, u2} C _inst_1 Q)) (CategoryTheory.Idempotents.Karoubi.Hom.f.{u1, u2} C _inst_1 P Q f)
+but is expected to have type
+ forall {C : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u1, u2} C] {P : CategoryTheory.Idempotents.Karoubi.{u2, u1} C _inst_1} {Q : CategoryTheory.Idempotents.Karoubi.{u2, u1} C _inst_1} (f : CategoryTheory.Idempotents.Karoubi.Hom.{u2, u1} C _inst_1 P Q), Eq.{succ u1} (Quiver.Hom.{succ u1, u2} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1)) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 Q)) (CategoryTheory.CategoryStruct.comp.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 Q) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 Q) (CategoryTheory.Idempotents.Karoubi.Hom.f.{u2, u1} C _inst_1 P Q f) (CategoryTheory.Idempotents.Karoubi.p.{u2, u1} C _inst_1 Q)) (CategoryTheory.Idempotents.Karoubi.Hom.f.{u2, u1} C _inst_1 P Q f)
+Case conversion may be inaccurate. Consider using '#align category_theory.idempotents.karoubi.comp_p CategoryTheory.Idempotents.Karoubi.comp_pₓ'. -/
@[simp, reassoc.1]
theorem comp_p {P Q : Karoubi C} (f : Hom P Q) : f.f ≫ Q.p = f.f := by
rw [f.comm, assoc, assoc, Q.idem]
#align category_theory.idempotents.karoubi.comp_p CategoryTheory.Idempotents.Karoubi.comp_p
+/- warning: category_theory.idempotents.karoubi.p_comm -> CategoryTheory.Idempotents.Karoubi.p_comm is a dubious translation:
+lean 3 declaration is
+ forall {C : Type.{u1}} [_inst_1 : CategoryTheory.Category.{u2, u1} C] {P : CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1} {Q : CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1} (f : CategoryTheory.Idempotents.Karoubi.Hom.{u1, u2} C _inst_1 P Q), Eq.{succ u2} (Quiver.Hom.{succ u2, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1)) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 Q)) (CategoryTheory.CategoryStruct.comp.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 Q) (CategoryTheory.Idempotents.Karoubi.p.{u1, u2} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.Hom.f.{u1, u2} C _inst_1 P Q f)) (CategoryTheory.CategoryStruct.comp.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 Q) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 Q) (CategoryTheory.Idempotents.Karoubi.Hom.f.{u1, u2} C _inst_1 P Q f) (CategoryTheory.Idempotents.Karoubi.p.{u1, u2} C _inst_1 Q))
+but is expected to have type
+ forall {C : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u1, u2} C] {P : CategoryTheory.Idempotents.Karoubi.{u2, u1} C _inst_1} {Q : CategoryTheory.Idempotents.Karoubi.{u2, u1} C _inst_1} (f : CategoryTheory.Idempotents.Karoubi.Hom.{u2, u1} C _inst_1 P Q), Eq.{succ u1} (Quiver.Hom.{succ u1, u2} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1)) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 Q)) (CategoryTheory.CategoryStruct.comp.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 Q) (CategoryTheory.Idempotents.Karoubi.p.{u2, u1} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.Hom.f.{u2, u1} C _inst_1 P Q f)) (CategoryTheory.CategoryStruct.comp.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 Q) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 Q) (CategoryTheory.Idempotents.Karoubi.Hom.f.{u2, u1} C _inst_1 P Q f) (CategoryTheory.Idempotents.Karoubi.p.{u2, u1} C _inst_1 Q))
+Case conversion may be inaccurate. Consider using '#align category_theory.idempotents.karoubi.p_comm CategoryTheory.Idempotents.Karoubi.p_commₓ'. -/
theorem p_comm {P Q : Karoubi C} (f : Hom P Q) : P.p ≫ f.f = f.f ≫ Q.p := by rw [p_comp, comp_p]
#align category_theory.idempotents.karoubi.p_comm CategoryTheory.Idempotents.Karoubi.p_comm
+/- warning: category_theory.idempotents.karoubi.comp_proof -> CategoryTheory.Idempotents.Karoubi.comp_proof is a dubious translation:
+lean 3 declaration is
+ forall {C : Type.{u1}} [_inst_1 : CategoryTheory.Category.{u2, u1} C] {P : CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1} {Q : CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1} {R : CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1} (g : CategoryTheory.Idempotents.Karoubi.Hom.{u1, u2} C _inst_1 Q R) (f : CategoryTheory.Idempotents.Karoubi.Hom.{u1, u2} C _inst_1 P Q), Eq.{succ u2} (Quiver.Hom.{succ u2, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1)) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 R)) (CategoryTheory.CategoryStruct.comp.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 Q) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 R) (CategoryTheory.Idempotents.Karoubi.Hom.f.{u1, u2} C _inst_1 P Q f) (CategoryTheory.Idempotents.Karoubi.Hom.f.{u1, u2} C _inst_1 Q R g)) (CategoryTheory.CategoryStruct.comp.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 R) (CategoryTheory.Idempotents.Karoubi.p.{u1, u2} C _inst_1 P) (CategoryTheory.CategoryStruct.comp.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 R) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 R) (CategoryTheory.CategoryStruct.comp.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 Q) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 R) (CategoryTheory.Idempotents.Karoubi.Hom.f.{u1, u2} C _inst_1 P Q f) (CategoryTheory.Idempotents.Karoubi.Hom.f.{u1, u2} C _inst_1 Q R g)) (CategoryTheory.Idempotents.Karoubi.p.{u1, u2} C _inst_1 R)))
+but is expected to have type
+ forall {C : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u1, u2} C] {P : CategoryTheory.Idempotents.Karoubi.{u2, u1} C _inst_1} {Q : CategoryTheory.Idempotents.Karoubi.{u2, u1} C _inst_1} {R : CategoryTheory.Idempotents.Karoubi.{u2, u1} C _inst_1} (g : CategoryTheory.Idempotents.Karoubi.Hom.{u2, u1} C _inst_1 Q R) (f : CategoryTheory.Idempotents.Karoubi.Hom.{u2, u1} C _inst_1 P Q), Eq.{succ u1} (Quiver.Hom.{succ u1, u2} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1)) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 R)) (CategoryTheory.CategoryStruct.comp.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 Q) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 R) (CategoryTheory.Idempotents.Karoubi.Hom.f.{u2, u1} C _inst_1 P Q f) (CategoryTheory.Idempotents.Karoubi.Hom.f.{u2, u1} C _inst_1 Q R g)) (CategoryTheory.CategoryStruct.comp.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 R) (CategoryTheory.Idempotents.Karoubi.p.{u2, u1} C _inst_1 P) (CategoryTheory.CategoryStruct.comp.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 R) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 R) (CategoryTheory.CategoryStruct.comp.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 Q) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 R) (CategoryTheory.Idempotents.Karoubi.Hom.f.{u2, u1} C _inst_1 P Q f) (CategoryTheory.Idempotents.Karoubi.Hom.f.{u2, u1} C _inst_1 Q R g)) (CategoryTheory.Idempotents.Karoubi.p.{u2, u1} C _inst_1 R)))
+Case conversion may be inaccurate. Consider using '#align category_theory.idempotents.karoubi.comp_proof CategoryTheory.Idempotents.Karoubi.comp_proofₓ'. -/
theorem comp_proof {P Q R : Karoubi C} (g : Hom Q R) (f : Hom P Q) :
f.f ≫ g.f = P.p ≫ (f.f ≫ g.f) ≫ R.p := by rw [assoc, comp_p, ← assoc, p_comp]
#align category_theory.idempotents.karoubi.comp_proof CategoryTheory.Idempotents.Karoubi.comp_proof
@@ -117,28 +157,60 @@ instance : Category (Karoubi C) where
id P := ⟨P.p, by repeat' rw [P.idem]⟩
comp P Q R f g := ⟨f.f ≫ g.f, Karoubi.comp_proof g f⟩
+/- warning: category_theory.idempotents.karoubi.comp_f -> CategoryTheory.Idempotents.Karoubi.comp_f is a dubious translation:
+lean 3 declaration is
+ forall {C : Type.{u1}} [_inst_1 : CategoryTheory.Category.{u2, u1} C] {P : CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1} {Q : CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1} {R : CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1} (f : Quiver.Hom.{succ u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.CategoryStruct.toQuiver.{u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Category.toCategoryStruct.{u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.CategoryTheory.category.{u1, u2} C _inst_1))) P Q) (g : Quiver.Hom.{succ u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.CategoryStruct.toQuiver.{u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Category.toCategoryStruct.{u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.CategoryTheory.category.{u1, u2} C _inst_1))) Q R), Eq.{succ u2} (Quiver.Hom.{succ u2, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1)) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 R)) (CategoryTheory.Idempotents.Karoubi.Hom.f.{u1, u2} C _inst_1 P R (CategoryTheory.CategoryStruct.comp.{u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Category.toCategoryStruct.{u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.CategoryTheory.category.{u1, u2} C _inst_1)) P Q R f g)) (CategoryTheory.CategoryStruct.comp.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 Q) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 R) (CategoryTheory.Idempotents.Karoubi.Hom.f.{u1, u2} C _inst_1 P Q f) (CategoryTheory.Idempotents.Karoubi.Hom.f.{u1, u2} C _inst_1 Q R g))
+but is expected to have type
+ forall {C : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u1, u2} C] {P : CategoryTheory.Idempotents.Karoubi.{u2, u1} C _inst_1} {Q : CategoryTheory.Idempotents.Karoubi.{u2, u1} C _inst_1} {R : CategoryTheory.Idempotents.Karoubi.{u2, u1} C _inst_1} (f : Quiver.Hom.{succ u1, max u2 u1} (CategoryTheory.Idempotents.Karoubi.{u2, u1} C _inst_1) (CategoryTheory.CategoryStruct.toQuiver.{u1, max u2 u1} (CategoryTheory.Idempotents.Karoubi.{u2, u1} C _inst_1) (CategoryTheory.Category.toCategoryStruct.{u1, max u2 u1} (CategoryTheory.Idempotents.Karoubi.{u2, u1} C _inst_1) (CategoryTheory.Idempotents.Karoubi.instCategoryKaroubi.{u2, u1} C _inst_1))) P Q) (g : Quiver.Hom.{succ u1, max u2 u1} (CategoryTheory.Idempotents.Karoubi.{u2, u1} C _inst_1) (CategoryTheory.CategoryStruct.toQuiver.{u1, max u2 u1} (CategoryTheory.Idempotents.Karoubi.{u2, u1} C _inst_1) (CategoryTheory.Category.toCategoryStruct.{u1, max u2 u1} (CategoryTheory.Idempotents.Karoubi.{u2, u1} C _inst_1) (CategoryTheory.Idempotents.Karoubi.instCategoryKaroubi.{u2, u1} C _inst_1))) Q R), Eq.{succ u1} (Quiver.Hom.{succ u1, u2} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1)) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 R)) (CategoryTheory.Idempotents.Karoubi.Hom.f.{u2, u1} C _inst_1 P R (CategoryTheory.CategoryStruct.comp.{u1, max u2 u1} (CategoryTheory.Idempotents.Karoubi.{u2, u1} C _inst_1) (CategoryTheory.Category.toCategoryStruct.{u1, max u2 u1} (CategoryTheory.Idempotents.Karoubi.{u2, u1} C _inst_1) (CategoryTheory.Idempotents.Karoubi.instCategoryKaroubi.{u2, u1} C _inst_1)) P Q R f g)) (CategoryTheory.CategoryStruct.comp.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 Q) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 R) (CategoryTheory.Idempotents.Karoubi.Hom.f.{u2, u1} C _inst_1 P Q f) (CategoryTheory.Idempotents.Karoubi.Hom.f.{u2, u1} C _inst_1 Q R g))
+Case conversion may be inaccurate. Consider using '#align category_theory.idempotents.karoubi.comp_f CategoryTheory.Idempotents.Karoubi.comp_fₓ'. -/
@[simp]
theorem comp_f {P Q R : Karoubi C} (f : P ⟶ Q) (g : Q ⟶ R) : (f ≫ g).f = f.f ≫ g.f := by rfl
#align category_theory.idempotents.karoubi.comp_f CategoryTheory.Idempotents.Karoubi.comp_f
+/- warning: category_theory.idempotents.karoubi.id_eq -> CategoryTheory.Idempotents.Karoubi.id_eq is a dubious translation:
+lean 3 declaration is
+ forall {C : Type.{u1}} [_inst_1 : CategoryTheory.Category.{u2, u1} C] {P : CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1}, Eq.{succ u2} (Quiver.Hom.{succ u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.CategoryStruct.toQuiver.{u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Category.toCategoryStruct.{u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.CategoryTheory.category.{u1, u2} C _inst_1))) P P) (CategoryTheory.CategoryStruct.id.{u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Category.toCategoryStruct.{u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.CategoryTheory.category.{u1, u2} C _inst_1)) P) (CategoryTheory.Idempotents.Karoubi.Hom.mk.{u1, u2} C _inst_1 P P (CategoryTheory.Idempotents.Karoubi.p.{u1, u2} C _inst_1 P) (Eq.mpr.{0} (Eq.{succ u2} (Quiver.Hom.{succ u2, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1)) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P)) (CategoryTheory.Idempotents.Karoubi.p.{u1, u2} C _inst_1 P) (CategoryTheory.CategoryStruct.comp.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.p.{u1, u2} C _inst_1 P) (CategoryTheory.CategoryStruct.comp.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.p.{u1, u2} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.p.{u1, u2} C _inst_1 P)))) (Eq.{succ u2} (Quiver.Hom.{succ u2, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1)) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P)) (CategoryTheory.Idempotents.Karoubi.p.{u1, u2} C _inst_1 P) (CategoryTheory.CategoryStruct.comp.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.p.{u1, u2} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.p.{u1, u2} C _inst_1 P))) (id_tag Tactic.IdTag.rw (Eq.{1} Prop (Eq.{succ u2} (Quiver.Hom.{succ u2, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1)) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P)) (CategoryTheory.Idempotents.Karoubi.p.{u1, u2} C _inst_1 P) (CategoryTheory.CategoryStruct.comp.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.p.{u1, u2} C _inst_1 P) (CategoryTheory.CategoryStruct.comp.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.p.{u1, u2} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.p.{u1, u2} C _inst_1 P)))) (Eq.{succ u2} (Quiver.Hom.{succ u2, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1)) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P)) (CategoryTheory.Idempotents.Karoubi.p.{u1, u2} C _inst_1 P) (CategoryTheory.CategoryStruct.comp.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.p.{u1, u2} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.p.{u1, u2} C _inst_1 P)))) (Eq.ndrec.{0, succ u2} (Quiver.Hom.{succ u2, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1)) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P)) (CategoryTheory.CategoryStruct.comp.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.p.{u1, u2} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.p.{u1, u2} C _inst_1 P)) (fun (_a : Quiver.Hom.{succ u2, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1)) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P)) => Eq.{1} Prop (Eq.{succ u2} (Quiver.Hom.{succ u2, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1)) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P)) (CategoryTheory.Idempotents.Karoubi.p.{u1, u2} C _inst_1 P) (CategoryTheory.CategoryStruct.comp.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.p.{u1, u2} C _inst_1 P) (CategoryTheory.CategoryStruct.comp.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.p.{u1, u2} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.p.{u1, u2} C _inst_1 P)))) (Eq.{succ u2} (Quiver.Hom.{succ u2, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1)) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P)) (CategoryTheory.Idempotents.Karoubi.p.{u1, u2} C _inst_1 P) (CategoryTheory.CategoryStruct.comp.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.p.{u1, u2} C _inst_1 P) _a))) (rfl.{1} Prop (Eq.{succ u2} (Quiver.Hom.{succ u2, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1)) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P)) (CategoryTheory.Idempotents.Karoubi.p.{u1, u2} C _inst_1 P) (CategoryTheory.CategoryStruct.comp.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.p.{u1, u2} C _inst_1 P) (CategoryTheory.CategoryStruct.comp.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.p.{u1, u2} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.p.{u1, u2} C _inst_1 P))))) (CategoryTheory.Idempotents.Karoubi.p.{u1, u2} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.idem.{u1, u2} C _inst_1 P))) (Eq.mpr.{0} (Eq.{succ u2} (Quiver.Hom.{succ u2, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1)) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P)) (CategoryTheory.Idempotents.Karoubi.p.{u1, u2} C _inst_1 P) (CategoryTheory.CategoryStruct.comp.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.p.{u1, u2} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.p.{u1, u2} C _inst_1 P))) (Eq.{succ u2} (Quiver.Hom.{succ u2, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1)) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P)) (CategoryTheory.Idempotents.Karoubi.p.{u1, u2} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.p.{u1, u2} C _inst_1 P)) (id_tag Tactic.IdTag.rw (Eq.{1} Prop (Eq.{succ u2} (Quiver.Hom.{succ u2, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1)) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P)) (CategoryTheory.Idempotents.Karoubi.p.{u1, u2} C _inst_1 P) (CategoryTheory.CategoryStruct.comp.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.p.{u1, u2} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.p.{u1, u2} C _inst_1 P))) (Eq.{succ u2} (Quiver.Hom.{succ u2, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1)) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P)) (CategoryTheory.Idempotents.Karoubi.p.{u1, u2} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.p.{u1, u2} C _inst_1 P))) (Eq.ndrec.{0, succ u2} (Quiver.Hom.{succ u2, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1)) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P)) (CategoryTheory.CategoryStruct.comp.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.p.{u1, u2} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.p.{u1, u2} C _inst_1 P)) (fun (_a : Quiver.Hom.{succ u2, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1)) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P)) => Eq.{1} Prop (Eq.{succ u2} (Quiver.Hom.{succ u2, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1)) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P)) (CategoryTheory.Idempotents.Karoubi.p.{u1, u2} C _inst_1 P) (CategoryTheory.CategoryStruct.comp.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.p.{u1, u2} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.p.{u1, u2} C _inst_1 P))) (Eq.{succ u2} (Quiver.Hom.{succ u2, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1)) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P)) (CategoryTheory.Idempotents.Karoubi.p.{u1, u2} C _inst_1 P) _a)) (rfl.{1} Prop (Eq.{succ u2} (Quiver.Hom.{succ u2, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1)) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P)) (CategoryTheory.Idempotents.Karoubi.p.{u1, u2} C _inst_1 P) (CategoryTheory.CategoryStruct.comp.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.p.{u1, u2} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.p.{u1, u2} C _inst_1 P)))) (CategoryTheory.Idempotents.Karoubi.p.{u1, u2} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.idem.{u1, u2} C _inst_1 P))) (rfl.{succ u2} (Quiver.Hom.{succ u2, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1)) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P)) (CategoryTheory.Idempotents.Karoubi.p.{u1, u2} C _inst_1 P)))))
+but is expected to have type
+ forall {C : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u1, u2} C] {P : CategoryTheory.Idempotents.Karoubi.{u2, u1} C _inst_1}, Eq.{succ u1} (Quiver.Hom.{succ u1, max u2 u1} (CategoryTheory.Idempotents.Karoubi.{u2, u1} C _inst_1) (CategoryTheory.CategoryStruct.toQuiver.{u1, max u2 u1} (CategoryTheory.Idempotents.Karoubi.{u2, u1} C _inst_1) (CategoryTheory.Category.toCategoryStruct.{u1, max u2 u1} (CategoryTheory.Idempotents.Karoubi.{u2, u1} C _inst_1) (CategoryTheory.Idempotents.Karoubi.instCategoryKaroubi.{u2, u1} C _inst_1))) P P) (CategoryTheory.CategoryStruct.id.{u1, max u2 u1} (CategoryTheory.Idempotents.Karoubi.{u2, u1} C _inst_1) (CategoryTheory.Category.toCategoryStruct.{u1, max u2 u1} (CategoryTheory.Idempotents.Karoubi.{u2, u1} C _inst_1) (CategoryTheory.Idempotents.Karoubi.instCategoryKaroubi.{u2, u1} C _inst_1)) P) (CategoryTheory.Idempotents.Karoubi.Hom.mk.{u2, u1} C _inst_1 P P (CategoryTheory.Idempotents.Karoubi.p.{u2, u1} C _inst_1 P) (Eq.mpr.{0} (Eq.{succ u1} (Quiver.Hom.{succ u1, u2} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1)) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 P)) (CategoryTheory.Idempotents.Karoubi.p.{u2, u1} C _inst_1 P) (CategoryTheory.CategoryStruct.comp.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.p.{u2, u1} C _inst_1 P) (CategoryTheory.CategoryStruct.comp.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.p.{u2, u1} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.p.{u2, u1} C _inst_1 P)))) (Eq.{succ u1} (Quiver.Hom.{succ u1, u2} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1)) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 P)) (CategoryTheory.Idempotents.Karoubi.p.{u2, u1} C _inst_1 P) (CategoryTheory.CategoryStruct.comp.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.p.{u2, u1} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.p.{u2, u1} C _inst_1 P))) (id.{0} (Eq.{1} Prop (Eq.{succ u1} (Quiver.Hom.{succ u1, u2} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1)) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 P)) (CategoryTheory.Idempotents.Karoubi.p.{u2, u1} C _inst_1 P) (CategoryTheory.CategoryStruct.comp.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.p.{u2, u1} C _inst_1 P) (CategoryTheory.CategoryStruct.comp.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.p.{u2, u1} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.p.{u2, u1} C _inst_1 P)))) (Eq.{succ u1} (Quiver.Hom.{succ u1, u2} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1)) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 P)) (CategoryTheory.Idempotents.Karoubi.p.{u2, u1} C _inst_1 P) (CategoryTheory.CategoryStruct.comp.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.p.{u2, u1} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.p.{u2, u1} C _inst_1 P)))) (Eq.ndrec.{0, succ u1} (Quiver.Hom.{succ u1, u2} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1)) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 P)) (CategoryTheory.CategoryStruct.comp.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.p.{u2, u1} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.p.{u2, u1} C _inst_1 P)) (fun (_a : Quiver.Hom.{succ u1, u2} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1)) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 P)) => Eq.{1} Prop (Eq.{succ u1} (Quiver.Hom.{succ u1, u2} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1)) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 P)) (CategoryTheory.Idempotents.Karoubi.p.{u2, u1} C _inst_1 P) (CategoryTheory.CategoryStruct.comp.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.p.{u2, u1} C _inst_1 P) (CategoryTheory.CategoryStruct.comp.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.p.{u2, u1} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.p.{u2, u1} C _inst_1 P)))) (Eq.{succ u1} (Quiver.Hom.{succ u1, u2} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1)) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 P)) (CategoryTheory.Idempotents.Karoubi.p.{u2, u1} C _inst_1 P) (CategoryTheory.CategoryStruct.comp.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.p.{u2, u1} C _inst_1 P) _a))) (Eq.refl.{1} Prop (Eq.{succ u1} (Quiver.Hom.{succ u1, u2} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1)) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 P)) (CategoryTheory.Idempotents.Karoubi.p.{u2, u1} C _inst_1 P) (CategoryTheory.CategoryStruct.comp.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.p.{u2, u1} C _inst_1 P) (CategoryTheory.CategoryStruct.comp.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.p.{u2, u1} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.p.{u2, u1} C _inst_1 P))))) (CategoryTheory.Idempotents.Karoubi.p.{u2, u1} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.idem.{u2, u1} C _inst_1 P))) (Eq.mpr.{0} (Eq.{succ u1} (Quiver.Hom.{succ u1, u2} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1)) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 P)) (CategoryTheory.Idempotents.Karoubi.p.{u2, u1} C _inst_1 P) (CategoryTheory.CategoryStruct.comp.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.p.{u2, u1} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.p.{u2, u1} C _inst_1 P))) (Eq.{succ u1} (Quiver.Hom.{succ u1, u2} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1)) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 P)) (CategoryTheory.Idempotents.Karoubi.p.{u2, u1} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.p.{u2, u1} C _inst_1 P)) (id.{0} (Eq.{1} Prop (Eq.{succ u1} (Quiver.Hom.{succ u1, u2} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1)) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 P)) (CategoryTheory.Idempotents.Karoubi.p.{u2, u1} C _inst_1 P) (CategoryTheory.CategoryStruct.comp.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.p.{u2, u1} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.p.{u2, u1} C _inst_1 P))) (Eq.{succ u1} (Quiver.Hom.{succ u1, u2} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1)) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 P)) (CategoryTheory.Idempotents.Karoubi.p.{u2, u1} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.p.{u2, u1} C _inst_1 P))) (Eq.ndrec.{0, succ u1} (Quiver.Hom.{succ u1, u2} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1)) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 P)) (CategoryTheory.CategoryStruct.comp.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.p.{u2, u1} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.p.{u2, u1} C _inst_1 P)) (fun (_a : Quiver.Hom.{succ u1, u2} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1)) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 P)) => Eq.{1} Prop (Eq.{succ u1} (Quiver.Hom.{succ u1, u2} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1)) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 P)) (CategoryTheory.Idempotents.Karoubi.p.{u2, u1} C _inst_1 P) (CategoryTheory.CategoryStruct.comp.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.p.{u2, u1} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.p.{u2, u1} C _inst_1 P))) (Eq.{succ u1} (Quiver.Hom.{succ u1, u2} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1)) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 P)) (CategoryTheory.Idempotents.Karoubi.p.{u2, u1} C _inst_1 P) _a)) (Eq.refl.{1} Prop (Eq.{succ u1} (Quiver.Hom.{succ u1, u2} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1)) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 P)) (CategoryTheory.Idempotents.Karoubi.p.{u2, u1} C _inst_1 P) (CategoryTheory.CategoryStruct.comp.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.p.{u2, u1} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.p.{u2, u1} C _inst_1 P)))) (CategoryTheory.Idempotents.Karoubi.p.{u2, u1} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.idem.{u2, u1} C _inst_1 P))) (Eq.refl.{succ u1} (Quiver.Hom.{succ u1, u2} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1)) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 P)) (CategoryTheory.Idempotents.Karoubi.p.{u2, u1} C _inst_1 P)))))
+Case conversion may be inaccurate. Consider using '#align category_theory.idempotents.karoubi.id_eq CategoryTheory.Idempotents.Karoubi.id_eqₓ'. -/
@[simp]
theorem id_eq {P : Karoubi C} : 𝟙 P = ⟨P.p, by repeat' rw [P.idem]⟩ := by rfl
#align category_theory.idempotents.karoubi.id_eq CategoryTheory.Idempotents.Karoubi.id_eq
+/- warning: category_theory.idempotents.karoubi.coe -> CategoryTheory.Idempotents.Karoubi.coe is a dubious translation:
+lean 3 declaration is
+ forall {C : Type.{u1}} [_inst_1 : CategoryTheory.Category.{u2, u1} C], CoeTCₓ.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1)
+but is expected to have type
+ forall {C : Type.{u1}} [_inst_1 : CategoryTheory.Category.{u2, u1} C], CoeTC.{succ u1, max (succ u2) (succ u1)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1)
+Case conversion may be inaccurate. Consider using '#align category_theory.idempotents.karoubi.coe CategoryTheory.Idempotents.Karoubi.coeₓ'. -/
/-- It is possible to coerce an object of `C` into an object of `karoubi C`.
See also the functor `to_karoubi`. -/
instance coe : CoeTC C (Karoubi C) :=
⟨fun X => ⟨X, 𝟙 X, by rw [comp_id]⟩⟩
#align category_theory.idempotents.karoubi.coe CategoryTheory.Idempotents.Karoubi.coe
+/- warning: category_theory.idempotents.karoubi.coe_X -> CategoryTheory.Idempotents.Karoubi.coe_X is a dubious translation:
+lean 3 declaration is
+ forall {C : Type.{u1}} [_inst_1 : CategoryTheory.Category.{u2, u1} C] (X : C), Eq.{succ u1} C (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) X)) X
+but is expected to have type
+ forall {C : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u1, u2} C] (X : C), Eq.{succ u2} C (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 (CategoryTheory.Idempotents.Karoubi.mk.{u2, u1} C _inst_1 X (CategoryTheory.CategoryStruct.id.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1) X) (CategoryTheory.Idempotents.Karoubi.coe.proof_1.{u1, u2} C _inst_1 X))) X
+Case conversion may be inaccurate. Consider using '#align category_theory.idempotents.karoubi.coe_X CategoryTheory.Idempotents.Karoubi.coe_Xₓ'. -/
@[simp]
-theorem coe_x (X : C) : (X : Karoubi C).pt = X := by rfl
-#align category_theory.idempotents.karoubi.coe_X CategoryTheory.Idempotents.Karoubi.coe_x
+theorem coe_X (X : C) : (X : Karoubi C).pt = X := by rfl
+#align category_theory.idempotents.karoubi.coe_X CategoryTheory.Idempotents.Karoubi.coe_X
+#print CategoryTheory.Idempotents.Karoubi.coe_p /-
@[simp]
theorem coe_p (X : C) : (X : Karoubi C).p = 𝟙 X := by rfl
#align category_theory.idempotents.karoubi.coe_p CategoryTheory.Idempotents.Karoubi.coe_p
+-/
+/- warning: category_theory.idempotents.karoubi.eq_to_hom_f -> CategoryTheory.Idempotents.Karoubi.eqToHom_f is a dubious translation:
+lean 3 declaration is
+ forall {C : Type.{u1}} [_inst_1 : CategoryTheory.Category.{u2, u1} C] {P : CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1} {Q : CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1} (h : Eq.{max (succ u1) (succ u2)} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) P Q), Eq.{succ u2} (Quiver.Hom.{succ u2, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1)) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 Q)) (CategoryTheory.Idempotents.Karoubi.Hom.f.{u1, u2} C _inst_1 P Q (CategoryTheory.eqToHom.{u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.CategoryTheory.category.{u1, u2} C _inst_1) P Q h)) (CategoryTheory.CategoryStruct.comp.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 Q) (CategoryTheory.Idempotents.Karoubi.p.{u1, u2} C _inst_1 P) (CategoryTheory.eqToHom.{u2, u1} C _inst_1 (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 Q) (congr_arg.{max (succ u1) (succ u2), succ u1} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) C P Q (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1) h)))
+but is expected to have type
+ forall {C : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u1, u2} C] {P : CategoryTheory.Idempotents.Karoubi.{u2, u1} C _inst_1} {Q : CategoryTheory.Idempotents.Karoubi.{u2, u1} C _inst_1} (h : Eq.{max (succ u2) (succ u1)} (CategoryTheory.Idempotents.Karoubi.{u2, u1} C _inst_1) P Q), Eq.{succ u1} (Quiver.Hom.{succ u1, u2} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1)) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 Q)) (CategoryTheory.Idempotents.Karoubi.Hom.f.{u2, u1} C _inst_1 P Q (CategoryTheory.eqToHom.{u1, max u2 u1} (CategoryTheory.Idempotents.Karoubi.{u2, u1} C _inst_1) (CategoryTheory.Idempotents.Karoubi.instCategoryKaroubi.{u2, u1} C _inst_1) P Q h)) (CategoryTheory.CategoryStruct.comp.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 Q) (CategoryTheory.Idempotents.Karoubi.p.{u2, u1} C _inst_1 P) (CategoryTheory.eqToHom.{u1, u2} C _inst_1 (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 Q) (congr_arg.{max (succ u1) (succ u2), succ u2} (CategoryTheory.Idempotents.Karoubi.{u2, u1} C _inst_1) C P Q (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1) h)))
+Case conversion may be inaccurate. Consider using '#align category_theory.idempotents.karoubi.eq_to_hom_f CategoryTheory.Idempotents.Karoubi.eqToHom_fₓ'. -/
@[simp]
theorem eqToHom_f {P Q : Karoubi C} (h : P = Q) :
Karoubi.Hom.f (eqToHom h) = P.p ≫ eqToHom (congr_arg Karoubi.x h) :=
@@ -149,6 +221,12 @@ theorem eqToHom_f {P Q : Karoubi C} (h : P = Q) :
end Karoubi
+/- warning: category_theory.idempotents.to_karoubi -> CategoryTheory.Idempotents.toKaroubi is a dubious translation:
+lean 3 declaration is
+ forall (C : Type.{u1}) [_inst_1 : CategoryTheory.Category.{u2, u1} C], CategoryTheory.Functor.{u2, u2, u1, max u1 u2} C _inst_1 (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.CategoryTheory.category.{u1, u2} C _inst_1)
+but is expected to have type
+ forall (C : Type.{u1}) [_inst_1 : CategoryTheory.Category.{u2, u1} C], CategoryTheory.Functor.{u2, u2, u1, max u2 u1} C _inst_1 (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.instCategoryKaroubi.{u1, u2} C _inst_1)
+Case conversion may be inaccurate. Consider using '#align category_theory.idempotents.to_karoubi CategoryTheory.Idempotents.toKaroubiₓ'. -/
/-- The obvious fully faithful functor `to_karoubi` sends an object `X : C` to the obvious
formal direct factor of `X` given by `𝟙 X`. -/
@[simps]
@@ -190,10 +268,22 @@ instance [Preadditive C] {P Q : Karoubi C} : AddCommGroup (P ⟶ Q)
namespace Karoubi
+/- warning: category_theory.idempotents.karoubi.hom_eq_zero_iff -> CategoryTheory.Idempotents.Karoubi.hom_eq_zero_iff is a dubious translation:
+lean 3 declaration is
+ forall {C : Type.{u1}} [_inst_1 : CategoryTheory.Category.{u2, u1} C] [_inst_2 : CategoryTheory.Preadditive.{u2, u1} C _inst_1] {P : CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1} {Q : CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1} {f : CategoryTheory.Idempotents.Karoubi.Hom.{u1, u2} C _inst_1 P Q}, Iff (Eq.{succ u2} (CategoryTheory.Idempotents.Karoubi.Hom.{u1, u2} C _inst_1 P Q) f (OfNat.ofNat.{u2} (CategoryTheory.Idempotents.Karoubi.Hom.{u1, u2} C _inst_1 P Q) 0 (OfNat.mk.{u2} (CategoryTheory.Idempotents.Karoubi.Hom.{u1, u2} C _inst_1 P Q) 0 (Zero.zero.{u2} (CategoryTheory.Idempotents.Karoubi.Hom.{u1, u2} C _inst_1 P Q) (AddZeroClass.toHasZero.{u2} (CategoryTheory.Idempotents.Karoubi.Hom.{u1, u2} C _inst_1 P Q) (AddMonoid.toAddZeroClass.{u2} (CategoryTheory.Idempotents.Karoubi.Hom.{u1, u2} C _inst_1 P Q) (SubNegMonoid.toAddMonoid.{u2} (CategoryTheory.Idempotents.Karoubi.Hom.{u1, u2} C _inst_1 P Q) (AddGroup.toSubNegMonoid.{u2} (CategoryTheory.Idempotents.Karoubi.Hom.{u1, u2} C _inst_1 P Q) (AddCommGroup.toAddGroup.{u2} (CategoryTheory.Idempotents.Karoubi.Hom.{u1, u2} C _inst_1 P Q) (CategoryTheory.Idempotents.Quiver.Hom.addCommGroup.{u1, u2} C _inst_1 _inst_2 P Q)))))))))) (Eq.{succ u2} (Quiver.Hom.{succ u2, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1)) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 Q)) (CategoryTheory.Idempotents.Karoubi.Hom.f.{u1, u2} C _inst_1 P Q f) (OfNat.ofNat.{u2} (Quiver.Hom.{succ u2, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1)) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 Q)) 0 (OfNat.mk.{u2} (Quiver.Hom.{succ u2, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1)) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 Q)) 0 (Zero.zero.{u2} (Quiver.Hom.{succ u2, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1)) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 Q)) (CategoryTheory.Limits.HasZeroMorphisms.hasZero.{u2, u1} C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u1} C _inst_1 _inst_2) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 Q))))))
+but is expected to have type
+ forall {C : Type.{u1}} [_inst_1 : CategoryTheory.Category.{u2, u1} C] [_inst_2 : CategoryTheory.Preadditive.{u2, u1} C _inst_1] {P : CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1} {Q : CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1} {f : Quiver.Hom.{succ u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.CategoryStruct.toQuiver.{u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Category.toCategoryStruct.{u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.instCategoryKaroubi.{u1, u2} C _inst_1))) P Q}, Iff (Eq.{succ u2} (Quiver.Hom.{succ u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.CategoryStruct.toQuiver.{u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Category.toCategoryStruct.{u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.instCategoryKaroubi.{u1, u2} C _inst_1))) P Q) f (OfNat.ofNat.{u2} (Quiver.Hom.{succ u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.CategoryStruct.toQuiver.{u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Category.toCategoryStruct.{u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.instCategoryKaroubi.{u1, u2} C _inst_1))) P Q) 0 (Zero.toOfNat0.{u2} (Quiver.Hom.{succ u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.CategoryStruct.toQuiver.{u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Category.toCategoryStruct.{u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.instCategoryKaroubi.{u1, u2} C _inst_1))) P Q) (NegZeroClass.toZero.{u2} (Quiver.Hom.{succ u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.CategoryStruct.toQuiver.{u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Category.toCategoryStruct.{u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.instCategoryKaroubi.{u1, u2} C _inst_1))) P Q) (SubNegZeroMonoid.toNegZeroClass.{u2} (Quiver.Hom.{succ u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.CategoryStruct.toQuiver.{u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Category.toCategoryStruct.{u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.instCategoryKaroubi.{u1, u2} C _inst_1))) P Q) (SubtractionMonoid.toSubNegZeroMonoid.{u2} (Quiver.Hom.{succ u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.CategoryStruct.toQuiver.{u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Category.toCategoryStruct.{u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.instCategoryKaroubi.{u1, u2} C _inst_1))) P Q) (SubtractionCommMonoid.toSubtractionMonoid.{u2} (Quiver.Hom.{succ u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.CategoryStruct.toQuiver.{u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Category.toCategoryStruct.{u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.instCategoryKaroubi.{u1, u2} C _inst_1))) P Q) (AddCommGroup.toDivisionAddCommMonoid.{u2} (Quiver.Hom.{succ u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.CategoryStruct.toQuiver.{u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Category.toCategoryStruct.{u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.instCategoryKaroubi.{u1, u2} C _inst_1))) P Q) (CategoryTheory.Idempotents.instAddCommGroupHomKaroubiToQuiverToCategoryStructInstCategoryKaroubi.{u1, u2} C _inst_1 _inst_2 P Q))))))))) (Eq.{succ u2} (Quiver.Hom.{succ u2, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1)) (CategoryTheory.Idempotents.Karoubi.X.{u1, u2} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.X.{u1, u2} C _inst_1 Q)) (CategoryTheory.Idempotents.Karoubi.Hom.f.{u1, u2} C _inst_1 P Q f) (OfNat.ofNat.{u2} (Quiver.Hom.{succ u2, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1)) (CategoryTheory.Idempotents.Karoubi.X.{u1, u2} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.X.{u1, u2} C _inst_1 Q)) 0 (Zero.toOfNat0.{u2} (Quiver.Hom.{succ u2, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1)) (CategoryTheory.Idempotents.Karoubi.X.{u1, u2} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.X.{u1, u2} C _inst_1 Q)) (CategoryTheory.Limits.HasZeroMorphisms.Zero.{u2, u1} C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u1} C _inst_1 _inst_2) (CategoryTheory.Idempotents.Karoubi.X.{u1, u2} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.X.{u1, u2} C _inst_1 Q)))))
+Case conversion may be inaccurate. Consider using '#align category_theory.idempotents.karoubi.hom_eq_zero_iff CategoryTheory.Idempotents.Karoubi.hom_eq_zero_iffₓ'. -/
theorem hom_eq_zero_iff [Preadditive C] {P Q : Karoubi C} {f : Hom P Q} : f = 0 ↔ f.f = 0 :=
- hom_ext
+ hom_ext_iff
#align category_theory.idempotents.karoubi.hom_eq_zero_iff CategoryTheory.Idempotents.Karoubi.hom_eq_zero_iff
+/- warning: category_theory.idempotents.karoubi.inclusion_hom -> CategoryTheory.Idempotents.Karoubi.inclusionHom is a dubious translation:
+lean 3 declaration is
+ forall {C : Type.{u1}} [_inst_1 : CategoryTheory.Category.{u2, u1} C] [_inst_2 : CategoryTheory.Preadditive.{u2, u1} C _inst_1] (P : CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (Q : CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1), AddMonoidHom.{u2, u2} (Quiver.Hom.{succ u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.CategoryStruct.toQuiver.{u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Category.toCategoryStruct.{u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.CategoryTheory.category.{u1, u2} C _inst_1))) P Q) (Quiver.Hom.{succ u2, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1)) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 Q)) (AddMonoid.toAddZeroClass.{u2} (Quiver.Hom.{succ u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.CategoryStruct.toQuiver.{u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Category.toCategoryStruct.{u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.CategoryTheory.category.{u1, u2} C _inst_1))) P Q) (SubNegMonoid.toAddMonoid.{u2} (Quiver.Hom.{succ u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.CategoryStruct.toQuiver.{u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Category.toCategoryStruct.{u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.CategoryTheory.category.{u1, u2} C _inst_1))) P Q) (AddGroup.toSubNegMonoid.{u2} (Quiver.Hom.{succ u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.CategoryStruct.toQuiver.{u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Category.toCategoryStruct.{u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.CategoryTheory.category.{u1, u2} C _inst_1))) P Q) (AddCommGroup.toAddGroup.{u2} (Quiver.Hom.{succ u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.CategoryStruct.toQuiver.{u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Category.toCategoryStruct.{u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.CategoryTheory.category.{u1, u2} C _inst_1))) P Q) (CategoryTheory.Idempotents.Quiver.Hom.addCommGroup.{u1, u2} C _inst_1 _inst_2 P Q))))) (AddMonoid.toAddZeroClass.{u2} (Quiver.Hom.{succ u2, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1)) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 Q)) (SubNegMonoid.toAddMonoid.{u2} (Quiver.Hom.{succ u2, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1)) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 Q)) (AddGroup.toSubNegMonoid.{u2} (Quiver.Hom.{succ u2, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1)) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 Q)) (AddCommGroup.toAddGroup.{u2} (Quiver.Hom.{succ u2, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1)) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 Q)) (CategoryTheory.Preadditive.homGroup.{u2, u1} C _inst_1 _inst_2 (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 Q))))))
+but is expected to have type
+ forall {C : Type.{u1}} [_inst_1 : CategoryTheory.Category.{u2, u1} C] [_inst_2 : CategoryTheory.Preadditive.{u2, u1} C _inst_1] (P : CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (Q : CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1), AddMonoidHom.{u2, u2} (Quiver.Hom.{succ u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.CategoryStruct.toQuiver.{u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Category.toCategoryStruct.{u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.instCategoryKaroubi.{u1, u2} C _inst_1))) P Q) (Quiver.Hom.{succ u2, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1)) (CategoryTheory.Idempotents.Karoubi.X.{u1, u2} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.X.{u1, u2} C _inst_1 Q)) (AddMonoid.toAddZeroClass.{u2} (Quiver.Hom.{succ u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.CategoryStruct.toQuiver.{u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Category.toCategoryStruct.{u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.instCategoryKaroubi.{u1, u2} C _inst_1))) P Q) (SubNegMonoid.toAddMonoid.{u2} (Quiver.Hom.{succ u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.CategoryStruct.toQuiver.{u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Category.toCategoryStruct.{u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.instCategoryKaroubi.{u1, u2} C _inst_1))) P Q) (AddGroup.toSubNegMonoid.{u2} (Quiver.Hom.{succ u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.CategoryStruct.toQuiver.{u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Category.toCategoryStruct.{u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.instCategoryKaroubi.{u1, u2} C _inst_1))) P Q) (AddCommGroup.toAddGroup.{u2} (Quiver.Hom.{succ u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.CategoryStruct.toQuiver.{u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Category.toCategoryStruct.{u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.instCategoryKaroubi.{u1, u2} C _inst_1))) P Q) (CategoryTheory.Idempotents.instAddCommGroupHomKaroubiToQuiverToCategoryStructInstCategoryKaroubi.{u1, u2} C _inst_1 _inst_2 P Q))))) (AddMonoid.toAddZeroClass.{u2} (Quiver.Hom.{succ u2, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1)) (CategoryTheory.Idempotents.Karoubi.X.{u1, u2} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.X.{u1, u2} C _inst_1 Q)) (SubNegMonoid.toAddMonoid.{u2} (Quiver.Hom.{succ u2, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1)) (CategoryTheory.Idempotents.Karoubi.X.{u1, u2} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.X.{u1, u2} C _inst_1 Q)) (AddGroup.toSubNegMonoid.{u2} (Quiver.Hom.{succ u2, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1)) (CategoryTheory.Idempotents.Karoubi.X.{u1, u2} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.X.{u1, u2} C _inst_1 Q)) (AddCommGroup.toAddGroup.{u2} (Quiver.Hom.{succ u2, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1)) (CategoryTheory.Idempotents.Karoubi.X.{u1, u2} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.X.{u1, u2} C _inst_1 Q)) (CategoryTheory.Preadditive.homGroup.{u2, u1} C _inst_1 _inst_2 (CategoryTheory.Idempotents.Karoubi.X.{u1, u2} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.X.{u1, u2} C _inst_1 Q))))))
+Case conversion may be inaccurate. Consider using '#align category_theory.idempotents.karoubi.inclusion_hom CategoryTheory.Idempotents.Karoubi.inclusionHomₓ'. -/
/-- The map sending `f : P ⟶ Q` to `f.f : P.X ⟶ Q.X` is additive. -/
@[simps]
def inclusionHom [Preadditive C] (P Q : Karoubi C) : AddMonoidHom (P ⟶ Q) (P.pt ⟶ Q.pt)
@@ -203,6 +293,12 @@ def inclusionHom [Preadditive C] (P Q : Karoubi C) : AddMonoidHom (P ⟶ Q) (P.p
map_add' f g := rfl
#align category_theory.idempotents.karoubi.inclusion_hom CategoryTheory.Idempotents.Karoubi.inclusionHom
+/- warning: category_theory.idempotents.karoubi.sum_hom -> CategoryTheory.Idempotents.Karoubi.sum_hom is a dubious translation:
+lean 3 declaration is
+ forall {C : Type.{u1}} [_inst_1 : CategoryTheory.Category.{u2, u1} C] [_inst_2 : CategoryTheory.Preadditive.{u2, u1} C _inst_1] {P : CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1} {Q : CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1} {α : Type.{u3}} (s : Finset.{u3} α) (f : α -> (Quiver.Hom.{succ u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.CategoryStruct.toQuiver.{u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Category.toCategoryStruct.{u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.CategoryTheory.category.{u1, u2} C _inst_1))) P Q)), Eq.{succ u2} (Quiver.Hom.{succ u2, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1)) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 Q)) (CategoryTheory.Idempotents.Karoubi.Hom.f.{u1, u2} C _inst_1 P Q (Finset.sum.{u2, u3} (Quiver.Hom.{succ u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.CategoryStruct.toQuiver.{u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Category.toCategoryStruct.{u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.CategoryTheory.category.{u1, u2} C _inst_1))) P Q) α (AddCommGroup.toAddCommMonoid.{u2} (Quiver.Hom.{succ u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.CategoryStruct.toQuiver.{u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Category.toCategoryStruct.{u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.CategoryTheory.category.{u1, u2} C _inst_1))) P Q) (CategoryTheory.Idempotents.Quiver.Hom.addCommGroup.{u1, u2} C _inst_1 _inst_2 P Q)) s (fun (x : α) => f x))) (Finset.sum.{u2, u3} (Quiver.Hom.{succ u2, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1)) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 Q)) α (AddCommGroup.toAddCommMonoid.{u2} (Quiver.Hom.{succ u2, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1)) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 Q)) (CategoryTheory.Preadditive.homGroup.{u2, u1} C _inst_1 _inst_2 (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 Q))) s (fun (x : α) => CategoryTheory.Idempotents.Karoubi.Hom.f.{u1, u2} C _inst_1 P Q (f x)))
+but is expected to have type
+ forall {C : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u3, u2} C] [_inst_2 : CategoryTheory.Preadditive.{u3, u2} C _inst_1] {P : CategoryTheory.Idempotents.Karoubi.{u2, u3} C _inst_1} {Q : CategoryTheory.Idempotents.Karoubi.{u2, u3} C _inst_1} {α : Type.{u1}} (s : Finset.{u1} α) (f : α -> (Quiver.Hom.{succ u3, max u2 u3} (CategoryTheory.Idempotents.Karoubi.{u2, u3} C _inst_1) (CategoryTheory.CategoryStruct.toQuiver.{u3, max u2 u3} (CategoryTheory.Idempotents.Karoubi.{u2, u3} C _inst_1) (CategoryTheory.Category.toCategoryStruct.{u3, max u2 u3} (CategoryTheory.Idempotents.Karoubi.{u2, u3} C _inst_1) (CategoryTheory.Idempotents.Karoubi.instCategoryKaroubi.{u2, u3} C _inst_1))) P Q)), Eq.{succ u3} (Quiver.Hom.{succ u3, u2} C (CategoryTheory.CategoryStruct.toQuiver.{u3, u2} C (CategoryTheory.Category.toCategoryStruct.{u3, u2} C _inst_1)) (CategoryTheory.Idempotents.Karoubi.X.{u2, u3} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.X.{u2, u3} C _inst_1 Q)) (CategoryTheory.Idempotents.Karoubi.Hom.f.{u2, u3} C _inst_1 P Q (Finset.sum.{u3, u1} (Quiver.Hom.{succ u3, max u2 u3} (CategoryTheory.Idempotents.Karoubi.{u2, u3} C _inst_1) (CategoryTheory.CategoryStruct.toQuiver.{u3, max u2 u3} (CategoryTheory.Idempotents.Karoubi.{u2, u3} C _inst_1) (CategoryTheory.Category.toCategoryStruct.{u3, max u2 u3} (CategoryTheory.Idempotents.Karoubi.{u2, u3} C _inst_1) (CategoryTheory.Idempotents.Karoubi.instCategoryKaroubi.{u2, u3} C _inst_1))) P Q) α (AddCommGroup.toAddCommMonoid.{u3} (Quiver.Hom.{succ u3, max u2 u3} (CategoryTheory.Idempotents.Karoubi.{u2, u3} C _inst_1) (CategoryTheory.CategoryStruct.toQuiver.{u3, max u2 u3} (CategoryTheory.Idempotents.Karoubi.{u2, u3} C _inst_1) (CategoryTheory.Category.toCategoryStruct.{u3, max u2 u3} (CategoryTheory.Idempotents.Karoubi.{u2, u3} C _inst_1) (CategoryTheory.Idempotents.Karoubi.instCategoryKaroubi.{u2, u3} C _inst_1))) P Q) (CategoryTheory.Idempotents.instAddCommGroupHomKaroubiToQuiverToCategoryStructInstCategoryKaroubi.{u2, u3} C _inst_1 _inst_2 P Q)) s (fun (x : α) => f x))) (Finset.sum.{u3, u1} (Quiver.Hom.{succ u3, u2} C (CategoryTheory.CategoryStruct.toQuiver.{u3, u2} C (CategoryTheory.Category.toCategoryStruct.{u3, u2} C _inst_1)) (CategoryTheory.Idempotents.Karoubi.X.{u2, u3} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.X.{u2, u3} C _inst_1 Q)) α (AddCommGroup.toAddCommMonoid.{u3} (Quiver.Hom.{succ u3, u2} C (CategoryTheory.CategoryStruct.toQuiver.{u3, u2} C (CategoryTheory.Category.toCategoryStruct.{u3, u2} C _inst_1)) (CategoryTheory.Idempotents.Karoubi.X.{u2, u3} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.X.{u2, u3} C _inst_1 Q)) (CategoryTheory.Preadditive.homGroup.{u3, u2} C _inst_1 _inst_2 (CategoryTheory.Idempotents.Karoubi.X.{u2, u3} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.X.{u2, u3} C _inst_1 Q))) s (fun (x : α) => CategoryTheory.Idempotents.Karoubi.Hom.f.{u2, u3} C _inst_1 P Q (f x)))
+Case conversion may be inaccurate. Consider using '#align category_theory.idempotents.karoubi.sum_hom CategoryTheory.Idempotents.Karoubi.sum_homₓ'. -/
@[simp]
theorem sum_hom [Preadditive C] {P Q : Karoubi C} {α : Type _} (s : Finset α) (f : α → (P ⟶ Q)) :
(∑ x in s, f x).f = ∑ x in s, (f x).f :=
@@ -241,79 +337,151 @@ instance [IsIdempotentComplete C] : EssSurj (toKaroubi C) :=
{ Hom := ⟨i, by erw [id_comp, ← h₂, ← assoc, h₁, id_comp]⟩
inv := ⟨e, by erw [comp_id, ← h₂, assoc, h₁, comp_id]⟩ }⟩
+/- warning: category_theory.idempotents.to_karoubi_is_equivalence -> CategoryTheory.Idempotents.toKaroubi_isEquivalence is a dubious translation:
+lean 3 declaration is
+ forall (C : Type.{u1}) [_inst_1 : CategoryTheory.Category.{u2, u1} C] [_inst_2 : CategoryTheory.IsIdempotentComplete.{u1, u2} C _inst_1], CategoryTheory.IsEquivalence.{u2, u2, u1, max u1 u2} C _inst_1 (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.CategoryTheory.category.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.toKaroubi.{u1, u2} C _inst_1)
+but is expected to have type
+ forall (C : Type.{u1}) [_inst_1 : CategoryTheory.Category.{u2, u1} C] [_inst_2 : CategoryTheory.IsIdempotentComplete.{u1, u2} C _inst_1], CategoryTheory.IsEquivalence.{u2, u2, u1, max u1 u2} C _inst_1 (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.instCategoryKaroubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.toKaroubi.{u1, u2} C _inst_1)
+Case conversion may be inaccurate. Consider using '#align category_theory.idempotents.to_karoubi_is_equivalence CategoryTheory.Idempotents.toKaroubi_isEquivalenceₓ'. -/
/-- If `C` is idempotent complete, the functor `to_karoubi : C ⥤ karoubi C` is an equivalence. -/
-def toKaroubiIsEquivalence [IsIdempotentComplete C] : IsEquivalence (toKaroubi C) :=
+def toKaroubi_isEquivalence [IsIdempotentComplete C] : IsEquivalence (toKaroubi C) :=
Equivalence.ofFullyFaithfullyEssSurj (toKaroubi C)
-#align category_theory.idempotents.to_karoubi_is_equivalence CategoryTheory.Idempotents.toKaroubiIsEquivalence
-
+#align category_theory.idempotents.to_karoubi_is_equivalence CategoryTheory.Idempotents.toKaroubi_isEquivalence
+
+/- warning: category_theory.idempotents.to_karoubi_equivalence -> CategoryTheory.Idempotents.toKaroubi_equivalence is a dubious translation:
+lean 3 declaration is
+ forall (C : Type.{u1}) [_inst_1 : CategoryTheory.Category.{u2, u1} C] [_inst_2 : CategoryTheory.IsIdempotentComplete.{u1, u2} C _inst_1], CategoryTheory.Equivalence.{u2, u2, u1, max u1 u2} C _inst_1 (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.CategoryTheory.category.{u1, u2} C _inst_1)
+but is expected to have type
+ forall (C : Type.{u1}) [_inst_1 : CategoryTheory.Category.{u2, u1} C] [_inst_2 : CategoryTheory.IsIdempotentComplete.{u1, u2} C _inst_1], CategoryTheory.Equivalence.{u2, u2, u1, max u2 u1} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) _inst_1 (CategoryTheory.Idempotents.Karoubi.instCategoryKaroubi.{u1, u2} C _inst_1)
+Case conversion may be inaccurate. Consider using '#align category_theory.idempotents.to_karoubi_equivalence CategoryTheory.Idempotents.toKaroubi_equivalenceₓ'. -/
/-- The equivalence `C ≅ karoubi C` when `C` is idempotent complete. -/
-def toKaroubiEquivalence [IsIdempotentComplete C] : C ≌ Karoubi C :=
+def toKaroubi_equivalence [IsIdempotentComplete C] : C ≌ Karoubi C :=
haveI := to_karoubi_is_equivalence C
functor.as_equivalence (to_karoubi C)
-#align category_theory.idempotents.to_karoubi_equivalence CategoryTheory.Idempotents.toKaroubiEquivalence
-
-instance toKaroubiEquivalence_functor_additive [Preadditive C] [IsIdempotentComplete C] :
- (toKaroubiEquivalence C).Functor.Additive :=
+#align category_theory.idempotents.to_karoubi_equivalence CategoryTheory.Idempotents.toKaroubi_equivalence
+
+/- warning: category_theory.idempotents.to_karoubi_equivalence_functor_additive -> CategoryTheory.Idempotents.toKaroubi_equivalence_functor_additive is a dubious translation:
+lean 3 declaration is
+ forall (C : Type.{u1}) [_inst_1 : CategoryTheory.Category.{u2, u1} C] [_inst_2 : CategoryTheory.Preadditive.{u2, u1} C _inst_1] [_inst_3 : CategoryTheory.IsIdempotentComplete.{u1, u2} C _inst_1], CategoryTheory.Functor.Additive.{u1, max u1 u2, u2, u2} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) _inst_1 (CategoryTheory.Idempotents.Karoubi.CategoryTheory.category.{u1, u2} C _inst_1) _inst_2 (CategoryTheory.Idempotents.Karoubi.CategoryTheory.preadditive.{u1, u2} C _inst_1 _inst_2) (CategoryTheory.Equivalence.functor.{u2, u2, u1, max u1 u2} C _inst_1 (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.CategoryTheory.category.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.toKaroubi_equivalence.{u1, u2} C _inst_1 _inst_3))
+but is expected to have type
+ forall (C : Type.{u1}) [_inst_1 : CategoryTheory.Category.{u2, u1} C] [_inst_2 : CategoryTheory.Preadditive.{u2, u1} C _inst_1] [_inst_3 : CategoryTheory.IsIdempotentComplete.{u1, u2} C _inst_1], CategoryTheory.Functor.Additive.{u1, max u1 u2, u2, u2} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) _inst_1 (CategoryTheory.Idempotents.Karoubi.instCategoryKaroubi.{u1, u2} C _inst_1) _inst_2 (CategoryTheory.Idempotents.instPreadditiveKaroubiInstCategoryKaroubi.{u1, u2} C _inst_1 _inst_2) (CategoryTheory.Equivalence.functor.{u2, u2, u1, max u1 u2} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) _inst_1 (CategoryTheory.Idempotents.Karoubi.instCategoryKaroubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.toKaroubi_equivalence.{u1, u2} C _inst_1 _inst_3))
+Case conversion may be inaccurate. Consider using '#align category_theory.idempotents.to_karoubi_equivalence_functor_additive CategoryTheory.Idempotents.toKaroubi_equivalence_functor_additiveₓ'. -/
+instance toKaroubi_equivalence_functor_additive [Preadditive C] [IsIdempotentComplete C] :
+ (toKaroubi_equivalence C).Functor.Additive :=
(inferInstance : (toKaroubi C).Additive)
-#align category_theory.idempotents.to_karoubi_equivalence_functor_additive CategoryTheory.Idempotents.toKaroubiEquivalence_functor_additive
+#align category_theory.idempotents.to_karoubi_equivalence_functor_additive CategoryTheory.Idempotents.toKaroubi_equivalence_functor_additive
namespace Karoubi
variable {C}
+/- warning: category_theory.idempotents.karoubi.decomp_id_i -> CategoryTheory.Idempotents.Karoubi.decompId_i is a dubious translation:
+lean 3 declaration is
+ forall {C : Type.{u1}} [_inst_1 : CategoryTheory.Category.{u2, u1} C] (P : CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1), Quiver.Hom.{succ u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.CategoryStruct.toQuiver.{u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Category.toCategoryStruct.{u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.CategoryTheory.category.{u1, u2} C _inst_1))) P ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P))
+but is expected to have type
+ forall {C : Type.{u1}} [_inst_1 : CategoryTheory.Category.{u2, u1} C] (P : CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1), Quiver.Hom.{succ u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.CategoryStruct.toQuiver.{u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Category.toCategoryStruct.{u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.instCategoryKaroubi.{u1, u2} C _inst_1))) P (CategoryTheory.Idempotents.Karoubi.mk.{u1, u2} C _inst_1 (CategoryTheory.Idempotents.Karoubi.X.{u1, u2} C _inst_1 P) (CategoryTheory.CategoryStruct.id.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1) (CategoryTheory.Idempotents.Karoubi.X.{u1, u2} C _inst_1 P)) (CategoryTheory.Idempotents.Karoubi.coe.proof_1.{u2, u1} C _inst_1 (CategoryTheory.Idempotents.Karoubi.X.{u1, u2} C _inst_1 P)))
+Case conversion may be inaccurate. Consider using '#align category_theory.idempotents.karoubi.decomp_id_i CategoryTheory.Idempotents.Karoubi.decompId_iₓ'. -/
/-- The split mono which appears in the factorisation `decomp_id P`. -/
@[simps]
-def decompIdI (P : Karoubi C) : P ⟶ P.pt :=
+def decompId_i (P : Karoubi C) : P ⟶ P.pt :=
⟨P.p, by erw [coe_p, comp_id, P.idem]⟩
-#align category_theory.idempotents.karoubi.decomp_id_i CategoryTheory.Idempotents.Karoubi.decompIdI
-
+#align category_theory.idempotents.karoubi.decomp_id_i CategoryTheory.Idempotents.Karoubi.decompId_i
+
+/- warning: category_theory.idempotents.karoubi.decomp_id_p -> CategoryTheory.Idempotents.Karoubi.decompId_p is a dubious translation:
+lean 3 declaration is
+ forall {C : Type.{u1}} [_inst_1 : CategoryTheory.Category.{u2, u1} C] (P : CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1), Quiver.Hom.{succ u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.CategoryStruct.toQuiver.{u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Category.toCategoryStruct.{u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.CategoryTheory.category.{u1, u2} C _inst_1))) ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P)) P
+but is expected to have type
+ forall {C : Type.{u1}} [_inst_1 : CategoryTheory.Category.{u2, u1} C] (P : CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1), Quiver.Hom.{succ u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.CategoryStruct.toQuiver.{u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Category.toCategoryStruct.{u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.instCategoryKaroubi.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.mk.{u1, u2} C _inst_1 (CategoryTheory.Idempotents.Karoubi.X.{u1, u2} C _inst_1 P) (CategoryTheory.CategoryStruct.id.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1) (CategoryTheory.Idempotents.Karoubi.X.{u1, u2} C _inst_1 P)) (CategoryTheory.Idempotents.Karoubi.coe.proof_1.{u2, u1} C _inst_1 (CategoryTheory.Idempotents.Karoubi.X.{u1, u2} C _inst_1 P))) P
+Case conversion may be inaccurate. Consider using '#align category_theory.idempotents.karoubi.decomp_id_p CategoryTheory.Idempotents.Karoubi.decompId_pₓ'. -/
/-- The split epi which appears in the factorisation `decomp_id P`. -/
@[simps]
-def decompIdP (P : Karoubi C) : (P.pt : Karoubi C) ⟶ P :=
+def decompId_p (P : Karoubi C) : (P.pt : Karoubi C) ⟶ P :=
⟨P.p, by erw [coe_p, id_comp, P.idem]⟩
-#align category_theory.idempotents.karoubi.decomp_id_p CategoryTheory.Idempotents.Karoubi.decompIdP
-
+#align category_theory.idempotents.karoubi.decomp_id_p CategoryTheory.Idempotents.Karoubi.decompId_p
+
+/- warning: category_theory.idempotents.karoubi.decomp_id -> CategoryTheory.Idempotents.Karoubi.decompId is a dubious translation:
+lean 3 declaration is
+ forall {C : Type.{u1}} [_inst_1 : CategoryTheory.Category.{u2, u1} C] (P : CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1), Eq.{succ u2} (Quiver.Hom.{succ u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.CategoryStruct.toQuiver.{u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Category.toCategoryStruct.{u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.CategoryTheory.category.{u1, u2} C _inst_1))) P P) (CategoryTheory.CategoryStruct.id.{u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Category.toCategoryStruct.{u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.CategoryTheory.category.{u1, u2} C _inst_1)) P) (CategoryTheory.CategoryStruct.comp.{u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Category.toCategoryStruct.{u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.CategoryTheory.category.{u1, u2} C _inst_1)) P ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P)) P (CategoryTheory.Idempotents.Karoubi.decompId_i.{u1, u2} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.decompId_p.{u1, u2} C _inst_1 P))
+but is expected to have type
+ forall {C : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u1, u2} C] (P : CategoryTheory.Idempotents.Karoubi.{u2, u1} C _inst_1), Eq.{succ u1} (Quiver.Hom.{succ u1, max u2 u1} (CategoryTheory.Idempotents.Karoubi.{u2, u1} C _inst_1) (CategoryTheory.CategoryStruct.toQuiver.{u1, max u2 u1} (CategoryTheory.Idempotents.Karoubi.{u2, u1} C _inst_1) (CategoryTheory.Category.toCategoryStruct.{u1, max u2 u1} (CategoryTheory.Idempotents.Karoubi.{u2, u1} C _inst_1) (CategoryTheory.Idempotents.Karoubi.instCategoryKaroubi.{u2, u1} C _inst_1))) P P) (CategoryTheory.CategoryStruct.id.{u1, max u2 u1} (CategoryTheory.Idempotents.Karoubi.{u2, u1} C _inst_1) (CategoryTheory.Category.toCategoryStruct.{u1, max u2 u1} (CategoryTheory.Idempotents.Karoubi.{u2, u1} C _inst_1) (CategoryTheory.Idempotents.Karoubi.instCategoryKaroubi.{u2, u1} C _inst_1)) P) (CategoryTheory.CategoryStruct.comp.{u1, max u2 u1} (CategoryTheory.Idempotents.Karoubi.{u2, u1} C _inst_1) (CategoryTheory.Category.toCategoryStruct.{u1, max u2 u1} (CategoryTheory.Idempotents.Karoubi.{u2, u1} C _inst_1) (CategoryTheory.Idempotents.Karoubi.instCategoryKaroubi.{u2, u1} C _inst_1)) P (CategoryTheory.Idempotents.Karoubi.mk.{u2, u1} C _inst_1 (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 P) (CategoryTheory.CategoryStruct.id.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 P)) (CategoryTheory.Idempotents.Karoubi.coe.proof_1.{u1, u2} C _inst_1 (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 P))) P (CategoryTheory.Idempotents.Karoubi.decompId_i.{u2, u1} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.decompId_p.{u2, u1} C _inst_1 P))
+Case conversion may be inaccurate. Consider using '#align category_theory.idempotents.karoubi.decomp_id CategoryTheory.Idempotents.Karoubi.decompIdₓ'. -/
/-- The formal direct factor of `P.X` given by the idempotent `P.p` in the category `C`
is actually a direct factor in the category `karoubi C`. -/
-theorem decomp_id (P : Karoubi C) : 𝟙 P = decompIdI P ≫ decompIdP P :=
+theorem decompId (P : Karoubi C) : 𝟙 P = decompId_i P ≫ decompId_p P :=
by
ext
simp only [comp_f, id_eq, P.idem, decomp_id_i, decomp_id_p]
-#align category_theory.idempotents.karoubi.decomp_id CategoryTheory.Idempotents.Karoubi.decomp_id
-
-theorem decomp_p (P : Karoubi C) : (toKaroubi C).map P.p = decompIdP P ≫ decompIdI P :=
+#align category_theory.idempotents.karoubi.decomp_id CategoryTheory.Idempotents.Karoubi.decompId
+
+/- warning: category_theory.idempotents.karoubi.decomp_p -> CategoryTheory.Idempotents.Karoubi.decomp_p is a dubious translation:
+lean 3 declaration is
+ forall {C : Type.{u1}} [_inst_1 : CategoryTheory.Category.{u2, u1} C] (P : CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1), Eq.{succ u2} (Quiver.Hom.{succ u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.CategoryStruct.toQuiver.{u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Category.toCategoryStruct.{u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.CategoryTheory.category.{u1, u2} C _inst_1))) (CategoryTheory.Functor.obj.{u2, u2, u1, max u1 u2} C _inst_1 (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.CategoryTheory.category.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.toKaroubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P)) (CategoryTheory.Functor.obj.{u2, u2, u1, max u1 u2} C _inst_1 (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.CategoryTheory.category.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.toKaroubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P))) (CategoryTheory.Functor.map.{u2, u2, u1, max u1 u2} C _inst_1 (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.CategoryTheory.category.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.toKaroubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.p.{u1, u2} C _inst_1 P)) (CategoryTheory.CategoryStruct.comp.{u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Category.toCategoryStruct.{u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.CategoryTheory.category.{u1, u2} C _inst_1)) (CategoryTheory.Functor.obj.{u2, u2, u1, max u1 u2} C _inst_1 (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.CategoryTheory.category.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.toKaroubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P)) P (CategoryTheory.Functor.obj.{u2, u2, u1, max u1 u2} C _inst_1 (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.CategoryTheory.category.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.toKaroubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P)) (CategoryTheory.Idempotents.Karoubi.decompId_p.{u1, u2} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.decompId_i.{u1, u2} C _inst_1 P))
+but is expected to have type
+ forall {C : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u1, u2} C] (P : CategoryTheory.Idempotents.Karoubi.{u2, u1} C _inst_1), Eq.{succ u1} (Quiver.Hom.{succ u1, max u2 u1} (CategoryTheory.Idempotents.Karoubi.{u2, u1} C _inst_1) (CategoryTheory.CategoryStruct.toQuiver.{u1, max u2 u1} (CategoryTheory.Idempotents.Karoubi.{u2, u1} C _inst_1) (CategoryTheory.Category.toCategoryStruct.{u1, max u2 u1} (CategoryTheory.Idempotents.Karoubi.{u2, u1} C _inst_1) (CategoryTheory.Idempotents.Karoubi.instCategoryKaroubi.{u2, u1} C _inst_1))) (Prefunctor.obj.{succ u1, succ u1, u2, max u2 u1} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1)) (CategoryTheory.Idempotents.Karoubi.{u2, u1} C _inst_1) (CategoryTheory.CategoryStruct.toQuiver.{u1, max u2 u1} (CategoryTheory.Idempotents.Karoubi.{u2, u1} C _inst_1) (CategoryTheory.Category.toCategoryStruct.{u1, max u2 u1} (CategoryTheory.Idempotents.Karoubi.{u2, u1} C _inst_1) (CategoryTheory.Idempotents.Karoubi.instCategoryKaroubi.{u2, u1} C _inst_1))) (CategoryTheory.Functor.toPrefunctor.{u1, u1, u2, max u2 u1} C _inst_1 (CategoryTheory.Idempotents.Karoubi.{u2, u1} C _inst_1) (CategoryTheory.Idempotents.Karoubi.instCategoryKaroubi.{u2, u1} C _inst_1) (CategoryTheory.Idempotents.toKaroubi.{u2, u1} C _inst_1)) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 P)) (Prefunctor.obj.{succ u1, succ u1, u2, max u2 u1} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1)) (CategoryTheory.Idempotents.Karoubi.{u2, u1} C _inst_1) (CategoryTheory.CategoryStruct.toQuiver.{u1, max u2 u1} (CategoryTheory.Idempotents.Karoubi.{u2, u1} C _inst_1) (CategoryTheory.Category.toCategoryStruct.{u1, max u2 u1} (CategoryTheory.Idempotents.Karoubi.{u2, u1} C _inst_1) (CategoryTheory.Idempotents.Karoubi.instCategoryKaroubi.{u2, u1} C _inst_1))) (CategoryTheory.Functor.toPrefunctor.{u1, u1, u2, max u2 u1} C _inst_1 (CategoryTheory.Idempotents.Karoubi.{u2, u1} C _inst_1) (CategoryTheory.Idempotents.Karoubi.instCategoryKaroubi.{u2, u1} C _inst_1) (CategoryTheory.Idempotents.toKaroubi.{u2, u1} C _inst_1)) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 P))) (Prefunctor.map.{succ u1, succ u1, u2, max u2 u1} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1)) (CategoryTheory.Idempotents.Karoubi.{u2, u1} C _inst_1) (CategoryTheory.CategoryStruct.toQuiver.{u1, max u2 u1} (CategoryTheory.Idempotents.Karoubi.{u2, u1} C _inst_1) (CategoryTheory.Category.toCategoryStruct.{u1, max u2 u1} (CategoryTheory.Idempotents.Karoubi.{u2, u1} C _inst_1) (CategoryTheory.Idempotents.Karoubi.instCategoryKaroubi.{u2, u1} C _inst_1))) (CategoryTheory.Functor.toPrefunctor.{u1, u1, u2, max u2 u1} C _inst_1 (CategoryTheory.Idempotents.Karoubi.{u2, u1} C _inst_1) (CategoryTheory.Idempotents.Karoubi.instCategoryKaroubi.{u2, u1} C _inst_1) (CategoryTheory.Idempotents.toKaroubi.{u2, u1} C _inst_1)) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.p.{u2, u1} C _inst_1 P)) (CategoryTheory.CategoryStruct.comp.{u1, max u2 u1} (CategoryTheory.Idempotents.Karoubi.{u2, u1} C _inst_1) (CategoryTheory.Category.toCategoryStruct.{u1, max u2 u1} (CategoryTheory.Idempotents.Karoubi.{u2, u1} C _inst_1) (CategoryTheory.Idempotents.Karoubi.instCategoryKaroubi.{u2, u1} C _inst_1)) (CategoryTheory.Idempotents.Karoubi.mk.{u2, u1} C _inst_1 (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 P) (CategoryTheory.CategoryStruct.id.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 P)) (CategoryTheory.Idempotents.Karoubi.coe.proof_1.{u1, u2} C _inst_1 (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 P))) P (CategoryTheory.Idempotents.Karoubi.mk.{u2, u1} C _inst_1 (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 P) (CategoryTheory.CategoryStruct.id.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 P)) (CategoryTheory.Idempotents.Karoubi.coe.proof_1.{u1, u2} C _inst_1 (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 P))) (CategoryTheory.Idempotents.Karoubi.decompId_p.{u2, u1} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.decompId_i.{u2, u1} C _inst_1 P))
+Case conversion may be inaccurate. Consider using '#align category_theory.idempotents.karoubi.decomp_p CategoryTheory.Idempotents.Karoubi.decomp_pₓ'. -/
+theorem decomp_p (P : Karoubi C) : (toKaroubi C).map P.p = decompId_p P ≫ decompId_i P :=
by
ext
simp only [comp_f, decomp_id_p_f, decomp_id_i_f, P.idem, to_karoubi_map_f]
#align category_theory.idempotents.karoubi.decomp_p CategoryTheory.Idempotents.Karoubi.decomp_p
-theorem decompIdI_toKaroubi (X : C) : decompIdI ((toKaroubi C).obj X) = 𝟙 _ :=
+/- warning: category_theory.idempotents.karoubi.decomp_id_i_to_karoubi -> CategoryTheory.Idempotents.Karoubi.decompId_i_toKaroubi is a dubious translation:
+lean 3 declaration is
+ forall {C : Type.{u1}} [_inst_1 : CategoryTheory.Category.{u2, u1} C] (X : C), Eq.{succ u2} (Quiver.Hom.{succ u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.CategoryStruct.toQuiver.{u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Category.toCategoryStruct.{u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.CategoryTheory.category.{u1, u2} C _inst_1))) (CategoryTheory.Functor.obj.{u2, u2, u1, max u1 u2} C _inst_1 (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.CategoryTheory.category.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.toKaroubi.{u1, u2} C _inst_1) X) ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 (CategoryTheory.Functor.obj.{u2, u2, u1, max u1 u2} C _inst_1 (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.CategoryTheory.category.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.toKaroubi.{u1, u2} C _inst_1) X)))) (CategoryTheory.Idempotents.Karoubi.decompId_i.{u1, u2} C _inst_1 (CategoryTheory.Functor.obj.{u2, u2, u1, max u1 u2} C _inst_1 (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.CategoryTheory.category.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.toKaroubi.{u1, u2} C _inst_1) X)) (CategoryTheory.CategoryStruct.id.{u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Category.toCategoryStruct.{u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.CategoryTheory.category.{u1, u2} C _inst_1)) (CategoryTheory.Functor.obj.{u2, u2, u1, max u1 u2} C _inst_1 (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.CategoryTheory.category.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.toKaroubi.{u1, u2} C _inst_1) X))
+but is expected to have type
+ forall {C : Type.{u1}} [_inst_1 : CategoryTheory.Category.{u2, u1} C] (X : C), Eq.{succ u2} (Quiver.Hom.{succ u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.CategoryStruct.toQuiver.{u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Category.toCategoryStruct.{u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.instCategoryKaroubi.{u1, u2} C _inst_1))) (Prefunctor.obj.{succ u2, succ u2, u1, max u1 u2} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1)) (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.CategoryStruct.toQuiver.{u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Category.toCategoryStruct.{u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.instCategoryKaroubi.{u1, u2} C _inst_1))) (CategoryTheory.Functor.toPrefunctor.{u2, u2, u1, max u1 u2} C _inst_1 (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.instCategoryKaroubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.toKaroubi.{u1, u2} C _inst_1)) X) (CategoryTheory.Idempotents.Karoubi.mk.{u1, u2} C _inst_1 (CategoryTheory.Idempotents.Karoubi.X.{u1, u2} C _inst_1 (Prefunctor.obj.{succ u2, succ u2, u1, max u1 u2} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1)) (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.CategoryStruct.toQuiver.{u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Category.toCategoryStruct.{u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.instCategoryKaroubi.{u1, u2} C _inst_1))) (CategoryTheory.Functor.toPrefunctor.{u2, u2, u1, max u1 u2} C _inst_1 (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.instCategoryKaroubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.toKaroubi.{u1, u2} C _inst_1)) X)) (CategoryTheory.CategoryStruct.id.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1) (CategoryTheory.Idempotents.Karoubi.X.{u1, u2} C _inst_1 (Prefunctor.obj.{succ u2, succ u2, u1, max u1 u2} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1)) (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.CategoryStruct.toQuiver.{u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Category.toCategoryStruct.{u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.instCategoryKaroubi.{u1, u2} C _inst_1))) (CategoryTheory.Functor.toPrefunctor.{u2, u2, u1, max u1 u2} C _inst_1 (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.instCategoryKaroubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.toKaroubi.{u1, u2} C _inst_1)) X))) (CategoryTheory.Idempotents.Karoubi.coe.proof_1.{u2, u1} C _inst_1 (CategoryTheory.Idempotents.Karoubi.X.{u1, u2} C _inst_1 (Prefunctor.obj.{succ u2, succ u2, u1, max u1 u2} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1)) (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.CategoryStruct.toQuiver.{u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Category.toCategoryStruct.{u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.instCategoryKaroubi.{u1, u2} C _inst_1))) (CategoryTheory.Functor.toPrefunctor.{u2, u2, u1, max u1 u2} C _inst_1 (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.instCategoryKaroubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.toKaroubi.{u1, u2} C _inst_1)) X))))) (CategoryTheory.Idempotents.Karoubi.decompId_i.{u1, u2} C _inst_1 (Prefunctor.obj.{succ u2, succ u2, u1, max u1 u2} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1)) (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.CategoryStruct.toQuiver.{u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Category.toCategoryStruct.{u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.instCategoryKaroubi.{u1, u2} C _inst_1))) (CategoryTheory.Functor.toPrefunctor.{u2, u2, u1, max u1 u2} C _inst_1 (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.instCategoryKaroubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.toKaroubi.{u1, u2} C _inst_1)) X)) (CategoryTheory.CategoryStruct.id.{u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Category.toCategoryStruct.{u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.instCategoryKaroubi.{u1, u2} C _inst_1)) (Prefunctor.obj.{succ u2, succ u2, u1, max u1 u2} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1)) (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.CategoryStruct.toQuiver.{u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Category.toCategoryStruct.{u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.instCategoryKaroubi.{u1, u2} C _inst_1))) (CategoryTheory.Functor.toPrefunctor.{u2, u2, u1, max u1 u2} C _inst_1 (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.instCategoryKaroubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.toKaroubi.{u1, u2} C _inst_1)) X))
+Case conversion may be inaccurate. Consider using '#align category_theory.idempotents.karoubi.decomp_id_i_to_karoubi CategoryTheory.Idempotents.Karoubi.decompId_i_toKaroubiₓ'. -/
+theorem decompId_i_toKaroubi (X : C) : decompId_i ((toKaroubi C).obj X) = 𝟙 _ :=
by
ext
rfl
-#align category_theory.idempotents.karoubi.decomp_id_i_to_karoubi CategoryTheory.Idempotents.Karoubi.decompIdI_toKaroubi
-
-theorem decompIdP_toKaroubi (X : C) : decompIdP ((toKaroubi C).obj X) = 𝟙 _ :=
+#align category_theory.idempotents.karoubi.decomp_id_i_to_karoubi CategoryTheory.Idempotents.Karoubi.decompId_i_toKaroubi
+
+/- warning: category_theory.idempotents.karoubi.decomp_id_p_to_karoubi -> CategoryTheory.Idempotents.Karoubi.decompId_p_toKaroubi is a dubious translation:
+lean 3 declaration is
+ forall {C : Type.{u1}} [_inst_1 : CategoryTheory.Category.{u2, u1} C] (X : C), Eq.{succ u2} (Quiver.Hom.{succ u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.CategoryStruct.toQuiver.{u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Category.toCategoryStruct.{u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.CategoryTheory.category.{u1, u2} C _inst_1))) ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 (CategoryTheory.Functor.obj.{u2, u2, u1, max u1 u2} C _inst_1 (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.CategoryTheory.category.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.toKaroubi.{u1, u2} C _inst_1) X))) (CategoryTheory.Functor.obj.{u2, u2, u1, max u1 u2} C _inst_1 (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.CategoryTheory.category.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.toKaroubi.{u1, u2} C _inst_1) X)) (CategoryTheory.Idempotents.Karoubi.decompId_p.{u1, u2} C _inst_1 (CategoryTheory.Functor.obj.{u2, u2, u1, max u1 u2} C _inst_1 (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.CategoryTheory.category.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.toKaroubi.{u1, u2} C _inst_1) X)) (CategoryTheory.CategoryStruct.id.{u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Category.toCategoryStruct.{u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.CategoryTheory.category.{u1, u2} C _inst_1)) ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 (CategoryTheory.Functor.obj.{u2, u2, u1, max u1 u2} C _inst_1 (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.CategoryTheory.category.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.toKaroubi.{u1, u2} C _inst_1) X))))
+but is expected to have type
+ forall {C : Type.{u1}} [_inst_1 : CategoryTheory.Category.{u2, u1} C] (X : C), Eq.{succ u2} (Quiver.Hom.{succ u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.CategoryStruct.toQuiver.{u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Category.toCategoryStruct.{u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.instCategoryKaroubi.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.mk.{u1, u2} C _inst_1 (CategoryTheory.Idempotents.Karoubi.X.{u1, u2} C _inst_1 (Prefunctor.obj.{succ u2, succ u2, u1, max u1 u2} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1)) (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.CategoryStruct.toQuiver.{u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Category.toCategoryStruct.{u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.instCategoryKaroubi.{u1, u2} C _inst_1))) (CategoryTheory.Functor.toPrefunctor.{u2, u2, u1, max u1 u2} C _inst_1 (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.instCategoryKaroubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.toKaroubi.{u1, u2} C _inst_1)) X)) (CategoryTheory.CategoryStruct.id.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1) (CategoryTheory.Idempotents.Karoubi.X.{u1, u2} C _inst_1 (Prefunctor.obj.{succ u2, succ u2, u1, max u1 u2} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1)) (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.CategoryStruct.toQuiver.{u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Category.toCategoryStruct.{u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.instCategoryKaroubi.{u1, u2} C _inst_1))) (CategoryTheory.Functor.toPrefunctor.{u2, u2, u1, max u1 u2} C _inst_1 (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.instCategoryKaroubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.toKaroubi.{u1, u2} C _inst_1)) X))) (CategoryTheory.Idempotents.Karoubi.coe.proof_1.{u2, u1} C _inst_1 (CategoryTheory.Idempotents.Karoubi.X.{u1, u2} C _inst_1 (Prefunctor.obj.{succ u2, succ u2, u1, max u1 u2} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1)) (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.CategoryStruct.toQuiver.{u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Category.toCategoryStruct.{u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.instCategoryKaroubi.{u1, u2} C _inst_1))) (CategoryTheory.Functor.toPrefunctor.{u2, u2, u1, max u1 u2} C _inst_1 (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.instCategoryKaroubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.toKaroubi.{u1, u2} C _inst_1)) X)))) (Prefunctor.obj.{succ u2, succ u2, u1, max u1 u2} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1)) (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.CategoryStruct.toQuiver.{u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Category.toCategoryStruct.{u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.instCategoryKaroubi.{u1, u2} C _inst_1))) (CategoryTheory.Functor.toPrefunctor.{u2, u2, u1, max u1 u2} C _inst_1 (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.instCategoryKaroubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.toKaroubi.{u1, u2} C _inst_1)) X)) (CategoryTheory.Idempotents.Karoubi.decompId_p.{u1, u2} C _inst_1 (Prefunctor.obj.{succ u2, succ u2, u1, max u1 u2} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1)) (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.CategoryStruct.toQuiver.{u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Category.toCategoryStruct.{u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.instCategoryKaroubi.{u1, u2} C _inst_1))) (CategoryTheory.Functor.toPrefunctor.{u2, u2, u1, max u1 u2} C _inst_1 (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.instCategoryKaroubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.toKaroubi.{u1, u2} C _inst_1)) X)) (CategoryTheory.CategoryStruct.id.{u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Category.toCategoryStruct.{u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.instCategoryKaroubi.{u1, u2} C _inst_1)) (CategoryTheory.Idempotents.Karoubi.mk.{u1, u2} C _inst_1 (CategoryTheory.Idempotents.Karoubi.X.{u1, u2} C _inst_1 (Prefunctor.obj.{succ u2, succ u2, u1, max u1 u2} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1)) (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.CategoryStruct.toQuiver.{u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Category.toCategoryStruct.{u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.instCategoryKaroubi.{u1, u2} C _inst_1))) (CategoryTheory.Functor.toPrefunctor.{u2, u2, u1, max u1 u2} C _inst_1 (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.instCategoryKaroubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.toKaroubi.{u1, u2} C _inst_1)) X)) (CategoryTheory.CategoryStruct.id.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1) (CategoryTheory.Idempotents.Karoubi.X.{u1, u2} C _inst_1 (Prefunctor.obj.{succ u2, succ u2, u1, max u1 u2} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1)) (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.CategoryStruct.toQuiver.{u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Category.toCategoryStruct.{u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.instCategoryKaroubi.{u1, u2} C _inst_1))) (CategoryTheory.Functor.toPrefunctor.{u2, u2, u1, max u1 u2} C _inst_1 (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.instCategoryKaroubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.toKaroubi.{u1, u2} C _inst_1)) X))) (CategoryTheory.Idempotents.Karoubi.coe.proof_1.{u2, u1} C _inst_1 (CategoryTheory.Idempotents.Karoubi.X.{u1, u2} C _inst_1 (Prefunctor.obj.{succ u2, succ u2, u1, max u1 u2} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1)) (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.CategoryStruct.toQuiver.{u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Category.toCategoryStruct.{u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.instCategoryKaroubi.{u1, u2} C _inst_1))) (CategoryTheory.Functor.toPrefunctor.{u2, u2, u1, max u1 u2} C _inst_1 (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.instCategoryKaroubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.toKaroubi.{u1, u2} C _inst_1)) X)))))
+Case conversion may be inaccurate. Consider using '#align category_theory.idempotents.karoubi.decomp_id_p_to_karoubi CategoryTheory.Idempotents.Karoubi.decompId_p_toKaroubiₓ'. -/
+theorem decompId_p_toKaroubi (X : C) : decompId_p ((toKaroubi C).obj X) = 𝟙 _ :=
by
ext
rfl
-#align category_theory.idempotents.karoubi.decomp_id_p_to_karoubi CategoryTheory.Idempotents.Karoubi.decompIdP_toKaroubi
-
-theorem decompIdI_naturality {P Q : Karoubi C} (f : P ⟶ Q) :
- f ≫ decompIdI _ = decompIdI _ ≫ ⟨f.f, by erw [comp_id, id_comp]⟩ :=
+#align category_theory.idempotents.karoubi.decomp_id_p_to_karoubi CategoryTheory.Idempotents.Karoubi.decompId_p_toKaroubi
+
+/- warning: category_theory.idempotents.karoubi.decomp_id_i_naturality -> CategoryTheory.Idempotents.Karoubi.decompId_i_naturality is a dubious translation:
+lean 3 declaration is
+ forall {C : Type.{u1}} [_inst_1 : CategoryTheory.Category.{u2, u1} C] {P : CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1} {Q : CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1} (f : Quiver.Hom.{succ u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.CategoryStruct.toQuiver.{u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Category.toCategoryStruct.{u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.CategoryTheory.category.{u1, u2} C _inst_1))) P Q), Eq.{succ u2} (Quiver.Hom.{succ u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.CategoryStruct.toQuiver.{u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Category.toCategoryStruct.{u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.CategoryTheory.category.{u1, u2} C _inst_1))) P ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 Q))) (CategoryTheory.CategoryStruct.comp.{u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Category.toCategoryStruct.{u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.CategoryTheory.category.{u1, u2} C _inst_1)) P Q ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 Q)) f (CategoryTheory.Idempotents.Karoubi.decompId_i.{u1, u2} C _inst_1 Q)) (CategoryTheory.CategoryStruct.comp.{u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Category.toCategoryStruct.{u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.CategoryTheory.category.{u1, u2} C _inst_1)) P ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P)) ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 Q)) (CategoryTheory.Idempotents.Karoubi.decompId_i.{u1, u2} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.Hom.mk.{u1, u2} C _inst_1 ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P)) ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 Q)) (CategoryTheory.Idempotents.Karoubi.Hom.f.{u1, u2} C _inst_1 P Q f) (Eq.mpr.{0} (Eq.{succ u2} (Quiver.Hom.{succ u2, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1)) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 Q)))) (CategoryTheory.Idempotents.Karoubi.Hom.f.{u1, u2} C _inst_1 P Q f) (CategoryTheory.CategoryStruct.comp.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 Q))) (CategoryTheory.Idempotents.Karoubi.p.{u1, u2} C _inst_1 ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P))) (CategoryTheory.CategoryStruct.comp.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 Q))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 Q))) (CategoryTheory.Idempotents.Karoubi.Hom.f.{u1, u2} C _inst_1 P Q f) (CategoryTheory.Idempotents.Karoubi.p.{u1, u2} C _inst_1 ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 Q)))))) (Eq.{succ u2} (Quiver.Hom.{succ u2, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1)) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 Q)))) (CategoryTheory.Idempotents.Karoubi.Hom.f.{u1, u2} C _inst_1 P Q f) (CategoryTheory.CategoryStruct.comp.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 Q))) (CategoryTheory.Idempotents.Karoubi.p.{u1, u2} C _inst_1 ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P))) (CategoryTheory.Idempotents.Karoubi.Hom.f.{u1, u2} C _inst_1 P Q f))) (id_tag Tactic.IdTag.rw (Eq.{1} Prop (Eq.{succ u2} (Quiver.Hom.{succ u2, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1)) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 Q)))) (CategoryTheory.Idempotents.Karoubi.Hom.f.{u1, u2} C _inst_1 P Q f) (CategoryTheory.CategoryStruct.comp.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 Q))) (CategoryTheory.Idempotents.Karoubi.p.{u1, u2} C _inst_1 ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P))) (CategoryTheory.CategoryStruct.comp.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 Q))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 Q))) (CategoryTheory.Idempotents.Karoubi.Hom.f.{u1, u2} C _inst_1 P Q f) (CategoryTheory.Idempotents.Karoubi.p.{u1, u2} C _inst_1 ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 Q)))))) (Eq.{succ u2} (Quiver.Hom.{succ u2, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1)) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 Q)))) (CategoryTheory.Idempotents.Karoubi.Hom.f.{u1, u2} C _inst_1 P Q f) (CategoryTheory.CategoryStruct.comp.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 Q))) (CategoryTheory.Idempotents.Karoubi.p.{u1, u2} C _inst_1 ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P))) (CategoryTheory.Idempotents.Karoubi.Hom.f.{u1, u2} C _inst_1 P Q f)))) (Eq.ndrec.{0, succ u2} (Quiver.Hom.{succ u2, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1)) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 Q)))) (CategoryTheory.CategoryStruct.comp.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 Q))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 Q))) (CategoryTheory.Idempotents.Karoubi.Hom.f.{u1, u2} C _inst_1 P Q f) (CategoryTheory.CategoryStruct.id.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 Q))))) (fun (_a : Quiver.Hom.{succ u2, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1)) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 Q)))) => Eq.{1} Prop (Eq.{succ u2} (Quiver.Hom.{succ u2, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1)) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 Q)))) (CategoryTheory.Idempotents.Karoubi.Hom.f.{u1, u2} C _inst_1 P Q f) (CategoryTheory.CategoryStruct.comp.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 Q))) (CategoryTheory.Idempotents.Karoubi.p.{u1, u2} C _inst_1 ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P))) (CategoryTheory.CategoryStruct.comp.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 Q))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 Q))) (CategoryTheory.Idempotents.Karoubi.Hom.f.{u1, u2} C _inst_1 P Q f) (CategoryTheory.Idempotents.Karoubi.p.{u1, u2} C _inst_1 ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 Q)))))) (Eq.{succ u2} (Quiver.Hom.{succ u2, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1)) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 Q)))) (CategoryTheory.Idempotents.Karoubi.Hom.f.{u1, u2} C _inst_1 P Q f) (CategoryTheory.CategoryStruct.comp.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 Q))) (CategoryTheory.Idempotents.Karoubi.p.{u1, u2} C _inst_1 ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P))) _a))) (rfl.{1} Prop (Eq.{succ u2} (Quiver.Hom.{succ u2, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1)) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 Q)))) (CategoryTheory.Idempotents.Karoubi.Hom.f.{u1, u2} C _inst_1 P Q f) (CategoryTheory.CategoryStruct.comp.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 Q))) (CategoryTheory.Idempotents.Karoubi.p.{u1, u2} C _inst_1 ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P))) (CategoryTheory.CategoryStruct.comp.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 Q))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 Q))) (CategoryTheory.Idempotents.Karoubi.Hom.f.{u1, u2} C _inst_1 P Q f) (CategoryTheory.Idempotents.Karoubi.p.{u1, u2} C _inst_1 ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 Q))))))) (CategoryTheory.Idempotents.Karoubi.Hom.f.{u1, u2} C _inst_1 P Q f) (CategoryTheory.Category.comp_id.{u2, u1} C _inst_1 (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 Q))) (CategoryTheory.Idempotents.Karoubi.Hom.f.{u1, u2} C _inst_1 P Q f)))) (Eq.mpr.{0} (Eq.{succ u2} (Quiver.Hom.{succ u2, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1)) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 Q)))) (CategoryTheory.Idempotents.Karoubi.Hom.f.{u1, u2} C _inst_1 P Q f) (CategoryTheory.CategoryStruct.comp.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 Q))) (CategoryTheory.Idempotents.Karoubi.p.{u1, u2} C _inst_1 ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P))) (CategoryTheory.Idempotents.Karoubi.Hom.f.{u1, u2} C _inst_1 P Q f))) (Eq.{succ u2} (Quiver.Hom.{succ u2, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1)) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 Q)))) (CategoryTheory.Idempotents.Karoubi.Hom.f.{u1, u2} C _inst_1 P Q f) (CategoryTheory.Idempotents.Karoubi.Hom.f.{u1, u2} C _inst_1 P Q f)) (id_tag Tactic.IdTag.rw (Eq.{1} Prop (Eq.{succ u2} (Quiver.Hom.{succ u2, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1)) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 Q)))) (CategoryTheory.Idempotents.Karoubi.Hom.f.{u1, u2} C _inst_1 P Q f) (CategoryTheory.CategoryStruct.comp.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 Q))) (CategoryTheory.Idempotents.Karoubi.p.{u1, u2} C _inst_1 ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P))) (CategoryTheory.Idempotents.Karoubi.Hom.f.{u1, u2} C _inst_1 P Q f))) (Eq.{succ u2} (Quiver.Hom.{succ u2, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1)) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 Q)))) (CategoryTheory.Idempotents.Karoubi.Hom.f.{u1, u2} C _inst_1 P Q f) (CategoryTheory.Idempotents.Karoubi.Hom.f.{u1, u2} C _inst_1 P Q f))) (Eq.ndrec.{0, succ u2} (Quiver.Hom.{succ u2, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1)) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 Q)))) (CategoryTheory.CategoryStruct.comp.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 Q))) (CategoryTheory.CategoryStruct.id.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P)))) (CategoryTheory.Idempotents.Karoubi.Hom.f.{u1, u2} C _inst_1 P Q f)) (fun (_a : Quiver.Hom.{succ u2, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1)) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 Q)))) => Eq.{1} Prop (Eq.{succ u2} (Quiver.Hom.{succ u2, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1)) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 Q)))) (CategoryTheory.Idempotents.Karoubi.Hom.f.{u1, u2} C _inst_1 P Q f) (CategoryTheory.CategoryStruct.comp.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 Q))) (CategoryTheory.Idempotents.Karoubi.p.{u1, u2} C _inst_1 ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P))) (CategoryTheory.Idempotents.Karoubi.Hom.f.{u1, u2} C _inst_1 P Q f))) (Eq.{succ u2} (Quiver.Hom.{succ u2, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1)) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 Q)))) (CategoryTheory.Idempotents.Karoubi.Hom.f.{u1, u2} C _inst_1 P Q f) _a)) (rfl.{1} Prop (Eq.{succ u2} (Quiver.Hom.{succ u2, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1)) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 Q)))) (CategoryTheory.Idempotents.Karoubi.Hom.f.{u1, u2} C _inst_1 P Q f) (CategoryTheory.CategoryStruct.comp.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 Q))) (CategoryTheory.Idempotents.Karoubi.p.{u1, u2} C _inst_1 ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P))) (CategoryTheory.Idempotents.Karoubi.Hom.f.{u1, u2} C _inst_1 P Q f)))) (CategoryTheory.Idempotents.Karoubi.Hom.f.{u1, u2} C _inst_1 P Q f) (CategoryTheory.Category.id_comp.{u2, u1} C _inst_1 (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 Q))) (CategoryTheory.Idempotents.Karoubi.Hom.f.{u1, u2} C _inst_1 P Q f)))) (rfl.{succ u2} (Quiver.Hom.{succ u2, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1)) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 Q)))) (CategoryTheory.Idempotents.Karoubi.Hom.f.{u1, u2} C _inst_1 P Q f))))))
+but is expected to have type
+ forall {C : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u1, u2} C] {P : CategoryTheory.Idempotents.Karoubi.{u2, u1} C _inst_1} {Q : CategoryTheory.Idempotents.Karoubi.{u2, u1} C _inst_1} (f : Quiver.Hom.{succ u1, max u2 u1} (CategoryTheory.Idempotents.Karoubi.{u2, u1} C _inst_1) (CategoryTheory.CategoryStruct.toQuiver.{u1, max u2 u1} (CategoryTheory.Idempotents.Karoubi.{u2, u1} C _inst_1) (CategoryTheory.Category.toCategoryStruct.{u1, max u2 u1} (CategoryTheory.Idempotents.Karoubi.{u2, u1} C _inst_1) (CategoryTheory.Idempotents.Karoubi.instCategoryKaroubi.{u2, u1} C _inst_1))) P Q), Eq.{succ u1} (Quiver.Hom.{succ u1, max u2 u1} (CategoryTheory.Idempotents.Karoubi.{u2, u1} C _inst_1) (CategoryTheory.CategoryStruct.toQuiver.{u1, max u2 u1} (CategoryTheory.Idempotents.Karoubi.{u2, u1} C _inst_1) (CategoryTheory.Category.toCategoryStruct.{u1, max u2 u1} (CategoryTheory.Idempotents.Karoubi.{u2, u1} C _inst_1) (CategoryTheory.Idempotents.Karoubi.instCategoryKaroubi.{u2, u1} C _inst_1))) P (CategoryTheory.Idempotents.Karoubi.mk.{u2, u1} C _inst_1 (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 Q) (CategoryTheory.CategoryStruct.id.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 Q)) (CategoryTheory.Idempotents.Karoubi.coe.proof_1.{u1, u2} C _inst_1 (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 Q)))) (CategoryTheory.CategoryStruct.comp.{u1, max u2 u1} (CategoryTheory.Idempotents.Karoubi.{u2, u1} C _inst_1) (CategoryTheory.Category.toCategoryStruct.{u1, max u2 u1} (CategoryTheory.Idempotents.Karoubi.{u2, u1} C _inst_1) (CategoryTheory.Idempotents.Karoubi.instCategoryKaroubi.{u2, u1} C _inst_1)) P Q (CategoryTheory.Idempotents.Karoubi.mk.{u2, u1} C _inst_1 (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 Q) (CategoryTheory.CategoryStruct.id.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 Q)) (CategoryTheory.Idempotents.Karoubi.coe.proof_1.{u1, u2} C _inst_1 (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 Q))) f (CategoryTheory.Idempotents.Karoubi.decompId_i.{u2, u1} C _inst_1 Q)) (CategoryTheory.CategoryStruct.comp.{u1, max u2 u1} (CategoryTheory.Idempotents.Karoubi.{u2, u1} C _inst_1) (CategoryTheory.Category.toCategoryStruct.{u1, max u2 u1} (CategoryTheory.Idempotents.Karoubi.{u2, u1} C _inst_1) (CategoryTheory.Idempotents.Karoubi.instCategoryKaroubi.{u2, u1} C _inst_1)) P (CategoryTheory.Idempotents.Karoubi.mk.{u2, u1} C _inst_1 (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 P) (CategoryTheory.CategoryStruct.id.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 P)) (CategoryTheory.Idempotents.Karoubi.coe.proof_1.{u1, u2} C _inst_1 (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 P))) (CategoryTheory.Idempotents.Karoubi.mk.{u2, u1} C _inst_1 (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 Q) (CategoryTheory.CategoryStruct.id.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 Q)) (CategoryTheory.Idempotents.Karoubi.coe.proof_1.{u1, u2} C _inst_1 (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 Q))) (CategoryTheory.Idempotents.Karoubi.decompId_i.{u2, u1} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.Hom.mk.{u2, u1} C _inst_1 (CategoryTheory.Idempotents.Karoubi.mk.{u2, u1} C _inst_1 (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 P) (CategoryTheory.CategoryStruct.id.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 P)) (CategoryTheory.Idempotents.Karoubi.coe.proof_1.{u1, u2} C _inst_1 (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 P))) (CategoryTheory.Idempotents.Karoubi.mk.{u2, u1} C _inst_1 (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 Q) (CategoryTheory.CategoryStruct.id.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 Q)) (CategoryTheory.Idempotents.Karoubi.coe.proof_1.{u1, u2} C _inst_1 (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 Q))) (CategoryTheory.Idempotents.Karoubi.Hom.f.{u2, u1} C _inst_1 P Q f) (of_eq_true (Eq.{succ u1} (Quiver.Hom.{succ u1, u2} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1)) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 Q)) (CategoryTheory.Idempotents.Karoubi.Hom.f.{u2, u1} C _inst_1 P Q f) (CategoryTheory.CategoryStruct.comp.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 Q) (CategoryTheory.CategoryStruct.id.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 P)) (CategoryTheory.CategoryStruct.comp.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 Q) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 Q) (CategoryTheory.Idempotents.Karoubi.Hom.f.{u2, u1} C _inst_1 P Q f) (CategoryTheory.CategoryStruct.id.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 Q))))) (Eq.trans.{1} Prop (Eq.{succ u1} (Quiver.Hom.{succ u1, u2} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1)) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 Q)) (CategoryTheory.Idempotents.Karoubi.Hom.f.{u2, u1} C _inst_1 P Q f) (CategoryTheory.CategoryStruct.comp.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 Q) (CategoryTheory.CategoryStruct.id.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 P)) (CategoryTheory.CategoryStruct.comp.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 Q) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 Q) (CategoryTheory.Idempotents.Karoubi.Hom.f.{u2, u1} C _inst_1 P Q f) (CategoryTheory.CategoryStruct.id.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 Q))))) (Eq.{succ u1} (Quiver.Hom.{succ u1, u2} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1)) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 Q)) (CategoryTheory.Idempotents.Karoubi.Hom.f.{u2, u1} C _inst_1 P Q f) (CategoryTheory.Idempotents.Karoubi.Hom.f.{u2, u1} C _inst_1 P Q f)) True (congrArg.{succ u1, 1} (Quiver.Hom.{succ u1, u2} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1)) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 Q)) Prop (CategoryTheory.CategoryStruct.comp.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 Q) (CategoryTheory.CategoryStruct.id.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 P)) (CategoryTheory.CategoryStruct.comp.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 Q) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 Q) (CategoryTheory.Idempotents.Karoubi.Hom.f.{u2, u1} C _inst_1 P Q f) (CategoryTheory.CategoryStruct.id.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 Q)))) (CategoryTheory.Idempotents.Karoubi.Hom.f.{u2, u1} C _inst_1 P Q f) (Eq.{succ u1} (Quiver.Hom.{succ u1, u2} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1)) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 Q)) (CategoryTheory.Idempotents.Karoubi.Hom.f.{u2, u1} C _inst_1 P Q f)) (Eq.trans.{succ u1} (Quiver.Hom.{succ u1, u2} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1)) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 Q)) (CategoryTheory.CategoryStruct.comp.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 Q) (CategoryTheory.CategoryStruct.id.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 P)) (CategoryTheory.CategoryStruct.comp.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 Q) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 Q) (CategoryTheory.Idempotents.Karoubi.Hom.f.{u2, u1} C _inst_1 P Q f) (CategoryTheory.CategoryStruct.id.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 Q)))) (CategoryTheory.CategoryStruct.comp.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 Q) (CategoryTheory.CategoryStruct.id.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 P)) (CategoryTheory.Idempotents.Karoubi.Hom.f.{u2, u1} C _inst_1 P Q f)) (CategoryTheory.Idempotents.Karoubi.Hom.f.{u2, u1} C _inst_1 P Q f) (congrArg.{succ u1, succ u1} (Quiver.Hom.{succ u1, u2} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1)) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 Q)) (Quiver.Hom.{succ u1, u2} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1)) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 Q)) (CategoryTheory.CategoryStruct.comp.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 Q) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 Q) (CategoryTheory.Idempotents.Karoubi.Hom.f.{u2, u1} C _inst_1 P Q f) (CategoryTheory.CategoryStruct.id.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 Q))) (CategoryTheory.Idempotents.Karoubi.Hom.f.{u2, u1} C _inst_1 P Q f) (CategoryTheory.CategoryStruct.comp.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 Q) (CategoryTheory.CategoryStruct.id.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 P))) (CategoryTheory.Category.comp_id.{u1, u2} C _inst_1 (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 Q) (CategoryTheory.Idempotents.Karoubi.Hom.f.{u2, u1} C _inst_1 P Q f))) (CategoryTheory.Category.id_comp.{u1, u2} C _inst_1 (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 Q) (CategoryTheory.Idempotents.Karoubi.Hom.f.{u2, u1} C _inst_1 P Q f)))) (eq_self.{succ u1} (Quiver.Hom.{succ u1, u2} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1)) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 Q)) (CategoryTheory.Idempotents.Karoubi.Hom.f.{u2, u1} C _inst_1 P Q f))))))
+Case conversion may be inaccurate. Consider using '#align category_theory.idempotents.karoubi.decomp_id_i_naturality CategoryTheory.Idempotents.Karoubi.decompId_i_naturalityₓ'. -/
+theorem decompId_i_naturality {P Q : Karoubi C} (f : P ⟶ Q) :
+ f ≫ decompId_i _ = decompId_i _ ≫ ⟨f.f, by erw [comp_id, id_comp]⟩ :=
by
ext
simp only [comp_f, decomp_id_i_f, karoubi.comp_p, karoubi.p_comp]
-#align category_theory.idempotents.karoubi.decomp_id_i_naturality CategoryTheory.Idempotents.Karoubi.decompIdI_naturality
-
-theorem decompIdP_naturality {P Q : Karoubi C} (f : P ⟶ Q) :
- decompIdP P ≫ f =
- (⟨f.f, by erw [comp_id, id_comp]⟩ : (P.pt : Karoubi C) ⟶ Q.pt) ≫ decompIdP Q :=
+#align category_theory.idempotents.karoubi.decomp_id_i_naturality CategoryTheory.Idempotents.Karoubi.decompId_i_naturality
+
+/- warning: category_theory.idempotents.karoubi.decomp_id_p_naturality -> CategoryTheory.Idempotents.Karoubi.decompId_p_naturality is a dubious translation:
+lean 3 declaration is
+ forall {C : Type.{u1}} [_inst_1 : CategoryTheory.Category.{u2, u1} C] {P : CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1} {Q : CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1} (f : Quiver.Hom.{succ u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.CategoryStruct.toQuiver.{u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Category.toCategoryStruct.{u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.CategoryTheory.category.{u1, u2} C _inst_1))) P Q), Eq.{succ u2} (Quiver.Hom.{succ u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.CategoryStruct.toQuiver.{u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Category.toCategoryStruct.{u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.CategoryTheory.category.{u1, u2} C _inst_1))) ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P)) Q) (CategoryTheory.CategoryStruct.comp.{u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Category.toCategoryStruct.{u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.CategoryTheory.category.{u1, u2} C _inst_1)) ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P)) P Q (CategoryTheory.Idempotents.Karoubi.decompId_p.{u1, u2} C _inst_1 P) f) (CategoryTheory.CategoryStruct.comp.{u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Category.toCategoryStruct.{u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.CategoryTheory.category.{u1, u2} C _inst_1)) ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P)) ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 Q)) Q (CategoryTheory.Idempotents.Karoubi.Hom.mk.{u1, u2} C _inst_1 ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P)) ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 Q)) (CategoryTheory.Idempotents.Karoubi.Hom.f.{u1, u2} C _inst_1 P Q f) (Eq.mpr.{0} (Eq.{succ u2} (Quiver.Hom.{succ u2, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1)) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 Q)))) (CategoryTheory.Idempotents.Karoubi.Hom.f.{u1, u2} C _inst_1 P Q f) (CategoryTheory.CategoryStruct.comp.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 Q))) (CategoryTheory.Idempotents.Karoubi.p.{u1, u2} C _inst_1 ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P))) (CategoryTheory.CategoryStruct.comp.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 Q))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 Q))) (CategoryTheory.Idempotents.Karoubi.Hom.f.{u1, u2} C _inst_1 P Q f) (CategoryTheory.Idempotents.Karoubi.p.{u1, u2} C _inst_1 ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 Q)))))) (Eq.{succ u2} (Quiver.Hom.{succ u2, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1)) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 Q)))) (CategoryTheory.Idempotents.Karoubi.Hom.f.{u1, u2} C _inst_1 P Q f) (CategoryTheory.CategoryStruct.comp.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 Q))) (CategoryTheory.Idempotents.Karoubi.p.{u1, u2} C _inst_1 ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P))) (CategoryTheory.Idempotents.Karoubi.Hom.f.{u1, u2} C _inst_1 P Q f))) (id_tag Tactic.IdTag.rw (Eq.{1} Prop (Eq.{succ u2} (Quiver.Hom.{succ u2, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1)) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 Q)))) (CategoryTheory.Idempotents.Karoubi.Hom.f.{u1, u2} C _inst_1 P Q f) (CategoryTheory.CategoryStruct.comp.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 Q))) (CategoryTheory.Idempotents.Karoubi.p.{u1, u2} C _inst_1 ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P))) (CategoryTheory.CategoryStruct.comp.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 Q))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 Q))) (CategoryTheory.Idempotents.Karoubi.Hom.f.{u1, u2} C _inst_1 P Q f) (CategoryTheory.Idempotents.Karoubi.p.{u1, u2} C _inst_1 ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 Q)))))) (Eq.{succ u2} (Quiver.Hom.{succ u2, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1)) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 Q)))) (CategoryTheory.Idempotents.Karoubi.Hom.f.{u1, u2} C _inst_1 P Q f) (CategoryTheory.CategoryStruct.comp.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 Q))) (CategoryTheory.Idempotents.Karoubi.p.{u1, u2} C _inst_1 ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P))) (CategoryTheory.Idempotents.Karoubi.Hom.f.{u1, u2} C _inst_1 P Q f)))) (Eq.ndrec.{0, succ u2} (Quiver.Hom.{succ u2, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1)) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 Q)))) (CategoryTheory.CategoryStruct.comp.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 Q))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 Q))) (CategoryTheory.Idempotents.Karoubi.Hom.f.{u1, u2} C _inst_1 P Q f) (CategoryTheory.CategoryStruct.id.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 Q))))) (fun (_a : Quiver.Hom.{succ u2, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1)) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 Q)))) => Eq.{1} Prop (Eq.{succ u2} (Quiver.Hom.{succ u2, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1)) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 Q)))) (CategoryTheory.Idempotents.Karoubi.Hom.f.{u1, u2} C _inst_1 P Q f) (CategoryTheory.CategoryStruct.comp.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 Q))) (CategoryTheory.Idempotents.Karoubi.p.{u1, u2} C _inst_1 ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P))) (CategoryTheory.CategoryStruct.comp.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 Q))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 Q))) (CategoryTheory.Idempotents.Karoubi.Hom.f.{u1, u2} C _inst_1 P Q f) (CategoryTheory.Idempotents.Karoubi.p.{u1, u2} C _inst_1 ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 Q)))))) (Eq.{succ u2} (Quiver.Hom.{succ u2, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1)) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 Q)))) (CategoryTheory.Idempotents.Karoubi.Hom.f.{u1, u2} C _inst_1 P Q f) (CategoryTheory.CategoryStruct.comp.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 Q))) (CategoryTheory.Idempotents.Karoubi.p.{u1, u2} C _inst_1 ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P))) _a))) (rfl.{1} Prop (Eq.{succ u2} (Quiver.Hom.{succ u2, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1)) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 Q)))) (CategoryTheory.Idempotents.Karoubi.Hom.f.{u1, u2} C _inst_1 P Q f) (CategoryTheory.CategoryStruct.comp.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 Q))) (CategoryTheory.Idempotents.Karoubi.p.{u1, u2} C _inst_1 ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P))) (CategoryTheory.CategoryStruct.comp.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 Q))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 Q))) (CategoryTheory.Idempotents.Karoubi.Hom.f.{u1, u2} C _inst_1 P Q f) (CategoryTheory.Idempotents.Karoubi.p.{u1, u2} C _inst_1 ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 Q))))))) (CategoryTheory.Idempotents.Karoubi.Hom.f.{u1, u2} C _inst_1 P Q f) (CategoryTheory.Category.comp_id.{u2, u1} C _inst_1 (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 Q))) (CategoryTheory.Idempotents.Karoubi.Hom.f.{u1, u2} C _inst_1 P Q f)))) (Eq.mpr.{0} (Eq.{succ u2} (Quiver.Hom.{succ u2, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1)) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 Q)))) (CategoryTheory.Idempotents.Karoubi.Hom.f.{u1, u2} C _inst_1 P Q f) (CategoryTheory.CategoryStruct.comp.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 Q))) (CategoryTheory.Idempotents.Karoubi.p.{u1, u2} C _inst_1 ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P))) (CategoryTheory.Idempotents.Karoubi.Hom.f.{u1, u2} C _inst_1 P Q f))) (Eq.{succ u2} (Quiver.Hom.{succ u2, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1)) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 Q)))) (CategoryTheory.Idempotents.Karoubi.Hom.f.{u1, u2} C _inst_1 P Q f) (CategoryTheory.Idempotents.Karoubi.Hom.f.{u1, u2} C _inst_1 P Q f)) (id_tag Tactic.IdTag.rw (Eq.{1} Prop (Eq.{succ u2} (Quiver.Hom.{succ u2, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1)) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 Q)))) (CategoryTheory.Idempotents.Karoubi.Hom.f.{u1, u2} C _inst_1 P Q f) (CategoryTheory.CategoryStruct.comp.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 Q))) (CategoryTheory.Idempotents.Karoubi.p.{u1, u2} C _inst_1 ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P))) (CategoryTheory.Idempotents.Karoubi.Hom.f.{u1, u2} C _inst_1 P Q f))) (Eq.{succ u2} (Quiver.Hom.{succ u2, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1)) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 Q)))) (CategoryTheory.Idempotents.Karoubi.Hom.f.{u1, u2} C _inst_1 P Q f) (CategoryTheory.Idempotents.Karoubi.Hom.f.{u1, u2} C _inst_1 P Q f))) (Eq.ndrec.{0, succ u2} (Quiver.Hom.{succ u2, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1)) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 Q)))) (CategoryTheory.CategoryStruct.comp.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 Q))) (CategoryTheory.CategoryStruct.id.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P)))) (CategoryTheory.Idempotents.Karoubi.Hom.f.{u1, u2} C _inst_1 P Q f)) (fun (_a : Quiver.Hom.{succ u2, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1)) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 Q)))) => Eq.{1} Prop (Eq.{succ u2} (Quiver.Hom.{succ u2, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1)) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 Q)))) (CategoryTheory.Idempotents.Karoubi.Hom.f.{u1, u2} C _inst_1 P Q f) (CategoryTheory.CategoryStruct.comp.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 Q))) (CategoryTheory.Idempotents.Karoubi.p.{u1, u2} C _inst_1 ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P))) (CategoryTheory.Idempotents.Karoubi.Hom.f.{u1, u2} C _inst_1 P Q f))) (Eq.{succ u2} (Quiver.Hom.{succ u2, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1)) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 Q)))) (CategoryTheory.Idempotents.Karoubi.Hom.f.{u1, u2} C _inst_1 P Q f) _a)) (rfl.{1} Prop (Eq.{succ u2} (Quiver.Hom.{succ u2, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1)) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 Q)))) (CategoryTheory.Idempotents.Karoubi.Hom.f.{u1, u2} C _inst_1 P Q f) (CategoryTheory.CategoryStruct.comp.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 Q))) (CategoryTheory.Idempotents.Karoubi.p.{u1, u2} C _inst_1 ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P))) (CategoryTheory.Idempotents.Karoubi.Hom.f.{u1, u2} C _inst_1 P Q f)))) (CategoryTheory.Idempotents.Karoubi.Hom.f.{u1, u2} C _inst_1 P Q f) (CategoryTheory.Category.id_comp.{u2, u1} C _inst_1 (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 Q))) (CategoryTheory.Idempotents.Karoubi.Hom.f.{u1, u2} C _inst_1 P Q f)))) (rfl.{succ u2} (Quiver.Hom.{succ u2, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1)) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 ((fun (a : Type.{u1}) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{succ u1, max (succ u1) (succ u2)} a b] => self.0) C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (HasLiftT.mk.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CoeTCₓ.coe.{succ u1, max (succ u1) (succ u2)} C (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.coe.{u1, u2} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 Q)))) (CategoryTheory.Idempotents.Karoubi.Hom.f.{u1, u2} C _inst_1 P Q f))))) (CategoryTheory.Idempotents.Karoubi.decompId_p.{u1, u2} C _inst_1 Q))
+but is expected to have type
+ forall {C : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u1, u2} C] {P : CategoryTheory.Idempotents.Karoubi.{u2, u1} C _inst_1} {Q : CategoryTheory.Idempotents.Karoubi.{u2, u1} C _inst_1} (f : Quiver.Hom.{succ u1, max u2 u1} (CategoryTheory.Idempotents.Karoubi.{u2, u1} C _inst_1) (CategoryTheory.CategoryStruct.toQuiver.{u1, max u2 u1} (CategoryTheory.Idempotents.Karoubi.{u2, u1} C _inst_1) (CategoryTheory.Category.toCategoryStruct.{u1, max u2 u1} (CategoryTheory.Idempotents.Karoubi.{u2, u1} C _inst_1) (CategoryTheory.Idempotents.Karoubi.instCategoryKaroubi.{u2, u1} C _inst_1))) P Q), Eq.{succ u1} (Quiver.Hom.{succ u1, max u2 u1} (CategoryTheory.Idempotents.Karoubi.{u2, u1} C _inst_1) (CategoryTheory.CategoryStruct.toQuiver.{u1, max u2 u1} (CategoryTheory.Idempotents.Karoubi.{u2, u1} C _inst_1) (CategoryTheory.Category.toCategoryStruct.{u1, max u2 u1} (CategoryTheory.Idempotents.Karoubi.{u2, u1} C _inst_1) (CategoryTheory.Idempotents.Karoubi.instCategoryKaroubi.{u2, u1} C _inst_1))) (CategoryTheory.Idempotents.Karoubi.mk.{u2, u1} C _inst_1 (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 P) (CategoryTheory.CategoryStruct.id.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 P)) (CategoryTheory.Idempotents.Karoubi.coe.proof_1.{u1, u2} C _inst_1 (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 P))) Q) (CategoryTheory.CategoryStruct.comp.{u1, max u2 u1} (CategoryTheory.Idempotents.Karoubi.{u2, u1} C _inst_1) (CategoryTheory.Category.toCategoryStruct.{u1, max u2 u1} (CategoryTheory.Idempotents.Karoubi.{u2, u1} C _inst_1) (CategoryTheory.Idempotents.Karoubi.instCategoryKaroubi.{u2, u1} C _inst_1)) (CategoryTheory.Idempotents.Karoubi.mk.{u2, u1} C _inst_1 (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 P) (CategoryTheory.CategoryStruct.id.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 P)) (CategoryTheory.Idempotents.Karoubi.coe.proof_1.{u1, u2} C _inst_1 (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 P))) P Q (CategoryTheory.Idempotents.Karoubi.decompId_p.{u2, u1} C _inst_1 P) f) (CategoryTheory.CategoryStruct.comp.{u1, max u2 u1} (CategoryTheory.Idempotents.Karoubi.{u2, u1} C _inst_1) (CategoryTheory.Category.toCategoryStruct.{u1, max u2 u1} (CategoryTheory.Idempotents.Karoubi.{u2, u1} C _inst_1) (CategoryTheory.Idempotents.Karoubi.instCategoryKaroubi.{u2, u1} C _inst_1)) (CategoryTheory.Idempotents.Karoubi.mk.{u2, u1} C _inst_1 (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 P) (CategoryTheory.CategoryStruct.id.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 P)) (CategoryTheory.Idempotents.Karoubi.coe.proof_1.{u1, u2} C _inst_1 (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 P))) (CategoryTheory.Idempotents.Karoubi.mk.{u2, u1} C _inst_1 (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 Q) (CategoryTheory.CategoryStruct.id.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 Q)) (CategoryTheory.Idempotents.Karoubi.coe.proof_1.{u1, u2} C _inst_1 (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 Q))) Q (CategoryTheory.Idempotents.Karoubi.Hom.mk.{u2, u1} C _inst_1 (CategoryTheory.Idempotents.Karoubi.mk.{u2, u1} C _inst_1 (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 P) (CategoryTheory.CategoryStruct.id.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 P)) (CategoryTheory.Idempotents.Karoubi.coe.proof_1.{u1, u2} C _inst_1 (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 P))) (CategoryTheory.Idempotents.Karoubi.mk.{u2, u1} C _inst_1 (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 Q) (CategoryTheory.CategoryStruct.id.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 Q)) (CategoryTheory.Idempotents.Karoubi.coe.proof_1.{u1, u2} C _inst_1 (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 Q))) (CategoryTheory.Idempotents.Karoubi.Hom.f.{u2, u1} C _inst_1 P Q f) (of_eq_true (Eq.{succ u1} (Quiver.Hom.{succ u1, u2} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1)) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 Q)) (CategoryTheory.Idempotents.Karoubi.Hom.f.{u2, u1} C _inst_1 P Q f) (CategoryTheory.CategoryStruct.comp.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 Q) (CategoryTheory.CategoryStruct.id.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 P)) (CategoryTheory.CategoryStruct.comp.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 Q) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 Q) (CategoryTheory.Idempotents.Karoubi.Hom.f.{u2, u1} C _inst_1 P Q f) (CategoryTheory.CategoryStruct.id.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 Q))))) (Eq.trans.{1} Prop (Eq.{succ u1} (Quiver.Hom.{succ u1, u2} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1)) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 Q)) (CategoryTheory.Idempotents.Karoubi.Hom.f.{u2, u1} C _inst_1 P Q f) (CategoryTheory.CategoryStruct.comp.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 Q) (CategoryTheory.CategoryStruct.id.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 P)) (CategoryTheory.CategoryStruct.comp.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 Q) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 Q) (CategoryTheory.Idempotents.Karoubi.Hom.f.{u2, u1} C _inst_1 P Q f) (CategoryTheory.CategoryStruct.id.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 Q))))) (Eq.{succ u1} (Quiver.Hom.{succ u1, u2} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1)) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 Q)) (CategoryTheory.Idempotents.Karoubi.Hom.f.{u2, u1} C _inst_1 P Q f) (CategoryTheory.Idempotents.Karoubi.Hom.f.{u2, u1} C _inst_1 P Q f)) True (congrArg.{succ u1, 1} (Quiver.Hom.{succ u1, u2} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1)) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 Q)) Prop (CategoryTheory.CategoryStruct.comp.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 Q) (CategoryTheory.CategoryStruct.id.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 P)) (CategoryTheory.CategoryStruct.comp.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 Q) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 Q) (CategoryTheory.Idempotents.Karoubi.Hom.f.{u2, u1} C _inst_1 P Q f) (CategoryTheory.CategoryStruct.id.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 Q)))) (CategoryTheory.Idempotents.Karoubi.Hom.f.{u2, u1} C _inst_1 P Q f) (Eq.{succ u1} (Quiver.Hom.{succ u1, u2} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1)) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 Q)) (CategoryTheory.Idempotents.Karoubi.Hom.f.{u2, u1} C _inst_1 P Q f)) (Eq.trans.{succ u1} (Quiver.Hom.{succ u1, u2} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1)) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 Q)) (CategoryTheory.CategoryStruct.comp.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 Q) (CategoryTheory.CategoryStruct.id.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 P)) (CategoryTheory.CategoryStruct.comp.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 Q) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 Q) (CategoryTheory.Idempotents.Karoubi.Hom.f.{u2, u1} C _inst_1 P Q f) (CategoryTheory.CategoryStruct.id.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 Q)))) (CategoryTheory.CategoryStruct.comp.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 Q) (CategoryTheory.CategoryStruct.id.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 P)) (CategoryTheory.Idempotents.Karoubi.Hom.f.{u2, u1} C _inst_1 P Q f)) (CategoryTheory.Idempotents.Karoubi.Hom.f.{u2, u1} C _inst_1 P Q f) (congrArg.{succ u1, succ u1} (Quiver.Hom.{succ u1, u2} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1)) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 Q)) (Quiver.Hom.{succ u1, u2} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1)) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 Q)) (CategoryTheory.CategoryStruct.comp.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 Q) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 Q) (CategoryTheory.Idempotents.Karoubi.Hom.f.{u2, u1} C _inst_1 P Q f) (CategoryTheory.CategoryStruct.id.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 Q))) (CategoryTheory.Idempotents.Karoubi.Hom.f.{u2, u1} C _inst_1 P Q f) (CategoryTheory.CategoryStruct.comp.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 Q) (CategoryTheory.CategoryStruct.id.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 P))) (CategoryTheory.Category.comp_id.{u1, u2} C _inst_1 (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 Q) (CategoryTheory.Idempotents.Karoubi.Hom.f.{u2, u1} C _inst_1 P Q f))) (CategoryTheory.Category.id_comp.{u1, u2} C _inst_1 (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 Q) (CategoryTheory.Idempotents.Karoubi.Hom.f.{u2, u1} C _inst_1 P Q f)))) (eq_self.{succ u1} (Quiver.Hom.{succ u1, u2} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1)) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.X.{u2, u1} C _inst_1 Q)) (CategoryTheory.Idempotents.Karoubi.Hom.f.{u2, u1} C _inst_1 P Q f))))) (CategoryTheory.Idempotents.Karoubi.decompId_p.{u2, u1} C _inst_1 Q))
+Case conversion may be inaccurate. Consider using '#align category_theory.idempotents.karoubi.decomp_id_p_naturality CategoryTheory.Idempotents.Karoubi.decompId_p_naturalityₓ'. -/
+theorem decompId_p_naturality {P Q : Karoubi C} (f : P ⟶ Q) :
+ decompId_p P ≫ f =
+ (⟨f.f, by erw [comp_id, id_comp]⟩ : (P.pt : Karoubi C) ⟶ Q.pt) ≫ decompId_p Q :=
by
ext
simp only [comp_f, decomp_id_p_f, karoubi.comp_p, karoubi.p_comp]
-#align category_theory.idempotents.karoubi.decomp_id_p_naturality CategoryTheory.Idempotents.Karoubi.decompIdP_naturality
-
+#align category_theory.idempotents.karoubi.decomp_id_p_naturality CategoryTheory.Idempotents.Karoubi.decompId_p_naturality
+
+/- warning: category_theory.idempotents.karoubi.zsmul_hom -> CategoryTheory.Idempotents.Karoubi.zsmul_hom is a dubious translation:
+lean 3 declaration is
+ forall {C : Type.{u1}} [_inst_1 : CategoryTheory.Category.{u2, u1} C] [_inst_2 : CategoryTheory.Preadditive.{u2, u1} C _inst_1] {P : CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1} {Q : CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1} (n : Int) (f : Quiver.Hom.{succ u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.CategoryStruct.toQuiver.{u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Category.toCategoryStruct.{u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.CategoryTheory.category.{u1, u2} C _inst_1))) P Q), Eq.{succ u2} (Quiver.Hom.{succ u2, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1)) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 Q)) (CategoryTheory.Idempotents.Karoubi.Hom.f.{u1, u2} C _inst_1 P Q (SMul.smul.{0, u2} Int (Quiver.Hom.{succ u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.CategoryStruct.toQuiver.{u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Category.toCategoryStruct.{u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.CategoryTheory.category.{u1, u2} C _inst_1))) P Q) (SubNegMonoid.SMulInt.{u2} (Quiver.Hom.{succ u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.CategoryStruct.toQuiver.{u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Category.toCategoryStruct.{u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.CategoryTheory.category.{u1, u2} C _inst_1))) P Q) (AddGroup.toSubNegMonoid.{u2} (Quiver.Hom.{succ u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.CategoryStruct.toQuiver.{u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Category.toCategoryStruct.{u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.CategoryTheory.category.{u1, u2} C _inst_1))) P Q) (AddCommGroup.toAddGroup.{u2} (Quiver.Hom.{succ u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.CategoryStruct.toQuiver.{u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Category.toCategoryStruct.{u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.CategoryTheory.category.{u1, u2} C _inst_1))) P Q) (CategoryTheory.Idempotents.Quiver.Hom.addCommGroup.{u1, u2} C _inst_1 _inst_2 P Q)))) n f)) (SMul.smul.{0, u2} Int (Quiver.Hom.{succ u2, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1)) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 Q)) (SubNegMonoid.SMulInt.{u2} (Quiver.Hom.{succ u2, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1)) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 Q)) (AddGroup.toSubNegMonoid.{u2} (Quiver.Hom.{succ u2, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1)) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 Q)) (AddCommGroup.toAddGroup.{u2} (Quiver.Hom.{succ u2, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1)) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 Q)) (CategoryTheory.Preadditive.homGroup.{u2, u1} C _inst_1 _inst_2 (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.x.{u1, u2} C _inst_1 Q))))) n (CategoryTheory.Idempotents.Karoubi.Hom.f.{u1, u2} C _inst_1 P Q f))
+but is expected to have type
+ forall {C : Type.{u1}} [_inst_1 : CategoryTheory.Category.{u2, u1} C] [_inst_2 : CategoryTheory.Preadditive.{u2, u1} C _inst_1] {P : CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1} {Q : CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1} (n : Int) (f : Quiver.Hom.{succ u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.CategoryStruct.toQuiver.{u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Category.toCategoryStruct.{u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.instCategoryKaroubi.{u1, u2} C _inst_1))) P Q), Eq.{succ u2} (Quiver.Hom.{succ u2, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1)) (CategoryTheory.Idempotents.Karoubi.X.{u1, u2} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.X.{u1, u2} C _inst_1 Q)) (CategoryTheory.Idempotents.Karoubi.Hom.f.{u1, u2} C _inst_1 P Q (HSMul.hSMul.{0, u2, u2} Int (Quiver.Hom.{succ u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.CategoryStruct.toQuiver.{u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Category.toCategoryStruct.{u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.instCategoryKaroubi.{u1, u2} C _inst_1))) P Q) (Quiver.Hom.{succ u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.CategoryStruct.toQuiver.{u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Category.toCategoryStruct.{u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.instCategoryKaroubi.{u1, u2} C _inst_1))) P Q) (instHSMul.{0, u2} Int (Quiver.Hom.{succ u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.CategoryStruct.toQuiver.{u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Category.toCategoryStruct.{u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.instCategoryKaroubi.{u1, u2} C _inst_1))) P Q) (SubNegMonoid.SMulInt.{u2} (Quiver.Hom.{succ u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.CategoryStruct.toQuiver.{u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Category.toCategoryStruct.{u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.instCategoryKaroubi.{u1, u2} C _inst_1))) P Q) (AddGroup.toSubNegMonoid.{u2} (Quiver.Hom.{succ u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.CategoryStruct.toQuiver.{u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Category.toCategoryStruct.{u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.instCategoryKaroubi.{u1, u2} C _inst_1))) P Q) (AddCommGroup.toAddGroup.{u2} (Quiver.Hom.{succ u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.CategoryStruct.toQuiver.{u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Category.toCategoryStruct.{u2, max u1 u2} (CategoryTheory.Idempotents.Karoubi.{u1, u2} C _inst_1) (CategoryTheory.Idempotents.Karoubi.instCategoryKaroubi.{u1, u2} C _inst_1))) P Q) (CategoryTheory.Idempotents.instAddCommGroupHomKaroubiToQuiverToCategoryStructInstCategoryKaroubi.{u1, u2} C _inst_1 _inst_2 P Q))))) n f)) (HSMul.hSMul.{0, u2, u2} Int (Quiver.Hom.{succ u2, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1)) (CategoryTheory.Idempotents.Karoubi.X.{u1, u2} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.X.{u1, u2} C _inst_1 Q)) (Quiver.Hom.{succ u2, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1)) (CategoryTheory.Idempotents.Karoubi.X.{u1, u2} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.X.{u1, u2} C _inst_1 Q)) (instHSMul.{0, u2} Int (Quiver.Hom.{succ u2, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1)) (CategoryTheory.Idempotents.Karoubi.X.{u1, u2} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.X.{u1, u2} C _inst_1 Q)) (SubNegMonoid.SMulInt.{u2} (Quiver.Hom.{succ u2, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1)) (CategoryTheory.Idempotents.Karoubi.X.{u1, u2} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.X.{u1, u2} C _inst_1 Q)) (AddGroup.toSubNegMonoid.{u2} (Quiver.Hom.{succ u2, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1)) (CategoryTheory.Idempotents.Karoubi.X.{u1, u2} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.X.{u1, u2} C _inst_1 Q)) (AddCommGroup.toAddGroup.{u2} (Quiver.Hom.{succ u2, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1)) (CategoryTheory.Idempotents.Karoubi.X.{u1, u2} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.X.{u1, u2} C _inst_1 Q)) (CategoryTheory.Preadditive.homGroup.{u2, u1} C _inst_1 _inst_2 (CategoryTheory.Idempotents.Karoubi.X.{u1, u2} C _inst_1 P) (CategoryTheory.Idempotents.Karoubi.X.{u1, u2} C _inst_1 Q)))))) n (CategoryTheory.Idempotents.Karoubi.Hom.f.{u1, u2} C _inst_1 P Q f))
+Case conversion may be inaccurate. Consider using '#align category_theory.idempotents.karoubi.zsmul_hom CategoryTheory.Idempotents.Karoubi.zsmul_homₓ'. -/
@[simp]
theorem zsmul_hom [Preadditive C] {P Q : Karoubi C} (n : ℤ) (f : P ⟶ Q) : (n • f).f = n • f.f :=
map_zsmul (inclusionHom P Q) n f
mathlib commit https://github.com/leanprover-community/mathlib/commit/b685f506164f8d17a6404048bc4d696739c5d976
@@ -4,7 +4,7 @@ Released under Apache 2.0 license as described in the file LICENSE.
Authors: Joël Riou
! This file was ported from Lean 3 source module category_theory.idempotents.karoubi
-! leanprover-community/mathlib commit 88bca0ce5d22ebfd9e73e682e51d60ea13b48347
+! leanprover-community/mathlib commit 200eda15d8ff5669854ff6bcc10aaf37cb70498f
! Please do not edit these lines, except to modify the commit id
! if you have ported upstream changes.
-/
@@ -246,6 +246,17 @@ def toKaroubiIsEquivalence [IsIdempotentComplete C] : IsEquivalence (toKaroubi C
Equivalence.ofFullyFaithfullyEssSurj (toKaroubi C)
#align category_theory.idempotents.to_karoubi_is_equivalence CategoryTheory.Idempotents.toKaroubiIsEquivalence
+/-- The equivalence `C ≅ karoubi C` when `C` is idempotent complete. -/
+def toKaroubiEquivalence [IsIdempotentComplete C] : C ≌ Karoubi C :=
+ haveI := to_karoubi_is_equivalence C
+ functor.as_equivalence (to_karoubi C)
+#align category_theory.idempotents.to_karoubi_equivalence CategoryTheory.Idempotents.toKaroubiEquivalence
+
+instance toKaroubiEquivalence_functor_additive [Preadditive C] [IsIdempotentComplete C] :
+ (toKaroubiEquivalence C).Functor.Additive :=
+ (inferInstance : (toKaroubi C).Additive)
+#align category_theory.idempotents.to_karoubi_equivalence_functor_additive CategoryTheory.Idempotents.toKaroubiEquivalence_functor_additive
+
namespace Karoubi
variable {C}
mathlib commit https://github.com/leanprover-community/mathlib/commit/9da1b3534b65d9661eb8f42443598a92bbb49211
@@ -51,7 +51,7 @@ one may define a formal direct factor of an object `X : C` : it consists of an i
type of the objects of the karoubi enveloppe of `C`. It makes sense for any category `C`. -/
@[nolint has_nonempty_instance]
structure Karoubi where
- x : C
+ pt : C
p : X ⟶ X
idem : p ≫ p = p
#align category_theory.idempotents.karoubi CategoryTheory.Idempotents.Karoubi
@@ -63,7 +63,7 @@ variable {C}
attribute [simp, reassoc.1] idem
@[ext]
-theorem ext {P Q : Karoubi C} (h_X : P.x = Q.x) (h_p : P.p ≫ eqToHom h_X = eqToHom h_X ≫ Q.p) :
+theorem ext {P Q : Karoubi C} (h_X : P.pt = Q.pt) (h_p : P.p ≫ eqToHom h_X = eqToHom h_X ≫ Q.p) :
P = Q := by
cases P
cases Q
@@ -79,7 +79,7 @@ map between the corresponding "formal direct factors" and that it vanishes on th
formal direct factor. -/
@[ext]
structure Hom (P Q : Karoubi C) where
- f : P.x ⟶ Q.x
+ f : P.pt ⟶ Q.pt
comm : f = P.p ≫ f ≫ Q.p
#align category_theory.idempotents.karoubi.hom CategoryTheory.Idempotents.Karoubi.Hom
@@ -132,7 +132,7 @@ instance coe : CoeTC C (Karoubi C) :=
#align category_theory.idempotents.karoubi.coe CategoryTheory.Idempotents.Karoubi.coe
@[simp]
-theorem coe_x (X : C) : (X : Karoubi C).x = X := by rfl
+theorem coe_x (X : C) : (X : Karoubi C).pt = X := by rfl
#align category_theory.idempotents.karoubi.coe_X CategoryTheory.Idempotents.Karoubi.coe_x
@[simp]
@@ -196,7 +196,7 @@ theorem hom_eq_zero_iff [Preadditive C] {P Q : Karoubi C} {f : Hom P Q} : f = 0
/-- The map sending `f : P ⟶ Q` to `f.f : P.X ⟶ Q.X` is additive. -/
@[simps]
-def inclusionHom [Preadditive C] (P Q : Karoubi C) : AddMonoidHom (P ⟶ Q) (P.x ⟶ Q.x)
+def inclusionHom [Preadditive C] (P Q : Karoubi C) : AddMonoidHom (P ⟶ Q) (P.pt ⟶ Q.pt)
where
toFun f := f.f
map_zero' := rfl
@@ -252,13 +252,13 @@ variable {C}
/-- The split mono which appears in the factorisation `decomp_id P`. -/
@[simps]
-def decompIdI (P : Karoubi C) : P ⟶ P.x :=
+def decompIdI (P : Karoubi C) : P ⟶ P.pt :=
⟨P.p, by erw [coe_p, comp_id, P.idem]⟩
#align category_theory.idempotents.karoubi.decomp_id_i CategoryTheory.Idempotents.Karoubi.decompIdI
/-- The split epi which appears in the factorisation `decomp_id P`. -/
@[simps]
-def decompIdP (P : Karoubi C) : (P.x : Karoubi C) ⟶ P :=
+def decompIdP (P : Karoubi C) : (P.pt : Karoubi C) ⟶ P :=
⟨P.p, by erw [coe_p, id_comp, P.idem]⟩
#align category_theory.idempotents.karoubi.decomp_id_p CategoryTheory.Idempotents.Karoubi.decompIdP
@@ -296,7 +296,8 @@ theorem decompIdI_naturality {P Q : Karoubi C} (f : P ⟶ Q) :
#align category_theory.idempotents.karoubi.decomp_id_i_naturality CategoryTheory.Idempotents.Karoubi.decompIdI_naturality
theorem decompIdP_naturality {P Q : Karoubi C} (f : P ⟶ Q) :
- decompIdP P ≫ f = (⟨f.f, by erw [comp_id, id_comp]⟩ : (P.x : Karoubi C) ⟶ Q.x) ≫ decompIdP Q :=
+ decompIdP P ≫ f =
+ (⟨f.f, by erw [comp_id, id_comp]⟩ : (P.pt : Karoubi C) ⟶ Q.pt) ≫ decompIdP Q :=
by
ext
simp only [comp_f, decomp_id_p_f, karoubi.comp_p, karoubi.p_comp]
mathlib commit https://github.com/leanprover-community/mathlib/commit/bd9851ca476957ea4549eb19b40e7b5ade9428cc
Functor.Full
a Prop (#12449)
Before this PR, Functor.Full
contained the data of the preimage of maps by a full functor F
. This PR makes Functor.Full
a proposition. This is to prevent any diamond to appear.
The lemma Functor.image_preimage
is also renamed Functor.map_preimage
.
Co-authored-by: Joël Riou <37772949+joelriou@users.noreply.github.com>
@@ -157,7 +157,7 @@ def toKaroubi : C ⥤ Karoubi C where
map f := ⟨f, by simp only [comp_id, id_comp]⟩
#align category_theory.idempotents.to_karoubi CategoryTheory.Idempotents.toKaroubi
-instance : (toKaroubi C).Full where preimage f := f.f
+instance : (toKaroubi C).Full where map_surjective f := ⟨f.f, rfl⟩
instance : (toKaroubi C).Faithful where
map_injective := fun h => congr_arg Karoubi.Hom.f h
@@ -34,7 +34,7 @@ variable (C : Type*) [Category C]
namespace Idempotents
--- porting note (#10927): removed @[nolint has_nonempty_instance]
+-- porting note (#5171): removed @[nolint has_nonempty_instance]
/-- In a preadditive category `C`, when an object `X` decomposes as `X ≅ P ⨿ Q`, one may
consider `P` as a direct factor of `X` and up to unique isomorphism, it is determined by the
obvious idempotent `X ⟶ P ⟶ X` which is the projection onto `P` with kernel `Q`. More generally,
These notions on functors are now Functor.Full
, Functor.Faithful
, Functor.EssSurj
, Functor.IsEquivalence
, Functor.ReflectsIsomorphisms
. Deprecated aliases are introduced for the previous names.
@@ -157,9 +157,9 @@ def toKaroubi : C ⥤ Karoubi C where
map f := ⟨f, by simp only [comp_id, id_comp]⟩
#align category_theory.idempotents.to_karoubi CategoryTheory.Idempotents.toKaroubi
-instance : Full (toKaroubi C) where preimage f := f.f
+instance : (toKaroubi C).Full where preimage f := f.f
-instance : Faithful (toKaroubi C) where
+instance : (toKaroubi C).Faithful where
map_injective := fun h => congr_arg Karoubi.Hom.f h
variable {C}
@@ -236,7 +236,7 @@ instance : IsIdempotentComplete (Karoubi C) := by
use ⟨p.f, by rw [hp, p_comp p]⟩
simp [hp]
-instance [IsIdempotentComplete C] : EssSurj (toKaroubi C) :=
+instance [IsIdempotentComplete C] : (toKaroubi C).EssSurj :=
⟨fun P => by
rcases IsIdempotentComplete.idempotents_split P.X P.p P.idem with ⟨Y, i, e, ⟨h₁, h₂⟩⟩
use Y
@@ -246,8 +246,8 @@ instance [IsIdempotentComplete C] : EssSurj (toKaroubi C) :=
inv := ⟨e, by erw [comp_id, ← h₂, assoc, h₁, comp_id]⟩ }⟩
/-- If `C` is idempotent complete, the functor `toKaroubi : C ⥤ Karoubi C` is an equivalence. -/
-def toKaroubiIsEquivalence [IsIdempotentComplete C] : IsEquivalence (toKaroubi C) :=
- Equivalence.ofFullyFaithfullyEssSurj (toKaroubi C)
+def toKaroubiIsEquivalence [IsIdempotentComplete C] : (toKaroubi C).IsEquivalence :=
+ Functor.IsEquivalence.ofFullyFaithfullyEssSurj (toKaroubi C)
#align category_theory.idempotents.to_karoubi_is_equivalence CategoryTheory.Idempotents.toKaroubiIsEquivalence
/-- The equivalence `C ≅ Karoubi C` when `C` is idempotent complete. -/
nsmul
and zsmul
to default automatically (#6262)
This PR removes the default values for nsmul
and zsmul
, forcing the user to populate them manually.
The previous behavior can be obtained by writing nsmul := nsmulRec
and zsmul := zsmulRec
, which is now in the docstring for these fields.
The motivation here is to make it more obvious when module diamonds are being introduced, or at least where they might be hiding; you can now simply search for nsmulRec
in the source code.
Arguably we should do the same thing for intCast
, natCast
, pow
, and zpow
too, but diamonds are less common in those fields, so I'll leave them to a subsequent PR.
Co-authored-by: Matthew Ballard <matt@mrb.email>
@@ -164,11 +164,19 @@ instance : Faithful (toKaroubi C) where
variable {C}
-@[simps add zero neg]
-instance instAddCommGroupHom [Preadditive C] {P Q : Karoubi C} : AddCommGroup (P ⟶ Q) where
- add f g :=
- ⟨f.f + g.f, by rw [add_comp, comp_add, ← f.comm, ← g.comm]⟩
+@[simps add]
+instance instAdd [Preadditive C] {P Q : Karoubi C} : Add (P ⟶ Q) where
+ add f g := ⟨f.f + g.f, by rw [add_comp, comp_add, ← f.comm, ← g.comm]⟩
+
+@[simps neg]
+instance instNeg [Preadditive C] {P Q : Karoubi C} : Neg (P ⟶ Q) where
+ neg f := ⟨-f.f, by simpa only [neg_comp, comp_neg, neg_inj] using f.comm⟩
+
+@[simps zero]
+instance instZero [Preadditive C] {P Q : Karoubi C} : Zero (P ⟶ Q) where
zero := ⟨0, by simp only [comp_zero, zero_comp]⟩
+
+instance instAddCommGroupHom [Preadditive C] {P Q : Karoubi C} : AddCommGroup (P ⟶ Q) where
zero_add f := by
ext
apply zero_add
@@ -181,10 +189,11 @@ instance instAddCommGroupHom [Preadditive C] {P Q : Karoubi C} : AddCommGroup (P
add_comm f g := by
ext
apply add_comm
- neg f := ⟨-f.f, by simpa only [neg_comp, comp_neg, neg_inj] using f.comm⟩
add_left_neg f := by
ext
apply add_left_neg
+ zsmul := zsmulRec
+ nsmul := nsmulRec
namespace Karoubi
Homogenises porting notes via capitalisation and addition of whitespace.
It makes the following changes:
@@ -112,7 +112,7 @@ theorem hom_ext_iff {P Q : Karoubi C} {f g : P ⟶ Q} : f = g ↔ f.f = g.f := b
· apply Hom.ext
#align category_theory.idempotents.karoubi.hom_ext CategoryTheory.Idempotents.Karoubi.hom_ext_iff
--- porting note: added because `Hom.ext` is not triggered automatically
+-- Porting note: added because `Hom.ext` is not triggered automatically
@[ext]
theorem hom_ext {P Q : Karoubi C} (f g : P ⟶ Q) (h : f.f = g.f) : f = g := by
simpa [hom_ext_iff] using h
@@ -131,7 +131,7 @@ instance coe : CoeTC C (Karoubi C) :=
⟨fun X => ⟨X, 𝟙 X, by rw [comp_id]⟩⟩
#align category_theory.idempotents.karoubi.coe CategoryTheory.Idempotents.Karoubi.coe
--- porting note: removed @[simp] as the linter complains
+-- Porting note: removed @[simp] as the linter complains
theorem coe_X (X : C) : (X : Karoubi C).X = X := rfl
set_option linter.uppercaseLean3 false in
#align category_theory.idempotents.karoubi.coe_X CategoryTheory.Idempotents.Karoubi.coe_X
@@ -34,7 +34,7 @@ variable (C : Type*) [Category C]
namespace Idempotents
--- porting note: removed @[nolint has_nonempty_instance]
+-- porting note (#10927): removed @[nolint has_nonempty_instance]
/-- In a preadditive category `C`, when an object `X` decomposes as `X ≅ P ⨿ Q`, one may
consider `P` as a direct factor of `X` and up to unique isomorphism, it is determined by the
obvious idempotent `X ⟶ P ⟶ X` which is the projection onto `P` with kernel `Q`. More generally,
@@ -118,11 +118,11 @@ theorem hom_ext {P Q : Karoubi C} (f g : P ⟶ Q) (h : f.f = g.f) : f = g := by
simpa [hom_ext_iff] using h
@[simp]
-theorem comp_f {P Q R : Karoubi C} (f : P ⟶ Q) (g : Q ⟶ R) : (f ≫ g).f = f.f ≫ g.f := by rfl
+theorem comp_f {P Q R : Karoubi C} (f : P ⟶ Q) (g : Q ⟶ R) : (f ≫ g).f = f.f ≫ g.f := rfl
#align category_theory.idempotents.karoubi.comp_f CategoryTheory.Idempotents.Karoubi.comp_f
@[simp]
-theorem id_eq {P : Karoubi C} : 𝟙 P = ⟨P.p, by repeat' rw [P.idem]⟩ := by rfl
+theorem id_eq {P : Karoubi C} : 𝟙 P = ⟨P.p, by repeat' rw [P.idem]⟩ := rfl
#align category_theory.idempotents.karoubi.id_eq CategoryTheory.Idempotents.Karoubi.id_eq
/-- It is possible to coerce an object of `C` into an object of `Karoubi C`.
@@ -132,12 +132,12 @@ instance coe : CoeTC C (Karoubi C) :=
#align category_theory.idempotents.karoubi.coe CategoryTheory.Idempotents.Karoubi.coe
-- porting note: removed @[simp] as the linter complains
-theorem coe_X (X : C) : (X : Karoubi C).X = X := by rfl
+theorem coe_X (X : C) : (X : Karoubi C).X = X := rfl
set_option linter.uppercaseLean3 false in
#align category_theory.idempotents.karoubi.coe_X CategoryTheory.Idempotents.Karoubi.coe_X
@[simp]
-theorem coe_p (X : C) : (X : Karoubi C).p = 𝟙 X := by rfl
+theorem coe_p (X : C) : (X : Karoubi C).p = 𝟙 X := rfl
#align category_theory.idempotents.karoubi.coe_p CategoryTheory.Idempotents.Karoubi.coe_p
@[simp]
In this PR (which is a forward port of https://github.com/leanprover-community/mathlib/pull/17926), the Dold-Kan equivalence between simplicial objects and chain complexes in abelian categories is constructed.
Co-authored-by: Joël Riou <37772949+joelriou@users.noreply.github.com>
@@ -19,7 +19,7 @@ In this file, we define the Karoubi envelope `Karoubi C` of a category `C`.
- `Karoubi C` is the Karoubi envelope of a category `C`: it is an idempotent
complete category. It is also preadditive when `C` is preadditive.
- `toKaroubi C : C ⥤ Karoubi C` is a fully faithful functor, which is an equivalence
-(`toKaroubi_isEquivalence`) when `C` is idempotent complete.
+(`toKaroubiIsEquivalence`) when `C` is idempotent complete.
-/
@@ -237,20 +237,20 @@ instance [IsIdempotentComplete C] : EssSurj (toKaroubi C) :=
inv := ⟨e, by erw [comp_id, ← h₂, assoc, h₁, comp_id]⟩ }⟩
/-- If `C` is idempotent complete, the functor `toKaroubi : C ⥤ Karoubi C` is an equivalence. -/
-def toKaroubi_isEquivalence [IsIdempotentComplete C] : IsEquivalence (toKaroubi C) :=
+def toKaroubiIsEquivalence [IsIdempotentComplete C] : IsEquivalence (toKaroubi C) :=
Equivalence.ofFullyFaithfullyEssSurj (toKaroubi C)
-#align category_theory.idempotents.to_karoubi_is_equivalence CategoryTheory.Idempotents.toKaroubi_isEquivalence
+#align category_theory.idempotents.to_karoubi_is_equivalence CategoryTheory.Idempotents.toKaroubiIsEquivalence
/-- The equivalence `C ≅ Karoubi C` when `C` is idempotent complete. -/
-def toKaroubi_equivalence [IsIdempotentComplete C] : C ≌ Karoubi C :=
- haveI := toKaroubi_isEquivalence C
+def toKaroubiEquivalence [IsIdempotentComplete C] : C ≌ Karoubi C :=
+ haveI := toKaroubiIsEquivalence C
Functor.asEquivalence (toKaroubi C)
-#align category_theory.idempotents.to_karoubi_equivalence CategoryTheory.Idempotents.toKaroubi_equivalence
+#align category_theory.idempotents.to_karoubi_equivalence CategoryTheory.Idempotents.toKaroubiEquivalence
-instance toKaroubi_equivalence_functor_additive [Preadditive C] [IsIdempotentComplete C] :
- (toKaroubi_equivalence C).functor.Additive :=
+instance toKaroubiEquivalence_functor_additive [Preadditive C] [IsIdempotentComplete C] :
+ (toKaroubiEquivalence C).functor.Additive :=
(inferInstance : (toKaroubi C).Additive)
-#align category_theory.idempotents.to_karoubi_equivalence_functor_additive CategoryTheory.Idempotents.toKaroubi_equivalence_functor_additive
+#align category_theory.idempotents.to_karoubi_equivalence_functor_additive CategoryTheory.Idempotents.toKaroubiEquivalence_functor_additive
namespace Karoubi
Type _
and Sort _
(#6499)
We remove all possible occurences of Type _
and Sort _
in favor of Type*
and Sort*
.
This has nice performance benefits.
@@ -30,7 +30,7 @@ open CategoryTheory.Category CategoryTheory.Preadditive CategoryTheory.Limits Bi
namespace CategoryTheory
-variable (C : Type _) [Category C]
+variable (C : Type*) [Category C]
namespace Idempotents
@@ -201,7 +201,7 @@ def inclusionHom [Preadditive C] (P Q : Karoubi C) : AddMonoidHom (P ⟶ Q) (P.X
#align category_theory.idempotents.karoubi.inclusion_hom CategoryTheory.Idempotents.Karoubi.inclusionHom
@[simp]
-theorem sum_hom [Preadditive C] {P Q : Karoubi C} {α : Type _} (s : Finset α) (f : α → (P ⟶ Q)) :
+theorem sum_hom [Preadditive C] {P Q : Karoubi C} {α : Type*} (s : Finset α) (f : α → (P ⟶ Q)) :
(∑ x in s, f x).f = ∑ x in s, (f x).f :=
map_sum (inclusionHom P Q) f s
#align category_theory.idempotents.karoubi.sum_hom CategoryTheory.Idempotents.Karoubi.sum_hom
@@ -2,16 +2,13 @@
Copyright (c) 2022 Joël Riou. All rights reserved.
Released under Apache 2.0 license as described in the file LICENSE.
Authors: Joël Riou
-
-! This file was ported from Lean 3 source module category_theory.idempotents.karoubi
-! leanprover-community/mathlib commit 200eda15d8ff5669854ff6bcc10aaf37cb70498f
-! Please do not edit these lines, except to modify the commit id
-! if you have ported upstream changes.
-/
import Mathlib.CategoryTheory.Idempotents.Basic
import Mathlib.CategoryTheory.Preadditive.AdditiveFunctor
import Mathlib.CategoryTheory.Equivalence
+#align_import category_theory.idempotents.karoubi from "leanprover-community/mathlib"@"200eda15d8ff5669854ff6bcc10aaf37cb70498f"
+
/-!
# The Karoubi envelope of a category
@@ -50,7 +50,7 @@ structure Karoubi where
/-- an endomorphism of the object -/
p : X ⟶ X
/-- the condition that the given endomorphism is an idempotent -/
- idem : p ≫ p = p
+ idem : p ≫ p = p := by aesop_cat
#align category_theory.idempotents.karoubi CategoryTheory.Idempotents.Karoubi
namespace Karoubi
@@ -78,7 +78,7 @@ structure Hom (P Q : Karoubi C) where
/-- a morphism between the underlying objects -/
f : P.X ⟶ Q.X
/-- compatibility of the given morphism with the given idempotents -/
- comm : f = P.p ≫ f ≫ Q.p
+ comm : f = P.p ≫ f ≫ Q.p := by aesop_cat
#align category_theory.idempotents.karoubi.hom CategoryTheory.Idempotents.Karoubi.Hom
instance [Preadditive C] (P Q : Karoubi C) : Inhabited (Hom P Q) :=
@@ -93,7 +93,6 @@ theorem comp_p {P Q : Karoubi C} (f : Hom P Q) : f.f ≫ Q.p = f.f := by
rw [f.comm, assoc, assoc, Q.idem]
#align category_theory.idempotents.karoubi.comp_p CategoryTheory.Idempotents.Karoubi.comp_p
-
@[reassoc]
theorem p_comm {P Q : Karoubi C} (f : Hom P Q) : P.p ≫ f.f = f.f ≫ Q.p := by rw [p_comp, comp_p]
#align category_theory.idempotents.karoubi.p_comm CategoryTheory.Idempotents.Karoubi.p_comm
@@ -215,16 +214,6 @@ end Karoubi
/-- The category `Karoubi C` is preadditive if `C` is. -/
instance [Preadditive C] : Preadditive (Karoubi C) where
homGroup P Q := by infer_instance
- add_comp := by
- intros
- ext
- dsimp
- simp
- comp_add := by
- intros
- ext
- dsimp
- simp
instance [Preadditive C] : Functor.Additive (toKaroubi C) where
I ran codespell Mathlib
and got tired halfway through the suggestions.
@@ -43,7 +43,7 @@ consider `P` as a direct factor of `X` and up to unique isomorphism, it is deter
obvious idempotent `X ⟶ P ⟶ X` which is the projection onto `P` with kernel `Q`. More generally,
one may define a formal direct factor of an object `X : C` : it consists of an idempotent
`p : X ⟶ X` which is thought as the "formal image" of `p`. The type `Karoubi C` shall be the
-type of the objects of the karoubi enveloppe of `C`. It makes sense for any category `C`. -/
+type of the objects of the karoubi envelope of `C`. It makes sense for any category `C`. -/
structure Karoubi where
/-- an object of the underlying category -/
X : C
@@ -169,7 +169,7 @@ instance : Faithful (toKaroubi C) where
variable {C}
@[simps add zero neg]
-instance [Preadditive C] {P Q : Karoubi C} : AddCommGroup (P ⟶ Q) where
+instance instAddCommGroupHom [Preadditive C] {P Q : Karoubi C} : AddCommGroup (P ⟶ Q) where
add f g :=
⟨f.f + g.f, by rw [add_comp, comp_add, ← f.comm, ← g.comm]⟩
zero := ⟨0, by simp only [comp_zero, zero_comp]⟩
@@ -284,6 +284,7 @@ def decompId_p (P : Karoubi C) : (P.X : Karoubi C) ⟶ P :=
/-- The formal direct factor of `P.X` given by the idempotent `P.p` in the category `C`
is actually a direct factor in the category `Karoubi C`. -/
+@[reassoc]
theorem decompId (P : Karoubi C) : 𝟙 P = decompId_i P ≫ decompId_p P := by
ext
simp only [comp_f, id_eq, P.idem, decompId_i, decompId_p]
@@ -21,7 +21,7 @@ In this file, we define the Karoubi envelope `Karoubi C` of a category `C`.
- `Karoubi C` is the Karoubi envelope of a category `C`: it is an idempotent
complete category. It is also preadditive when `C` is preadditive.
-- `toKaroubi C : C ⥤ karoubi C` is a fully faithful functor, which is an equivalence
+- `toKaroubi C : C ⥤ Karoubi C` is a fully faithful functor, which is an equivalence
(`toKaroubi_isEquivalence`) when `C` is idempotent complete.
-/
@@ -29,13 +29,7 @@ complete category. It is also preadditive when `C` is preadditive.
noncomputable section
-open CategoryTheory.Category
-
-open CategoryTheory.Preadditive
-
-open CategoryTheory.Limits
-
-open BigOperators
+open CategoryTheory.Category CategoryTheory.Preadditive CategoryTheory.Limits BigOperators
namespace CategoryTheory
@@ -256,12 +250,12 @@ instance [IsIdempotentComplete C] : EssSurj (toKaroubi C) :=
{ hom := ⟨i, by erw [id_comp, ← h₂, ← assoc, h₁, id_comp]⟩
inv := ⟨e, by erw [comp_id, ← h₂, assoc, h₁, comp_id]⟩ }⟩
-/-- If `C` is idempotent complete, the functor `toKaroubi : C ⥤ karoubi C` is an equivalence. -/
+/-- If `C` is idempotent complete, the functor `toKaroubi : C ⥤ Karoubi C` is an equivalence. -/
def toKaroubi_isEquivalence [IsIdempotentComplete C] : IsEquivalence (toKaroubi C) :=
Equivalence.ofFullyFaithfullyEssSurj (toKaroubi C)
#align category_theory.idempotents.to_karoubi_is_equivalence CategoryTheory.Idempotents.toKaroubi_isEquivalence
-/-- The equivalence `C ≅ karoubi C` when `C` is idempotent complete. -/
+/-- The equivalence `C ≅ Karoubi C` when `C` is idempotent complete. -/
def toKaroubi_equivalence [IsIdempotentComplete C] : C ≌ Karoubi C :=
haveI := toKaroubi_isEquivalence C
Functor.asEquivalence (toKaroubi C)
@@ -99,6 +99,8 @@ theorem comp_p {P Q : Karoubi C} (f : Hom P Q) : f.f ≫ Q.p = f.f := by
rw [f.comm, assoc, assoc, Q.idem]
#align category_theory.idempotents.karoubi.comp_p CategoryTheory.Idempotents.Karoubi.comp_p
+
+@[reassoc]
theorem p_comm {P Q : Karoubi C} (f : Hom P Q) : P.p ≫ f.f = f.f ≫ Q.p := by rw [p_comp, comp_p]
#align category_theory.idempotents.karoubi.p_comm CategoryTheory.Idempotents.Karoubi.p_comm
The unported dependencies are