category_theory.full_subcategoryMathlib.CategoryTheory.FullSubcategory

This file has been ported!

Changes since the initial port

The following section lists changes to this file in mathlib3 and mathlib4 that occured after the initial port. Most recent changes are shown first. Hovering over a commit will show all commits associated with the same mathlib3 commit.

Changes in mathlib3

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(last sync)

Changes in mathlib3port

mathlib3
mathlib3port
Diff
@@ -237,7 +237,7 @@ instance (F : C ⥤ D) (hF : ∀ X, P (F.obj X)) [CategoryTheory.Functor.Faithfu
 
 instance (F : C ⥤ D) (hF : ∀ X, P (F.obj X)) [CategoryTheory.Functor.Full F] :
     CategoryTheory.Functor.Full (FullSubcategory.lift P F hF) :=
-  CategoryTheory.Functor.Full.ofCompFaithfulIso (FullSubcategory.lift_comp_inclusion P F hF)
+  CategoryTheory.Functor.Full.of_comp_faithful_iso (FullSubcategory.lift_comp_inclusion P F hF)
 
 #print CategoryTheory.FullSubcategory.lift_comp_map /-
 @[simp]
Diff
@@ -91,12 +91,13 @@ def inducedFunctor : InducedCategory D F ⥤ D
 -/
 
 #print CategoryTheory.InducedCategory.full /-
-instance InducedCategory.full : Full (inducedFunctor F) where preimage x y f := f
+instance InducedCategory.full : CategoryTheory.Functor.Full (inducedFunctor F)
+    where preimage x y f := f
 #align category_theory.induced_category.full CategoryTheory.InducedCategory.full
 -/
 
 #print CategoryTheory.InducedCategory.faithful /-
-instance InducedCategory.faithful : Faithful (inducedFunctor F) where
+instance InducedCategory.faithful : CategoryTheory.Functor.Faithful (inducedFunctor F) where
 #align category_theory.induced_category.faithful CategoryTheory.InducedCategory.faithful
 -/
 
@@ -152,13 +153,13 @@ theorem fullSubcategoryInclusion.map {X Y} {f : X ⟶ Y} : (fullSubcategoryInclu
 -/
 
 #print CategoryTheory.FullSubcategory.full /-
-instance FullSubcategory.full : Full (fullSubcategoryInclusion Z) :=
+instance FullSubcategory.full : CategoryTheory.Functor.Full (fullSubcategoryInclusion Z) :=
   InducedCategory.full _
 #align category_theory.full_subcategory.full CategoryTheory.FullSubcategory.full
 -/
 
 #print CategoryTheory.FullSubcategory.faithful /-
-instance FullSubcategory.faithful : Faithful (fullSubcategoryInclusion Z) :=
+instance FullSubcategory.faithful : CategoryTheory.Functor.Faithful (fullSubcategoryInclusion Z) :=
   InducedCategory.faithful _
 #align category_theory.full_subcategory.faithful CategoryTheory.FullSubcategory.faithful
 -/
@@ -175,9 +176,10 @@ def FullSubcategory.map (h : ∀ ⦃X⦄, Z X → Z' X) : FullSubcategory Z ⥤
 #align category_theory.full_subcategory.map CategoryTheory.FullSubcategory.map
 -/
 
-instance (h : ∀ ⦃X⦄, Z X → Z' X) : Full (FullSubcategory.map h) where preimage X Y f := f
+instance (h : ∀ ⦃X⦄, Z X → Z' X) : CategoryTheory.Functor.Full (FullSubcategory.map h)
+    where preimage X Y f := f
 
-instance (h : ∀ ⦃X⦄, Z X → Z' X) : Faithful (FullSubcategory.map h) where
+instance (h : ∀ ⦃X⦄, Z X → Z' X) : CategoryTheory.Functor.Faithful (FullSubcategory.map h) where
 
 #print CategoryTheory.FullSubcategory.map_inclusion /-
 @[simp]
@@ -229,12 +231,13 @@ theorem CategoryTheory.fullSubcategoryInclusion_map_lift_map (F : C ⥤ D) (hF :
 #align category_theory.full_subcategory.inclusion_map_lift_map CategoryTheory.fullSubcategoryInclusion_map_lift_map
 -/
 
-instance (F : C ⥤ D) (hF : ∀ X, P (F.obj X)) [Faithful F] :
-    Faithful (FullSubcategory.lift P F hF) :=
-  Faithful.of_comp_iso (FullSubcategory.lift_comp_inclusion P F hF)
+instance (F : C ⥤ D) (hF : ∀ X, P (F.obj X)) [CategoryTheory.Functor.Faithful F] :
+    CategoryTheory.Functor.Faithful (FullSubcategory.lift P F hF) :=
+  CategoryTheory.Functor.Faithful.of_comp_iso (FullSubcategory.lift_comp_inclusion P F hF)
 
-instance (F : C ⥤ D) (hF : ∀ X, P (F.obj X)) [Full F] : Full (FullSubcategory.lift P F hF) :=
-  Full.ofCompFaithfulIso (FullSubcategory.lift_comp_inclusion P F hF)
+instance (F : C ⥤ D) (hF : ∀ X, P (F.obj X)) [CategoryTheory.Functor.Full F] :
+    CategoryTheory.Functor.Full (FullSubcategory.lift P F hF) :=
+  CategoryTheory.Functor.Full.ofCompFaithfulIso (FullSubcategory.lift_comp_inclusion P F hF)
 
 #print CategoryTheory.FullSubcategory.lift_comp_map /-
 @[simp]
Diff
@@ -3,7 +3,7 @@ Copyright (c) 2017 Scott Morrison. All rights reserved.
 Released under Apache 2.0 license as described in the file LICENSE.
 Authors: Scott Morrison, Reid Barton
 -/
-import Mathbin.CategoryTheory.Functor.FullyFaithful
+import CategoryTheory.Functor.FullyFaithful
 
 #align_import category_theory.full_subcategory from "leanprover-community/mathlib"@"c3291da49cfa65f0d43b094750541c0731edc932"
 
Diff
@@ -2,14 +2,11 @@
 Copyright (c) 2017 Scott Morrison. All rights reserved.
 Released under Apache 2.0 license as described in the file LICENSE.
 Authors: Scott Morrison, Reid Barton
-
-! This file was ported from Lean 3 source module category_theory.full_subcategory
-! leanprover-community/mathlib commit c3291da49cfa65f0d43b094750541c0731edc932
-! Please do not edit these lines, except to modify the commit id
-! if you have ported upstream changes.
 -/
 import Mathbin.CategoryTheory.Functor.FullyFaithful
 
+#align_import category_theory.full_subcategory from "leanprover-community/mathlib"@"c3291da49cfa65f0d43b094750541c0731edc932"
+
 /-!
 # Induced categories and full subcategories
 
Diff
@@ -52,8 +52,7 @@ variable {C : Type u₁} (D : Type u₂) [Category.{v} D]
 
 variable (F : C → D)
 
-include F
-
+#print CategoryTheory.InducedCategory /-
 /-- `induced_category D F`, where `F : C → D`, is a typeclass synonym for `C`,
 which provides a category structure so that the morphisms `X ⟶ Y` are the morphisms
 in `D` from `F X` to `F Y`.
@@ -62,13 +61,16 @@ in `D` from `F X` to `F Y`.
 def InducedCategory : Type u₁ :=
   C
 #align category_theory.induced_category CategoryTheory.InducedCategory
+-/
 
 variable {D}
 
+#print CategoryTheory.InducedCategory.hasCoeToSort /-
 instance InducedCategory.hasCoeToSort {α : Sort _} [CoeSort D α] :
     CoeSort (InducedCategory D F) α :=
   ⟨fun c => ↥(F c)⟩
 #align category_theory.induced_category.has_coe_to_sort CategoryTheory.InducedCategory.hasCoeToSort
+-/
 
 #print CategoryTheory.InducedCategory.category /-
 instance InducedCategory.category : Category.{v} (InducedCategory D F)
@@ -123,37 +125,50 @@ structure FullSubcategory where
   property : Z obj
 #align category_theory.full_subcategory CategoryTheory.FullSubcategoryₓ
 
+#print CategoryTheory.FullSubcategory.category /-
 instance FullSubcategory.category : Category.{v} (FullSubcategory Z) :=
   InducedCategory.category FullSubcategory.obj
 #align category_theory.full_subcategory.category CategoryTheory.FullSubcategory.category
+-/
 
+#print CategoryTheory.fullSubcategoryInclusion /-
 /-- The forgetful functor from a full subcategory into the original category
 ("forgetting" the condition).
 -/
 def fullSubcategoryInclusion : FullSubcategory Z ⥤ C :=
   inducedFunctor FullSubcategory.obj
 #align category_theory.full_subcategory_inclusion CategoryTheory.fullSubcategoryInclusion
+-/
 
+#print CategoryTheory.fullSubcategoryInclusion.obj /-
 @[simp]
 theorem fullSubcategoryInclusion.obj {X} : (fullSubcategoryInclusion Z).obj X = X.obj :=
   rfl
 #align category_theory.full_subcategory_inclusion.obj CategoryTheory.fullSubcategoryInclusion.obj
+-/
 
+#print CategoryTheory.fullSubcategoryInclusion.map /-
 @[simp]
 theorem fullSubcategoryInclusion.map {X Y} {f : X ⟶ Y} : (fullSubcategoryInclusion Z).map f = f :=
   rfl
 #align category_theory.full_subcategory_inclusion.map CategoryTheory.fullSubcategoryInclusion.map
+-/
 
+#print CategoryTheory.FullSubcategory.full /-
 instance FullSubcategory.full : Full (fullSubcategoryInclusion Z) :=
   InducedCategory.full _
 #align category_theory.full_subcategory.full CategoryTheory.FullSubcategory.full
+-/
 
+#print CategoryTheory.FullSubcategory.faithful /-
 instance FullSubcategory.faithful : Faithful (fullSubcategoryInclusion Z) :=
   InducedCategory.faithful _
 #align category_theory.full_subcategory.faithful CategoryTheory.FullSubcategory.faithful
+-/
 
 variable {Z} {Z' : C → Prop}
 
+#print CategoryTheory.FullSubcategory.map /-
 /-- An implication of predicates `Z → Z'` induces a functor between full subcategories. -/
 @[simps]
 def FullSubcategory.map (h : ∀ ⦃X⦄, Z X → Z' X) : FullSubcategory Z ⥤ FullSubcategory Z'
@@ -161,21 +176,25 @@ def FullSubcategory.map (h : ∀ ⦃X⦄, Z X → Z' X) : FullSubcategory Z ⥤
   obj X := ⟨X.1, h X.2⟩
   map X Y f := f
 #align category_theory.full_subcategory.map CategoryTheory.FullSubcategory.map
+-/
 
 instance (h : ∀ ⦃X⦄, Z X → Z' X) : Full (FullSubcategory.map h) where preimage X Y f := f
 
 instance (h : ∀ ⦃X⦄, Z X → Z' X) : Faithful (FullSubcategory.map h) where
 
+#print CategoryTheory.FullSubcategory.map_inclusion /-
 @[simp]
 theorem FullSubcategory.map_inclusion (h : ∀ ⦃X⦄, Z X → Z' X) :
     FullSubcategory.map h ⋙ fullSubcategoryInclusion Z' = fullSubcategoryInclusion Z :=
   rfl
 #align category_theory.full_subcategory.map_inclusion CategoryTheory.FullSubcategory.map_inclusion
+-/
 
 section lift
 
 variable {D : Type u₂} [Category.{v₂} D] (P Q : D → Prop)
 
+#print CategoryTheory.FullSubcategory.lift /-
 /-- A functor which maps objects to objects satisfying a certain property induces a lift through
     the full subcategory of objects satisfying that property. -/
 @[simps]
@@ -184,7 +203,9 @@ def FullSubcategory.lift (F : C ⥤ D) (hF : ∀ X, P (F.obj X)) : C ⥤ FullSub
   obj X := ⟨F.obj X, hF X⟩
   map X Y f := F.map f
 #align category_theory.full_subcategory.lift CategoryTheory.FullSubcategory.lift
+-/
 
+#print CategoryTheory.FullSubcategory.lift_comp_inclusion /-
 /-- Composing the lift of a functor through a full subcategory with the inclusion yields the
     original functor. Unfortunately, this is not true by definition, so we only get a natural
     isomorphism, but it is pointwise definitionally true, see
@@ -193,18 +214,23 @@ def FullSubcategory.lift_comp_inclusion (F : C ⥤ D) (hF : ∀ X, P (F.obj X))
     FullSubcategory.lift P F hF ⋙ fullSubcategoryInclusion P ≅ F :=
   NatIso.ofComponents (fun X => Iso.refl _) (by simp)
 #align category_theory.full_subcategory.lift_comp_inclusion CategoryTheory.FullSubcategory.lift_comp_inclusion
+-/
 
+#print CategoryTheory.fullSubcategoryInclusion_obj_lift_obj /-
 @[simp]
 theorem CategoryTheory.fullSubcategoryInclusion_obj_lift_obj (F : C ⥤ D) (hF : ∀ X, P (F.obj X))
     {X : C} : (fullSubcategoryInclusion P).obj ((FullSubcategory.lift P F hF).obj X) = F.obj X :=
   rfl
 #align category_theory.full_subcategory.inclusion_obj_lift_obj CategoryTheory.fullSubcategoryInclusion_obj_lift_obj
+-/
 
+#print CategoryTheory.fullSubcategoryInclusion_map_lift_map /-
 theorem CategoryTheory.fullSubcategoryInclusion_map_lift_map (F : C ⥤ D) (hF : ∀ X, P (F.obj X))
     {X Y : C} (f : X ⟶ Y) :
     (fullSubcategoryInclusion P).map ((FullSubcategory.lift P F hF).map f) = F.map f :=
   rfl
 #align category_theory.full_subcategory.inclusion_map_lift_map CategoryTheory.fullSubcategoryInclusion_map_lift_map
+-/
 
 instance (F : C ⥤ D) (hF : ∀ X, P (F.obj X)) [Faithful F] :
     Faithful (FullSubcategory.lift P F hF) :=
@@ -213,12 +239,14 @@ instance (F : C ⥤ D) (hF : ∀ X, P (F.obj X)) [Faithful F] :
 instance (F : C ⥤ D) (hF : ∀ X, P (F.obj X)) [Full F] : Full (FullSubcategory.lift P F hF) :=
   Full.ofCompFaithfulIso (FullSubcategory.lift_comp_inclusion P F hF)
 
+#print CategoryTheory.FullSubcategory.lift_comp_map /-
 @[simp]
 theorem FullSubcategory.lift_comp_map (F : C ⥤ D) (hF : ∀ X, P (F.obj X)) (h : ∀ ⦃X⦄, P X → Q X) :
     FullSubcategory.lift P F hF ⋙ FullSubcategory.map h =
       FullSubcategory.lift Q F fun X => h (hF X) :=
   rfl
 #align category_theory.full_subcategory.lift_comp_map CategoryTheory.FullSubcategory.lift_comp_map
+-/
 
 end lift
 
Diff
@@ -54,12 +54,6 @@ variable (F : C → D)
 
 include F
 
-/- warning: category_theory.induced_category -> CategoryTheory.InducedCategory is a dubious translation:
-lean 3 declaration is
-  forall {C : Type.{u₁}} (D : Type.{u₂}) [_inst_1 : CategoryTheory.Category.{v, u₂} D], (C -> D) -> Type.{u₁}
-but is expected to have type
-  forall {C : Type.{u₁}} (D : Type.{u₂}), (C -> D) -> Type.{u₁}
-Case conversion may be inaccurate. Consider using '#align category_theory.induced_category CategoryTheory.InducedCategoryₓ'. -/
 /-- `induced_category D F`, where `F : C → D`, is a typeclass synonym for `C`,
 which provides a category structure so that the morphisms `X ⟶ Y` are the morphisms
 in `D` from `F X` to `F Y`.
@@ -71,12 +65,6 @@ def InducedCategory : Type u₁ :=
 
 variable {D}
 
-/- warning: category_theory.induced_category.has_coe_to_sort -> CategoryTheory.InducedCategory.hasCoeToSort is a dubious translation:
-lean 3 declaration is
-  forall {C : Type.{u₁}} {D : Type.{u₂}} [_inst_1 : CategoryTheory.Category.{v, u₂} D] (F : C -> D) {α : Sort.{u_1}} [_inst_2 : CoeSort.{succ u₂, u_1} D α], CoeSort.{succ u₁, u_1} (CategoryTheory.InducedCategory.{v, u₁, u₂} C D _inst_1 F) α
-but is expected to have type
-  forall {C : Type.{u₁}} {D : Type.{u₂}} (_inst_1 : C -> D) {F : Sort.{u_1}} [α : CoeSort.{succ u₂, u_1} D F], CoeSort.{succ u₁, u_1} (CategoryTheory.InducedCategory.{u₁, u₂} C D _inst_1) F
-Case conversion may be inaccurate. Consider using '#align category_theory.induced_category.has_coe_to_sort CategoryTheory.InducedCategory.hasCoeToSortₓ'. -/
 instance InducedCategory.hasCoeToSort {α : Sort _} [CoeSort D α] :
     CoeSort (InducedCategory D F) α :=
   ⟨fun c => ↥(F c)⟩
@@ -135,22 +123,10 @@ structure FullSubcategory where
   property : Z obj
 #align category_theory.full_subcategory CategoryTheory.FullSubcategoryₓ
 
-/- warning: category_theory.full_subcategory.category -> CategoryTheory.FullSubcategory.category is a dubious translation:
-lean 3 declaration is
-  forall {C : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u1, u2} C] (Z : C -> Prop), CategoryTheory.Category.{u1, u2} (CategoryTheory.FullSubcategoryₓ.{u1, u2} C _inst_1 Z)
-but is expected to have type
-  forall {C : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u1, u2} C] (Z : C -> Prop), CategoryTheory.Category.{u1, u2} (CategoryTheory.FullSubcategory.{u2} C Z)
-Case conversion may be inaccurate. Consider using '#align category_theory.full_subcategory.category CategoryTheory.FullSubcategory.categoryₓ'. -/
 instance FullSubcategory.category : Category.{v} (FullSubcategory Z) :=
   InducedCategory.category FullSubcategory.obj
 #align category_theory.full_subcategory.category CategoryTheory.FullSubcategory.category
 
-/- warning: category_theory.full_subcategory_inclusion -> CategoryTheory.fullSubcategoryInclusion is a dubious translation:
-lean 3 declaration is
-  forall {C : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u1, u2} C] (Z : C -> Prop), CategoryTheory.Functor.{u1, u1, u2, u2} (CategoryTheory.FullSubcategoryₓ.{u1, u2} C _inst_1 Z) (CategoryTheory.InducedCategory.category.{u1, u2, u2} (CategoryTheory.FullSubcategoryₓ.{u1, u2} C _inst_1 Z) C _inst_1 (CategoryTheory.FullSubcategoryₓ.obj.{u1, u2} C _inst_1 Z)) C _inst_1
-but is expected to have type
-  forall {C : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u1, u2} C] (Z : C -> Prop), CategoryTheory.Functor.{u1, u1, u2, u2} (CategoryTheory.FullSubcategory.{u2} C Z) (CategoryTheory.FullSubcategory.category.{u1, u2} C _inst_1 Z) C _inst_1
-Case conversion may be inaccurate. Consider using '#align category_theory.full_subcategory_inclusion CategoryTheory.fullSubcategoryInclusionₓ'. -/
 /-- The forgetful functor from a full subcategory into the original category
 ("forgetting" the condition).
 -/
@@ -158,56 +134,26 @@ def fullSubcategoryInclusion : FullSubcategory Z ⥤ C :=
   inducedFunctor FullSubcategory.obj
 #align category_theory.full_subcategory_inclusion CategoryTheory.fullSubcategoryInclusion
 
-/- warning: category_theory.full_subcategory_inclusion.obj -> CategoryTheory.fullSubcategoryInclusion.obj is a dubious translation:
-lean 3 declaration is
-  forall {C : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u1, u2} C] (Z : C -> Prop) {X : CategoryTheory.FullSubcategoryₓ.{u1, u2} C _inst_1 Z}, Eq.{succ u2} C (CategoryTheory.Functor.obj.{u1, u1, u2, u2} (CategoryTheory.FullSubcategoryₓ.{u1, u2} C _inst_1 Z) (CategoryTheory.InducedCategory.category.{u1, u2, u2} (CategoryTheory.FullSubcategoryₓ.{u1, u2} C _inst_1 Z) C _inst_1 (CategoryTheory.FullSubcategoryₓ.obj.{u1, u2} C _inst_1 Z)) C _inst_1 (CategoryTheory.fullSubcategoryInclusion.{u1, u2} C _inst_1 Z) X) (CategoryTheory.FullSubcategoryₓ.obj.{u1, u2} C _inst_1 Z X)
-but is expected to have type
-  forall {C : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u1, u2} C] (Z : C -> Prop) {X : CategoryTheory.FullSubcategory.{u2} C Z}, Eq.{succ u2} C (Prefunctor.obj.{succ u1, succ u1, u2, u2} (CategoryTheory.FullSubcategory.{u2} C Z) (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} (CategoryTheory.FullSubcategory.{u2} C Z) (CategoryTheory.Category.toCategoryStruct.{u1, u2} (CategoryTheory.FullSubcategory.{u2} C Z) (CategoryTheory.FullSubcategory.category.{u1, u2} C _inst_1 Z))) C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1)) (CategoryTheory.Functor.toPrefunctor.{u1, u1, u2, u2} (CategoryTheory.FullSubcategory.{u2} C Z) (CategoryTheory.FullSubcategory.category.{u1, u2} C _inst_1 Z) C _inst_1 (CategoryTheory.fullSubcategoryInclusion.{u1, u2} C _inst_1 Z)) X) (CategoryTheory.FullSubcategory.obj.{u2} C Z X)
-Case conversion may be inaccurate. Consider using '#align category_theory.full_subcategory_inclusion.obj CategoryTheory.fullSubcategoryInclusion.objₓ'. -/
 @[simp]
 theorem fullSubcategoryInclusion.obj {X} : (fullSubcategoryInclusion Z).obj X = X.obj :=
   rfl
 #align category_theory.full_subcategory_inclusion.obj CategoryTheory.fullSubcategoryInclusion.obj
 
-/- warning: category_theory.full_subcategory_inclusion.map -> CategoryTheory.fullSubcategoryInclusion.map is a dubious translation:
-lean 3 declaration is
-  forall {C : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u1, u2} C] (Z : C -> Prop) {X : CategoryTheory.FullSubcategoryₓ.{u1, u2} C _inst_1 Z} {Y : CategoryTheory.FullSubcategoryₓ.{u1, u2} C _inst_1 Z} {f : Quiver.Hom.{succ u1, u2} (CategoryTheory.FullSubcategoryₓ.{u1, u2} C _inst_1 Z) (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} (CategoryTheory.FullSubcategoryₓ.{u1, u2} C _inst_1 Z) (CategoryTheory.Category.toCategoryStruct.{u1, u2} (CategoryTheory.FullSubcategoryₓ.{u1, u2} C _inst_1 Z) (CategoryTheory.InducedCategory.category.{u1, u2, u2} (CategoryTheory.FullSubcategoryₓ.{u1, u2} C _inst_1 Z) C _inst_1 (CategoryTheory.FullSubcategoryₓ.obj.{u1, u2} C _inst_1 Z)))) X Y}, Eq.{succ u1} (Quiver.Hom.{succ u1, u2} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1)) (CategoryTheory.Functor.obj.{u1, u1, u2, u2} (CategoryTheory.FullSubcategoryₓ.{u1, u2} C _inst_1 Z) (CategoryTheory.InducedCategory.category.{u1, u2, u2} (CategoryTheory.FullSubcategoryₓ.{u1, u2} C _inst_1 Z) C _inst_1 (CategoryTheory.FullSubcategoryₓ.obj.{u1, u2} C _inst_1 Z)) C _inst_1 (CategoryTheory.fullSubcategoryInclusion.{u1, u2} C _inst_1 Z) X) (CategoryTheory.Functor.obj.{u1, u1, u2, u2} (CategoryTheory.FullSubcategoryₓ.{u1, u2} C _inst_1 Z) (CategoryTheory.InducedCategory.category.{u1, u2, u2} (CategoryTheory.FullSubcategoryₓ.{u1, u2} C _inst_1 Z) C _inst_1 (CategoryTheory.FullSubcategoryₓ.obj.{u1, u2} C _inst_1 Z)) C _inst_1 (CategoryTheory.fullSubcategoryInclusion.{u1, u2} C _inst_1 Z) Y)) (CategoryTheory.Functor.map.{u1, u1, u2, u2} (CategoryTheory.FullSubcategoryₓ.{u1, u2} C _inst_1 Z) (CategoryTheory.InducedCategory.category.{u1, u2, u2} (CategoryTheory.FullSubcategoryₓ.{u1, u2} C _inst_1 Z) C _inst_1 (CategoryTheory.FullSubcategoryₓ.obj.{u1, u2} C _inst_1 Z)) C _inst_1 (CategoryTheory.fullSubcategoryInclusion.{u1, u2} C _inst_1 Z) X Y f) f
-but is expected to have type
-  forall {C : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u1, u2} C] (Z : C -> Prop) {X : CategoryTheory.FullSubcategory.{u2} C Z} {Y : CategoryTheory.FullSubcategory.{u2} C Z} {f : Quiver.Hom.{succ u1, u2} (CategoryTheory.FullSubcategory.{u2} C Z) (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} (CategoryTheory.FullSubcategory.{u2} C Z) (CategoryTheory.Category.toCategoryStruct.{u1, u2} (CategoryTheory.FullSubcategory.{u2} C Z) (CategoryTheory.FullSubcategory.category.{u1, u2} C _inst_1 Z))) X Y}, Eq.{succ u1} (Quiver.Hom.{succ u1, u2} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1)) (Prefunctor.obj.{succ u1, succ u1, u2, u2} (CategoryTheory.FullSubcategory.{u2} C Z) (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} (CategoryTheory.FullSubcategory.{u2} C Z) (CategoryTheory.Category.toCategoryStruct.{u1, u2} (CategoryTheory.FullSubcategory.{u2} C Z) (CategoryTheory.FullSubcategory.category.{u1, u2} C _inst_1 Z))) C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1)) (CategoryTheory.Functor.toPrefunctor.{u1, u1, u2, u2} (CategoryTheory.FullSubcategory.{u2} C Z) (CategoryTheory.FullSubcategory.category.{u1, u2} C _inst_1 Z) C _inst_1 (CategoryTheory.fullSubcategoryInclusion.{u1, u2} C _inst_1 Z)) X) (Prefunctor.obj.{succ u1, succ u1, u2, u2} (CategoryTheory.FullSubcategory.{u2} C Z) (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} (CategoryTheory.FullSubcategory.{u2} C Z) (CategoryTheory.Category.toCategoryStruct.{u1, u2} (CategoryTheory.FullSubcategory.{u2} C Z) (CategoryTheory.FullSubcategory.category.{u1, u2} C _inst_1 Z))) C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1)) (CategoryTheory.Functor.toPrefunctor.{u1, u1, u2, u2} (CategoryTheory.FullSubcategory.{u2} C Z) (CategoryTheory.FullSubcategory.category.{u1, u2} C _inst_1 Z) C _inst_1 (CategoryTheory.fullSubcategoryInclusion.{u1, u2} C _inst_1 Z)) Y)) (Prefunctor.map.{succ u1, succ u1, u2, u2} (CategoryTheory.FullSubcategory.{u2} C Z) (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} (CategoryTheory.FullSubcategory.{u2} C Z) (CategoryTheory.Category.toCategoryStruct.{u1, u2} (CategoryTheory.FullSubcategory.{u2} C Z) (CategoryTheory.FullSubcategory.category.{u1, u2} C _inst_1 Z))) C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1)) (CategoryTheory.Functor.toPrefunctor.{u1, u1, u2, u2} (CategoryTheory.FullSubcategory.{u2} C Z) (CategoryTheory.FullSubcategory.category.{u1, u2} C _inst_1 Z) C _inst_1 (CategoryTheory.fullSubcategoryInclusion.{u1, u2} C _inst_1 Z)) X Y f) f
-Case conversion may be inaccurate. Consider using '#align category_theory.full_subcategory_inclusion.map CategoryTheory.fullSubcategoryInclusion.mapₓ'. -/
 @[simp]
 theorem fullSubcategoryInclusion.map {X Y} {f : X ⟶ Y} : (fullSubcategoryInclusion Z).map f = f :=
   rfl
 #align category_theory.full_subcategory_inclusion.map CategoryTheory.fullSubcategoryInclusion.map
 
-/- warning: category_theory.full_subcategory.full -> CategoryTheory.FullSubcategory.full is a dubious translation:
-lean 3 declaration is
-  forall {C : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u1, u2} C] (Z : C -> Prop), CategoryTheory.Full.{u1, u1, u2, u2} (CategoryTheory.FullSubcategoryₓ.{u1, u2} C _inst_1 Z) (CategoryTheory.InducedCategory.category.{u1, u2, u2} (CategoryTheory.FullSubcategoryₓ.{u1, u2} C _inst_1 Z) C _inst_1 (CategoryTheory.FullSubcategoryₓ.obj.{u1, u2} C _inst_1 Z)) C _inst_1 (CategoryTheory.fullSubcategoryInclusion.{u1, u2} C _inst_1 Z)
-but is expected to have type
-  forall {C : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u1, u2} C] (Z : C -> Prop), CategoryTheory.Full.{u1, u1, u2, u2} (CategoryTheory.FullSubcategory.{u2} C Z) (CategoryTheory.FullSubcategory.category.{u1, u2} C _inst_1 Z) C _inst_1 (CategoryTheory.fullSubcategoryInclusion.{u1, u2} C _inst_1 Z)
-Case conversion may be inaccurate. Consider using '#align category_theory.full_subcategory.full CategoryTheory.FullSubcategory.fullₓ'. -/
 instance FullSubcategory.full : Full (fullSubcategoryInclusion Z) :=
   InducedCategory.full _
 #align category_theory.full_subcategory.full CategoryTheory.FullSubcategory.full
 
-/- warning: category_theory.full_subcategory.faithful -> CategoryTheory.FullSubcategory.faithful is a dubious translation:
-lean 3 declaration is
-  forall {C : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u1, u2} C] (Z : C -> Prop), CategoryTheory.Faithful.{u1, u1, u2, u2} (CategoryTheory.FullSubcategoryₓ.{u1, u2} C _inst_1 Z) (CategoryTheory.InducedCategory.category.{u1, u2, u2} (CategoryTheory.FullSubcategoryₓ.{u1, u2} C _inst_1 Z) C _inst_1 (CategoryTheory.FullSubcategoryₓ.obj.{u1, u2} C _inst_1 Z)) C _inst_1 (CategoryTheory.fullSubcategoryInclusion.{u1, u2} C _inst_1 Z)
-but is expected to have type
-  forall {C : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u1, u2} C] (Z : C -> Prop), CategoryTheory.Faithful.{u1, u1, u2, u2} (CategoryTheory.FullSubcategory.{u2} C Z) (CategoryTheory.FullSubcategory.category.{u1, u2} C _inst_1 Z) C _inst_1 (CategoryTheory.fullSubcategoryInclusion.{u1, u2} C _inst_1 Z)
-Case conversion may be inaccurate. Consider using '#align category_theory.full_subcategory.faithful CategoryTheory.FullSubcategory.faithfulₓ'. -/
 instance FullSubcategory.faithful : Faithful (fullSubcategoryInclusion Z) :=
   InducedCategory.faithful _
 #align category_theory.full_subcategory.faithful CategoryTheory.FullSubcategory.faithful
 
 variable {Z} {Z' : C → Prop}
 
-/- warning: category_theory.full_subcategory.map -> CategoryTheory.FullSubcategory.map is a dubious translation:
-lean 3 declaration is
-  forall {C : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u1, u2} C] {Z : C -> Prop} {Z' : C -> Prop}, (forall {{X : C}}, (Z X) -> (Z' X)) -> (CategoryTheory.Functor.{u1, u1, u2, u2} (CategoryTheory.FullSubcategoryₓ.{u1, u2} C _inst_1 Z) (CategoryTheory.FullSubcategory.category.{u1, u2} C _inst_1 Z) (CategoryTheory.FullSubcategoryₓ.{u1, u2} C _inst_1 Z') (CategoryTheory.FullSubcategory.category.{u1, u2} C _inst_1 Z'))
-but is expected to have type
-  forall {C : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u1, u2} C] {Z : C -> Prop} {Z' : C -> Prop}, (forall {{X : C}}, (Z X) -> (Z' X)) -> (CategoryTheory.Functor.{u1, u1, u2, u2} (CategoryTheory.FullSubcategory.{u2} C Z) (CategoryTheory.FullSubcategory.category.{u1, u2} C _inst_1 Z) (CategoryTheory.FullSubcategory.{u2} C Z') (CategoryTheory.FullSubcategory.category.{u1, u2} C _inst_1 Z'))
-Case conversion may be inaccurate. Consider using '#align category_theory.full_subcategory.map CategoryTheory.FullSubcategory.mapₓ'. -/
 /-- An implication of predicates `Z → Z'` induces a functor between full subcategories. -/
 @[simps]
 def FullSubcategory.map (h : ∀ ⦃X⦄, Z X → Z' X) : FullSubcategory Z ⥤ FullSubcategory Z'
@@ -220,12 +166,6 @@ instance (h : ∀ ⦃X⦄, Z X → Z' X) : Full (FullSubcategory.map h) where pr
 
 instance (h : ∀ ⦃X⦄, Z X → Z' X) : Faithful (FullSubcategory.map h) where
 
-/- warning: category_theory.full_subcategory.map_inclusion -> CategoryTheory.FullSubcategory.map_inclusion is a dubious translation:
-lean 3 declaration is
-  forall {C : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u1, u2} C] {Z : C -> Prop} {Z' : C -> Prop} (h : forall {{X : C}}, (Z X) -> (Z' X)), Eq.{succ (max u1 u2)} (CategoryTheory.Functor.{u1, u1, u2, u2} (CategoryTheory.FullSubcategoryₓ.{u1, u2} C _inst_1 (fun (X : C) => Z X)) (CategoryTheory.FullSubcategory.category.{u1, u2} C _inst_1 (fun (X : C) => Z X)) C _inst_1) (CategoryTheory.Functor.comp.{u1, u1, u1, u2, u2, u2} (CategoryTheory.FullSubcategoryₓ.{u1, u2} C _inst_1 (fun (X : C) => Z X)) (CategoryTheory.FullSubcategory.category.{u1, u2} C _inst_1 (fun (X : C) => Z X)) (CategoryTheory.FullSubcategoryₓ.{u1, u2} C _inst_1 (fun (X : C) => Z' X)) (CategoryTheory.FullSubcategory.category.{u1, u2} C _inst_1 (fun (X : C) => Z' X)) C _inst_1 (CategoryTheory.FullSubcategory.map.{u1, u2} C _inst_1 (fun (X : C) => Z X) (fun (X : C) => Z' X) h) (CategoryTheory.fullSubcategoryInclusion.{u1, u2} C _inst_1 Z')) (CategoryTheory.fullSubcategoryInclusion.{u1, u2} C _inst_1 Z)
-but is expected to have type
-  forall {C : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u1, u2} C] {Z : C -> Prop} {Z' : C -> Prop} (h : forall {{X : C}}, (Z X) -> (Z' X)), Eq.{max (succ u2) (succ u1)} (CategoryTheory.Functor.{u1, u1, u2, u2} (CategoryTheory.FullSubcategory.{u2} C (fun (X : C) => Z X)) (CategoryTheory.FullSubcategory.category.{u1, u2} C _inst_1 (fun (X : C) => Z X)) C _inst_1) (CategoryTheory.Functor.comp.{u1, u1, u1, u2, u2, u2} (CategoryTheory.FullSubcategory.{u2} C (fun (X : C) => Z X)) (CategoryTheory.FullSubcategory.category.{u1, u2} C _inst_1 (fun (X : C) => Z X)) (CategoryTheory.FullSubcategory.{u2} C (fun (X : C) => Z' X)) (CategoryTheory.FullSubcategory.category.{u1, u2} C _inst_1 (fun (X : C) => Z' X)) C _inst_1 (CategoryTheory.FullSubcategory.map.{u1, u2} C _inst_1 (fun (X : C) => Z X) (fun (X : C) => Z' X) h) (CategoryTheory.fullSubcategoryInclusion.{u1, u2} C _inst_1 Z')) (CategoryTheory.fullSubcategoryInclusion.{u1, u2} C _inst_1 Z)
-Case conversion may be inaccurate. Consider using '#align category_theory.full_subcategory.map_inclusion CategoryTheory.FullSubcategory.map_inclusionₓ'. -/
 @[simp]
 theorem FullSubcategory.map_inclusion (h : ∀ ⦃X⦄, Z X → Z' X) :
     FullSubcategory.map h ⋙ fullSubcategoryInclusion Z' = fullSubcategoryInclusion Z :=
@@ -236,12 +176,6 @@ section lift
 
 variable {D : Type u₂} [Category.{v₂} D] (P Q : D → Prop)
 
-/- warning: category_theory.full_subcategory.lift -> CategoryTheory.FullSubcategory.lift is a dubious translation:
-lean 3 declaration is
-  forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u1, u3} C] {D : Type.{u4}} [_inst_2 : CategoryTheory.Category.{u2, u4} D] (P : D -> Prop) (F : CategoryTheory.Functor.{u1, u2, u3, u4} C _inst_1 D _inst_2), (forall (X : C), P (CategoryTheory.Functor.obj.{u1, u2, u3, u4} C _inst_1 D _inst_2 F X)) -> (CategoryTheory.Functor.{u1, u2, u3, u4} C _inst_1 (CategoryTheory.FullSubcategoryₓ.{u2, u4} D _inst_2 P) (CategoryTheory.FullSubcategory.category.{u2, u4} D _inst_2 P))
-but is expected to have type
-  forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u1, u3} C] {D : Type.{u4}} [_inst_2 : CategoryTheory.Category.{u2, u4} D] (P : D -> Prop) (F : CategoryTheory.Functor.{u1, u2, u3, u4} C _inst_1 D _inst_2), (forall (X : C), P (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 F) X)) -> (CategoryTheory.Functor.{u1, u2, u3, u4} C _inst_1 (CategoryTheory.FullSubcategory.{u4} D P) (CategoryTheory.FullSubcategory.category.{u2, u4} D _inst_2 P))
-Case conversion may be inaccurate. Consider using '#align category_theory.full_subcategory.lift CategoryTheory.FullSubcategory.liftₓ'. -/
 /-- A functor which maps objects to objects satisfying a certain property induces a lift through
     the full subcategory of objects satisfying that property. -/
 @[simps]
@@ -251,12 +185,6 @@ def FullSubcategory.lift (F : C ⥤ D) (hF : ∀ X, P (F.obj X)) : C ⥤ FullSub
   map X Y f := F.map f
 #align category_theory.full_subcategory.lift CategoryTheory.FullSubcategory.lift
 
-/- warning: category_theory.full_subcategory.lift_comp_inclusion -> CategoryTheory.FullSubcategory.lift_comp_inclusion is a dubious translation:
-lean 3 declaration is
-  forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u1, u3} C] {D : Type.{u4}} [_inst_2 : CategoryTheory.Category.{u2, u4} D] (P : D -> Prop) (F : CategoryTheory.Functor.{u1, u2, u3, u4} C _inst_1 D _inst_2) (hF : forall (X : C), P (CategoryTheory.Functor.obj.{u1, u2, u3, u4} C _inst_1 D _inst_2 F X)), CategoryTheory.Iso.{max u3 u2, max u1 u2 u3 u4} (CategoryTheory.Functor.{u1, u2, u3, u4} C _inst_1 D _inst_2) (CategoryTheory.Functor.category.{u1, u2, u3, u4} C _inst_1 D _inst_2) (CategoryTheory.Functor.comp.{u1, u2, u2, u3, u4, u4} C _inst_1 (CategoryTheory.FullSubcategoryₓ.{u2, u4} D _inst_2 P) (CategoryTheory.FullSubcategory.category.{u2, u4} D _inst_2 P) D _inst_2 (CategoryTheory.FullSubcategory.lift.{u1, u2, u3, u4} C _inst_1 D _inst_2 P F hF) (CategoryTheory.fullSubcategoryInclusion.{u2, u4} D _inst_2 P)) F
-but is expected to have type
-  forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u1, u3} C] {D : Type.{u4}} [_inst_2 : CategoryTheory.Category.{u2, u4} D] (P : D -> Prop) (F : CategoryTheory.Functor.{u1, u2, u3, u4} C _inst_1 D _inst_2) (hF : forall (X : C), P (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 F) X)), CategoryTheory.Iso.{max u3 u2, max (max (max u4 u3) u2) u1} (CategoryTheory.Functor.{u1, u2, u3, u4} C _inst_1 D _inst_2) (CategoryTheory.Functor.category.{u1, u2, u3, u4} C _inst_1 D _inst_2) (CategoryTheory.Functor.comp.{u1, u2, u2, u3, u4, u4} C _inst_1 (CategoryTheory.FullSubcategory.{u4} D P) (CategoryTheory.FullSubcategory.category.{u2, u4} D _inst_2 P) D _inst_2 (CategoryTheory.FullSubcategory.lift.{u1, u2, u3, u4} C _inst_1 D _inst_2 P F hF) (CategoryTheory.fullSubcategoryInclusion.{u2, u4} D _inst_2 P)) F
-Case conversion may be inaccurate. Consider using '#align category_theory.full_subcategory.lift_comp_inclusion CategoryTheory.FullSubcategory.lift_comp_inclusionₓ'. -/
 /-- Composing the lift of a functor through a full subcategory with the inclusion yields the
     original functor. Unfortunately, this is not true by definition, so we only get a natural
     isomorphism, but it is pointwise definitionally true, see
@@ -266,24 +194,12 @@ def FullSubcategory.lift_comp_inclusion (F : C ⥤ D) (hF : ∀ X, P (F.obj X))
   NatIso.ofComponents (fun X => Iso.refl _) (by simp)
 #align category_theory.full_subcategory.lift_comp_inclusion CategoryTheory.FullSubcategory.lift_comp_inclusion
 
-/- warning: category_theory.full_subcategory.inclusion_obj_lift_obj -> CategoryTheory.fullSubcategoryInclusion_obj_lift_obj is a dubious translation:
-lean 3 declaration is
-  forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u1, u3} C] {D : Type.{u4}} [_inst_2 : CategoryTheory.Category.{u2, u4} D] (P : D -> Prop) (F : CategoryTheory.Functor.{u1, u2, u3, u4} C _inst_1 D _inst_2) (hF : forall (X : C), P (CategoryTheory.Functor.obj.{u1, u2, u3, u4} C _inst_1 D _inst_2 F X)) {X : C}, Eq.{succ u4} D (CategoryTheory.Functor.obj.{u2, u2, u4, u4} (CategoryTheory.FullSubcategoryₓ.{u2, u4} D _inst_2 P) (CategoryTheory.InducedCategory.category.{u2, u4, u4} (CategoryTheory.FullSubcategoryₓ.{u2, u4} D _inst_2 P) D _inst_2 (CategoryTheory.FullSubcategoryₓ.obj.{u2, u4} D _inst_2 P)) D _inst_2 (CategoryTheory.fullSubcategoryInclusion.{u2, u4} D _inst_2 P) (CategoryTheory.Functor.obj.{u1, u2, u3, u4} C _inst_1 (CategoryTheory.FullSubcategoryₓ.{u2, u4} D _inst_2 P) (CategoryTheory.FullSubcategory.category.{u2, u4} D _inst_2 P) (CategoryTheory.FullSubcategory.lift.{u1, u2, u3, u4} C _inst_1 D _inst_2 P F hF) X)) (CategoryTheory.Functor.obj.{u1, u2, u3, u4} C _inst_1 D _inst_2 F X)
-but is expected to have type
-  forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u1, u3} C] {D : Type.{u4}} [_inst_2 : CategoryTheory.Category.{u2, u4} D] (P : D -> Prop) (F : CategoryTheory.Functor.{u1, u2, u3, u4} C _inst_1 D _inst_2) (hF : forall (X : C), P (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 F) X)) {X : C}, Eq.{succ u4} D (Prefunctor.obj.{succ u2, succ u2, u4, u4} (CategoryTheory.FullSubcategory.{u4} D P) (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} (CategoryTheory.FullSubcategory.{u4} D P) (CategoryTheory.Category.toCategoryStruct.{u2, u4} (CategoryTheory.FullSubcategory.{u4} D P) (CategoryTheory.FullSubcategory.category.{u2, u4} D _inst_2 P))) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, u2, u4, u4} (CategoryTheory.FullSubcategory.{u4} D P) (CategoryTheory.FullSubcategory.category.{u2, u4} D _inst_2 P) D _inst_2 (CategoryTheory.fullSubcategoryInclusion.{u2, u4} D _inst_2 P)) (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) (CategoryTheory.FullSubcategory.{u4} D P) (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} (CategoryTheory.FullSubcategory.{u4} D P) (CategoryTheory.Category.toCategoryStruct.{u2, u4} (CategoryTheory.FullSubcategory.{u4} D P) (CategoryTheory.FullSubcategory.category.{u2, u4} D _inst_2 P))) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 (CategoryTheory.FullSubcategory.{u4} D P) (CategoryTheory.FullSubcategory.category.{u2, u4} D _inst_2 P) (CategoryTheory.FullSubcategory.lift.{u1, u2, u3, u4} C _inst_1 D _inst_2 P F hF)) X)) (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 F) X)
-Case conversion may be inaccurate. Consider using '#align category_theory.full_subcategory.inclusion_obj_lift_obj CategoryTheory.fullSubcategoryInclusion_obj_lift_objₓ'. -/
 @[simp]
 theorem CategoryTheory.fullSubcategoryInclusion_obj_lift_obj (F : C ⥤ D) (hF : ∀ X, P (F.obj X))
     {X : C} : (fullSubcategoryInclusion P).obj ((FullSubcategory.lift P F hF).obj X) = F.obj X :=
   rfl
 #align category_theory.full_subcategory.inclusion_obj_lift_obj CategoryTheory.fullSubcategoryInclusion_obj_lift_obj
 
-/- warning: category_theory.full_subcategory.inclusion_map_lift_map -> CategoryTheory.fullSubcategoryInclusion_map_lift_map is a dubious translation:
-lean 3 declaration is
-  forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u1, u3} C] {D : Type.{u4}} [_inst_2 : CategoryTheory.Category.{u2, u4} D] (P : D -> Prop) (F : CategoryTheory.Functor.{u1, u2, u3, u4} C _inst_1 D _inst_2) (hF : forall (X : C), P (CategoryTheory.Functor.obj.{u1, u2, u3, u4} C _inst_1 D _inst_2 F X)) {X : C} {Y : C} (f : Quiver.Hom.{succ u1, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) X Y), Eq.{succ u2} (Quiver.Hom.{succ u2, u4} D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.obj.{u2, u2, u4, u4} (CategoryTheory.FullSubcategoryₓ.{u2, u4} D _inst_2 P) (CategoryTheory.InducedCategory.category.{u2, u4, u4} (CategoryTheory.FullSubcategoryₓ.{u2, u4} D _inst_2 P) D _inst_2 (CategoryTheory.FullSubcategoryₓ.obj.{u2, u4} D _inst_2 P)) D _inst_2 (CategoryTheory.fullSubcategoryInclusion.{u2, u4} D _inst_2 P) (CategoryTheory.Functor.obj.{u1, u2, u3, u4} C _inst_1 (CategoryTheory.FullSubcategoryₓ.{u2, u4} D _inst_2 P) (CategoryTheory.FullSubcategory.category.{u2, u4} D _inst_2 P) (CategoryTheory.FullSubcategory.lift.{u1, u2, u3, u4} C _inst_1 D _inst_2 P F hF) X)) (CategoryTheory.Functor.obj.{u2, u2, u4, u4} (CategoryTheory.FullSubcategoryₓ.{u2, u4} D _inst_2 P) (CategoryTheory.InducedCategory.category.{u2, u4, u4} (CategoryTheory.FullSubcategoryₓ.{u2, u4} D _inst_2 P) D _inst_2 (CategoryTheory.FullSubcategoryₓ.obj.{u2, u4} D _inst_2 P)) D _inst_2 (CategoryTheory.fullSubcategoryInclusion.{u2, u4} D _inst_2 P) (CategoryTheory.Functor.obj.{u1, u2, u3, u4} C _inst_1 (CategoryTheory.FullSubcategoryₓ.{u2, u4} D _inst_2 P) (CategoryTheory.FullSubcategory.category.{u2, u4} D _inst_2 P) (CategoryTheory.FullSubcategory.lift.{u1, u2, u3, u4} C _inst_1 D _inst_2 P F hF) Y))) (CategoryTheory.Functor.map.{u2, u2, u4, u4} (CategoryTheory.FullSubcategoryₓ.{u2, u4} D _inst_2 P) (CategoryTheory.InducedCategory.category.{u2, u4, u4} (CategoryTheory.FullSubcategoryₓ.{u2, u4} D _inst_2 P) D _inst_2 (CategoryTheory.FullSubcategoryₓ.obj.{u2, u4} D _inst_2 P)) D _inst_2 (CategoryTheory.fullSubcategoryInclusion.{u2, u4} D _inst_2 P) (CategoryTheory.Functor.obj.{u1, u2, u3, u4} C _inst_1 (CategoryTheory.FullSubcategoryₓ.{u2, u4} D _inst_2 P) (CategoryTheory.FullSubcategory.category.{u2, u4} D _inst_2 P) (CategoryTheory.FullSubcategory.lift.{u1, u2, u3, u4} C _inst_1 D _inst_2 P F hF) X) (CategoryTheory.Functor.obj.{u1, u2, u3, u4} C _inst_1 (CategoryTheory.FullSubcategoryₓ.{u2, u4} D _inst_2 P) (CategoryTheory.FullSubcategory.category.{u2, u4} D _inst_2 P) (CategoryTheory.FullSubcategory.lift.{u1, u2, u3, u4} C _inst_1 D _inst_2 P F hF) Y) (CategoryTheory.Functor.map.{u1, u2, u3, u4} C _inst_1 (CategoryTheory.FullSubcategoryₓ.{u2, u4} D _inst_2 P) (CategoryTheory.FullSubcategory.category.{u2, u4} D _inst_2 P) (CategoryTheory.FullSubcategory.lift.{u1, u2, u3, u4} C _inst_1 D _inst_2 P F hF) X Y f)) (CategoryTheory.Functor.map.{u1, u2, u3, u4} C _inst_1 D _inst_2 F X Y f)
-but is expected to have type
-  forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u1, u3} C] {D : Type.{u4}} [_inst_2 : CategoryTheory.Category.{u2, u4} D] (P : D -> Prop) (F : CategoryTheory.Functor.{u1, u2, u3, u4} C _inst_1 D _inst_2) (hF : forall (X : C), P (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 F) X)) {X : C} {Y : C} (f : Quiver.Hom.{succ u1, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) X Y), Eq.{succ u2} (Quiver.Hom.{succ u2, u4} D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (Prefunctor.obj.{succ u2, succ u2, u4, u4} (CategoryTheory.FullSubcategory.{u4} D P) (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} (CategoryTheory.FullSubcategory.{u4} D P) (CategoryTheory.Category.toCategoryStruct.{u2, u4} (CategoryTheory.FullSubcategory.{u4} D P) (CategoryTheory.FullSubcategory.category.{u2, u4} D _inst_2 P))) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, u2, u4, u4} (CategoryTheory.FullSubcategory.{u4} D P) (CategoryTheory.FullSubcategory.category.{u2, u4} D _inst_2 P) D _inst_2 (CategoryTheory.fullSubcategoryInclusion.{u2, u4} D _inst_2 P)) (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) (CategoryTheory.FullSubcategory.{u4} D P) (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} (CategoryTheory.FullSubcategory.{u4} D P) (CategoryTheory.Category.toCategoryStruct.{u2, u4} (CategoryTheory.FullSubcategory.{u4} D P) (CategoryTheory.FullSubcategory.category.{u2, u4} D _inst_2 P))) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 (CategoryTheory.FullSubcategory.{u4} D P) (CategoryTheory.FullSubcategory.category.{u2, u4} D _inst_2 P) (CategoryTheory.FullSubcategory.lift.{u1, u2, u3, u4} C _inst_1 D _inst_2 P F hF)) X)) (Prefunctor.obj.{succ u2, succ u2, u4, u4} (CategoryTheory.FullSubcategory.{u4} D P) (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} (CategoryTheory.FullSubcategory.{u4} D P) (CategoryTheory.Category.toCategoryStruct.{u2, u4} (CategoryTheory.FullSubcategory.{u4} D P) (CategoryTheory.FullSubcategory.category.{u2, u4} D _inst_2 P))) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, u2, u4, u4} (CategoryTheory.FullSubcategory.{u4} D P) (CategoryTheory.FullSubcategory.category.{u2, u4} D _inst_2 P) D _inst_2 (CategoryTheory.fullSubcategoryInclusion.{u2, u4} D _inst_2 P)) (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) (CategoryTheory.FullSubcategory.{u4} D P) (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} (CategoryTheory.FullSubcategory.{u4} D P) (CategoryTheory.Category.toCategoryStruct.{u2, u4} (CategoryTheory.FullSubcategory.{u4} D P) (CategoryTheory.FullSubcategory.category.{u2, u4} D _inst_2 P))) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 (CategoryTheory.FullSubcategory.{u4} D P) (CategoryTheory.FullSubcategory.category.{u2, u4} D _inst_2 P) (CategoryTheory.FullSubcategory.lift.{u1, u2, u3, u4} C _inst_1 D _inst_2 P F hF)) Y))) (Prefunctor.map.{succ u2, succ u2, u4, u4} (CategoryTheory.FullSubcategory.{u4} D P) (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} (CategoryTheory.FullSubcategory.{u4} D P) (CategoryTheory.Category.toCategoryStruct.{u2, u4} (CategoryTheory.FullSubcategory.{u4} D P) (CategoryTheory.FullSubcategory.category.{u2, u4} D _inst_2 P))) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, u2, u4, u4} (CategoryTheory.FullSubcategory.{u4} D P) (CategoryTheory.FullSubcategory.category.{u2, u4} D _inst_2 P) D _inst_2 (CategoryTheory.fullSubcategoryInclusion.{u2, u4} D _inst_2 P)) (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) (CategoryTheory.FullSubcategory.{u4} D P) (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} (CategoryTheory.FullSubcategory.{u4} D P) (CategoryTheory.Category.toCategoryStruct.{u2, u4} (CategoryTheory.FullSubcategory.{u4} D P) (CategoryTheory.FullSubcategory.category.{u2, u4} D _inst_2 P))) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 (CategoryTheory.FullSubcategory.{u4} D P) (CategoryTheory.FullSubcategory.category.{u2, u4} D _inst_2 P) (CategoryTheory.FullSubcategory.lift.{u1, u2, u3, u4} C _inst_1 D _inst_2 P F hF)) X) (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) (CategoryTheory.FullSubcategory.{u4} D P) (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} (CategoryTheory.FullSubcategory.{u4} D P) (CategoryTheory.Category.toCategoryStruct.{u2, u4} (CategoryTheory.FullSubcategory.{u4} D P) (CategoryTheory.FullSubcategory.category.{u2, u4} D _inst_2 P))) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 (CategoryTheory.FullSubcategory.{u4} D P) (CategoryTheory.FullSubcategory.category.{u2, u4} D _inst_2 P) (CategoryTheory.FullSubcategory.lift.{u1, u2, u3, u4} C _inst_1 D _inst_2 P F hF)) Y) (Prefunctor.map.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) (CategoryTheory.FullSubcategory.{u4} D P) (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} (CategoryTheory.FullSubcategory.{u4} D P) (CategoryTheory.Category.toCategoryStruct.{u2, u4} (CategoryTheory.FullSubcategory.{u4} D P) (CategoryTheory.FullSubcategory.category.{u2, u4} D _inst_2 P))) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 (CategoryTheory.FullSubcategory.{u4} D P) (CategoryTheory.FullSubcategory.category.{u2, u4} D _inst_2 P) (CategoryTheory.FullSubcategory.lift.{u1, u2, u3, u4} C _inst_1 D _inst_2 P F hF)) X Y f)) (Prefunctor.map.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 F) X Y f)
-Case conversion may be inaccurate. Consider using '#align category_theory.full_subcategory.inclusion_map_lift_map CategoryTheory.fullSubcategoryInclusion_map_lift_mapₓ'. -/
 theorem CategoryTheory.fullSubcategoryInclusion_map_lift_map (F : C ⥤ D) (hF : ∀ X, P (F.obj X))
     {X Y : C} (f : X ⟶ Y) :
     (fullSubcategoryInclusion P).map ((FullSubcategory.lift P F hF).map f) = F.map f :=
@@ -297,12 +213,6 @@ instance (F : C ⥤ D) (hF : ∀ X, P (F.obj X)) [Faithful F] :
 instance (F : C ⥤ D) (hF : ∀ X, P (F.obj X)) [Full F] : Full (FullSubcategory.lift P F hF) :=
   Full.ofCompFaithfulIso (FullSubcategory.lift_comp_inclusion P F hF)
 
-/- warning: category_theory.full_subcategory.lift_comp_map -> CategoryTheory.FullSubcategory.lift_comp_map is a dubious translation:
-lean 3 declaration is
-  forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u1, u3} C] {D : Type.{u4}} [_inst_2 : CategoryTheory.Category.{u2, u4} D] (P : D -> Prop) (Q : D -> Prop) (F : CategoryTheory.Functor.{u1, u2, u3, u4} C _inst_1 D _inst_2) (hF : forall (X : C), P (CategoryTheory.Functor.obj.{u1, u2, u3, u4} C _inst_1 D _inst_2 F X)) (h : forall {{X : D}}, (P X) -> (Q X)), Eq.{succ (max u1 u2 u3 u4)} (CategoryTheory.Functor.{u1, u2, u3, u4} C _inst_1 (CategoryTheory.FullSubcategoryₓ.{u2, u4} D _inst_2 (fun (X : D) => Q X)) (CategoryTheory.FullSubcategory.category.{u2, u4} D _inst_2 (fun (X : D) => Q X))) (CategoryTheory.Functor.comp.{u1, u2, u2, u3, u4, u4} C _inst_1 (CategoryTheory.FullSubcategoryₓ.{u2, u4} D _inst_2 P) (CategoryTheory.FullSubcategory.category.{u2, u4} D _inst_2 P) (CategoryTheory.FullSubcategoryₓ.{u2, u4} D _inst_2 (fun (X : D) => Q X)) (CategoryTheory.FullSubcategory.category.{u2, u4} D _inst_2 (fun (X : D) => Q X)) (CategoryTheory.FullSubcategory.lift.{u1, u2, u3, u4} C _inst_1 D _inst_2 P F hF) (CategoryTheory.FullSubcategory.map.{u2, u4} D _inst_2 P (fun (X : D) => Q X) h)) (CategoryTheory.FullSubcategory.lift.{u1, u2, u3, u4} C _inst_1 D _inst_2 Q F (fun (X : C) => h (CategoryTheory.Functor.obj.{u1, u2, u3, u4} C _inst_1 D _inst_2 F X) (hF X)))
-but is expected to have type
-  forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u1, u3} C] {D : Type.{u4}} [_inst_2 : CategoryTheory.Category.{u2, u4} D] (P : D -> Prop) (Q : D -> Prop) (F : CategoryTheory.Functor.{u1, u2, u3, u4} C _inst_1 D _inst_2) (hF : forall (X : C), P (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 F) X)) (h : forall {{X : D}}, (P X) -> (Q X)), Eq.{max (max (max (succ u3) (succ u4)) (succ u1)) (succ u2)} (CategoryTheory.Functor.{u1, u2, u3, u4} C _inst_1 (CategoryTheory.FullSubcategory.{u4} D (fun (X : D) => Q X)) (CategoryTheory.FullSubcategory.category.{u2, u4} D _inst_2 (fun (X : D) => Q X))) (CategoryTheory.Functor.comp.{u1, u2, u2, u3, u4, u4} C _inst_1 (CategoryTheory.FullSubcategory.{u4} D P) (CategoryTheory.FullSubcategory.category.{u2, u4} D _inst_2 P) (CategoryTheory.FullSubcategory.{u4} D (fun (X : D) => Q X)) (CategoryTheory.FullSubcategory.category.{u2, u4} D _inst_2 (fun (X : D) => Q X)) (CategoryTheory.FullSubcategory.lift.{u1, u2, u3, u4} C _inst_1 D _inst_2 P F hF) (CategoryTheory.FullSubcategory.map.{u2, u4} D _inst_2 P (fun (X : D) => Q X) h)) (CategoryTheory.FullSubcategory.lift.{u1, u2, u3, u4} C _inst_1 D _inst_2 Q F (fun (X : C) => h (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 F) X) (hF X)))
-Case conversion may be inaccurate. Consider using '#align category_theory.full_subcategory.lift_comp_map CategoryTheory.FullSubcategory.lift_comp_mapₓ'. -/
 @[simp]
 theorem FullSubcategory.lift_comp_map (F : C ⥤ D) (hF : ∀ X, P (F.obj X)) (h : ∀ ⦃X⦄, P X → Q X) :
     FullSubcategory.lift P F hF ⋙ FullSubcategory.map h =

Changes in mathlib4

mathlib3
mathlib4
chore(CategoryTheory): make 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>

Diff
@@ -79,7 +79,7 @@ def inducedFunctor : InducedCategory D F ⥤ D where
 #align category_theory.induced_functor_map CategoryTheory.inducedFunctor_map
 #align category_theory.induced_functor_obj CategoryTheory.inducedFunctor_obj
 
-instance InducedCategory.full : (inducedFunctor F).Full where preimage f := f
+instance InducedCategory.full : (inducedFunctor F).Full where map_surjective f := ⟨f, rfl⟩
 #align category_theory.induced_category.full CategoryTheory.InducedCategory.full
 
 instance InducedCategory.faithful : (inducedFunctor F).Faithful where
@@ -157,7 +157,7 @@ def FullSubcategory.map (h : ∀ ⦃X⦄, Z X → Z' X) : FullSubcategory Z ⥤
 #align category_theory.full_subcategory.map_map CategoryTheory.FullSubcategory.map_map
 
 instance FullSubcategory.full_map (h : ∀ ⦃X⦄, Z X → Z' X) :
-  (FullSubcategory.map h).Full where preimage f := f
+  (FullSubcategory.map h).Full where map_surjective f := ⟨f, rfl⟩
 
 instance FullSubcategory.faithful_map (h : ∀ ⦃X⦄, Z X → Z' X) :
   (FullSubcategory.map h).Faithful where
@@ -212,7 +212,7 @@ instance (F : C ⥤ D) (hF : ∀ X, P (F.obj X)) [F.Faithful] :
   Functor.Faithful.of_comp_iso (FullSubcategory.lift_comp_inclusion P F hF)
 
 instance (F : C ⥤ D) (hF : ∀ X, P (F.obj X)) [F.Full] : (FullSubcategory.lift P F hF).Full :=
-  Functor.Full.ofCompFaithfulIso (FullSubcategory.lift_comp_inclusion P F hF)
+  Functor.Full.of_comp_faithful_iso (FullSubcategory.lift_comp_inclusion P F hF)
 
 @[simp]
 theorem FullSubcategory.lift_comp_map (F : C ⥤ D) (hF : ∀ X, P (F.obj X)) (h : ∀ ⦃X⦄, P X → Q X) :
chore: classify porting notes referring to missing linters (#12098)

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

Diff
@@ -49,7 +49,7 @@ variable (F : C → D)
 which provides a category structure so that the morphisms `X ⟶ Y` are the morphisms
 in `D` from `F X` to `F Y`.
 -/
--- Porting note: @[nolint has_nonempty_instance unused_arguments]
+-- Porting note(#5171): removed @[nolint has_nonempty_instance]
 @[nolint unusedArguments]
 def InducedCategory (_F : C → D) : Type u₁ :=
   C
chore(CategoryTheory): move Full, Faithful, EssSurj, IsEquivalence and ReflectsIsomorphisms to the Functor namespace (#11985)

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

Diff
@@ -79,10 +79,10 @@ def inducedFunctor : InducedCategory D F ⥤ D where
 #align category_theory.induced_functor_map CategoryTheory.inducedFunctor_map
 #align category_theory.induced_functor_obj CategoryTheory.inducedFunctor_obj
 
-instance InducedCategory.full : Full (inducedFunctor F) where preimage f := f
+instance InducedCategory.full : (inducedFunctor F).Full where preimage f := f
 #align category_theory.induced_category.full CategoryTheory.InducedCategory.full
 
-instance InducedCategory.faithful : Faithful (inducedFunctor F) where
+instance InducedCategory.faithful : (inducedFunctor F).Faithful where
 #align category_theory.induced_category.faithful CategoryTheory.InducedCategory.faithful
 
 end Induced
@@ -137,11 +137,11 @@ theorem fullSubcategoryInclusion.map {X Y} {f : X ⟶ Y} : (fullSubcategoryInclu
   rfl
 #align category_theory.full_subcategory_inclusion.map CategoryTheory.fullSubcategoryInclusion.map
 
-instance FullSubcategory.full : Full (fullSubcategoryInclusion Z) :=
+instance FullSubcategory.full : (fullSubcategoryInclusion Z).Full :=
   InducedCategory.full _
 #align category_theory.full_subcategory.full CategoryTheory.FullSubcategory.full
 
-instance FullSubcategory.faithful : Faithful (fullSubcategoryInclusion Z) :=
+instance FullSubcategory.faithful : (fullSubcategoryInclusion Z).Faithful :=
   InducedCategory.faithful _
 #align category_theory.full_subcategory.faithful CategoryTheory.FullSubcategory.faithful
 
@@ -157,10 +157,10 @@ def FullSubcategory.map (h : ∀ ⦃X⦄, Z X → Z' X) : FullSubcategory Z ⥤
 #align category_theory.full_subcategory.map_map CategoryTheory.FullSubcategory.map_map
 
 instance FullSubcategory.full_map (h : ∀ ⦃X⦄, Z X → Z' X) :
-  Full (FullSubcategory.map h) where preimage f := f
+  (FullSubcategory.map h).Full where preimage f := f
 
 instance FullSubcategory.faithful_map (h : ∀ ⦃X⦄, Z X → Z' X) :
-  Faithful (FullSubcategory.map h) where
+  (FullSubcategory.map h).Faithful where
 
 @[simp]
 theorem FullSubcategory.map_inclusion (h : ∀ ⦃X⦄, Z X → Z' X) :
@@ -207,12 +207,12 @@ theorem fullSubcategoryInclusion_map_lift_map (F : C ⥤ D) (hF : ∀ X, P (F.ob
   rfl
 #align category_theory.full_subcategory.inclusion_map_lift_map CategoryTheory.fullSubcategoryInclusion_map_lift_map
 
-instance (F : C ⥤ D) (hF : ∀ X, P (F.obj X)) [Faithful F] :
-    Faithful (FullSubcategory.lift P F hF) :=
-  Faithful.of_comp_iso (FullSubcategory.lift_comp_inclusion P F hF)
+instance (F : C ⥤ D) (hF : ∀ X, P (F.obj X)) [F.Faithful] :
+    (FullSubcategory.lift P F hF).Faithful :=
+  Functor.Faithful.of_comp_iso (FullSubcategory.lift_comp_inclusion P F hF)
 
-instance (F : C ⥤ D) (hF : ∀ X, P (F.obj X)) [Full F] : Full (FullSubcategory.lift P F hF) :=
-  Full.ofCompFaithfulIso (FullSubcategory.lift_comp_inclusion P F hF)
+instance (F : C ⥤ D) (hF : ∀ X, P (F.obj X)) [F.Full] : (FullSubcategory.lift P F hF).Full :=
+  Functor.Full.ofCompFaithfulIso (FullSubcategory.lift_comp_inclusion P F hF)
 
 @[simp]
 theorem FullSubcategory.lift_comp_map (F : C ⥤ D) (hF : ∀ X, P (F.obj X)) (h : ∀ ⦃X⦄, P X → Q X) :
style: replace '/--A' by '/-- A' for each letter A. (#11939)

Also do the same for "/-A". This is a purely aesthetic change (and exhaustive).

Diff
@@ -101,9 +101,9 @@ See <https://stacks.math.columbia.edu/tag/001D>. We do not define 'strictly full
 -/
 @[ext]
 structure FullSubcategory where
-  /--The category of which this is a full subcategory-/
+  /-- The category of which this is a full subcategory-/
   obj : C
-  /--The predicate satisfied by all objects in this subcategory-/
+  /-- The predicate satisfied by all objects in this subcategory-/
   property : Z obj
 #align category_theory.full_subcategory CategoryTheory.FullSubcategory
 #align category_theory.full_subcategory.ext CategoryTheory.FullSubcategory.ext
feat(CategoryTheory/Monoidal/Transport): generalize to a faithful functor (#7237)

I needed this to transfer the monoidal structure from ModuleCat to QuadraticModuleCat, but would also work for transferring the same structure from ModuleCat to AlgebraCat.

The changes are:

  • A new CategoryTheory.Monoidal.induced definition, proven from scratch with slightly uglier proofs than what transport used. The new proofs use simp rather more than targeted slice commands, mainly due to lack of patience on my part.
  • CategoryTheory.Monoidal.transport now has a trivial implementation in terms of induced, as does CategoryTheory.MonoidalCategory.fullMonoidalSubcategory (though this was already fairly trivial)
  • CategoryTheory.Monoidal.laxToTransported has been removed, as it's just a less useful version of CategoryTheory.Monoidal.toTransported
  • CategoryTheory.Monoidal.toTransported has been golfed to oblivion, as it now falls out trivially by showing fromTransported first.
Diff
@@ -113,6 +113,13 @@ instance FullSubcategory.category : Category.{v} (FullSubcategory Z) :=
   InducedCategory.category FullSubcategory.obj
 #align category_theory.full_subcategory.category CategoryTheory.FullSubcategory.category
 
+-- these lemmas are not particularly well-typed, so would probably be dangerous as simp lemmas
+
+lemma FullSubcategory.id_def (X : FullSubcategory Z) : 𝟙 X = 𝟙 X.obj := rfl
+
+lemma FullSubcategory.comp_def {X Y Z : FullSubcategory Z} (f : X ⟶ Y) (g : Y ⟶ Z) :
+    f ≫ g = (f ≫ g : X.obj ⟶ Z.obj) := rfl
+
 /-- The forgetful functor from a full subcategory into the original category
 ("forgetting" the condition).
 -/
chore: banish Type _ and Sort _ (#6499)

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

This has nice performance benefits.

Diff
@@ -57,7 +57,7 @@ def InducedCategory (_F : C → D) : Type u₁ :=
 
 variable {D}
 
-instance InducedCategory.hasCoeToSort {α : Sort _} [CoeSort D α] :
+instance InducedCategory.hasCoeToSort {α : Sort*} [CoeSort D α] :
     CoeSort (InducedCategory D F) α :=
   ⟨fun c => F c⟩
 #align category_theory.induced_category.has_coe_to_sort CategoryTheory.InducedCategory.hasCoeToSort
feat: factorization through full subcategories is definitional (#6184)

In Lean 3, the equality FullSubcategory.lift P F hF ⋙ fullSubcategoryInclusion P = F was evil because it was not definitional (though it was definitional on objects and maps). In Lean 4, it is definitional, so it should be fine to tell this to dsimp.

Diff
@@ -175,13 +175,16 @@ def FullSubcategory.lift (F : C ⥤ D) (hF : ∀ X, P (F.obj X)) : C ⥤ FullSub
 #align category_theory.full_subcategory.lift_obj_obj CategoryTheory.FullSubcategory.lift_obj_obj
 #align category_theory.full_subcategory.lift_map CategoryTheory.FullSubcategory.lift_map
 
+@[simp]
+theorem FullSubcategory.lift_comp_inclusion_eq (F : C ⥤ D) (hF : ∀ X, P (F.obj X)) :
+    FullSubcategory.lift P F hF ⋙ fullSubcategoryInclusion P = F :=
+  rfl
+
 /-- Composing the lift of a functor through a full subcategory with the inclusion yields the
-    original functor. Unfortunately, this is not true by definition, so we only get a natural
-    isomorphism, but it is pointwise definitionally true, see
-    `fullSubcategoryInclusion_obj_lift_obj` and `fullSubcategoryInclusion_map_lift_map`. -/
+    original functor. This is actually true definitionally. -/
 def FullSubcategory.lift_comp_inclusion (F : C ⥤ D) (hF : ∀ X, P (F.obj X)) :
     FullSubcategory.lift P F hF ⋙ fullSubcategoryInclusion P ≅ F :=
-  NatIso.ofComponents fun X => Iso.refl _
+  Iso.refl _
 #align category_theory.full_subcategory.lift_comp_inclusion CategoryTheory.FullSubcategory.lift_comp_inclusion
 
 @[simp]
@@ -190,6 +193,7 @@ theorem fullSubcategoryInclusion_obj_lift_obj (F : C ⥤ D) (hF : ∀ X, P (F.ob
   rfl
 #align category_theory.full_subcategory.inclusion_obj_lift_obj CategoryTheory.fullSubcategoryInclusion_obj_lift_obj
 
+@[simp]
 theorem fullSubcategoryInclusion_map_lift_map (F : C ⥤ D) (hF : ∀ X, P (F.obj X)) {X Y : C}
     (f : X ⟶ Y) :
     (fullSubcategoryInclusion P).map ((FullSubcategory.lift P F hF).map f) = F.map f :=
chore: script to replace headers with #align_import statements (#5979)

Open in Gitpod

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

Diff
@@ -2,14 +2,11 @@
 Copyright (c) 2017 Scott Morrison. All rights reserved.
 Released under Apache 2.0 license as described in the file LICENSE.
 Authors: Scott Morrison, Reid Barton
-
-! This file was ported from Lean 3 source module category_theory.full_subcategory
-! leanprover-community/mathlib commit 550b58538991c8977703fdeb7c9d51a5aa27df11
-! Please do not edit these lines, except to modify the commit id
-! if you have ported upstream changes.
 -/
 import Mathlib.CategoryTheory.Functor.FullyFaithful
 
+#align_import category_theory.full_subcategory from "leanprover-community/mathlib"@"550b58538991c8977703fdeb7c9d51a5aa27df11"
+
 /-!
 # Induced categories and full subcategories
 
chore: formatting issues (#4947)

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

Diff
@@ -54,7 +54,7 @@ in `D` from `F X` to `F Y`.
 -/
 -- Porting note: @[nolint has_nonempty_instance unused_arguments]
 @[nolint unusedArguments]
-def InducedCategory (_F: C → D): Type u₁ :=
+def InducedCategory (_F : C → D) : Type u₁ :=
   C
 #align category_theory.induced_category CategoryTheory.InducedCategory
 
chore: review of automation in category theory (#4793)

Clean up of automation in the category theory library. Leaving out unnecessary proof steps, or fields done by aesop_cat, and making more use of available autoparameters.

Co-authored-by: Scott Morrison <scott.morrison@anu.edu.au>

Diff
@@ -184,7 +184,7 @@ def FullSubcategory.lift (F : C ⥤ D) (hF : ∀ X, P (F.obj X)) : C ⥤ FullSub
     `fullSubcategoryInclusion_obj_lift_obj` and `fullSubcategoryInclusion_map_lift_map`. -/
 def FullSubcategory.lift_comp_inclusion (F : C ⥤ D) (hF : ∀ X, P (F.obj X)) :
     FullSubcategory.lift P F hF ⋙ fullSubcategoryInclusion P ≅ F :=
-  NatIso.ofComponents (fun X => Iso.refl _) (by simp)
+  NatIso.ofComponents fun X => Iso.refl _
 #align category_theory.full_subcategory.lift_comp_inclusion CategoryTheory.FullSubcategory.lift_comp_inclusion
 
 @[simp]
chore: fix upper/lowercase in comments (#4360)
  • Run a non-interactive version of fix-comments.py on all files.
  • Go through the diff and manually add/discard/edit chunks.
Diff
@@ -34,7 +34,7 @@ form of `D`. This is used to set up several algebraic categories like
 
   def CommMon : Type (u+1) := InducedCategory Mon (Bundled.map @CommMonoid.toMonoid)
   -- not `InducedCategory (Bundled Monoid) (Bundled.map @CommMonoid.toMonoid)`,
-  -- even though `Mon = Bundled Monoid`!
+  -- even though `MonCat = Bundled Monoid`!
 -/
 
 
chore: forward port of #18742, no simps lemmas for Category.Hom (#3340)

This is the forward port of https://github.com/leanprover-community/mathlib/pull/18742. That PR hasn't landed yet, so this PR still needs to be updated with the new commit SHA.

Co-authored-by: Scott Morrison <scott.morrison@gmail.com> Co-authored-by: Joël Riou <joel.riou@universite-paris-saclay.fr>

Diff
@@ -9,7 +9,6 @@ Authors: Scott Morrison, Reid Barton
 ! if you have ported upstream changes.
 -/
 import Mathlib.CategoryTheory.Functor.FullyFaithful
-import Std.Tactic.Lint.Basic
 
 /-!
 # Induced categories and full subcategories
feat: port CategoryTheory.Limits.ExactFunctor (#2697)
Diff
@@ -153,9 +153,11 @@ def FullSubcategory.map (h : ∀ ⦃X⦄, Z X → Z' X) : FullSubcategory Z ⥤
 #align category_theory.full_subcategory.map_obj_obj CategoryTheory.FullSubcategory.map_obj_obj
 #align category_theory.full_subcategory.map_map CategoryTheory.FullSubcategory.map_map
 
-instance (h : ∀ ⦃X⦄, Z X → Z' X) : Full (FullSubcategory.map h) where preimage f := f
+instance FullSubcategory.full_map (h : ∀ ⦃X⦄, Z X → Z' X) :
+  Full (FullSubcategory.map h) where preimage f := f
 
-instance (h : ∀ ⦃X⦄, Z X → Z' X) : Faithful (FullSubcategory.map h) where
+instance FullSubcategory.faithful_map (h : ∀ ⦃X⦄, Z X → Z' X) :
+  Faithful (FullSubcategory.map h) where
 
 @[simp]
 theorem FullSubcategory.map_inclusion (h : ∀ ⦃X⦄, Z X → Z' X) :
fix: category_theory -> CategoryTheory in note (#2357)

This changes the name of a library_note from "category_theory universes" to "CategoryTheory universes" to be more in line with the new naming conventions.

Co-authored-by: Moritz Firsching <firsching@google.com>

Diff
@@ -42,7 +42,7 @@ form of `D`. This is used to set up several algebraic categories like
 namespace CategoryTheory
 
 universe v v₂ u₁ u₂
--- morphism levels before object levels. See note [category_theory universes].
+-- morphism levels before object levels. See note [CategoryTheory universes].
 
 section Induced
 
chore: add missing #align statements (#1902)

This PR is the result of a slight variant on the following "algorithm"

  • take all mathlib 3 names, remove _ and make all uppercase letters into lowercase
  • take all mathlib 4 names, remove _ and make all uppercase letters into lowercase
  • look for matches, and create pairs (original_lean3_name, OriginalLean4Name)
  • for pairs that do not have an align statement:
    • use Lean 4 to lookup the file + position of the Lean 4 name
    • add an #align statement just before the next empty line
  • manually fix some tiny mistakes (e.g., empty lines in proofs might cause the #align statement to have been inserted too early)
Diff
@@ -80,6 +80,8 @@ def inducedFunctor : InducedCategory D F ⥤ D where
   obj := F
   map f := f
 #align category_theory.induced_functor CategoryTheory.inducedFunctor
+#align category_theory.induced_functor_map CategoryTheory.inducedFunctor_map
+#align category_theory.induced_functor_obj CategoryTheory.inducedFunctor_obj
 
 instance InducedCategory.full : Full (inducedFunctor F) where preimage f := f
 #align category_theory.induced_category.full CategoryTheory.InducedCategory.full
@@ -108,6 +110,8 @@ structure FullSubcategory where
   /--The predicate satisfied by all objects in this subcategory-/
   property : Z obj
 #align category_theory.full_subcategory CategoryTheory.FullSubcategory
+#align category_theory.full_subcategory.ext CategoryTheory.FullSubcategory.ext
+#align category_theory.full_subcategory.ext_iff CategoryTheory.FullSubcategory.ext_iff
 
 instance FullSubcategory.category : Category.{v} (FullSubcategory Z) :=
   InducedCategory.category FullSubcategory.obj
@@ -146,6 +150,8 @@ def FullSubcategory.map (h : ∀ ⦃X⦄, Z X → Z' X) : FullSubcategory Z ⥤
   obj X := ⟨X.1, h X.2⟩
   map f := f
 #align category_theory.full_subcategory.map CategoryTheory.FullSubcategory.map
+#align category_theory.full_subcategory.map_obj_obj CategoryTheory.FullSubcategory.map_obj_obj
+#align category_theory.full_subcategory.map_map CategoryTheory.FullSubcategory.map_map
 
 instance (h : ∀ ⦃X⦄, Z X → Z' X) : Full (FullSubcategory.map h) where preimage f := f
 
@@ -168,6 +174,8 @@ def FullSubcategory.lift (F : C ⥤ D) (hF : ∀ X, P (F.obj X)) : C ⥤ FullSub
   obj X := ⟨F.obj X, hF X⟩
   map f := F.map f
 #align category_theory.full_subcategory.lift CategoryTheory.FullSubcategory.lift
+#align category_theory.full_subcategory.lift_obj_obj CategoryTheory.FullSubcategory.lift_obj_obj
+#align category_theory.full_subcategory.lift_map CategoryTheory.FullSubcategory.lift_map
 
 /-- Composing the lift of a functor through a full subcategory with the inclusion yields the
     original functor. Unfortunately, this is not true by definition, so we only get a natural
chore: fix most phantom #aligns (#1794)
Diff
@@ -64,13 +64,13 @@ variable {D}
 instance InducedCategory.hasCoeToSort {α : Sort _} [CoeSort D α] :
     CoeSort (InducedCategory D F) α :=
   ⟨fun c => F c⟩
-#align category_theory.InducedCategory.has_coe_to_sort CategoryTheory.InducedCategory.hasCoeToSort
+#align category_theory.induced_category.has_coe_to_sort CategoryTheory.InducedCategory.hasCoeToSort
 
 instance InducedCategory.category : Category.{v} (InducedCategory D F) where
   Hom X Y := F X ⟶ F Y
   id X := 𝟙 (F X)
   comp f g := f ≫ g
-#align category_theory.InducedCategory.category CategoryTheory.InducedCategory.category
+#align category_theory.induced_category.category CategoryTheory.InducedCategory.category
 
 /-- The forgetful functor from an induced category to the original category,
 forgetting the extra data.
@@ -82,10 +82,10 @@ def inducedFunctor : InducedCategory D F ⥤ D where
 #align category_theory.induced_functor CategoryTheory.inducedFunctor
 
 instance InducedCategory.full : Full (inducedFunctor F) where preimage f := f
-#align category_theory.InducedCategory.full CategoryTheory.InducedCategory.full
+#align category_theory.induced_category.full CategoryTheory.InducedCategory.full
 
 instance InducedCategory.faithful : Faithful (inducedFunctor F) where
-#align category_theory.InducedCategory.faithful CategoryTheory.InducedCategory.faithful
+#align category_theory.induced_category.faithful CategoryTheory.InducedCategory.faithful
 
 end Induced
 
chore: fix some phantom align statements (#1782)
Diff
@@ -57,7 +57,7 @@ in `D` from `F X` to `F Y`.
 @[nolint unusedArguments]
 def InducedCategory (_F: C → D): Type u₁ :=
   C
-#align category_theory.InducedCategory CategoryTheory.InducedCategory
+#align category_theory.induced_category CategoryTheory.InducedCategory
 
 variable {D}
 
chore: the style linter shouldn't complain about long #align lines (#1643)
Diff
@@ -176,25 +176,19 @@ def FullSubcategory.lift (F : C ⥤ D) (hF : ∀ X, P (F.obj X)) : C ⥤ FullSub
 def FullSubcategory.lift_comp_inclusion (F : C ⥤ D) (hF : ∀ X, P (F.obj X)) :
     FullSubcategory.lift P F hF ⋙ fullSubcategoryInclusion P ≅ F :=
   NatIso.ofComponents (fun X => Iso.refl _) (by simp)
-#align
-  category_theory.full_subcategory.lift_comp_inclusion
-  CategoryTheory.FullSubcategory.lift_comp_inclusion
+#align category_theory.full_subcategory.lift_comp_inclusion CategoryTheory.FullSubcategory.lift_comp_inclusion
 
 @[simp]
 theorem fullSubcategoryInclusion_obj_lift_obj (F : C ⥤ D) (hF : ∀ X, P (F.obj X)) {X : C} :
     (fullSubcategoryInclusion P).obj ((FullSubcategory.lift P F hF).obj X) = F.obj X :=
   rfl
-#align
-  category_theory.full_subcategory.inclusion_obj_lift_obj
-  CategoryTheory.fullSubcategoryInclusion_obj_lift_obj
+#align category_theory.full_subcategory.inclusion_obj_lift_obj CategoryTheory.fullSubcategoryInclusion_obj_lift_obj
 
 theorem fullSubcategoryInclusion_map_lift_map (F : C ⥤ D) (hF : ∀ X, P (F.obj X)) {X Y : C}
     (f : X ⟶ Y) :
     (fullSubcategoryInclusion P).map ((FullSubcategory.lift P F hF).map f) = F.map f :=
   rfl
-#align
-  category_theory.full_subcategory.inclusion_map_lift_map
-  CategoryTheory.fullSubcategoryInclusion_map_lift_map
+#align category_theory.full_subcategory.inclusion_map_lift_map CategoryTheory.fullSubcategoryInclusion_map_lift_map
 
 instance (F : C ⥤ D) (hF : ∀ X, P (F.obj X)) [Faithful F] :
     Faithful (FullSubcategory.lift P F hF) :=
feat: port CategoryTheory.FullSubcategory (#1126)

Co-authored-by: Jad Ghalayini <jad.ghalayini@protonmail.com> Co-authored-by: Jad Ghalayini <jad.ghalayini@mail.utoronto.ca> Co-authored-by: Reid Barton <rwbarton@gmail.com>

Dependencies 6

7 files ported (100.0%)
1526 lines ported (100.0%)

All dependencies are ported!